[
  {
    "path": ".editorconfig",
    "content": "# EditorConfig is awesome: https://editorconfig.org\n\nroot = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\nindent_size = 2\nindent_style = space\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "content": "### Expected behaviour\nTell us what should happen.\n\n### Actual behaviour\nTell us what happens instead.\n\n### Datepicker version used\n\nex. 1.6.1.\n\n### Example code\n\nJsfiddle example to reproduce the problem.\n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "content": "| Q               | A\n| --------------- | ---\n| Bug fix?        | no|yes\n| New feature?    | no|yes\n| BC breaks?      | no|yes\n| Related tickets | fixes #X, partially #Y, mentioned in #Z\n| License         | MIT\n"
  },
  {
    "path": ".github/workflows/ci.yaml",
    "content": "name: CI\n\non:\n    [push, pull_request]\n\njobs:\n    test:\n        name: Test\n        runs-on: ubuntu-latest\n\n        steps:\n            -   uses: actions/checkout@v2\n            -   uses: actions/setup-node@v1\n\n            -   name: Install grunt\n                run: yarn global add grunt-cli\n\n            -   name: Install dependencies\n                run: yarn\n\n            -   name: Run tests\n                run: yarn test\n"
  },
  {
    "path": ".gitignore",
    "content": "docs/_build\n*-dist.zip\n\n# OS or Editor folders\n.DS_Store\n.idea\n\n# Folders to ignore\nbower_components\nnode_modules\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "Changelog\n=========\n\n1.9.0\n-----\n\n## Features\n * Added clearDates for clears range (#2114)\n\n## Bugfix\n * Hide today button when before start or after end date (#2474)\n * Fix navigation buttons states (#2277)\n * Fix updateNavArrows bug (#2230)\n\n## Locales\n### Bugfix\n * Added monthsTitle to Latvian locale (#2255)\n * Rename en-CA locale file to match the rest of the files (#2217)\n * Fix cs locale date format (#2275)\n * Added translation for months (fixing the default 'en' locale) (#2271)\n\n1.7.1\n-----\n\n## Bugfixes\n * \tRevert \"move `jquery` to `peerDependencies` from `dependencies`\"\n\n1.7.0\n-----\n\n## Features\n * Adding dateCells option (#1723)\n * Added keepEmptyValues option (#1558 + #1901)\n * added \"changeViewMode\" event; also adds the current `viewMode` to events (#1953)\n * adds `updateViewDate` option (#1982)\n * Added hiding week day names functionality (#2087)\n * Allow customizing day cell value (#2043)\n\n## Bugfixes\n * originalEvent object needs preventDefault fn (#1824)\n * Fix jQuery selector from premature selection of span element in inline/embedded calendar's month selection (#1859 + #1886)\n * Use date arithmetic to allow dates with times other than 00:00:00 (#1483)\n * Multiple general fixes (#1883 + #1893)\n * Visibility fix for nav arrows (#1916)\n * Do not trigger change or changeDate on initialization (#1912)\n * Fix: Close datepicker on touchstart (#1924)\n * Fix data-date-dates-disabled attribute to accept a comma-separated list (#1946)\n * Fix maxViewMode and navigation switch click (#1951)\n * Add support jQuery 3. Bootstrap 2 still available (composer.json) (#1958)\n * fix(parseDate) use insensitive regex to support +15d with capslock (#1910)\n * Refactoring timedelta aliases (dateAliases) (#1965)\n * Fix RTL layout (#1973)\n * Remove listen `changeDate` after destroy DateRangePicker (#1968)\n * add tests for setDatesDisabled function (#1983)\n * resolves bug on days when DST is added. (#2009)\n * XHTML fixes (#1998)\n * update grunt and other dev-dependencies (#2111)\n * Use display:table-cell instead of display:block for today, clear and title (#2121)\n * moved assumeNearbyYear to correct location (#2140)\n * move `jquery` to `peerDependencies` from `dependencies` (#2163)\n * Use default arrow values (#2176)\n\n## Locales\n### New\n * en-ZA (#1798)\n * en-ZNZ (#1799)\n * en-IE (#1800)\n * ar-tn (#1863)\n * Added Sinhala (si) locale (#2025)\n * Occitan locale (#2024 + #2026)\n * [l10n]Add breton translation (#2028)\n * Added Tajik language (#2117)\n * Add Uzbek latin and cyrill locales (#2152)\n * add Bengali (Bangla) language (#2171)\n * Added Hindi locale (#2199)\n\n### Bugfix\n * km/kh (#1812)\n * Capital letters in Polish translation (#1890)\n * Add missing monthsTitle in cs (#1900)\n * Update bootstrap-datepicker.da.js (#1936)\n * Fix typo in month name (#2040)\n * Added missing basque language properties (#2066)\n * Added weekStart to slovenian translation (#2067)\n * add monthsTitle for ru (#2092)\n * Change danish (da) date format to match the rest of the locales (#2048)\n * Fix Tamil Language file with proper locale code (#2141)\n * Revert strange changes, +monthsTitle (#2153)\n * updated Tajik (cyrillic) translation file (#2167)\n * Romanian uses dd/mm/yyyy format for dates (#2173)\n * Missing latvian translation (#2204)\n\n## Docs\n * Fix typo in index.rst (#1882)\n * Update CDNjs info in README.md (#1933)\n * [Doc] Keyboard navigation is not supported for embedded / inline type (#2002)\n * Removed reference to stefan petre (#2031)\n * Improve defaultViewDate documentation (#2052)\n * Add notes about multiple dates and examples for update method (#2060)\n * Add Code Of Conduct (#2095)\n * Update install instructions on README.md (#2160)\n\n1.6.2 - 1.6.3 - 1.6.4\n---------------------\n\nBugfix\n\n * Backported jquery 3 fix from #1958\n\n1.6.1\n-----\nBugfixes\n\n * add specific class for disabled dates back (Fixes #1785)\n * [fix] Allow keyboard navigation for non-input fields (Fixes: #874)\n * fix kazakh mothShort\n * Fix bug when clicking on a day that is highlighted today in the next month\n * dates read out are 12am UTC\n * Fix show by component (with disabled attribute)\n\n1.6.0\n-----\nFeatures\n\n * Changes nonpunctuation to accept unicode characters\n * Add \"assumeNearbyYear\" option\n * Decade and century picking\n * Added timedelta aliases. (Fixes #785)\n * add getter methods for date limits\n * Replace arrow entities for glyphicon + template + libs snippets (Fixes: #610 #833 #1007)\n * added class .disabled to dow header\n * Rename \"remove\" to \"destroy\" and create alias\n\nBugfix\n\n * Month/year view keyboard navigation\n * fix changeMonth, changeYear not triggered when selecting day from prev/next month\n * Fix default arrows for BS2 and screenshots (for docs)\n * Extend beforeShowMonth event functionality to work like beforeShowDay and beforeShowYear\n\nLocale changes\n\n * Correct date format for ko locale\n * Add en-AU (Australian English) locale\n\nRepository\n\n * Add CSS sourcemap\n * [BS3 Less] Remove unused variables and cleanup\n * Added timezone aware tests\n * remove .idea-folder from npm\n\n1.5.1\n-----\n\nBugfixes\n * Fix calculation for new position when datepicker goes offscreen when inside a container (Fixes: #1619)\n * Fix datepicker title not centered when displaying calendar weeks (Fixes: #1625)\n * Fixing looping when calling dp inside change event (Fixes: #1628)\n * Add scrollTop to position if container is not body (Fixes: #1616)\n * Use document scrollTop instead of body scrollTop when using the body container\n * Fix focus for disabled week days (Fixes: #1365, #1187, #1648)\n * Fixes enableOnReadOnly bug when datepicker is of type component\n\nTranslations\n * Added missing translations for slovak translation. (Fixes: #1521)\n * Added missing date format for norwegian (nb) locale (Fixes #1690)\n * Armenian translation short names\n * adding Today translation, default date format for the lithuanian translation\n\nDocs\n * Document data-api on container\n * Added docs for the different stylesheet files. (Fixes #1459)\n\nRepository\n * Enable travis container builds for faster builds\n\n1.5.0\n-----\n\nFeatures\n * Added down key as datepicker show trigger\n * immediateUpdates option (updates input when a year or month is selected)\n * Highlight days of week\n * maxViewMode option\n * Include \"main\" property in package.json\n * Require.js support. (Fixes: #280)\n * Allow overriding `$.fn.show` and `$.fn.hide` (Fixes: #1424)\n * Adding border-radius variable for LESS (Fixes: #1429)\n * Add support for dropdown border variables\n * Add the posibility to have a title on the picker (Fixes: #1410)\n * Implement `beforeShowYear` (Fixes: #1226)\n * Add commonjs support\n * Trigger 'hide' event when clicking outside datepicker\n * Add css-classes for range-start and range-end\n * Update hover effect for \"buttons\" (matches  Bootstrap 3.3.5 mixin)\n * Custom formatting options\n\nBugfixes:\n * Scrolling on mobile device closes datepicker\n * Use $.on() instead $.bind()\n * Fixed right-click and edit-menu paste\n * Ported prototype fix for Prototype Compability\n * Fixed issue with startview year\n * Fixed padding inconsistency with twitter bootstrap 3\n * prevents the click event from bubbling to any user defined click handlers\n * Added padding for .datepicker-dropdown\n * Fixes the issue with a date change firing mulitple change events\n * removed hard dependency on bootstrap (because of twbs-sass package)\n * Clearing the date should reset to defaultViewDate\n * Datepicker orientation mix up - top = bottom and bottom = top\n * Fix cursor thead styles\n * Fix date-reset issue when navigating to next with invalid date\n * Using orientation:auto but date picker still appears above, cut off, when there plenty of space below.\n * lots of orientation fixes\n\nLocale changes:\n * Remove unused eighth element on week arrays )\n * Add Esperanto translation\n * Better Polish language date shortcuts translation and default date format\n * lowercase danish translation\n * Add Mongolian localization\n * update Hungarian translation\n\nDocs:\n * added day to end-date to avoid confusion about example\n * added setDatesDisabled method to documentation\n\n\n\n1.4.0\n-----\n\nFeatures:\n * implemented beforeShowMonth option\n * Added option to disable touch keyboard input\n * All datepicker methods are chainable\n * Added a datesDisable option\n * Added option to prevent date picker to show when input field receives focus\n * adding option to define the container the datepicker will be appended to\n * Backported some placement fixes for the container option\n * Option default view date\n * Add toggleActive option\n * Added clear method\n * Added version property to datepicker object\n * Added option to not show datepicker on readonly field\n\nBugfixes:\n * Removed blank space before the previous button when calendarWeeks is true;\n * Fixed date deselection with single date picker\n * Added case-neutral matching for text months\n * Changed input-daterange to full width for bs3\n * Fix placement for RTL languages\n * fix for range picker when next date is before previous date\n * Fix for moving box on first selection\n * Do not show datepicker for readonly inputs\n * Fix getUTCDate when datepicker has no selected date\n * Only a linked today button should trigger the changeDate event\n * Fixed bug with keyboard navigation when startdate/enddate was defined\n * Right align calendar on right window edge conflict\n * On \"ENTER\" keydown on picker, prevent the closest form to be submitted too\n * fixed bower.json twitte bootstrap dependency\n * Replaced named entities with decimal entities\n * assigning plugin to a local variable to fix bug in noConflict\n\nRepo changes:\n * Added empty ignore option in bower.json.\n * Added .editorconfig\n * Reworked grunt tasks\n\nTranslations:\n * Fix translation of French months\n * Update cambodia translations\n * added clear and weekStart to turkish translation\n * Days/months should start lowercase in dutch\n * Month/daynames should be lowercase in french\n * Add 'clear' and 'format' to Ukrainian locale\n * Added Montenegrin locale\n\nDocs:\n * added example for inputs option\n * added missing documentation for embedded mode\n * Add additional documentaion to update method\n\n1.3.1\n-----\n\nRepo changes:\n* Automated screenshots have been added to the docs. These probably need to be documented so that contributors can add them when appropriate.\n* Grunt support\n* Missing description and keywords for Packagist\n* Composer: Include translation files into deployment dir\n* Add package name and version to npm package.json\n\nBugfixes:\n* Remove font-family declaration for datepicker\n* Don't deselect date unless datepicker is multidate\n* Removed comment from compiled CSS.\n* Don't clear input after typing date and hitting Enter when keyboard nav is disabled\n* Fixing the ui displaying 'undefined nan' when typing dates in Firefox & IE\n* Reset tooltip to a default empty value\n* Fix colspan if calendarWeeks & clearBtn are true\n* Removed fixed width and height in large and small group addon\n* z-index calculation should not stop at first element\n* Fix IE8 bug with Array#splice with one argument\n\nDocumentation:\n* ghpages: jQuery js not being loaded when using HTTPS\n* Adds clearBtn option to sandbox page\n* Minor fixes (typo's, links,...)\n\nLocale changes\n\nUpdated languages:\n* Clear translation in czech\n* Dutch translation\n* Swedish translation\n* Japanese translation\n* Ukrainian translation fixes\n* Add spanish clear, week start and format\n* Added galician clear, week start and format\n* Added missing clear localization value for polish translation\n* Add clear zh-CN translation\n* Fixed Albanian translation typo's\n* Add missing clear and format localization value for Russian translation\n* Updated Serbian translation\n* Fixed Ukrainian iso code to uk instead of ua\n* Updated greek translation\n* Update Catalan and Spanish localizations\n* Added missing armenian translations\n\nNew languages:\n* Basque\n* Khmer (Cambodia)\n* Bosnian\n* British english\n* Armenian\n* Faroese\n* Swiss Italian and Swiss French\n\n1.3.0\n-----\n\nNew features:\n* Bootstrap 3 support.  Added build files `build/build_standalone3.less` and `build/build3.less`, and source files `less/datepicker3.less` and `css/datepicker3.css` (built from `build_standalone3.less`).\n* Multi-date functionality.  This required rethinking several areas of the picker:\n    * The internals have been modified to be completely multidate-centric.\n    * Attributes and methods availabel on events have changed, but the old attributes and functions will still work.\n    * Keyboard navigation has been revamped, as it didn't work at all properly with multidate selection.\n    * The picker now explicitly supports \"no selected date\".\n\nNon-API changes:\n* Keyboard navigation has been changed.  See `docs/keyboard.rst`.\n* Empty pickers in a range picker setup will be populated with the first date selected by the user to make finding the next date easier.\n\nBug squashed:\n* Jan 1, 1970 is now highlighted when selected\n* `touchstart` added to document-bound picker-closing events (alongside `mousedown`)\n* Fixed a display bug with component add-on icons being vertically higher than they should have been.\n* Input is refocused after clicking the picker.\n* `changeDate` event is triggered when `setDate` is called.\n\nLocale changes:\n* Added Ukrainian, Belgium-Dutch, Welsh, Galician, Vietnamese, and Azerbaijani\n* `clear` for German, Danish, Italian, and Romanian\n* Fixed `weekStart` and `format` for Norwegian\n* `weekStart` and `format` for Georgian\n* Tweaks for Latvian, French, Vietnamese, Swedish, and Croatian\n* De-duplicated Ukrainian files from `uk` and `ua` to just `ua`\n\nRepository changes:\n* Documentation has been moved from the base `README.md` file to the `docs/` folder, and been re-written to use sphinx docs.  The docs are now viewable online at https://bootstrap-datepicker.readthedocs.org/.  The [gh-pages](https://uxsolutions.github.io/bootstrap-datepicker/) branch has been reduced to the sandbox demo.\n* Changed the js file header to point at repo/demo/docs urls instead of eyecon.ro\n* The css files are now the output of the standalone build scripts instead of `build/build.less` etc.\n* `composer.json` now supports component-installer\n* Added [JSHint](https://www.jshint.com/docs/) and [JSCS](https://github.com/mdevils/node-jscs) configurations\n\n\n1.2.0\n-----\n\nNew features:\n* Google Closure Compiler Compatibility\n* Smart orientation by default, and explicit picker orientation with the `orientation` option\n* Text inside the picker is no longer user-selectable\n* Packagist/Composer support (I think...)\n* No longer depends on glyphicons for arrows\n* `clearDate` event added, fired when the date is cleared\n\nBug squashed:\n* `noConflict` fixed\n* Fix for large years causing an infinite loop in date parsing\n* Fixed cases where `changeYear` and `changeMonth` events were not being triggered\n* `component.js` moved to `bower.js`\n* Falsey values for `startDate` and `endDate` translate to `-Infinity` and `Infinity`, respectively (effectively, falsey values mean \"no bounds\")\n* Fixed `autoclose` for non-input, non-component elements\n* Fixed 50% param in `mix()` less function -- expands compatibility with less compilers\n* Fixed `update` method to update the selected date\n* `beforeShowDay` was getting UTC dates, now it gets local dates (all dates that developers are given should be in local time, not UTC).\n* `startDate` and `endDate` were a bit confused when given `new Date()` -- they would not allow today to be selected (the range should be inclusive), they would change whether it was selectable based on local time, etc.  These quirks should be fixed now.  They both also now expect local dates (which will then be time-zeroed and converted to UTC).\n* Fixed selected date not being automatically constrained to the specified range when `setStartDate` and `setEndDate` were called.\n* No longer uses jQuery's `.size()` (deprecated in favor of `.length`)\n* `changeDate` triggered during manual user input\n* `change` event fired when input value changed, it wasn't in some cases\n\nLocale changes:\n* Added Arabic, Norwegian, Georgian\n* `clear` for French\n* `today` and `clear` for Bahasa\n* `today` and `clear` for Portuguese (both `pt` and `pt-BR`)\n* `format` for Turkish\n* `format` and `weekStart` for Swedish\n* `format` and `weekStart` for Simplified Chinese; `today`, `format`, and `weekStart` for Traditional Chinese\n* Fixed typo in Serbian latin (`rs-latin`)\n* More appropriate use of Traditional Chinese habit in `zh-TW`\n\n\n1.1.3\n ----------\n\n Clicking the clear button now triggers the input's `change` and datepicker's `changeDate` events.\n Fixed a bug that broke the event-attached `format` function.\n\n\n1.1.2\n----------\n\nBotched release, no change from 1.1.1\n\n\n1.1.1\n----------\n\nFixes a bug when setting startDate or endDate during initialization.\n\n\n1.1.0\n----------\n\nNew features:\n* Date range picker.\n* Data API / noConflict.\n* `getDate` and `setDate` methods.\n* `format` method for events; this allows you to easily format the `date` associated with the event.\n* New options:\n  * `beforeShowDay` option: a dev-provided function that can enable/disable dates, add css classes, and add tooltips.\n  * `clearBtn`, a button for resetting the picker.\n\nInternal changes:\n* Cleaner and more reliable method for extracting options from all potential sources (defaults, locale overrides, data-attrs, and instantiation options, in that order).  This also populates `$.fn.datepicker.defaults` with the default values, and uses this hash as the actual source of defaults, meaning you can globally change the default value for a given option.\n\nBugs squashed:\n* Resolved a conflict with bootstrap's native `.switch` class.\n* Fixed a bug with components where they would be stuck with a stale value when editing the value manually.\n* The `date` attributes on events are now local dates instead of internal UTC dates.\n* Separate `Date` objects for internal selected and view date references.\n* Clicking multiple times inside inputs no longer hides the picker.\n\nMinor improvements:\n* Better text color for highlighted \"today\" date.\n* Last year in decade view now marked as \"new\" instead of \"old\".\n* Formats now properly handle trailing separators.\n\nLocale changes:\n* Added Albanian, Estonian, and Macedonian\n* Added `weekStart` for Russian\n* Added `weekStart` and `format` for Finnish\n\nPotentially backward-incompatible changes:\n* Options revamp:\n  * This fixes bugs in the correlation of some data-attrs to their associated option names.  If you use `data-date-weekstart`, `data-date-startdate`, or `data-date-enddate`, you should update these to `data-date-week-start`, `data-date-start-date`, or `data-date-end-date`, respectively.\n  * All options for datepicker are now properties on the datepicker's `o` property; options are no longer stored on the Datepicker instance itself.  If you have code that accesses options stored on the datepicker instance (eg, `datepicker.format`), you will need to update it to access those options via the `o` property (eg, `datepicker.o.format`).  \"Raw\" options are available via the `_o` property.\n\n1.0.2\n----------\n\nSmall optimizations release\n\n* Reduced the number of times `update` is called on initialization.\n* Datepicker now detaches the picker dropdown when it is hidden, and appends it when shown.  This removes the picker from the DOM when it is not in use.\n* No longer listens to document/window events unless picker is visible.\n\nv1.0.1\n------\n\n* Support for [Bower](https://bower.io/)\n* Component pickers are now aligned under the input, not the add-on element.\n* Japanese locale now has \"today\" and \"format\".\n* \"remove\" method removes `.data().date` if the datepicker is on a non-input.\n* Events on initialized elements are no longer blocked from bubbling up the DOM (jQuery.live et al can now catch the events).\n* Component triggers now include `.btn` in addition to `.add-on`.\n* Updates to README contents.\n\nv1.0.0\n------\n\nInitial release:\n\n* format option\n* weekStart option\n* calendarWeeks option\n* startDate / endDate options\n* daysOfWeekDisabled option\n* autoclose option\n* startView / mnViewMode options\n* todayBtn / todayHighlight options\n* keyboardNavigation option\n* language option\n* forceParse option\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our project and\nour community a harassment-free experience for everyone, regardless of age, body\nsize, disability, ethnicity, gender identity and expression, level of experience,\nnationality, personal appearance, race, religion, or sexual identity and\norientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n* Using welcoming and inclusive language\n* Being respectful of differing viewpoints and experiences\n* Gracefully accepting constructive criticism\n* Focusing on what is best for the community\n* Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n* The use of sexualized language or imagery and unwelcome sexual attention or\nadvances\n* Trolling, insulting/derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or electronic\n  address, without explicit permission\n* Other conduct which could reasonably be considered inappropriate in a\n  professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable\nbehavior and are expected to take appropriate and fair corrective action in\nresponse to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or\nreject comments, commits, code, wiki edits, issues, and other contributions\nthat are not aligned to this Code of Conduct, or to ban temporarily or\npermanently any contributor for other behaviors that they deem inappropriate,\nthreatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces\nwhen an individual is representing the project or its community. Examples of\nrepresenting a project or community include using an official project e-mail\naddress, posting via an official social media account, or acting as an appointed\nrepresentative at an online or offline event. Representation of a project may be\nfurther defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be\nreported by contacting the project team at <https://github.com/uxsolutions/bootstrap-datepicker>. All\ncomplaints will be reviewed and investigated and will result in a response that\nis deemed necessary and appropriate to the circumstances. The project team is\nobligated to maintain confidentiality with regard to the reporter of an incident.\nFurther details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good\nfaith may face temporary or permanent repercussions as determined by other\nmembers of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant](https://contributor-covenant.org), version 1.4,\navailable at <https://www.contributor-covenant.org/version/1/4/code-of-conduct.html>\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing\n\n## Support requests\n\nThe issue tracker is not the place for support requests.  If you get stuck with bootstrap-datepicker, it's very likely that the fine folks at [StackOverflow](https://stackoverflow.com/) will be able to help you; simply describe the problem you're having and provide them a link to the repo (so they know what code you're using).  Another option is to post to the [bootstrap-datepicker google group](https://groups.google.com/group/bootstrap-datepicker).\n\n## Issues\n\nIf you've found a bug in bootstrap-datepicker, we want to know about it!  However, please keep the following in mind:\n\n* This is not the bootstrap-datepicker from [eyecon.ro](https://www.eyecon.ro/bootstrap-datepicker/).  Stefan provided the initial code for bootstrap-datepicker, but this repo is divergent from his codebase.  Please make sure you're using either the latest tagged version or the latest master from https://github.com/uxsolutions/bootstrap-datepicker/.\n* A working example of the bug you've found is *much* easier to work with than a  description alone.  If possible, please provide a link to a demonstration of the bug, perhaps using https://jsfiddle.net/ .\n  * CDN-backed assets can be found at http://bsdp-assets.blackcherry.us/ .  These should be used *only* for building test cases, as they may be removed or changed at any time.\n* Finally, it's possible someone else has already reported the same bug you have.  Please search the issue tracker for similar issues before posting your own.  Thanks!\n\n## Pull Requests\n\nPatches welcome!\n\nFor all cases, you should have your own fork of the repo.\n\nTo submit a pull request for a **new feature**:\n\n1. Run the tests.  Every pull request for a new feature should have an accompanying unit test and docs changes.  See the `README.md` in the `tests/` and `docs/` directories for details.\n2. Create a new branch off of the `master` branch for your feature.  This is particularly helpful when you want to submit multiple pull requests.\n3. Add a test (or multiple tests) for your feature.  Again, see `tests/README.md`.\n4. Add your new feature, making the test pass.\n5. Push to your fork and submit the pull request!\n\nTo submit a **bug fix**:\n\n1. Create a new branch off of the `master` branch.\n2. Add a test that demonstrates the bug.\n3. Make the test pass.\n4. Push to your fork and submit the pull request!\n\nTo submit a **documentation fix**:\n\n1. Create a new branch off of the `master` branch.\n2. Add your documentation fixes (no tests required).\n3. Push to your fork and submit the pull request!\n"
  },
  {
    "path": "Gruntfile.js",
    "content": "module.exports = function(grunt){\n    'use strict';\n\n    // Force use of Unix newlines\n    grunt.util.linefeed = '\\n';\n\n    // Project configuration.\n    grunt.initConfig({\n        //Metadata\n        pkg: grunt.file.readJSON('package.json'),\n        banner: [\n            '/*!',\n            ' * Datepicker for Bootstrap v<%= pkg.version %> (<%= pkg.homepage %>)',\n            ' *',\n            ' * Licensed under the Apache License v2.0 (https://www.apache.org/licenses/LICENSE-2.0)',\n            ' */'\n        ].join('\\n') + '\\n',\n\n        // Task configuration.\n        clean: {\n            dist: ['dist', '*-dist.zip']\n        },\n        jshint: {\n            options: {\n                jshintrc: 'js/.jshintrc'\n            },\n            main: {\n                src: 'js/bootstrap-datepicker.js'\n            },\n            locales: {\n                src: 'js/locales/*.js'\n            },\n            gruntfile: {\n                options: {\n                    jshintrc: 'grunt/.jshintrc'\n                },\n                src: 'Gruntfile.js'\n            }\n        },\n        jscs: {\n            options: {\n                config: 'js/.jscsrc'\n            },\n            main: {\n                src: 'js/bootstrap-datepicker.js'\n            },\n            locales: {\n                src: 'js/locales/*.js'\n            },\n            gruntfile: {\n                src: 'Gruntfile.js'\n            }\n        },\n        qunit: {\n            main: 'tests/tests.html',\n            timezone: 'tests/timezone.html',\n            options: {\n                console: false\n            }\n        },\n        concat: {\n            options: {\n                stripBanners: true\n            },\n            main: {\n                src: 'js/bootstrap-datepicker.js',\n                dest: 'dist/js/<%= pkg.name %>.js'\n            }\n        },\n        uglify: {\n            options: {\n                preserveComments: 'some'\n            },\n            main: {\n                src: '<%= concat.main.dest %>',\n                dest: 'dist/js/<%= pkg.name %>.min.js'\n            },\n            locales: {\n                files: [{\n                    expand: true,\n                    cwd: 'js/locales/',\n                    src: '*.js',\n                    dest: 'dist/locales/',\n                    rename: function(dest, name){\n                        return dest + name.replace(/\\.js$/, '.min.js');\n                    }\n                }]\n            }\n        },\n        less: {\n            options: {\n                sourceMap: true,\n                outputSourceFiles: true\n            },\n            standalone_bs2: {\n                options: {\n                    sourceMapURL: '<%= pkg.name %>.standalone.css.map'\n                },\n                src: 'build/build_standalone.less',\n                dest: 'dist/css/<%= pkg.name %>.standalone.css'\n            },\n            standalone_bs3: {\n                options: {\n                    sourceMapURL: '<%= pkg.name %>3.standalone.css.map'\n                },\n                src: 'build/build_standalone3.less',\n                dest: 'dist/css/<%= pkg.name %>3.standalone.css'\n            },\n            main_bs2: {\n                options: {\n                    sourceMapURL: '<%= pkg.name %>.css.map'\n                },\n                src: 'build/build.less',\n                dest: 'dist/css/<%= pkg.name %>.css'\n            },\n            main_bs3: {\n                options: {\n                    sourceMapURL: '<%= pkg.name %>3.css.map'\n                },\n                src: 'build/build3.less',\n                dest: 'dist/css/<%= pkg.name %>3.css'\n            }\n        },\n        usebanner: {\n            options: {\n                banner: '<%= banner %>'\n            },\n            css: 'dist/css/*.css',\n            js: 'dist/js/**/*.js'\n        },\n        cssmin: {\n            options: {\n                compatibility: 'ie8',\n                keepSpecialComments: '*',\n                advanced: false\n            },\n            main: {\n                files: {\n                    'dist/css/<%= pkg.name %>.min.css': 'dist/css/<%= pkg.name %>.css',\n                    'dist/css/<%= pkg.name %>3.min.css': 'dist/css/<%= pkg.name %>3.css'\n                }\n            },\n            standalone: {\n                files: {\n                    'dist/css/<%= pkg.name %>.standalone.min.css': 'dist/css/<%= pkg.name %>.standalone.css',\n                    'dist/css/<%= pkg.name %>3.standalone.min.css': 'dist/css/<%= pkg.name %>3.standalone.css'\n                }\n            }\n        },\n        csslint: {\n            options: {\n                csslintrc: 'less/.csslintrc'\n            },\n            dist: [\n                'dist/css/bootstrap-datepicker.css',\n                'dist/css/bootstrap-datepicker3.css',\n                'dist/css/bootstrap-datepicker.standalone.css',\n                'dist/css/bootstrap-datepicker3.standalone.css'\n            ]\n        },\n        compress: {\n            main: {\n                options: {\n                    archive: '<%= pkg.name %>-<%= pkg.version %>-dist.zip',\n                    mode: 'zip',\n                    level: 9,\n                    pretty: true\n                },\n                files: [\n                    {\n                        expand: true,\n                        cwd: 'dist/',\n                        src: '**'\n                    }\n                ]\n            }\n        },\n        'string-replace': {\n            js: {\n                files: [{\n                    src: 'js/bootstrap-datepicker.js',\n                    dest: 'js/bootstrap-datepicker.js'\n                }],\n                options: {\n                    replacements: [{\n                        pattern: /\\$(\\.fn\\.datepicker\\.version)\\s=\\s*(\"|\\')[0-9\\.a-z].*(\"|');/gi,\n                        replacement: \"$.fn.datepicker.version = '\" + grunt.option('newver') + \"';\"\n                    }]\n                }\n            },\n            npm: {\n                files: [{\n                    src: 'package.json',\n                    dest: 'package.json'\n                }],\n                options: {\n                    replacements: [{\n                        pattern: /\\\"version\\\":\\s\\\"[0-9\\.a-z].*\",/gi,\n                        replacement: '\"version\": \"' + grunt.option('newver') + '\",'\n                    }]\n                }\n            }\n        }\n    });\n\n    // These plugins provide necessary tasks.\n    require('load-grunt-tasks')(grunt, {scope: 'devDependencies'});\n    require('time-grunt')(grunt);\n\n    // JS distribution task.\n    grunt.registerTask('dist-js', ['concat', 'uglify:main', 'uglify:locales', 'usebanner:js']);\n\n    // CSS distribution task.\n    grunt.registerTask('less-compile', 'less');\n    grunt.registerTask('dist-css', ['less-compile', 'cssmin:main', 'cssmin:standalone', 'usebanner:css']);\n\n    // Full distribution task.\n    grunt.registerTask('dist', ['clean:dist', 'dist-js', 'dist-css']);\n\n    // Code check tasks.\n    grunt.registerTask('lint-js', 'Lint all js files with jshint and jscs', ['jshint', 'jscs']);\n    grunt.registerTask('lint-css', 'Lint all css files', ['dist-css', 'csslint:dist']);\n    grunt.registerTask('qunit-all', 'Run qunit tests', ['qunit:main', 'qunit-timezone']);\n    grunt.registerTask('test', 'Lint files and run unit tests', ['lint-js', /*'lint-css',*/ 'qunit-all']);\n\n    // Version numbering task.\n    // grunt bump-version --newver=X.Y.Z\n    grunt.registerTask('bump-version', 'string-replace');\n\n    grunt.registerTask('qunit-timezone', 'Run timezone tests', function(){\n        process.env.TZ = 'Europe/Moscow';\n        grunt.task.run('qunit:timezone');\n    });\n};\n"
  },
  {
    "path": "LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        https://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\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       https://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"
  },
  {
    "path": "README.md",
    "content": "# bootstrap-datepicker\n\n[![Join the chat at https://gitter.im/uxsolutions/bootstrap-datepicker](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/uxsolutions/bootstrap-datepicker?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Build Status](https://travis-ci.org/uxsolutions/bootstrap-datepicker.svg?branch=master)](https://travis-ci.org/uxsolutions/bootstrap-datepicker)\n[![GitHub license](https://img.shields.io/badge/license-Apache%202-blue.svg)](https://raw.githubusercontent.com/uxsolutions/bootstrap-datepicker/master/LICENSE)\n[![npm](https://img.shields.io/npm/dt/bootstrap-datepicker.svg)](https://github.com/uxsolutions/bootstrap-datepicker)\n[![Twitter Follow](https://img.shields.io/twitter/follow/bsdatepicker.svg?style=social&label=Follow)](https://twitter.com/bsdatepicker)\n\nVersions are incremented according to [semver](https://semver.org/).\n\n## CDN\n\nYou can use the [CloudFlare](https://www.cloudflare.com) powered [cdnjs.com](https://cdnjs.com) on your website.\n\n[bootstrap-datepicker](https://cdnjs.com/libraries/bootstrap-datepicker) on cdnjs\n\nPlease note: It might take a few hours until a new version is available on cdnjs.\n\n## Links\n\n* [Online Demo](https://uxsolutions.github.io/bootstrap-datepicker/)\n* [Online Docs](https://bootstrap-datepicker.readthedocs.org/en/stable/) (ReadTheDocs.com)\n* [Google Group](https://groups.google.com/group/bootstrap-datepicker/)\n* [Travis CI](https://travis-ci.org/uxsolutions/bootstrap-datepicker)\n\n#### Snippets\n* [Booking demo with two pickers](https://jsfiddle.net/azaret/25bqa6ho/)\n\n## Development\n\nOnce you cloned the repo, you'll need to install [grunt](https://gruntjs.com/) and the development dependencies using a package manager:\n\n* [yarn](https://yarnpkg.com/) (recommended):\n\n```\n$ [sudo] yarn global add grunt-cli\n$ yarn install\n```\n\n* [npm](https://www.npmjs.com/):\n\n```\n$ [sudo] npm install --global grunt-cli\n$ npm install\n```\n"
  },
  {
    "path": "bower.json",
    "content": "{\n  \"name\": \"bootstrap-datepicker\",\n  \"main\": [\n    \"dist/css/bootstrap-datepicker3.css\",\n    \"dist/js/bootstrap-datepicker.js\"\n  ],\n  \"license\": \"Apache-2.0\",\n  \"dependencies\": {\n    \"jquery\" : \">=1.7.1 <4.0.0\"\n  },\n  \"ignore\": []\n}\n"
  },
  {
    "path": "build/build.less",
    "content": "// Datepicker .less buildfile.  Includes select mixins/variables from bootstrap\n// and imports the included datepicker.less to output a minimal datepicker.css\n//\n// Usage:\n//     lessc build.less datepicker.css\n//\n// Variables and mixins copied from bootstrap 2.0.2\n\n// Variables\n@grayLight:             #999;\n@grayLighter:           #eee;\n@white:                 #fff;\n@linkColor:             #08c;\n@btnPrimaryBackground:  @linkColor;\n@orange:                #f89406;\n@infoBackground:        #d9edf7;\n@baseLineHeight:        18px;\n@baseBorderRadius:      4px;\n\n// Mixins\n\n// Border Radius\n.border-radius(@radius: 5px) {\n  -webkit-border-radius: @radius;\n     -moz-border-radius: @radius;\n          border-radius: @radius;\n}\n\n// Button backgrounds\n.buttonBackground(@startColor, @endColor) {\n  .gradientBar(@startColor, @endColor);\n  .reset-filter();\n  &:hover, &:active, &.active, &.disabled, &[disabled] {\n    background-color: @endColor;\n  }\n  &:active,\n  &.active {\n    background-color: darken(@endColor, 10%) e(\"\\9\");\n  }\n}\n\n// Reset filters for IE\n.reset-filter() {\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n\n// Gradient Bar Colors for buttons and alerts\n.gradientBar(@primaryColor, @secondaryColor) {\n  #gradient > .vertical(@primaryColor, @secondaryColor);\n  border-color: @secondaryColor @secondaryColor darken(@secondaryColor, 15%);\n  border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%);\n}\n\n// Gradients\n#gradient {\n  .vertical(@startColor: #555, @endColor: #333) {\n    background-color: mix(@startColor, @endColor, 60%);\n    background-image: -moz-linear-gradient(to bottom, @startColor, @endColor); // FF 3.6+\n    background-image: -ms-linear-gradient(to bottom, @startColor, @endColor); // IE10\n    background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+\n    background-image: -webkit-linear-gradient(to bottom, @startColor, @endColor); // Safari 5.1+, Chrome 10+\n    background-image: -o-linear-gradient(to bottom, @startColor, @endColor); // Opera 11.10\n    background-image: linear-gradient(to bottom, @startColor, @endColor); // The standard\n    background-repeat: repeat-x;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",@startColor,@endColor)); // IE9 and down\n  }\n}\n\n@import \"../less/datepicker.less\";\n"
  },
  {
    "path": "build/build3.less",
    "content": "// Datepicker .less buildfile.  Includes select mixins/variables from bootstrap\n// and imports the included datepicker.less to output a minimal datepicker.css\n//\n// Usage:\n//     lessc build3.less datepicker.css\n//\n// Variables and mixins copied from Bootstrap 3.3.5\n\n// Variables\n@gray:                   lighten(#000, 33.5%); // #555\n@gray-light:             lighten(#000, 46.7%); // #777\n@gray-lighter:           lighten(#000, 93.5%); // #eee\n\n@brand-primary:         darken(#428bca, 6.5%); // #337ab7\n\n@btn-primary-color:              #fff;\n@btn-primary-bg:                 @brand-primary;\n@btn-primary-border:             darken(@btn-primary-bg, 5%);\n\n@btn-link-disabled-color:        @gray-light;\n\n@state-info-bg:           #d9edf7;\n\n@line-height-base:        1.428571429; // 20/14\n@border-radius-base:      4px;\n\n@dropdown-bg:                   #fff;\n@dropdown-border:               rgba(0,0,0,.15);\n\n\n// Mixins\n\n// Button variants\n.button-variant(@color; @background; @border) {\n  color: @color;\n  background-color: @background;\n  border-color: @border;\n\n  &:focus,\n  &.focus {\n    color: @color;\n    background-color: darken(@background, 10%);\n        border-color: darken(@border, 25%);\n  }\n  &:hover {\n    color: @color;\n    background-color: darken(@background, 10%);\n        border-color: darken(@border, 12%);\n  }\n  &:active,\n  &.active {\n    color: @color;\n    background-color: darken(@background, 10%);\n        border-color: darken(@border, 12%);\n\n    &:hover,\n    &:focus,\n    &.focus {\n      color: @color;\n      background-color: darken(@background, 17%);\n          border-color: darken(@border, 25%);\n    }\n  }\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    &:hover,\n    &:focus,\n    &.focus {\n      background-color: @background;\n          border-color: @border;\n    }\n  }\n}\n\n@import \"../less/datepicker3.less\";\n"
  },
  {
    "path": "build/build_standalone.less",
    "content": "// Datepicker standalone .less buildfile.  Includes all necessary mixins/variables/rules from bootstrap\n// and imports the included datepicker.less to output a minimal standalone datepicker.css\n//\n// Usage:\n//     lessc build_standalone.less datepicker.css\n//\n// Variables, mixins, and rules copied from bootstrap 2.0.2\n\n@import \"build.less\";\n\n// Dropdown css\n\n@zindexDropdown:                1000;\n@grayDark:                      #333;\n@baseLineHeight:                20px;\n@tableBackground:               transparent; // overall background-color\n@dropdownBackground:            @white;\n@dropdownBorder:                rgba(0,0,0,.2);\n@dropdownLinkColor:             @grayDark;\n@dropdownLinkColorHover:        @white;\n@dropdownLinkBackgroundHover:   @linkColor;\n\n// Drop shadows\n.box-shadow(@shadow) {\n  -webkit-box-shadow: @shadow;\n     -moz-box-shadow: @shadow;\n          box-shadow: @shadow;\n}\n\n// The dropdown menu (ul)\n// ----------------------\n.datepicker{\n  &.dropdown-menu {\n    position: absolute;\n    top: 100%;\n    left: 0;\n    z-index: @zindexDropdown;\n    float: left;\n    display: none; // none by default, but block on \"open\" of the menu\n    min-width: 160px;\n    list-style: none;\n    background-color: @dropdownBackground;\n    border: 1px solid #ccc;\n    border: 1px solid rgba(0,0,0,.2);\n    .border-radius(5px);\n    .box-shadow(0 5px 10px rgba(0,0,0,.2));\n    -webkit-background-clip: padding-box;\n       -moz-background-clip: padding;\n            background-clip: padding-box;\n    *border-right-width: 2px;\n    *border-bottom-width: 2px;\n\n    // Normally inherited from bootstrap's `body`\n    color: #333333;\n    font-size:13px;\n    line-height: @baseLineHeight;\n  }\n\n  &.dropdown-menu, &.datepicker-inline {\n    th, td {\n      padding: 4px 5px;\n    }\n  }\n}\n"
  },
  {
    "path": "build/build_standalone3.less",
    "content": "// Datepicker standalone .less buildfile.  Includes all necessary mixins/variables/rules from bootstrap\n// and imports the included datepicker.less to output a minimal standalone datepicker.css\n//\n// Usage:\n//     lessc build_standalone3.less datepicker.css\n//\n// Variables, mixins, and rules copied from Bootstrap 3.3.5\n\n@import \"build3.less\";\n\n// Dropdown css\n\n@zindex-dropdown:               1000;\n@dropdown-fallback-border:      #ccc;\n\n// Drop shadows\n.box-shadow(@shadow) {\n  -webkit-box-shadow: @shadow;\n     -moz-box-shadow: @shadow;\n          box-shadow: @shadow;\n}\n\n// The dropdown menu (ul)\n// ----------------------\n.datepicker {\n  &.dropdown-menu {\n    position: absolute;\n    top: 100%;\n    left: 0;\n    z-index: @zindex-dropdown;\n    display: none; // none by default, but block on \"open\" of the menu\n    float: left;\n    min-width: 160px;\n    list-style: none;\n    background-color: @dropdown-bg;\n    border: 1px solid @dropdown-fallback-border; // IE8 fallback\n    border: 1px solid @dropdown-border;\n    border-radius: @border-radius-base;\n    .box-shadow(0 6px 12px rgba(0,0,0,.175));\n    -webkit-background-clip: padding-box;\n       -moz-background-clip: padding;\n            background-clip: padding-box;\n\n    // Normally inherited from bootstrap's `body`\n    color: #333333;\n    font-size: 13px;\n    line-height: @line-height-base;\n  }\n\n  &.dropdown-menu, &.datepicker-inline {\n    th, td {\n      padding: 0px 5px;\n    }\n  }\n}\n"
  },
  {
    "path": "composer.json",
    "content": "{\n    \"name\": \"eternicode/bootstrap-datepicker\",\n    \"description\": \"A datepicker for Bootstrap\",\n    \"license\": \"Apache-2.0\",\n    \"keywords\": [\n        \"bootstrap\",\n        \"datepicker\"\n    ],\n    \"authors\": [\n        {\n            \"name\": \"Andrew Rowls\",\n            \"email\": \"eternicode@gmail.com\"\n        },\n        {\n            \"name\": \"Community\",\n            \"homepage\": \"https://github.com/uxsolutions/bootstrap-datepicker/contributors\"\n        }\n    ],\n    \"type\": \"component\",\n    \"require\": {\n        \"robloach/component-installer\": \"*\",\n        \"components/bootstrap\" : \">=2.0, <4.0\",\n        \"components/jquery\": \">=1.7.1, <4.0.0\"\n    },\n    \"extra\": {\n        \"component\": {\n            \"scripts\": [\n                \"js/bootstrap-datepicker.js\"\n            ],\n            \"styles\": [\n                \"dist/css/bootstrap-datepicker.css\",\n                \"dist/css/bootstrap-datepicker3.css\"\n            ],\n            \"files\": [\n                \"js/locales/bootstrap-datepicker.*.js\"\n            ]\n        }\n    }\n}\n"
  },
  {
    "path": "dist/css/bootstrap-datepicker.css",
    "content": "/*!\n * Datepicker for Bootstrap v1.10.0 (https://github.com/uxsolutions/bootstrap-datepicker)\n *\n * Licensed under the Apache License v2.0 (https://www.apache.org/licenses/LICENSE-2.0)\n */\n\n.datepicker {\n  padding: 4px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  direction: ltr;\n}\n.datepicker-inline {\n  width: 220px;\n}\n.datepicker-rtl {\n  direction: rtl;\n}\n.datepicker-rtl.dropdown-menu {\n  left: auto;\n}\n.datepicker-rtl table tr td span {\n  float: right;\n}\n.datepicker-dropdown {\n  top: 0;\n  left: 0;\n}\n.datepicker-dropdown:before {\n  content: '';\n  display: inline-block;\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #999;\n  border-top: 0;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  position: absolute;\n}\n.datepicker-dropdown:after {\n  content: '';\n  display: inline-block;\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #fff;\n  border-top: 0;\n  position: absolute;\n}\n.datepicker-dropdown.datepicker-orient-left:before {\n  left: 6px;\n}\n.datepicker-dropdown.datepicker-orient-left:after {\n  left: 7px;\n}\n.datepicker-dropdown.datepicker-orient-right:before {\n  right: 6px;\n}\n.datepicker-dropdown.datepicker-orient-right:after {\n  right: 7px;\n}\n.datepicker-dropdown.datepicker-orient-bottom:before {\n  top: -7px;\n}\n.datepicker-dropdown.datepicker-orient-bottom:after {\n  top: -6px;\n}\n.datepicker-dropdown.datepicker-orient-top:before {\n  bottom: -7px;\n  border-bottom: 0;\n  border-top: 7px solid #999;\n}\n.datepicker-dropdown.datepicker-orient-top:after {\n  bottom: -6px;\n  border-bottom: 0;\n  border-top: 6px solid #fff;\n}\n.datepicker table {\n  margin: 0;\n  -webkit-touch-callout: none;\n  -webkit-user-select: none;\n  -khtml-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n.datepicker td,\n.datepicker th {\n  text-align: center;\n  width: 20px;\n  height: 20px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  border: none;\n}\n.table-striped .datepicker table tr td,\n.table-striped .datepicker table tr th {\n  background-color: transparent;\n}\n.datepicker table tr td.day:hover,\n.datepicker table tr td.day.focused {\n  background: #eee;\n  cursor: pointer;\n}\n.datepicker table tr td.old,\n.datepicker table tr td.new {\n  color: #999;\n}\n.datepicker table tr td.disabled,\n.datepicker table tr td.disabled:hover {\n  background: none;\n  color: #999;\n  cursor: default;\n}\n.datepicker table tr td.highlighted {\n  background: #d9edf7;\n  border-radius: 0;\n}\n.datepicker table tr td.today,\n.datepicker table tr td.today:hover,\n.datepicker table tr td.today.disabled,\n.datepicker table tr td.today.disabled:hover {\n  background-color: #fde19a;\n  background-image: -moz-linear-gradient(to bottom, #fdd49a, #fdf59a);\n  background-image: -ms-linear-gradient(to bottom, #fdd49a, #fdf59a);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));\n  background-image: -webkit-linear-gradient(to bottom, #fdd49a, #fdf59a);\n  background-image: -o-linear-gradient(to bottom, #fdd49a, #fdf59a);\n  background-image: linear-gradient(to bottom, #fdd49a, #fdf59a);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);\n  border-color: #fdf59a #fdf59a #fbed50;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #000;\n}\n.datepicker table tr td.today:hover,\n.datepicker table tr td.today:hover:hover,\n.datepicker table tr td.today.disabled:hover,\n.datepicker table tr td.today.disabled:hover:hover,\n.datepicker table tr td.today:active,\n.datepicker table tr td.today:hover:active,\n.datepicker table tr td.today.disabled:active,\n.datepicker table tr td.today.disabled:hover:active,\n.datepicker table tr td.today.active,\n.datepicker table tr td.today:hover.active,\n.datepicker table tr td.today.disabled.active,\n.datepicker table tr td.today.disabled:hover.active,\n.datepicker table tr td.today.disabled,\n.datepicker table tr td.today:hover.disabled,\n.datepicker table tr td.today.disabled.disabled,\n.datepicker table tr td.today.disabled:hover.disabled,\n.datepicker table tr td.today[disabled],\n.datepicker table tr td.today:hover[disabled],\n.datepicker table tr td.today.disabled[disabled],\n.datepicker table tr td.today.disabled:hover[disabled] {\n  background-color: #fdf59a;\n}\n.datepicker table tr td.today:active,\n.datepicker table tr td.today:hover:active,\n.datepicker table tr td.today.disabled:active,\n.datepicker table tr td.today.disabled:hover:active,\n.datepicker table tr td.today.active,\n.datepicker table tr td.today:hover.active,\n.datepicker table tr td.today.disabled.active,\n.datepicker table tr td.today.disabled:hover.active {\n  background-color: #fbf069 \\9;\n}\n.datepicker table tr td.today:hover:hover {\n  color: #000;\n}\n.datepicker table tr td.today.active:hover {\n  color: #fff;\n}\n.datepicker table tr td.range,\n.datepicker table tr td.range:hover,\n.datepicker table tr td.range.disabled,\n.datepicker table tr td.range.disabled:hover {\n  background: #eee;\n  -webkit-border-radius: 0;\n  -moz-border-radius: 0;\n  border-radius: 0;\n}\n.datepicker table tr td.range.today,\n.datepicker table tr td.range.today:hover,\n.datepicker table tr td.range.today.disabled,\n.datepicker table tr td.range.today.disabled:hover {\n  background-color: #f3d17a;\n  background-image: -moz-linear-gradient(to bottom, #f3c17a, #f3e97a);\n  background-image: -ms-linear-gradient(to bottom, #f3c17a, #f3e97a);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a));\n  background-image: -webkit-linear-gradient(to bottom, #f3c17a, #f3e97a);\n  background-image: -o-linear-gradient(to bottom, #f3c17a, #f3e97a);\n  background-image: linear-gradient(to bottom, #f3c17a, #f3e97a);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);\n  border-color: #f3e97a #f3e97a #edde34;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  -webkit-border-radius: 0;\n  -moz-border-radius: 0;\n  border-radius: 0;\n}\n.datepicker table tr td.range.today:hover,\n.datepicker table tr td.range.today:hover:hover,\n.datepicker table tr td.range.today.disabled:hover,\n.datepicker table tr td.range.today.disabled:hover:hover,\n.datepicker table tr td.range.today:active,\n.datepicker table tr td.range.today:hover:active,\n.datepicker table tr td.range.today.disabled:active,\n.datepicker table tr td.range.today.disabled:hover:active,\n.datepicker table tr td.range.today.active,\n.datepicker table tr td.range.today:hover.active,\n.datepicker table tr td.range.today.disabled.active,\n.datepicker table tr td.range.today.disabled:hover.active,\n.datepicker table tr td.range.today.disabled,\n.datepicker table tr td.range.today:hover.disabled,\n.datepicker table tr td.range.today.disabled.disabled,\n.datepicker table tr td.range.today.disabled:hover.disabled,\n.datepicker table tr td.range.today[disabled],\n.datepicker table tr td.range.today:hover[disabled],\n.datepicker table tr td.range.today.disabled[disabled],\n.datepicker table tr td.range.today.disabled:hover[disabled] {\n  background-color: #f3e97a;\n}\n.datepicker table tr td.range.today:active,\n.datepicker table tr td.range.today:hover:active,\n.datepicker table tr td.range.today.disabled:active,\n.datepicker table tr td.range.today.disabled:hover:active,\n.datepicker table tr td.range.today.active,\n.datepicker table tr td.range.today:hover.active,\n.datepicker table tr td.range.today.disabled.active,\n.datepicker table tr td.range.today.disabled:hover.active {\n  background-color: #efe24b \\9;\n}\n.datepicker table tr td.selected,\n.datepicker table tr td.selected:hover,\n.datepicker table tr td.selected.disabled,\n.datepicker table tr td.selected.disabled:hover {\n  background-color: #9e9e9e;\n  background-image: -moz-linear-gradient(to bottom, #b3b3b3, #808080);\n  background-image: -ms-linear-gradient(to bottom, #b3b3b3, #808080);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080));\n  background-image: -webkit-linear-gradient(to bottom, #b3b3b3, #808080);\n  background-image: -o-linear-gradient(to bottom, #b3b3b3, #808080);\n  background-image: linear-gradient(to bottom, #b3b3b3, #808080);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);\n  border-color: #808080 #808080 #595959;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td.selected:hover,\n.datepicker table tr td.selected:hover:hover,\n.datepicker table tr td.selected.disabled:hover,\n.datepicker table tr td.selected.disabled:hover:hover,\n.datepicker table tr td.selected:active,\n.datepicker table tr td.selected:hover:active,\n.datepicker table tr td.selected.disabled:active,\n.datepicker table tr td.selected.disabled:hover:active,\n.datepicker table tr td.selected.active,\n.datepicker table tr td.selected:hover.active,\n.datepicker table tr td.selected.disabled.active,\n.datepicker table tr td.selected.disabled:hover.active,\n.datepicker table tr td.selected.disabled,\n.datepicker table tr td.selected:hover.disabled,\n.datepicker table tr td.selected.disabled.disabled,\n.datepicker table tr td.selected.disabled:hover.disabled,\n.datepicker table tr td.selected[disabled],\n.datepicker table tr td.selected:hover[disabled],\n.datepicker table tr td.selected.disabled[disabled],\n.datepicker table tr td.selected.disabled:hover[disabled] {\n  background-color: #808080;\n}\n.datepicker table tr td.selected:active,\n.datepicker table tr td.selected:hover:active,\n.datepicker table tr td.selected.disabled:active,\n.datepicker table tr td.selected.disabled:hover:active,\n.datepicker table tr td.selected.active,\n.datepicker table tr td.selected:hover.active,\n.datepicker table tr td.selected.disabled.active,\n.datepicker table tr td.selected.disabled:hover.active {\n  background-color: #666666 \\9;\n}\n.datepicker table tr td.active,\n.datepicker table tr td.active:hover,\n.datepicker table tr td.active.disabled,\n.datepicker table tr td.active.disabled:hover {\n  background-color: #006dcc;\n  background-image: -moz-linear-gradient(to bottom, #08c, #0044cc);\n  background-image: -ms-linear-gradient(to bottom, #08c, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#08c), to(#0044cc));\n  background-image: -webkit-linear-gradient(to bottom, #08c, #0044cc);\n  background-image: -o-linear-gradient(to bottom, #08c, #0044cc);\n  background-image: linear-gradient(to bottom, #08c, #0044cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#08c', endColorstr='#0044cc', GradientType=0);\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td.active:hover,\n.datepicker table tr td.active:hover:hover,\n.datepicker table tr td.active.disabled:hover,\n.datepicker table tr td.active.disabled:hover:hover,\n.datepicker table tr td.active:active,\n.datepicker table tr td.active:hover:active,\n.datepicker table tr td.active.disabled:active,\n.datepicker table tr td.active.disabled:hover:active,\n.datepicker table tr td.active.active,\n.datepicker table tr td.active:hover.active,\n.datepicker table tr td.active.disabled.active,\n.datepicker table tr td.active.disabled:hover.active,\n.datepicker table tr td.active.disabled,\n.datepicker table tr td.active:hover.disabled,\n.datepicker table tr td.active.disabled.disabled,\n.datepicker table tr td.active.disabled:hover.disabled,\n.datepicker table tr td.active[disabled],\n.datepicker table tr td.active:hover[disabled],\n.datepicker table tr td.active.disabled[disabled],\n.datepicker table tr td.active.disabled:hover[disabled] {\n  background-color: #0044cc;\n}\n.datepicker table tr td.active:active,\n.datepicker table tr td.active:hover:active,\n.datepicker table tr td.active.disabled:active,\n.datepicker table tr td.active.disabled:hover:active,\n.datepicker table tr td.active.active,\n.datepicker table tr td.active:hover.active,\n.datepicker table tr td.active.disabled.active,\n.datepicker table tr td.active.disabled:hover.active {\n  background-color: #003399 \\9;\n}\n.datepicker table tr td span {\n  display: block;\n  width: 23%;\n  height: 54px;\n  line-height: 54px;\n  float: left;\n  margin: 1%;\n  cursor: pointer;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n}\n.datepicker table tr td span:hover,\n.datepicker table tr td span.focused {\n  background: #eee;\n}\n.datepicker table tr td span.disabled,\n.datepicker table tr td span.disabled:hover {\n  background: none;\n  color: #999;\n  cursor: default;\n}\n.datepicker table tr td span.active,\n.datepicker table tr td span.active:hover,\n.datepicker table tr td span.active.disabled,\n.datepicker table tr td span.active.disabled:hover {\n  background-color: #006dcc;\n  background-image: -moz-linear-gradient(to bottom, #08c, #0044cc);\n  background-image: -ms-linear-gradient(to bottom, #08c, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#08c), to(#0044cc));\n  background-image: -webkit-linear-gradient(to bottom, #08c, #0044cc);\n  background-image: -o-linear-gradient(to bottom, #08c, #0044cc);\n  background-image: linear-gradient(to bottom, #08c, #0044cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#08c', endColorstr='#0044cc', GradientType=0);\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td span.active:hover,\n.datepicker table tr td span.active:hover:hover,\n.datepicker table tr td span.active.disabled:hover,\n.datepicker table tr td span.active.disabled:hover:hover,\n.datepicker table tr td span.active:active,\n.datepicker table tr td span.active:hover:active,\n.datepicker table tr td span.active.disabled:active,\n.datepicker table tr td span.active.disabled:hover:active,\n.datepicker table tr td span.active.active,\n.datepicker table tr td span.active:hover.active,\n.datepicker table tr td span.active.disabled.active,\n.datepicker table tr td span.active.disabled:hover.active,\n.datepicker table tr td span.active.disabled,\n.datepicker table tr td span.active:hover.disabled,\n.datepicker table tr td span.active.disabled.disabled,\n.datepicker table tr td span.active.disabled:hover.disabled,\n.datepicker table tr td span.active[disabled],\n.datepicker table tr td span.active:hover[disabled],\n.datepicker table tr td span.active.disabled[disabled],\n.datepicker table tr td span.active.disabled:hover[disabled] {\n  background-color: #0044cc;\n}\n.datepicker table tr td span.active:active,\n.datepicker table tr td span.active:hover:active,\n.datepicker table tr td span.active.disabled:active,\n.datepicker table tr td span.active.disabled:hover:active,\n.datepicker table tr td span.active.active,\n.datepicker table tr td span.active:hover.active,\n.datepicker table tr td span.active.disabled.active,\n.datepicker table tr td span.active.disabled:hover.active {\n  background-color: #003399 \\9;\n}\n.datepicker table tr td span.old,\n.datepicker table tr td span.new {\n  color: #999;\n}\n.datepicker .datepicker-switch {\n  width: 145px;\n}\n.datepicker .datepicker-switch,\n.datepicker .prev,\n.datepicker .next,\n.datepicker tfoot tr th {\n  cursor: pointer;\n}\n.datepicker .datepicker-switch:hover,\n.datepicker .prev:hover,\n.datepicker .next:hover,\n.datepicker tfoot tr th:hover {\n  background: #eee;\n}\n.datepicker .prev.disabled,\n.datepicker .next.disabled {\n  visibility: hidden;\n}\n.datepicker .cw {\n  font-size: 10px;\n  width: 12px;\n  padding: 0 2px 0 5px;\n  vertical-align: middle;\n}\n.input-append.date .add-on,\n.input-prepend.date .add-on {\n  cursor: pointer;\n}\n.input-append.date .add-on i,\n.input-prepend.date .add-on i {\n  margin-top: 3px;\n}\n.input-daterange input {\n  text-align: center;\n}\n.input-daterange input:first-child {\n  -webkit-border-radius: 3px 0 0 3px;\n  -moz-border-radius: 3px 0 0 3px;\n  border-radius: 3px 0 0 3px;\n}\n.input-daterange input:last-child {\n  -webkit-border-radius: 0 3px 3px 0;\n  -moz-border-radius: 0 3px 3px 0;\n  border-radius: 0 3px 3px 0;\n}\n.input-daterange .add-on {\n  display: inline-block;\n  width: auto;\n  min-width: 16px;\n  height: 18px;\n  padding: 4px 5px;\n  font-weight: normal;\n  line-height: 18px;\n  text-align: center;\n  text-shadow: 0 1px 0 #fff;\n  vertical-align: middle;\n  background-color: #eee;\n  border: 1px solid #ccc;\n  margin-left: -5px;\n  margin-right: -5px;\n}\n/*# sourceMappingURL=bootstrap-datepicker.css.map */"
  },
  {
    "path": "dist/css/bootstrap-datepicker.standalone.css",
    "content": "/*!\n * Datepicker for Bootstrap v1.10.0 (https://github.com/uxsolutions/bootstrap-datepicker)\n *\n * Licensed under the Apache License v2.0 (https://www.apache.org/licenses/LICENSE-2.0)\n */\n\n.datepicker {\n  padding: 4px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  direction: ltr;\n}\n.datepicker-inline {\n  width: 220px;\n}\n.datepicker-rtl {\n  direction: rtl;\n}\n.datepicker-rtl.dropdown-menu {\n  left: auto;\n}\n.datepicker-rtl table tr td span {\n  float: right;\n}\n.datepicker-dropdown {\n  top: 0;\n  left: 0;\n}\n.datepicker-dropdown:before {\n  content: '';\n  display: inline-block;\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid #999;\n  border-top: 0;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  position: absolute;\n}\n.datepicker-dropdown:after {\n  content: '';\n  display: inline-block;\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #fff;\n  border-top: 0;\n  position: absolute;\n}\n.datepicker-dropdown.datepicker-orient-left:before {\n  left: 6px;\n}\n.datepicker-dropdown.datepicker-orient-left:after {\n  left: 7px;\n}\n.datepicker-dropdown.datepicker-orient-right:before {\n  right: 6px;\n}\n.datepicker-dropdown.datepicker-orient-right:after {\n  right: 7px;\n}\n.datepicker-dropdown.datepicker-orient-bottom:before {\n  top: -7px;\n}\n.datepicker-dropdown.datepicker-orient-bottom:after {\n  top: -6px;\n}\n.datepicker-dropdown.datepicker-orient-top:before {\n  bottom: -7px;\n  border-bottom: 0;\n  border-top: 7px solid #999;\n}\n.datepicker-dropdown.datepicker-orient-top:after {\n  bottom: -6px;\n  border-bottom: 0;\n  border-top: 6px solid #fff;\n}\n.datepicker table {\n  margin: 0;\n  -webkit-touch-callout: none;\n  -webkit-user-select: none;\n  -khtml-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n.datepicker td,\n.datepicker th {\n  text-align: center;\n  width: 20px;\n  height: 20px;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n  border: none;\n}\n.table-striped .datepicker table tr td,\n.table-striped .datepicker table tr th {\n  background-color: transparent;\n}\n.datepicker table tr td.day:hover,\n.datepicker table tr td.day.focused {\n  background: #eee;\n  cursor: pointer;\n}\n.datepicker table tr td.old,\n.datepicker table tr td.new {\n  color: #999;\n}\n.datepicker table tr td.disabled,\n.datepicker table tr td.disabled:hover {\n  background: none;\n  color: #999;\n  cursor: default;\n}\n.datepicker table tr td.highlighted {\n  background: #d9edf7;\n  border-radius: 0;\n}\n.datepicker table tr td.today,\n.datepicker table tr td.today:hover,\n.datepicker table tr td.today.disabled,\n.datepicker table tr td.today.disabled:hover {\n  background-color: #fde19a;\n  background-image: -moz-linear-gradient(to bottom, #fdd49a, #fdf59a);\n  background-image: -ms-linear-gradient(to bottom, #fdd49a, #fdf59a);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));\n  background-image: -webkit-linear-gradient(to bottom, #fdd49a, #fdf59a);\n  background-image: -o-linear-gradient(to bottom, #fdd49a, #fdf59a);\n  background-image: linear-gradient(to bottom, #fdd49a, #fdf59a);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);\n  border-color: #fdf59a #fdf59a #fbed50;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #000;\n}\n.datepicker table tr td.today:hover,\n.datepicker table tr td.today:hover:hover,\n.datepicker table tr td.today.disabled:hover,\n.datepicker table tr td.today.disabled:hover:hover,\n.datepicker table tr td.today:active,\n.datepicker table tr td.today:hover:active,\n.datepicker table tr td.today.disabled:active,\n.datepicker table tr td.today.disabled:hover:active,\n.datepicker table tr td.today.active,\n.datepicker table tr td.today:hover.active,\n.datepicker table tr td.today.disabled.active,\n.datepicker table tr td.today.disabled:hover.active,\n.datepicker table tr td.today.disabled,\n.datepicker table tr td.today:hover.disabled,\n.datepicker table tr td.today.disabled.disabled,\n.datepicker table tr td.today.disabled:hover.disabled,\n.datepicker table tr td.today[disabled],\n.datepicker table tr td.today:hover[disabled],\n.datepicker table tr td.today.disabled[disabled],\n.datepicker table tr td.today.disabled:hover[disabled] {\n  background-color: #fdf59a;\n}\n.datepicker table tr td.today:active,\n.datepicker table tr td.today:hover:active,\n.datepicker table tr td.today.disabled:active,\n.datepicker table tr td.today.disabled:hover:active,\n.datepicker table tr td.today.active,\n.datepicker table tr td.today:hover.active,\n.datepicker table tr td.today.disabled.active,\n.datepicker table tr td.today.disabled:hover.active {\n  background-color: #fbf069 \\9;\n}\n.datepicker table tr td.today:hover:hover {\n  color: #000;\n}\n.datepicker table tr td.today.active:hover {\n  color: #fff;\n}\n.datepicker table tr td.range,\n.datepicker table tr td.range:hover,\n.datepicker table tr td.range.disabled,\n.datepicker table tr td.range.disabled:hover {\n  background: #eee;\n  -webkit-border-radius: 0;\n  -moz-border-radius: 0;\n  border-radius: 0;\n}\n.datepicker table tr td.range.today,\n.datepicker table tr td.range.today:hover,\n.datepicker table tr td.range.today.disabled,\n.datepicker table tr td.range.today.disabled:hover {\n  background-color: #f3d17a;\n  background-image: -moz-linear-gradient(to bottom, #f3c17a, #f3e97a);\n  background-image: -ms-linear-gradient(to bottom, #f3c17a, #f3e97a);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a));\n  background-image: -webkit-linear-gradient(to bottom, #f3c17a, #f3e97a);\n  background-image: -o-linear-gradient(to bottom, #f3c17a, #f3e97a);\n  background-image: linear-gradient(to bottom, #f3c17a, #f3e97a);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);\n  border-color: #f3e97a #f3e97a #edde34;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  -webkit-border-radius: 0;\n  -moz-border-radius: 0;\n  border-radius: 0;\n}\n.datepicker table tr td.range.today:hover,\n.datepicker table tr td.range.today:hover:hover,\n.datepicker table tr td.range.today.disabled:hover,\n.datepicker table tr td.range.today.disabled:hover:hover,\n.datepicker table tr td.range.today:active,\n.datepicker table tr td.range.today:hover:active,\n.datepicker table tr td.range.today.disabled:active,\n.datepicker table tr td.range.today.disabled:hover:active,\n.datepicker table tr td.range.today.active,\n.datepicker table tr td.range.today:hover.active,\n.datepicker table tr td.range.today.disabled.active,\n.datepicker table tr td.range.today.disabled:hover.active,\n.datepicker table tr td.range.today.disabled,\n.datepicker table tr td.range.today:hover.disabled,\n.datepicker table tr td.range.today.disabled.disabled,\n.datepicker table tr td.range.today.disabled:hover.disabled,\n.datepicker table tr td.range.today[disabled],\n.datepicker table tr td.range.today:hover[disabled],\n.datepicker table tr td.range.today.disabled[disabled],\n.datepicker table tr td.range.today.disabled:hover[disabled] {\n  background-color: #f3e97a;\n}\n.datepicker table tr td.range.today:active,\n.datepicker table tr td.range.today:hover:active,\n.datepicker table tr td.range.today.disabled:active,\n.datepicker table tr td.range.today.disabled:hover:active,\n.datepicker table tr td.range.today.active,\n.datepicker table tr td.range.today:hover.active,\n.datepicker table tr td.range.today.disabled.active,\n.datepicker table tr td.range.today.disabled:hover.active {\n  background-color: #efe24b \\9;\n}\n.datepicker table tr td.selected,\n.datepicker table tr td.selected:hover,\n.datepicker table tr td.selected.disabled,\n.datepicker table tr td.selected.disabled:hover {\n  background-color: #9e9e9e;\n  background-image: -moz-linear-gradient(to bottom, #b3b3b3, #808080);\n  background-image: -ms-linear-gradient(to bottom, #b3b3b3, #808080);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080));\n  background-image: -webkit-linear-gradient(to bottom, #b3b3b3, #808080);\n  background-image: -o-linear-gradient(to bottom, #b3b3b3, #808080);\n  background-image: linear-gradient(to bottom, #b3b3b3, #808080);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);\n  border-color: #808080 #808080 #595959;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td.selected:hover,\n.datepicker table tr td.selected:hover:hover,\n.datepicker table tr td.selected.disabled:hover,\n.datepicker table tr td.selected.disabled:hover:hover,\n.datepicker table tr td.selected:active,\n.datepicker table tr td.selected:hover:active,\n.datepicker table tr td.selected.disabled:active,\n.datepicker table tr td.selected.disabled:hover:active,\n.datepicker table tr td.selected.active,\n.datepicker table tr td.selected:hover.active,\n.datepicker table tr td.selected.disabled.active,\n.datepicker table tr td.selected.disabled:hover.active,\n.datepicker table tr td.selected.disabled,\n.datepicker table tr td.selected:hover.disabled,\n.datepicker table tr td.selected.disabled.disabled,\n.datepicker table tr td.selected.disabled:hover.disabled,\n.datepicker table tr td.selected[disabled],\n.datepicker table tr td.selected:hover[disabled],\n.datepicker table tr td.selected.disabled[disabled],\n.datepicker table tr td.selected.disabled:hover[disabled] {\n  background-color: #808080;\n}\n.datepicker table tr td.selected:active,\n.datepicker table tr td.selected:hover:active,\n.datepicker table tr td.selected.disabled:active,\n.datepicker table tr td.selected.disabled:hover:active,\n.datepicker table tr td.selected.active,\n.datepicker table tr td.selected:hover.active,\n.datepicker table tr td.selected.disabled.active,\n.datepicker table tr td.selected.disabled:hover.active {\n  background-color: #666666 \\9;\n}\n.datepicker table tr td.active,\n.datepicker table tr td.active:hover,\n.datepicker table tr td.active.disabled,\n.datepicker table tr td.active.disabled:hover {\n  background-color: #006dcc;\n  background-image: -moz-linear-gradient(to bottom, #08c, #0044cc);\n  background-image: -ms-linear-gradient(to bottom, #08c, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#08c), to(#0044cc));\n  background-image: -webkit-linear-gradient(to bottom, #08c, #0044cc);\n  background-image: -o-linear-gradient(to bottom, #08c, #0044cc);\n  background-image: linear-gradient(to bottom, #08c, #0044cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#08c', endColorstr='#0044cc', GradientType=0);\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td.active:hover,\n.datepicker table tr td.active:hover:hover,\n.datepicker table tr td.active.disabled:hover,\n.datepicker table tr td.active.disabled:hover:hover,\n.datepicker table tr td.active:active,\n.datepicker table tr td.active:hover:active,\n.datepicker table tr td.active.disabled:active,\n.datepicker table tr td.active.disabled:hover:active,\n.datepicker table tr td.active.active,\n.datepicker table tr td.active:hover.active,\n.datepicker table tr td.active.disabled.active,\n.datepicker table tr td.active.disabled:hover.active,\n.datepicker table tr td.active.disabled,\n.datepicker table tr td.active:hover.disabled,\n.datepicker table tr td.active.disabled.disabled,\n.datepicker table tr td.active.disabled:hover.disabled,\n.datepicker table tr td.active[disabled],\n.datepicker table tr td.active:hover[disabled],\n.datepicker table tr td.active.disabled[disabled],\n.datepicker table tr td.active.disabled:hover[disabled] {\n  background-color: #0044cc;\n}\n.datepicker table tr td.active:active,\n.datepicker table tr td.active:hover:active,\n.datepicker table tr td.active.disabled:active,\n.datepicker table tr td.active.disabled:hover:active,\n.datepicker table tr td.active.active,\n.datepicker table tr td.active:hover.active,\n.datepicker table tr td.active.disabled.active,\n.datepicker table tr td.active.disabled:hover.active {\n  background-color: #003399 \\9;\n}\n.datepicker table tr td span {\n  display: block;\n  width: 23%;\n  height: 54px;\n  line-height: 54px;\n  float: left;\n  margin: 1%;\n  cursor: pointer;\n  -webkit-border-radius: 4px;\n  -moz-border-radius: 4px;\n  border-radius: 4px;\n}\n.datepicker table tr td span:hover,\n.datepicker table tr td span.focused {\n  background: #eee;\n}\n.datepicker table tr td span.disabled,\n.datepicker table tr td span.disabled:hover {\n  background: none;\n  color: #999;\n  cursor: default;\n}\n.datepicker table tr td span.active,\n.datepicker table tr td span.active:hover,\n.datepicker table tr td span.active.disabled,\n.datepicker table tr td span.active.disabled:hover {\n  background-color: #006dcc;\n  background-image: -moz-linear-gradient(to bottom, #08c, #0044cc);\n  background-image: -ms-linear-gradient(to bottom, #08c, #0044cc);\n  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#08c), to(#0044cc));\n  background-image: -webkit-linear-gradient(to bottom, #08c, #0044cc);\n  background-image: -o-linear-gradient(to bottom, #08c, #0044cc);\n  background-image: linear-gradient(to bottom, #08c, #0044cc);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#08c', endColorstr='#0044cc', GradientType=0);\n  border-color: #0044cc #0044cc #002a80;\n  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td span.active:hover,\n.datepicker table tr td span.active:hover:hover,\n.datepicker table tr td span.active.disabled:hover,\n.datepicker table tr td span.active.disabled:hover:hover,\n.datepicker table tr td span.active:active,\n.datepicker table tr td span.active:hover:active,\n.datepicker table tr td span.active.disabled:active,\n.datepicker table tr td span.active.disabled:hover:active,\n.datepicker table tr td span.active.active,\n.datepicker table tr td span.active:hover.active,\n.datepicker table tr td span.active.disabled.active,\n.datepicker table tr td span.active.disabled:hover.active,\n.datepicker table tr td span.active.disabled,\n.datepicker table tr td span.active:hover.disabled,\n.datepicker table tr td span.active.disabled.disabled,\n.datepicker table tr td span.active.disabled:hover.disabled,\n.datepicker table tr td span.active[disabled],\n.datepicker table tr td span.active:hover[disabled],\n.datepicker table tr td span.active.disabled[disabled],\n.datepicker table tr td span.active.disabled:hover[disabled] {\n  background-color: #0044cc;\n}\n.datepicker table tr td span.active:active,\n.datepicker table tr td span.active:hover:active,\n.datepicker table tr td span.active.disabled:active,\n.datepicker table tr td span.active.disabled:hover:active,\n.datepicker table tr td span.active.active,\n.datepicker table tr td span.active:hover.active,\n.datepicker table tr td span.active.disabled.active,\n.datepicker table tr td span.active.disabled:hover.active {\n  background-color: #003399 \\9;\n}\n.datepicker table tr td span.old,\n.datepicker table tr td span.new {\n  color: #999;\n}\n.datepicker .datepicker-switch {\n  width: 145px;\n}\n.datepicker .datepicker-switch,\n.datepicker .prev,\n.datepicker .next,\n.datepicker tfoot tr th {\n  cursor: pointer;\n}\n.datepicker .datepicker-switch:hover,\n.datepicker .prev:hover,\n.datepicker .next:hover,\n.datepicker tfoot tr th:hover {\n  background: #eee;\n}\n.datepicker .prev.disabled,\n.datepicker .next.disabled {\n  visibility: hidden;\n}\n.datepicker .cw {\n  font-size: 10px;\n  width: 12px;\n  padding: 0 2px 0 5px;\n  vertical-align: middle;\n}\n.input-append.date .add-on,\n.input-prepend.date .add-on {\n  cursor: pointer;\n}\n.input-append.date .add-on i,\n.input-prepend.date .add-on i {\n  margin-top: 3px;\n}\n.input-daterange input {\n  text-align: center;\n}\n.input-daterange input:first-child {\n  -webkit-border-radius: 3px 0 0 3px;\n  -moz-border-radius: 3px 0 0 3px;\n  border-radius: 3px 0 0 3px;\n}\n.input-daterange input:last-child {\n  -webkit-border-radius: 0 3px 3px 0;\n  -moz-border-radius: 0 3px 3px 0;\n  border-radius: 0 3px 3px 0;\n}\n.input-daterange .add-on {\n  display: inline-block;\n  width: auto;\n  min-width: 16px;\n  height: 20px;\n  padding: 4px 5px;\n  font-weight: normal;\n  line-height: 20px;\n  text-align: center;\n  text-shadow: 0 1px 0 #fff;\n  vertical-align: middle;\n  background-color: #eee;\n  border: 1px solid #ccc;\n  margin-left: -5px;\n  margin-right: -5px;\n}\n.datepicker.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  float: left;\n  display: none;\n  min-width: 160px;\n  list-style: none;\n  background-color: #fff;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  -webkit-border-radius: 5px;\n  -moz-border-radius: 5px;\n  border-radius: 5px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n  -webkit-background-clip: padding-box;\n  -moz-background-clip: padding;\n  background-clip: padding-box;\n  *border-right-width: 2px;\n  *border-bottom-width: 2px;\n  color: #333333;\n  font-size: 13px;\n  line-height: 20px;\n}\n.datepicker.dropdown-menu th,\n.datepicker.datepicker-inline th,\n.datepicker.dropdown-menu td,\n.datepicker.datepicker-inline td {\n  padding: 4px 5px;\n}\n/*# sourceMappingURL=bootstrap-datepicker.standalone.css.map */"
  },
  {
    "path": "dist/css/bootstrap-datepicker3.css",
    "content": "/*!\n * Datepicker for Bootstrap v1.10.0 (https://github.com/uxsolutions/bootstrap-datepicker)\n *\n * Licensed under the Apache License v2.0 (https://www.apache.org/licenses/LICENSE-2.0)\n */\n\n.datepicker {\n  border-radius: 4px;\n  direction: ltr;\n}\n.datepicker-inline {\n  width: 220px;\n}\n.datepicker-rtl {\n  direction: rtl;\n}\n.datepicker-rtl.dropdown-menu {\n  left: auto;\n}\n.datepicker-rtl table tr td span {\n  float: right;\n}\n.datepicker-dropdown {\n  top: 0;\n  left: 0;\n  padding: 4px;\n}\n.datepicker-dropdown:before {\n  content: '';\n  display: inline-block;\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid rgba(0, 0, 0, 0.15);\n  border-top: 0;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  position: absolute;\n}\n.datepicker-dropdown:after {\n  content: '';\n  display: inline-block;\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #fff;\n  border-top: 0;\n  position: absolute;\n}\n.datepicker-dropdown.datepicker-orient-left:before {\n  left: 6px;\n}\n.datepicker-dropdown.datepicker-orient-left:after {\n  left: 7px;\n}\n.datepicker-dropdown.datepicker-orient-right:before {\n  right: 6px;\n}\n.datepicker-dropdown.datepicker-orient-right:after {\n  right: 7px;\n}\n.datepicker-dropdown.datepicker-orient-bottom:before {\n  top: -7px;\n}\n.datepicker-dropdown.datepicker-orient-bottom:after {\n  top: -6px;\n}\n.datepicker-dropdown.datepicker-orient-top:before {\n  bottom: -7px;\n  border-bottom: 0;\n  border-top: 7px solid rgba(0, 0, 0, 0.15);\n}\n.datepicker-dropdown.datepicker-orient-top:after {\n  bottom: -6px;\n  border-bottom: 0;\n  border-top: 6px solid #fff;\n}\n.datepicker table {\n  margin: 0;\n  -webkit-touch-callout: none;\n  -webkit-user-select: none;\n  -khtml-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n.datepicker table tr td,\n.datepicker table tr th {\n  text-align: center;\n  width: 30px;\n  height: 30px;\n  border-radius: 4px;\n  border: none;\n}\n.table-striped .datepicker table tr td,\n.table-striped .datepicker table tr th {\n  background-color: transparent;\n}\n.datepicker table tr td.old,\n.datepicker table tr td.new {\n  color: #777777;\n}\n.datepicker table tr td.day:hover,\n.datepicker table tr td.focused {\n  background: #eeeeee;\n  cursor: pointer;\n}\n.datepicker table tr td.disabled,\n.datepicker table tr td.disabled:hover {\n  background: none;\n  color: #777777;\n  cursor: default;\n}\n.datepicker table tr td.highlighted {\n  color: #000;\n  background-color: #d9edf7;\n  border-color: #85c5e5;\n  border-radius: 0;\n}\n.datepicker table tr td.highlighted:focus,\n.datepicker table tr td.highlighted.focus {\n  color: #000;\n  background-color: #afd9ee;\n  border-color: #298fc2;\n}\n.datepicker table tr td.highlighted:hover {\n  color: #000;\n  background-color: #afd9ee;\n  border-color: #52addb;\n}\n.datepicker table tr td.highlighted:active,\n.datepicker table tr td.highlighted.active {\n  color: #000;\n  background-color: #afd9ee;\n  border-color: #52addb;\n}\n.datepicker table tr td.highlighted:active:hover,\n.datepicker table tr td.highlighted.active:hover,\n.datepicker table tr td.highlighted:active:focus,\n.datepicker table tr td.highlighted.active:focus,\n.datepicker table tr td.highlighted:active.focus,\n.datepicker table tr td.highlighted.active.focus {\n  color: #000;\n  background-color: #91cbe8;\n  border-color: #298fc2;\n}\n.datepicker table tr td.highlighted.disabled:hover,\n.datepicker table tr td.highlighted[disabled]:hover,\nfieldset[disabled] .datepicker table tr td.highlighted:hover,\n.datepicker table tr td.highlighted.disabled:focus,\n.datepicker table tr td.highlighted[disabled]:focus,\nfieldset[disabled] .datepicker table tr td.highlighted:focus,\n.datepicker table tr td.highlighted.disabled.focus,\n.datepicker table tr td.highlighted[disabled].focus,\nfieldset[disabled] .datepicker table tr td.highlighted.focus {\n  background-color: #d9edf7;\n  border-color: #85c5e5;\n}\n.datepicker table tr td.highlighted.focused {\n  background: #afd9ee;\n}\n.datepicker table tr td.highlighted.disabled,\n.datepicker table tr td.highlighted.disabled:active {\n  background: #d9edf7;\n  color: #777777;\n}\n.datepicker table tr td.today {\n  color: #000;\n  background-color: #ffdb99;\n  border-color: #ffb733;\n}\n.datepicker table tr td.today:focus,\n.datepicker table tr td.today.focus {\n  color: #000;\n  background-color: #ffc966;\n  border-color: #b37400;\n}\n.datepicker table tr td.today:hover {\n  color: #000;\n  background-color: #ffc966;\n  border-color: #f59e00;\n}\n.datepicker table tr td.today:active,\n.datepicker table tr td.today.active {\n  color: #000;\n  background-color: #ffc966;\n  border-color: #f59e00;\n}\n.datepicker table tr td.today:active:hover,\n.datepicker table tr td.today.active:hover,\n.datepicker table tr td.today:active:focus,\n.datepicker table tr td.today.active:focus,\n.datepicker table tr td.today:active.focus,\n.datepicker table tr td.today.active.focus {\n  color: #000;\n  background-color: #ffbc42;\n  border-color: #b37400;\n}\n.datepicker table tr td.today.disabled:hover,\n.datepicker table tr td.today[disabled]:hover,\nfieldset[disabled] .datepicker table tr td.today:hover,\n.datepicker table tr td.today.disabled:focus,\n.datepicker table tr td.today[disabled]:focus,\nfieldset[disabled] .datepicker table tr td.today:focus,\n.datepicker table tr td.today.disabled.focus,\n.datepicker table tr td.today[disabled].focus,\nfieldset[disabled] .datepicker table tr td.today.focus {\n  background-color: #ffdb99;\n  border-color: #ffb733;\n}\n.datepicker table tr td.today.focused {\n  background: #ffc966;\n}\n.datepicker table tr td.today.disabled,\n.datepicker table tr td.today.disabled:active {\n  background: #ffdb99;\n  color: #777777;\n}\n.datepicker table tr td.range {\n  color: #000;\n  background-color: #eeeeee;\n  border-color: #bbbbbb;\n  border-radius: 0;\n}\n.datepicker table tr td.range:focus,\n.datepicker table tr td.range.focus {\n  color: #000;\n  background-color: #d5d5d5;\n  border-color: #7c7c7c;\n}\n.datepicker table tr td.range:hover {\n  color: #000;\n  background-color: #d5d5d5;\n  border-color: #9d9d9d;\n}\n.datepicker table tr td.range:active,\n.datepicker table tr td.range.active {\n  color: #000;\n  background-color: #d5d5d5;\n  border-color: #9d9d9d;\n}\n.datepicker table tr td.range:active:hover,\n.datepicker table tr td.range.active:hover,\n.datepicker table tr td.range:active:focus,\n.datepicker table tr td.range.active:focus,\n.datepicker table tr td.range:active.focus,\n.datepicker table tr td.range.active.focus {\n  color: #000;\n  background-color: #c3c3c3;\n  border-color: #7c7c7c;\n}\n.datepicker table tr td.range.disabled:hover,\n.datepicker table tr td.range[disabled]:hover,\nfieldset[disabled] .datepicker table tr td.range:hover,\n.datepicker table tr td.range.disabled:focus,\n.datepicker table tr td.range[disabled]:focus,\nfieldset[disabled] .datepicker table tr td.range:focus,\n.datepicker table tr td.range.disabled.focus,\n.datepicker table tr td.range[disabled].focus,\nfieldset[disabled] .datepicker table tr td.range.focus {\n  background-color: #eeeeee;\n  border-color: #bbbbbb;\n}\n.datepicker table tr td.range.focused {\n  background: #d5d5d5;\n}\n.datepicker table tr td.range.disabled,\n.datepicker table tr td.range.disabled:active {\n  background: #eeeeee;\n  color: #777777;\n}\n.datepicker table tr td.range.highlighted {\n  color: #000;\n  background-color: #e4eef3;\n  border-color: #9dc1d3;\n}\n.datepicker table tr td.range.highlighted:focus,\n.datepicker table tr td.range.highlighted.focus {\n  color: #000;\n  background-color: #c1d7e3;\n  border-color: #4b88a6;\n}\n.datepicker table tr td.range.highlighted:hover {\n  color: #000;\n  background-color: #c1d7e3;\n  border-color: #73a6c0;\n}\n.datepicker table tr td.range.highlighted:active,\n.datepicker table tr td.range.highlighted.active {\n  color: #000;\n  background-color: #c1d7e3;\n  border-color: #73a6c0;\n}\n.datepicker table tr td.range.highlighted:active:hover,\n.datepicker table tr td.range.highlighted.active:hover,\n.datepicker table tr td.range.highlighted:active:focus,\n.datepicker table tr td.range.highlighted.active:focus,\n.datepicker table tr td.range.highlighted:active.focus,\n.datepicker table tr td.range.highlighted.active.focus {\n  color: #000;\n  background-color: #a8c8d8;\n  border-color: #4b88a6;\n}\n.datepicker table tr td.range.highlighted.disabled:hover,\n.datepicker table tr td.range.highlighted[disabled]:hover,\nfieldset[disabled] .datepicker table tr td.range.highlighted:hover,\n.datepicker table tr td.range.highlighted.disabled:focus,\n.datepicker table tr td.range.highlighted[disabled]:focus,\nfieldset[disabled] .datepicker table tr td.range.highlighted:focus,\n.datepicker table tr td.range.highlighted.disabled.focus,\n.datepicker table tr td.range.highlighted[disabled].focus,\nfieldset[disabled] .datepicker table tr td.range.highlighted.focus {\n  background-color: #e4eef3;\n  border-color: #9dc1d3;\n}\n.datepicker table tr td.range.highlighted.focused {\n  background: #c1d7e3;\n}\n.datepicker table tr td.range.highlighted.disabled,\n.datepicker table tr td.range.highlighted.disabled:active {\n  background: #e4eef3;\n  color: #777777;\n}\n.datepicker table tr td.range.today {\n  color: #000;\n  background-color: #f7ca77;\n  border-color: #f1a417;\n}\n.datepicker table tr td.range.today:focus,\n.datepicker table tr td.range.today.focus {\n  color: #000;\n  background-color: #f4b747;\n  border-color: #815608;\n}\n.datepicker table tr td.range.today:hover {\n  color: #000;\n  background-color: #f4b747;\n  border-color: #bf800c;\n}\n.datepicker table tr td.range.today:active,\n.datepicker table tr td.range.today.active {\n  color: #000;\n  background-color: #f4b747;\n  border-color: #bf800c;\n}\n.datepicker table tr td.range.today:active:hover,\n.datepicker table tr td.range.today.active:hover,\n.datepicker table tr td.range.today:active:focus,\n.datepicker table tr td.range.today.active:focus,\n.datepicker table tr td.range.today:active.focus,\n.datepicker table tr td.range.today.active.focus {\n  color: #000;\n  background-color: #f2aa25;\n  border-color: #815608;\n}\n.datepicker table tr td.range.today.disabled:hover,\n.datepicker table tr td.range.today[disabled]:hover,\nfieldset[disabled] .datepicker table tr td.range.today:hover,\n.datepicker table tr td.range.today.disabled:focus,\n.datepicker table tr td.range.today[disabled]:focus,\nfieldset[disabled] .datepicker table tr td.range.today:focus,\n.datepicker table tr td.range.today.disabled.focus,\n.datepicker table tr td.range.today[disabled].focus,\nfieldset[disabled] .datepicker table tr td.range.today.focus {\n  background-color: #f7ca77;\n  border-color: #f1a417;\n}\n.datepicker table tr td.range.today.disabled,\n.datepicker table tr td.range.today.disabled:active {\n  background: #f7ca77;\n  color: #777777;\n}\n.datepicker table tr td.selected,\n.datepicker table tr td.selected.highlighted {\n  color: #fff;\n  background-color: #777777;\n  border-color: #555555;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td.selected:focus,\n.datepicker table tr td.selected.highlighted:focus,\n.datepicker table tr td.selected.focus,\n.datepicker table tr td.selected.highlighted.focus {\n  color: #fff;\n  background-color: #5e5e5e;\n  border-color: #161616;\n}\n.datepicker table tr td.selected:hover,\n.datepicker table tr td.selected.highlighted:hover {\n  color: #fff;\n  background-color: #5e5e5e;\n  border-color: #373737;\n}\n.datepicker table tr td.selected:active,\n.datepicker table tr td.selected.highlighted:active,\n.datepicker table tr td.selected.active,\n.datepicker table tr td.selected.highlighted.active {\n  color: #fff;\n  background-color: #5e5e5e;\n  border-color: #373737;\n}\n.datepicker table tr td.selected:active:hover,\n.datepicker table tr td.selected.highlighted:active:hover,\n.datepicker table tr td.selected.active:hover,\n.datepicker table tr td.selected.highlighted.active:hover,\n.datepicker table tr td.selected:active:focus,\n.datepicker table tr td.selected.highlighted:active:focus,\n.datepicker table tr td.selected.active:focus,\n.datepicker table tr td.selected.highlighted.active:focus,\n.datepicker table tr td.selected:active.focus,\n.datepicker table tr td.selected.highlighted:active.focus,\n.datepicker table tr td.selected.active.focus,\n.datepicker table tr td.selected.highlighted.active.focus {\n  color: #fff;\n  background-color: #4c4c4c;\n  border-color: #161616;\n}\n.datepicker table tr td.selected.disabled:hover,\n.datepicker table tr td.selected.highlighted.disabled:hover,\n.datepicker table tr td.selected[disabled]:hover,\n.datepicker table tr td.selected.highlighted[disabled]:hover,\nfieldset[disabled] .datepicker table tr td.selected:hover,\nfieldset[disabled] .datepicker table tr td.selected.highlighted:hover,\n.datepicker table tr td.selected.disabled:focus,\n.datepicker table tr td.selected.highlighted.disabled:focus,\n.datepicker table tr td.selected[disabled]:focus,\n.datepicker table tr td.selected.highlighted[disabled]:focus,\nfieldset[disabled] .datepicker table tr td.selected:focus,\nfieldset[disabled] .datepicker table tr td.selected.highlighted:focus,\n.datepicker table tr td.selected.disabled.focus,\n.datepicker table tr td.selected.highlighted.disabled.focus,\n.datepicker table tr td.selected[disabled].focus,\n.datepicker table tr td.selected.highlighted[disabled].focus,\nfieldset[disabled] .datepicker table tr td.selected.focus,\nfieldset[disabled] .datepicker table tr td.selected.highlighted.focus {\n  background-color: #777777;\n  border-color: #555555;\n}\n.datepicker table tr td.active,\n.datepicker table tr td.active.highlighted {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #2e6da4;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td.active:focus,\n.datepicker table tr td.active.highlighted:focus,\n.datepicker table tr td.active.focus,\n.datepicker table tr td.active.highlighted.focus {\n  color: #fff;\n  background-color: #286090;\n  border-color: #122b40;\n}\n.datepicker table tr td.active:hover,\n.datepicker table tr td.active.highlighted:hover {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.datepicker table tr td.active:active,\n.datepicker table tr td.active.highlighted:active,\n.datepicker table tr td.active.active,\n.datepicker table tr td.active.highlighted.active {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.datepicker table tr td.active:active:hover,\n.datepicker table tr td.active.highlighted:active:hover,\n.datepicker table tr td.active.active:hover,\n.datepicker table tr td.active.highlighted.active:hover,\n.datepicker table tr td.active:active:focus,\n.datepicker table tr td.active.highlighted:active:focus,\n.datepicker table tr td.active.active:focus,\n.datepicker table tr td.active.highlighted.active:focus,\n.datepicker table tr td.active:active.focus,\n.datepicker table tr td.active.highlighted:active.focus,\n.datepicker table tr td.active.active.focus,\n.datepicker table tr td.active.highlighted.active.focus {\n  color: #fff;\n  background-color: #204d74;\n  border-color: #122b40;\n}\n.datepicker table tr td.active.disabled:hover,\n.datepicker table tr td.active.highlighted.disabled:hover,\n.datepicker table tr td.active[disabled]:hover,\n.datepicker table tr td.active.highlighted[disabled]:hover,\nfieldset[disabled] .datepicker table tr td.active:hover,\nfieldset[disabled] .datepicker table tr td.active.highlighted:hover,\n.datepicker table tr td.active.disabled:focus,\n.datepicker table tr td.active.highlighted.disabled:focus,\n.datepicker table tr td.active[disabled]:focus,\n.datepicker table tr td.active.highlighted[disabled]:focus,\nfieldset[disabled] .datepicker table tr td.active:focus,\nfieldset[disabled] .datepicker table tr td.active.highlighted:focus,\n.datepicker table tr td.active.disabled.focus,\n.datepicker table tr td.active.highlighted.disabled.focus,\n.datepicker table tr td.active[disabled].focus,\n.datepicker table tr td.active.highlighted[disabled].focus,\nfieldset[disabled] .datepicker table tr td.active.focus,\nfieldset[disabled] .datepicker table tr td.active.highlighted.focus {\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.datepicker table tr td span {\n  display: block;\n  width: 23%;\n  height: 54px;\n  line-height: 54px;\n  float: left;\n  margin: 1%;\n  cursor: pointer;\n  border-radius: 4px;\n}\n.datepicker table tr td span:hover,\n.datepicker table tr td span.focused {\n  background: #eeeeee;\n}\n.datepicker table tr td span.disabled,\n.datepicker table tr td span.disabled:hover {\n  background: none;\n  color: #777777;\n  cursor: default;\n}\n.datepicker table tr td span.active,\n.datepicker table tr td span.active:hover,\n.datepicker table tr td span.active.disabled,\n.datepicker table tr td span.active.disabled:hover {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #2e6da4;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td span.active:focus,\n.datepicker table tr td span.active:hover:focus,\n.datepicker table tr td span.active.disabled:focus,\n.datepicker table tr td span.active.disabled:hover:focus,\n.datepicker table tr td span.active.focus,\n.datepicker table tr td span.active:hover.focus,\n.datepicker table tr td span.active.disabled.focus,\n.datepicker table tr td span.active.disabled:hover.focus {\n  color: #fff;\n  background-color: #286090;\n  border-color: #122b40;\n}\n.datepicker table tr td span.active:hover,\n.datepicker table tr td span.active:hover:hover,\n.datepicker table tr td span.active.disabled:hover,\n.datepicker table tr td span.active.disabled:hover:hover {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.datepicker table tr td span.active:active,\n.datepicker table tr td span.active:hover:active,\n.datepicker table tr td span.active.disabled:active,\n.datepicker table tr td span.active.disabled:hover:active,\n.datepicker table tr td span.active.active,\n.datepicker table tr td span.active:hover.active,\n.datepicker table tr td span.active.disabled.active,\n.datepicker table tr td span.active.disabled:hover.active {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.datepicker table tr td span.active:active:hover,\n.datepicker table tr td span.active:hover:active:hover,\n.datepicker table tr td span.active.disabled:active:hover,\n.datepicker table tr td span.active.disabled:hover:active:hover,\n.datepicker table tr td span.active.active:hover,\n.datepicker table tr td span.active:hover.active:hover,\n.datepicker table tr td span.active.disabled.active:hover,\n.datepicker table tr td span.active.disabled:hover.active:hover,\n.datepicker table tr td span.active:active:focus,\n.datepicker table tr td span.active:hover:active:focus,\n.datepicker table tr td span.active.disabled:active:focus,\n.datepicker table tr td span.active.disabled:hover:active:focus,\n.datepicker table tr td span.active.active:focus,\n.datepicker table tr td span.active:hover.active:focus,\n.datepicker table tr td span.active.disabled.active:focus,\n.datepicker table tr td span.active.disabled:hover.active:focus,\n.datepicker table tr td span.active:active.focus,\n.datepicker table tr td span.active:hover:active.focus,\n.datepicker table tr td span.active.disabled:active.focus,\n.datepicker table tr td span.active.disabled:hover:active.focus,\n.datepicker table tr td span.active.active.focus,\n.datepicker table tr td span.active:hover.active.focus,\n.datepicker table tr td span.active.disabled.active.focus,\n.datepicker table tr td span.active.disabled:hover.active.focus {\n  color: #fff;\n  background-color: #204d74;\n  border-color: #122b40;\n}\n.datepicker table tr td span.active.disabled:hover,\n.datepicker table tr td span.active:hover.disabled:hover,\n.datepicker table tr td span.active.disabled.disabled:hover,\n.datepicker table tr td span.active.disabled:hover.disabled:hover,\n.datepicker table tr td span.active[disabled]:hover,\n.datepicker table tr td span.active:hover[disabled]:hover,\n.datepicker table tr td span.active.disabled[disabled]:hover,\n.datepicker table tr td span.active.disabled:hover[disabled]:hover,\nfieldset[disabled] .datepicker table tr td span.active:hover,\nfieldset[disabled] .datepicker table tr td span.active:hover:hover,\nfieldset[disabled] .datepicker table tr td span.active.disabled:hover,\nfieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,\n.datepicker table tr td span.active.disabled:focus,\n.datepicker table tr td span.active:hover.disabled:focus,\n.datepicker table tr td span.active.disabled.disabled:focus,\n.datepicker table tr td span.active.disabled:hover.disabled:focus,\n.datepicker table tr td span.active[disabled]:focus,\n.datepicker table tr td span.active:hover[disabled]:focus,\n.datepicker table tr td span.active.disabled[disabled]:focus,\n.datepicker table tr td span.active.disabled:hover[disabled]:focus,\nfieldset[disabled] .datepicker table tr td span.active:focus,\nfieldset[disabled] .datepicker table tr td span.active:hover:focus,\nfieldset[disabled] .datepicker table tr td span.active.disabled:focus,\nfieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,\n.datepicker table tr td span.active.disabled.focus,\n.datepicker table tr td span.active:hover.disabled.focus,\n.datepicker table tr td span.active.disabled.disabled.focus,\n.datepicker table tr td span.active.disabled:hover.disabled.focus,\n.datepicker table tr td span.active[disabled].focus,\n.datepicker table tr td span.active:hover[disabled].focus,\n.datepicker table tr td span.active.disabled[disabled].focus,\n.datepicker table tr td span.active.disabled:hover[disabled].focus,\nfieldset[disabled] .datepicker table tr td span.active.focus,\nfieldset[disabled] .datepicker table tr td span.active:hover.focus,\nfieldset[disabled] .datepicker table tr td span.active.disabled.focus,\nfieldset[disabled] .datepicker table tr td span.active.disabled:hover.focus {\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.datepicker table tr td span.old,\n.datepicker table tr td span.new {\n  color: #777777;\n}\n.datepicker .datepicker-switch {\n  width: 145px;\n}\n.datepicker .datepicker-switch,\n.datepicker .prev,\n.datepicker .next,\n.datepicker tfoot tr th {\n  cursor: pointer;\n}\n.datepicker .datepicker-switch:hover,\n.datepicker .prev:hover,\n.datepicker .next:hover,\n.datepicker tfoot tr th:hover {\n  background: #eeeeee;\n}\n.datepicker .prev.disabled,\n.datepicker .next.disabled {\n  visibility: hidden;\n}\n.datepicker .cw {\n  font-size: 10px;\n  width: 12px;\n  padding: 0 2px 0 5px;\n  vertical-align: middle;\n}\n.input-group.date .input-group-addon {\n  cursor: pointer;\n}\n.input-daterange {\n  width: 100%;\n}\n.input-daterange input {\n  text-align: center;\n}\n.input-daterange input:first-child {\n  border-radius: 3px 0 0 3px;\n}\n.input-daterange input:last-child {\n  border-radius: 0 3px 3px 0;\n}\n.input-daterange .input-group-addon {\n  width: auto;\n  min-width: 16px;\n  padding: 4px 5px;\n  line-height: 1.42857143;\n  border-width: 1px 0;\n  margin-left: -5px;\n  margin-right: -5px;\n}\n/*# sourceMappingURL=bootstrap-datepicker3.css.map */"
  },
  {
    "path": "dist/css/bootstrap-datepicker3.standalone.css",
    "content": "/*!\n * Datepicker for Bootstrap v1.10.0 (https://github.com/uxsolutions/bootstrap-datepicker)\n *\n * Licensed under the Apache License v2.0 (https://www.apache.org/licenses/LICENSE-2.0)\n */\n\n.datepicker {\n  border-radius: 4px;\n  direction: ltr;\n}\n.datepicker-inline {\n  width: 220px;\n}\n.datepicker-rtl {\n  direction: rtl;\n}\n.datepicker-rtl.dropdown-menu {\n  left: auto;\n}\n.datepicker-rtl table tr td span {\n  float: right;\n}\n.datepicker-dropdown {\n  top: 0;\n  left: 0;\n  padding: 4px;\n}\n.datepicker-dropdown:before {\n  content: '';\n  display: inline-block;\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n  border-bottom: 7px solid rgba(0, 0, 0, 0.15);\n  border-top: 0;\n  border-bottom-color: rgba(0, 0, 0, 0.2);\n  position: absolute;\n}\n.datepicker-dropdown:after {\n  content: '';\n  display: inline-block;\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-bottom: 6px solid #fff;\n  border-top: 0;\n  position: absolute;\n}\n.datepicker-dropdown.datepicker-orient-left:before {\n  left: 6px;\n}\n.datepicker-dropdown.datepicker-orient-left:after {\n  left: 7px;\n}\n.datepicker-dropdown.datepicker-orient-right:before {\n  right: 6px;\n}\n.datepicker-dropdown.datepicker-orient-right:after {\n  right: 7px;\n}\n.datepicker-dropdown.datepicker-orient-bottom:before {\n  top: -7px;\n}\n.datepicker-dropdown.datepicker-orient-bottom:after {\n  top: -6px;\n}\n.datepicker-dropdown.datepicker-orient-top:before {\n  bottom: -7px;\n  border-bottom: 0;\n  border-top: 7px solid rgba(0, 0, 0, 0.15);\n}\n.datepicker-dropdown.datepicker-orient-top:after {\n  bottom: -6px;\n  border-bottom: 0;\n  border-top: 6px solid #fff;\n}\n.datepicker table {\n  margin: 0;\n  -webkit-touch-callout: none;\n  -webkit-user-select: none;\n  -khtml-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n.datepicker table tr td,\n.datepicker table tr th {\n  text-align: center;\n  width: 30px;\n  height: 30px;\n  border-radius: 4px;\n  border: none;\n}\n.table-striped .datepicker table tr td,\n.table-striped .datepicker table tr th {\n  background-color: transparent;\n}\n.datepicker table tr td.old,\n.datepicker table tr td.new {\n  color: #777777;\n}\n.datepicker table tr td.day:hover,\n.datepicker table tr td.focused {\n  background: #eeeeee;\n  cursor: pointer;\n}\n.datepicker table tr td.disabled,\n.datepicker table tr td.disabled:hover {\n  background: none;\n  color: #777777;\n  cursor: default;\n}\n.datepicker table tr td.highlighted {\n  color: #000;\n  background-color: #d9edf7;\n  border-color: #85c5e5;\n  border-radius: 0;\n}\n.datepicker table tr td.highlighted:focus,\n.datepicker table tr td.highlighted.focus {\n  color: #000;\n  background-color: #afd9ee;\n  border-color: #298fc2;\n}\n.datepicker table tr td.highlighted:hover {\n  color: #000;\n  background-color: #afd9ee;\n  border-color: #52addb;\n}\n.datepicker table tr td.highlighted:active,\n.datepicker table tr td.highlighted.active {\n  color: #000;\n  background-color: #afd9ee;\n  border-color: #52addb;\n}\n.datepicker table tr td.highlighted:active:hover,\n.datepicker table tr td.highlighted.active:hover,\n.datepicker table tr td.highlighted:active:focus,\n.datepicker table tr td.highlighted.active:focus,\n.datepicker table tr td.highlighted:active.focus,\n.datepicker table tr td.highlighted.active.focus {\n  color: #000;\n  background-color: #91cbe8;\n  border-color: #298fc2;\n}\n.datepicker table tr td.highlighted.disabled:hover,\n.datepicker table tr td.highlighted[disabled]:hover,\nfieldset[disabled] .datepicker table tr td.highlighted:hover,\n.datepicker table tr td.highlighted.disabled:focus,\n.datepicker table tr td.highlighted[disabled]:focus,\nfieldset[disabled] .datepicker table tr td.highlighted:focus,\n.datepicker table tr td.highlighted.disabled.focus,\n.datepicker table tr td.highlighted[disabled].focus,\nfieldset[disabled] .datepicker table tr td.highlighted.focus {\n  background-color: #d9edf7;\n  border-color: #85c5e5;\n}\n.datepicker table tr td.highlighted.focused {\n  background: #afd9ee;\n}\n.datepicker table tr td.highlighted.disabled,\n.datepicker table tr td.highlighted.disabled:active {\n  background: #d9edf7;\n  color: #777777;\n}\n.datepicker table tr td.today {\n  color: #000;\n  background-color: #ffdb99;\n  border-color: #ffb733;\n}\n.datepicker table tr td.today:focus,\n.datepicker table tr td.today.focus {\n  color: #000;\n  background-color: #ffc966;\n  border-color: #b37400;\n}\n.datepicker table tr td.today:hover {\n  color: #000;\n  background-color: #ffc966;\n  border-color: #f59e00;\n}\n.datepicker table tr td.today:active,\n.datepicker table tr td.today.active {\n  color: #000;\n  background-color: #ffc966;\n  border-color: #f59e00;\n}\n.datepicker table tr td.today:active:hover,\n.datepicker table tr td.today.active:hover,\n.datepicker table tr td.today:active:focus,\n.datepicker table tr td.today.active:focus,\n.datepicker table tr td.today:active.focus,\n.datepicker table tr td.today.active.focus {\n  color: #000;\n  background-color: #ffbc42;\n  border-color: #b37400;\n}\n.datepicker table tr td.today.disabled:hover,\n.datepicker table tr td.today[disabled]:hover,\nfieldset[disabled] .datepicker table tr td.today:hover,\n.datepicker table tr td.today.disabled:focus,\n.datepicker table tr td.today[disabled]:focus,\nfieldset[disabled] .datepicker table tr td.today:focus,\n.datepicker table tr td.today.disabled.focus,\n.datepicker table tr td.today[disabled].focus,\nfieldset[disabled] .datepicker table tr td.today.focus {\n  background-color: #ffdb99;\n  border-color: #ffb733;\n}\n.datepicker table tr td.today.focused {\n  background: #ffc966;\n}\n.datepicker table tr td.today.disabled,\n.datepicker table tr td.today.disabled:active {\n  background: #ffdb99;\n  color: #777777;\n}\n.datepicker table tr td.range {\n  color: #000;\n  background-color: #eeeeee;\n  border-color: #bbbbbb;\n  border-radius: 0;\n}\n.datepicker table tr td.range:focus,\n.datepicker table tr td.range.focus {\n  color: #000;\n  background-color: #d5d5d5;\n  border-color: #7c7c7c;\n}\n.datepicker table tr td.range:hover {\n  color: #000;\n  background-color: #d5d5d5;\n  border-color: #9d9d9d;\n}\n.datepicker table tr td.range:active,\n.datepicker table tr td.range.active {\n  color: #000;\n  background-color: #d5d5d5;\n  border-color: #9d9d9d;\n}\n.datepicker table tr td.range:active:hover,\n.datepicker table tr td.range.active:hover,\n.datepicker table tr td.range:active:focus,\n.datepicker table tr td.range.active:focus,\n.datepicker table tr td.range:active.focus,\n.datepicker table tr td.range.active.focus {\n  color: #000;\n  background-color: #c3c3c3;\n  border-color: #7c7c7c;\n}\n.datepicker table tr td.range.disabled:hover,\n.datepicker table tr td.range[disabled]:hover,\nfieldset[disabled] .datepicker table tr td.range:hover,\n.datepicker table tr td.range.disabled:focus,\n.datepicker table tr td.range[disabled]:focus,\nfieldset[disabled] .datepicker table tr td.range:focus,\n.datepicker table tr td.range.disabled.focus,\n.datepicker table tr td.range[disabled].focus,\nfieldset[disabled] .datepicker table tr td.range.focus {\n  background-color: #eeeeee;\n  border-color: #bbbbbb;\n}\n.datepicker table tr td.range.focused {\n  background: #d5d5d5;\n}\n.datepicker table tr td.range.disabled,\n.datepicker table tr td.range.disabled:active {\n  background: #eeeeee;\n  color: #777777;\n}\n.datepicker table tr td.range.highlighted {\n  color: #000;\n  background-color: #e4eef3;\n  border-color: #9dc1d3;\n}\n.datepicker table tr td.range.highlighted:focus,\n.datepicker table tr td.range.highlighted.focus {\n  color: #000;\n  background-color: #c1d7e3;\n  border-color: #4b88a6;\n}\n.datepicker table tr td.range.highlighted:hover {\n  color: #000;\n  background-color: #c1d7e3;\n  border-color: #73a6c0;\n}\n.datepicker table tr td.range.highlighted:active,\n.datepicker table tr td.range.highlighted.active {\n  color: #000;\n  background-color: #c1d7e3;\n  border-color: #73a6c0;\n}\n.datepicker table tr td.range.highlighted:active:hover,\n.datepicker table tr td.range.highlighted.active:hover,\n.datepicker table tr td.range.highlighted:active:focus,\n.datepicker table tr td.range.highlighted.active:focus,\n.datepicker table tr td.range.highlighted:active.focus,\n.datepicker table tr td.range.highlighted.active.focus {\n  color: #000;\n  background-color: #a8c8d8;\n  border-color: #4b88a6;\n}\n.datepicker table tr td.range.highlighted.disabled:hover,\n.datepicker table tr td.range.highlighted[disabled]:hover,\nfieldset[disabled] .datepicker table tr td.range.highlighted:hover,\n.datepicker table tr td.range.highlighted.disabled:focus,\n.datepicker table tr td.range.highlighted[disabled]:focus,\nfieldset[disabled] .datepicker table tr td.range.highlighted:focus,\n.datepicker table tr td.range.highlighted.disabled.focus,\n.datepicker table tr td.range.highlighted[disabled].focus,\nfieldset[disabled] .datepicker table tr td.range.highlighted.focus {\n  background-color: #e4eef3;\n  border-color: #9dc1d3;\n}\n.datepicker table tr td.range.highlighted.focused {\n  background: #c1d7e3;\n}\n.datepicker table tr td.range.highlighted.disabled,\n.datepicker table tr td.range.highlighted.disabled:active {\n  background: #e4eef3;\n  color: #777777;\n}\n.datepicker table tr td.range.today {\n  color: #000;\n  background-color: #f7ca77;\n  border-color: #f1a417;\n}\n.datepicker table tr td.range.today:focus,\n.datepicker table tr td.range.today.focus {\n  color: #000;\n  background-color: #f4b747;\n  border-color: #815608;\n}\n.datepicker table tr td.range.today:hover {\n  color: #000;\n  background-color: #f4b747;\n  border-color: #bf800c;\n}\n.datepicker table tr td.range.today:active,\n.datepicker table tr td.range.today.active {\n  color: #000;\n  background-color: #f4b747;\n  border-color: #bf800c;\n}\n.datepicker table tr td.range.today:active:hover,\n.datepicker table tr td.range.today.active:hover,\n.datepicker table tr td.range.today:active:focus,\n.datepicker table tr td.range.today.active:focus,\n.datepicker table tr td.range.today:active.focus,\n.datepicker table tr td.range.today.active.focus {\n  color: #000;\n  background-color: #f2aa25;\n  border-color: #815608;\n}\n.datepicker table tr td.range.today.disabled:hover,\n.datepicker table tr td.range.today[disabled]:hover,\nfieldset[disabled] .datepicker table tr td.range.today:hover,\n.datepicker table tr td.range.today.disabled:focus,\n.datepicker table tr td.range.today[disabled]:focus,\nfieldset[disabled] .datepicker table tr td.range.today:focus,\n.datepicker table tr td.range.today.disabled.focus,\n.datepicker table tr td.range.today[disabled].focus,\nfieldset[disabled] .datepicker table tr td.range.today.focus {\n  background-color: #f7ca77;\n  border-color: #f1a417;\n}\n.datepicker table tr td.range.today.disabled,\n.datepicker table tr td.range.today.disabled:active {\n  background: #f7ca77;\n  color: #777777;\n}\n.datepicker table tr td.selected,\n.datepicker table tr td.selected.highlighted {\n  color: #fff;\n  background-color: #777777;\n  border-color: #555555;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td.selected:focus,\n.datepicker table tr td.selected.highlighted:focus,\n.datepicker table tr td.selected.focus,\n.datepicker table tr td.selected.highlighted.focus {\n  color: #fff;\n  background-color: #5e5e5e;\n  border-color: #161616;\n}\n.datepicker table tr td.selected:hover,\n.datepicker table tr td.selected.highlighted:hover {\n  color: #fff;\n  background-color: #5e5e5e;\n  border-color: #373737;\n}\n.datepicker table tr td.selected:active,\n.datepicker table tr td.selected.highlighted:active,\n.datepicker table tr td.selected.active,\n.datepicker table tr td.selected.highlighted.active {\n  color: #fff;\n  background-color: #5e5e5e;\n  border-color: #373737;\n}\n.datepicker table tr td.selected:active:hover,\n.datepicker table tr td.selected.highlighted:active:hover,\n.datepicker table tr td.selected.active:hover,\n.datepicker table tr td.selected.highlighted.active:hover,\n.datepicker table tr td.selected:active:focus,\n.datepicker table tr td.selected.highlighted:active:focus,\n.datepicker table tr td.selected.active:focus,\n.datepicker table tr td.selected.highlighted.active:focus,\n.datepicker table tr td.selected:active.focus,\n.datepicker table tr td.selected.highlighted:active.focus,\n.datepicker table tr td.selected.active.focus,\n.datepicker table tr td.selected.highlighted.active.focus {\n  color: #fff;\n  background-color: #4c4c4c;\n  border-color: #161616;\n}\n.datepicker table tr td.selected.disabled:hover,\n.datepicker table tr td.selected.highlighted.disabled:hover,\n.datepicker table tr td.selected[disabled]:hover,\n.datepicker table tr td.selected.highlighted[disabled]:hover,\nfieldset[disabled] .datepicker table tr td.selected:hover,\nfieldset[disabled] .datepicker table tr td.selected.highlighted:hover,\n.datepicker table tr td.selected.disabled:focus,\n.datepicker table tr td.selected.highlighted.disabled:focus,\n.datepicker table tr td.selected[disabled]:focus,\n.datepicker table tr td.selected.highlighted[disabled]:focus,\nfieldset[disabled] .datepicker table tr td.selected:focus,\nfieldset[disabled] .datepicker table tr td.selected.highlighted:focus,\n.datepicker table tr td.selected.disabled.focus,\n.datepicker table tr td.selected.highlighted.disabled.focus,\n.datepicker table tr td.selected[disabled].focus,\n.datepicker table tr td.selected.highlighted[disabled].focus,\nfieldset[disabled] .datepicker table tr td.selected.focus,\nfieldset[disabled] .datepicker table tr td.selected.highlighted.focus {\n  background-color: #777777;\n  border-color: #555555;\n}\n.datepicker table tr td.active,\n.datepicker table tr td.active.highlighted {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #2e6da4;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td.active:focus,\n.datepicker table tr td.active.highlighted:focus,\n.datepicker table tr td.active.focus,\n.datepicker table tr td.active.highlighted.focus {\n  color: #fff;\n  background-color: #286090;\n  border-color: #122b40;\n}\n.datepicker table tr td.active:hover,\n.datepicker table tr td.active.highlighted:hover {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.datepicker table tr td.active:active,\n.datepicker table tr td.active.highlighted:active,\n.datepicker table tr td.active.active,\n.datepicker table tr td.active.highlighted.active {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.datepicker table tr td.active:active:hover,\n.datepicker table tr td.active.highlighted:active:hover,\n.datepicker table tr td.active.active:hover,\n.datepicker table tr td.active.highlighted.active:hover,\n.datepicker table tr td.active:active:focus,\n.datepicker table tr td.active.highlighted:active:focus,\n.datepicker table tr td.active.active:focus,\n.datepicker table tr td.active.highlighted.active:focus,\n.datepicker table tr td.active:active.focus,\n.datepicker table tr td.active.highlighted:active.focus,\n.datepicker table tr td.active.active.focus,\n.datepicker table tr td.active.highlighted.active.focus {\n  color: #fff;\n  background-color: #204d74;\n  border-color: #122b40;\n}\n.datepicker table tr td.active.disabled:hover,\n.datepicker table tr td.active.highlighted.disabled:hover,\n.datepicker table tr td.active[disabled]:hover,\n.datepicker table tr td.active.highlighted[disabled]:hover,\nfieldset[disabled] .datepicker table tr td.active:hover,\nfieldset[disabled] .datepicker table tr td.active.highlighted:hover,\n.datepicker table tr td.active.disabled:focus,\n.datepicker table tr td.active.highlighted.disabled:focus,\n.datepicker table tr td.active[disabled]:focus,\n.datepicker table tr td.active.highlighted[disabled]:focus,\nfieldset[disabled] .datepicker table tr td.active:focus,\nfieldset[disabled] .datepicker table tr td.active.highlighted:focus,\n.datepicker table tr td.active.disabled.focus,\n.datepicker table tr td.active.highlighted.disabled.focus,\n.datepicker table tr td.active[disabled].focus,\n.datepicker table tr td.active.highlighted[disabled].focus,\nfieldset[disabled] .datepicker table tr td.active.focus,\nfieldset[disabled] .datepicker table tr td.active.highlighted.focus {\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.datepicker table tr td span {\n  display: block;\n  width: 23%;\n  height: 54px;\n  line-height: 54px;\n  float: left;\n  margin: 1%;\n  cursor: pointer;\n  border-radius: 4px;\n}\n.datepicker table tr td span:hover,\n.datepicker table tr td span.focused {\n  background: #eeeeee;\n}\n.datepicker table tr td span.disabled,\n.datepicker table tr td span.disabled:hover {\n  background: none;\n  color: #777777;\n  cursor: default;\n}\n.datepicker table tr td span.active,\n.datepicker table tr td span.active:hover,\n.datepicker table tr td span.active.disabled,\n.datepicker table tr td span.active.disabled:hover {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #2e6da4;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.datepicker table tr td span.active:focus,\n.datepicker table tr td span.active:hover:focus,\n.datepicker table tr td span.active.disabled:focus,\n.datepicker table tr td span.active.disabled:hover:focus,\n.datepicker table tr td span.active.focus,\n.datepicker table tr td span.active:hover.focus,\n.datepicker table tr td span.active.disabled.focus,\n.datepicker table tr td span.active.disabled:hover.focus {\n  color: #fff;\n  background-color: #286090;\n  border-color: #122b40;\n}\n.datepicker table tr td span.active:hover,\n.datepicker table tr td span.active:hover:hover,\n.datepicker table tr td span.active.disabled:hover,\n.datepicker table tr td span.active.disabled:hover:hover {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.datepicker table tr td span.active:active,\n.datepicker table tr td span.active:hover:active,\n.datepicker table tr td span.active.disabled:active,\n.datepicker table tr td span.active.disabled:hover:active,\n.datepicker table tr td span.active.active,\n.datepicker table tr td span.active:hover.active,\n.datepicker table tr td span.active.disabled.active,\n.datepicker table tr td span.active.disabled:hover.active {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.datepicker table tr td span.active:active:hover,\n.datepicker table tr td span.active:hover:active:hover,\n.datepicker table tr td span.active.disabled:active:hover,\n.datepicker table tr td span.active.disabled:hover:active:hover,\n.datepicker table tr td span.active.active:hover,\n.datepicker table tr td span.active:hover.active:hover,\n.datepicker table tr td span.active.disabled.active:hover,\n.datepicker table tr td span.active.disabled:hover.active:hover,\n.datepicker table tr td span.active:active:focus,\n.datepicker table tr td span.active:hover:active:focus,\n.datepicker table tr td span.active.disabled:active:focus,\n.datepicker table tr td span.active.disabled:hover:active:focus,\n.datepicker table tr td span.active.active:focus,\n.datepicker table tr td span.active:hover.active:focus,\n.datepicker table tr td span.active.disabled.active:focus,\n.datepicker table tr td span.active.disabled:hover.active:focus,\n.datepicker table tr td span.active:active.focus,\n.datepicker table tr td span.active:hover:active.focus,\n.datepicker table tr td span.active.disabled:active.focus,\n.datepicker table tr td span.active.disabled:hover:active.focus,\n.datepicker table tr td span.active.active.focus,\n.datepicker table tr td span.active:hover.active.focus,\n.datepicker table tr td span.active.disabled.active.focus,\n.datepicker table tr td span.active.disabled:hover.active.focus {\n  color: #fff;\n  background-color: #204d74;\n  border-color: #122b40;\n}\n.datepicker table tr td span.active.disabled:hover,\n.datepicker table tr td span.active:hover.disabled:hover,\n.datepicker table tr td span.active.disabled.disabled:hover,\n.datepicker table tr td span.active.disabled:hover.disabled:hover,\n.datepicker table tr td span.active[disabled]:hover,\n.datepicker table tr td span.active:hover[disabled]:hover,\n.datepicker table tr td span.active.disabled[disabled]:hover,\n.datepicker table tr td span.active.disabled:hover[disabled]:hover,\nfieldset[disabled] .datepicker table tr td span.active:hover,\nfieldset[disabled] .datepicker table tr td span.active:hover:hover,\nfieldset[disabled] .datepicker table tr td span.active.disabled:hover,\nfieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,\n.datepicker table tr td span.active.disabled:focus,\n.datepicker table tr td span.active:hover.disabled:focus,\n.datepicker table tr td span.active.disabled.disabled:focus,\n.datepicker table tr td span.active.disabled:hover.disabled:focus,\n.datepicker table tr td span.active[disabled]:focus,\n.datepicker table tr td span.active:hover[disabled]:focus,\n.datepicker table tr td span.active.disabled[disabled]:focus,\n.datepicker table tr td span.active.disabled:hover[disabled]:focus,\nfieldset[disabled] .datepicker table tr td span.active:focus,\nfieldset[disabled] .datepicker table tr td span.active:hover:focus,\nfieldset[disabled] .datepicker table tr td span.active.disabled:focus,\nfieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,\n.datepicker table tr td span.active.disabled.focus,\n.datepicker table tr td span.active:hover.disabled.focus,\n.datepicker table tr td span.active.disabled.disabled.focus,\n.datepicker table tr td span.active.disabled:hover.disabled.focus,\n.datepicker table tr td span.active[disabled].focus,\n.datepicker table tr td span.active:hover[disabled].focus,\n.datepicker table tr td span.active.disabled[disabled].focus,\n.datepicker table tr td span.active.disabled:hover[disabled].focus,\nfieldset[disabled] .datepicker table tr td span.active.focus,\nfieldset[disabled] .datepicker table tr td span.active:hover.focus,\nfieldset[disabled] .datepicker table tr td span.active.disabled.focus,\nfieldset[disabled] .datepicker table tr td span.active.disabled:hover.focus {\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.datepicker table tr td span.old,\n.datepicker table tr td span.new {\n  color: #777777;\n}\n.datepicker .datepicker-switch {\n  width: 145px;\n}\n.datepicker .datepicker-switch,\n.datepicker .prev,\n.datepicker .next,\n.datepicker tfoot tr th {\n  cursor: pointer;\n}\n.datepicker .datepicker-switch:hover,\n.datepicker .prev:hover,\n.datepicker .next:hover,\n.datepicker tfoot tr th:hover {\n  background: #eeeeee;\n}\n.datepicker .prev.disabled,\n.datepicker .next.disabled {\n  visibility: hidden;\n}\n.datepicker .cw {\n  font-size: 10px;\n  width: 12px;\n  padding: 0 2px 0 5px;\n  vertical-align: middle;\n}\n.input-group.date .input-group-addon {\n  cursor: pointer;\n}\n.input-daterange {\n  width: 100%;\n}\n.input-daterange input {\n  text-align: center;\n}\n.input-daterange input:first-child {\n  border-radius: 3px 0 0 3px;\n}\n.input-daterange input:last-child {\n  border-radius: 0 3px 3px 0;\n}\n.input-daterange .input-group-addon {\n  width: auto;\n  min-width: 16px;\n  padding: 4px 5px;\n  line-height: 1.42857143;\n  border-width: 1px 0;\n  margin-left: -5px;\n  margin-right: -5px;\n}\n.datepicker.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  list-style: none;\n  background-color: #fff;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 4px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  -moz-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  -webkit-background-clip: padding-box;\n  -moz-background-clip: padding;\n  background-clip: padding-box;\n  color: #333333;\n  font-size: 13px;\n  line-height: 1.42857143;\n}\n.datepicker.dropdown-menu th,\n.datepicker.datepicker-inline th,\n.datepicker.dropdown-menu td,\n.datepicker.datepicker-inline td {\n  padding: 0px 5px;\n}\n/*# sourceMappingURL=bootstrap-datepicker3.standalone.css.map */"
  },
  {
    "path": "dist/js/bootstrap-datepicker.js",
    "content": "/*!\n * Datepicker for Bootstrap v1.10.0 (https://github.com/uxsolutions/bootstrap-datepicker)\n *\n * Licensed under the Apache License v2.0 (https://www.apache.org/licenses/LICENSE-2.0)\n */\n\n(function(factory){\n    if (typeof define === 'function' && define.amd) {\n        define(['jquery'], factory);\n    } else if (typeof exports === 'object') {\n        factory(require('jquery'));\n    } else {\n        factory(jQuery);\n    }\n}(function($, undefined){\n\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 isUTCEquals(date1, date2) {\n\t\treturn (\n\t\t\tdate1.getUTCFullYear() === date2.getUTCFullYear() &&\n\t\t\tdate1.getUTCMonth() === date2.getUTCMonth() &&\n\t\t\tdate1.getUTCDate() === date2.getUTCDate()\n\t\t);\n\t}\n\tfunction alias(method, deprecationMsg){\n\t\treturn function(){\n\t\t\tif (deprecationMsg !== undefined) {\n\t\t\t\t$.fn.datepicker.deprecated(deprecationMsg);\n\t\t\t}\n\n\t\t\treturn this[method].apply(this, arguments);\n\t\t};\n\t}\n\tfunction isValidDate(d) {\n\t\treturn d && !isNaN(d.getTime());\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          // Use date arithmetic to allow dates with different times to match\n          if (0 <= this[i].valueOf() - val && this[i].valueOf() - val < 1000*60*60*24)\n\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 (!Array.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.length = 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\t$.data(element, 'datepicker', this);\n\n\t\tthis._events = [];\n\t\tthis._secondaryEvents = [];\n\n\t\tthis._process_options(options);\n\n\t\tthis.dates = new DateArray();\n\t\tthis.viewDate = this.o.defaultViewDate;\n\t\tthis.focusDate = null;\n\n\t\tthis.element = $(element);\n\t\tthis.isInput = this.element.is('input');\n\t\tthis.inputField = this.isInput ? this.element : this.element.find('input');\n\t\tthis.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .input-group-append, .input-group-prepend, .btn') : false;\n\t\tif (this.component && this.component.length === 0){\n\t\t\tthis.component = false;\n    }\n\n\t\tif (this.o.isInline === null){\n\t\t\tthis.isInline = !this.component && !this.isInput;\n\t\t} else {\n\t\t\tthis.isInline = this.o.isInline;\n\t\t}\n\n\t\tthis.picker = $(DPGlobal.template);\n\n\t\t// Checking templates and inserting\n\t\tif (this._check_template(this.o.templates.leftArrow)) {\n\t\t\tthis.picker.find('.prev').html(this.o.templates.leftArrow);\n\t\t}\n\n\t\tif (this._check_template(this.o.templates.rightArrow)) {\n\t\t\tthis.picker.find('.next').html(this.o.templates.rightArrow);\n\t\t}\n\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\tif (this.o.calendarWeeks) {\n\t\t\tthis.picker.find('.datepicker-days .datepicker-switch, thead .datepicker-title, tfoot .today, tfoot .clear')\n\t\t\t\t.attr('colspan', function(i, val){\n\t\t\t\t\treturn Number(val) + 1;\n\t\t\t\t});\n\t\t}\n\n\t\tthis._process_options({\n\t\t\tstartDate: this._o.startDate,\n\t\t\tendDate: this._o.endDate,\n\t\t\tdaysOfWeekDisabled: this.o.daysOfWeekDisabled,\n\t\t\tdaysOfWeekHighlighted: this.o.daysOfWeekHighlighted,\n\t\t\tdatesDisabled: this.o.datesDisabled\n\t\t});\n\n\t\tthis._allow_update = false;\n\t\tthis.setViewMode(this.o.startView);\n\t\tthis._allow_update = true;\n\n\t\tthis.fillDow();\n\t\tthis.fillMonths();\n\n\t\tthis.update();\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_resolveViewName: function(view){\n\t\t\t$.each(DPGlobal.viewModes, function(i, viewMode){\n\t\t\t\tif (view === i || $.inArray(view, viewMode.names) !== -1){\n\t\t\t\t\tview = i;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn view;\n\t\t},\n\n\t\t_resolveDaysOfWeek: function(daysOfWeek){\n\t\t\tif (!Array.isArray(daysOfWeek))\n\t\t\t\tdaysOfWeek = daysOfWeek.split(/[,\\s]*/);\n\t\t\treturn $.map(daysOfWeek, Number);\n\t\t},\n\n\t\t_check_template: function(tmp){\n\t\t\ttry {\n\t\t\t\t// If empty\n\t\t\t\tif (tmp === undefined || tmp === \"\") {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// If no html, everything ok\n\t\t\t\tif ((tmp.match(/[<>]/g) || []).length <= 0) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t// Checking if html is fine\n\t\t\t\tvar jDom = $(tmp);\n\t\t\t\treturn jDom.length > 0;\n\t\t\t}\n\t\t\tcatch (ex) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\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\t// Retrieve view index from any aliases\n\t\t\to.startView = this._resolveViewName(o.startView);\n\t\t\to.minViewMode = this._resolveViewName(o.minViewMode);\n\t\t\to.maxViewMode = this._resolveViewName(o.maxViewMode);\n\n\t\t\t// Check view is between min and max\n\t\t\to.startView = Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, o.startView));\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}\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, o.assumeNearbyYear);\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, o.assumeNearbyYear);\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 = this._resolveDaysOfWeek(o.daysOfWeekDisabled||[]);\n\t\t\to.daysOfWeekHighlighted = this._resolveDaysOfWeek(o.daysOfWeekHighlighted||[]);\n\n\t\t\to.datesDisabled = o.datesDisabled||[];\n\t\t\tif (!Array.isArray(o.datesDisabled)) {\n\t\t\t\to.datesDisabled = o.datesDisabled.split(',');\n\t\t\t}\n\t\t\to.datesDisabled = $.map(o.datesDisabled, function(d){\n\t\t\t\treturn DPGlobal.parseDate(d, format, o.language, o.assumeNearbyYear);\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\tif (o.defaultViewDate instanceof Date || typeof o.defaultViewDate === 'string') {\n\t\t\t\to.defaultViewDate = DPGlobal.parseDate(o.defaultViewDate, format, o.language, o.assumeNearbyYear);\n\t\t\t} else if (o.defaultViewDate) {\n\t\t\t\tvar year = o.defaultViewDate.year || new Date().getFullYear();\n\t\t\t\tvar month = o.defaultViewDate.month || 0;\n\t\t\t\tvar day = o.defaultViewDate.day || 1;\n\t\t\t\to.defaultViewDate = UTCDate(year, month, day);\n\t\t\t} else {\n\t\t\t\to.defaultViewDate = UTCToday();\n\t\t\t}\n\t\t},\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} else 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} else 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            var events = {\n                keyup: $.proxy(function(e){\n                    if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1)\n                        this.update();\n                }, this),\n                keydown: $.proxy(this.keydown, this),\n                paste: $.proxy(this.paste, this)\n            };\n\n            if (this.o.showOnFocus === true) {\n                events.focus = $.proxy(this.show, this);\n            }\n\n            if (this.isInput) { // single input\n                this._events = [\n                    [this.element, events]\n                ];\n            }\n            // component: input + button\n            else if (this.component && this.inputField.length) {\n                this._events = [\n                    // For components that are not readonly, allow keyboard nav\n                    [this.inputField, events],\n                    [this.component, {\n                        click: $.proxy(this.show, this)\n                    }]\n                ];\n            }\n\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\tkeydown: $.proxy(this.keydown, 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\tif (this.o.immediateUpdates) {\n\t\t\t\t// Trigger input updates immediately on changed year/month\n\t\t\t\tthis._events.push([this.element, {\n\t\t\t\t\t'changeYear changeMonth': $.proxy(function(e){\n\t\t\t\t\t\tthis.update(e.date);\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[this.picker, '.prev, .next', {\n\t\t\t\t\tclick: $.proxy(this.navArrowsClick, this)\n\t\t\t\t}],\n\t\t\t\t[this.picker, '.day:not(.disabled)', {\n\t\t\t\t\tclick: $.proxy(this.dayCellClick, 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\tthis.isInline\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\tviewMode: this.viewMode,\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} else 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.inputField.is(':disabled') || (this.inputField.prop('readonly') && this.o.enableOnReadonly === false))\n\t\t\t\treturn;\n\t\t\tif (!this.isInline)\n\t\t\t\tthis.picker.appendTo(this.o.container);\n\t\t\tthis.place();\n\t\t\tthis.picker.show();\n\t\t\tthis._attachSecondaryEvents();\n\t\t\tthis._trigger('show');\n\t\t\tif ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard) {\n\t\t\t\t$(this.element).blur();\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\thide: function(){\n\t\t\tif (this.isInline || !this.picker.is(':visible'))\n\t\t\t\treturn this;\n\t\t\tthis.focusDate = null;\n\t\t\tthis.picker.hide().detach();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.setViewMode(this.o.startView);\n\n\t\t\tif (this.o.forceParse && this.inputField.val())\n\t\t\t\tthis.setValue();\n\t\t\tthis._trigger('hide');\n\t\t\treturn this;\n\t\t},\n\n\t\tdestroy: 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\treturn this;\n\t\t},\n\n\t\tpaste: function(e){\n\t\t\tvar dateString;\n\t\t\tif (e.originalEvent.clipboardData && e.originalEvent.clipboardData.types\n\t\t\t\t&& $.inArray('text/plain', e.originalEvent.clipboardData.types) !== -1) {\n\t\t\t\tdateString = e.originalEvent.clipboardData.getData('text/plain');\n\t\t\t} else if (window.clipboardData) {\n\t\t\t\tdateString = window.clipboardData.getData('Text');\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.setDate(dateString);\n\t\t\tthis.update();\n\t\t\te.preventDefault();\n\t\t},\n\n\t\t_utc_to_local: function(utc){\n\t\t\tif (!utc) {\n\t\t\t\treturn utc;\n\t\t\t}\n\n\t\t\tvar local = new Date(utc.getTime() + (utc.getTimezoneOffset() * 60000));\n\n\t\t\tif (local.getTimezoneOffset() !== utc.getTimezoneOffset()) {\n\t\t\t\tlocal = new Date(utc.getTime() + (local.getTimezoneOffset() * 60000));\n\t\t\t}\n\n\t\t\treturn local;\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 && UTCDate(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\tvar selected_date = this.dates.get(-1);\n\t\t\tif (selected_date !== undefined) {\n\t\t\t\treturn new Date(selected_date);\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\n\t\tclearDates: function(){\n\t\t\tthis.inputField.val('');\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.update();\n\t\t\tif (this.o.autoclose) {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\n\t\tsetDates: function(){\n\t\t\tvar args = Array.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\treturn this;\n\t\t},\n\n\t\tsetUTCDates: function(){\n\t\t\tvar args = Array.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.setDates.apply(this, $.map(args, this._utc_to_local));\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDate: alias('setDates'),\n\t\tsetUTCDate: alias('setUTCDates'),\n\t\tremove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead'),\n\n\t\tsetValue: function(){\n\t\t\tvar formatted = this.getFormattedDate();\n\t\t\tthis.inputField.val(formatted);\n\t\t\treturn this;\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\tgetStartDate: function(){\n\t\t\treturn this.o.startDate;\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\treturn this;\n\t\t},\n\n\t\tgetEndDate: function(){\n\t\t\treturn this.o.endDate;\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\treturn this;\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\treturn this;\n\t\t},\n\n\t\tsetDaysOfWeekHighlighted: function(daysOfWeekHighlighted){\n\t\t\tthis._process_options({daysOfWeekHighlighted: daysOfWeekHighlighted});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDatesDisabled: function(datesDisabled){\n\t\t\tthis._process_options({datesDisabled: datesDisabled});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tplace: function(){\n\t\t\tif (this.isInline)\n\t\t\t\treturn this;\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\tcontainer = $(this.o.container),\n\t\t\t\twindowWidth = container.width(),\n\t\t\t\tscrollTop = this.o.container === 'body' ? $(document).scrollTop() : container.scrollTop(),\n\t\t\t\tappendOffset = container.offset();\n\n\t\t\tvar parentsZindex = [0];\n\t\t\tthis.element.parents().each(function(){\n\t\t\t\tvar itemZIndex = $(this).css('z-index');\n\t\t\t\tif (itemZIndex !== 'auto' && Number(itemZIndex) !== 0) parentsZindex.push(Number(itemZIndex));\n\t\t\t});\n\t\t\tvar zIndex = Math.max.apply(Math, parentsZindex) + this.o.zIndexOffset;\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 - appendOffset.left;\n\t\t\tvar top = offset.top - appendOffset.top;\n\n\t\t\tif (this.o.container !== 'body') {\n\t\t\t\ttop += scrollTop;\n\t\t\t}\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\tif (offset.left < 0) {\n\t\t\t\t\t// component is outside the window on the left side. Move it into visible range\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t\tleft -= offset.left - visualPadding;\n\t\t\t\t} else if (left + calendarWidth > windowWidth) {\n\t\t\t\t\t// the calendar passes the widow right edge. Align it to component right side\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-right');\n\t\t\t\t\tleft += width - calendarWidth;\n\t\t\t\t} else {\n\t\t\t\t\tif (this.o.rtl) {\n\t\t\t\t\t\t// Default to right\n\t\t\t\t\t\tthis.picker.addClass('datepicker-orient-right');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Default to left\n\t\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t\t}\n\t\t\t\t}\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;\n\t\t\tif (yorient === 'auto'){\n\t\t\t\ttop_overflow = -scrollTop + top - calendarHeight;\n\t\t\t\tyorient = top_overflow < 0 ? 'bottom' : 'top';\n\t\t\t}\n\n\t\t\tthis.picker.addClass('datepicker-orient-' + yorient);\n\t\t\tif (yorient === 'top')\n\t\t\t\ttop -= calendarHeight + parseInt(this.picker.css('padding-top'));\n\t\t\telse\n\t\t\t\ttop += height;\n\n\t\t\tif (this.o.rtl) {\n\t\t\t\tvar right = windowWidth - (left + width);\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tright: right,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tleft: left,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this;\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 this;\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} else {\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.inputField.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, this.o.assumeNearbyYear);\n\t\t\t}, this));\n\t\t\tdates = $.grep(dates, $.proxy(function(date){\n\t\t\t\treturn (\n\t\t\t\t\t!this.dateWithinRange(date) ||\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.o.updateViewDate) {\n\t\t\t\tif (this.dates.length)\n\t\t\t\t\tthis.viewDate = new Date(this.dates.get(-1));\n\t\t\t\telse if (this.viewDate < this.o.startDate)\n\t\t\t\t\tthis.viewDate = new Date(this.o.startDate);\n\t\t\t\telse if (this.viewDate > this.o.endDate)\n\t\t\t\t\tthis.viewDate = new Date(this.o.endDate);\n\t\t\t\telse\n\t\t\t\t\tthis.viewDate = this.o.defaultViewDate;\n\t\t\t}\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\tthis.element.change();\n\t\t\t}\n\t\t\telse if (this.dates.length){\n\t\t\t\t// setting date by typing\n\t\t\t\tif (String(oldDates) !== String(this.dates) && fromArgs) {\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\t\tthis.element.change();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!this.dates.length && oldDates.length) {\n\t\t\t\tthis._trigger('clearDate');\n\t\t\t\tthis.element.change();\n\t\t\t}\n\n\t\t\tthis.fill();\n\t\t\treturn this;\n\t\t},\n\n\t\tfillDow: function(){\n      if (this.o.showWeekDays) {\n\t\t\tvar dowCnt = this.o.weekStart,\n\t\t\t\thtml = '<tr>';\n\t\t\tif (this.o.calendarWeeks){\n\t\t\t\thtml += '<th class=\"cw\">&#160;</th>';\n\t\t\t}\n\t\t\twhile (dowCnt < this.o.weekStart + 7){\n\t\t\t\thtml += '<th class=\"dow';\n        if ($.inArray(dowCnt, this.o.daysOfWeekDisabled) !== -1)\n          html += ' disabled';\n        html += '\">'+dates[this.o.language].daysMin[(dowCnt++)%7]+'</th>';\n\t\t\t}\n\t\t\thtml += '</tr>';\n\t\t\tthis.picker.find('.datepicker-days thead').append(html);\n      }\n\t\t},\n\n\t\tfillMonths: function(){\n      var localDate = this._utc_to_local(this.viewDate);\n\t\t\tvar html = '';\n\t\t\tvar focused;\n\t\t\tfor (var i = 0; i < 12; i++){\n\t\t\t\tfocused = localDate && localDate.getMonth() === i ? ' focused' : '';\n\t\t\t\thtml += '<span class=\"month' + focused + '\">' + dates[this.o.language].monthsShort[i] + '</span>';\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 = UTCToday();\n\t\t\tif (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){\n\t\t\t\tcls.push('old');\n\t\t\t} else 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 UTC today, not local today\n\t\t\tif (this.o.todayHighlight && isUTCEquals(date, today)) {\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 (!this.dateWithinRange(date)){\n\t\t\t\tcls.push('disabled');\n\t\t\t}\n\t\t\tif (this.dateIsDisabled(date)){\n\t\t\t\tcls.push('disabled', 'disabled-date');\n\t\t\t}\n\t\t\tif ($.inArray(date.getUTCDay(), this.o.daysOfWeekHighlighted) !== -1){\n\t\t\t\tcls.push('highlighted');\n\t\t\t}\n\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\tif (date.valueOf() === this.range[0]){\n          cls.push('range-start');\n        }\n        if (date.valueOf() === this.range[this.range.length-1]){\n          cls.push('range-end');\n        }\n\t\t\t}\n\t\t\treturn cls;\n\t\t},\n\n\t\t_fill_yearsView: function(selector, cssClass, factor, year, startYear, endYear, beforeFn){\n\t\t\tvar html = '';\n\t\t\tvar step = factor / 10;\n\t\t\tvar view = this.picker.find(selector);\n\t\t\tvar startVal = Math.floor(year / factor) * factor;\n\t\t\tvar endVal = startVal + step * 9;\n\t\t\tvar focusedVal = Math.floor(this.viewDate.getFullYear() / step) * step;\n\t\t\tvar selected = $.map(this.dates, function(d){\n\t\t\t\treturn Math.floor(d.getUTCFullYear() / step) * step;\n\t\t\t});\n\n\t\t\tvar classes, tooltip, before;\n\t\t\tfor (var currVal = startVal - step; currVal <= endVal + step; currVal += step) {\n\t\t\t\tclasses = [cssClass];\n\t\t\t\ttooltip = null;\n\n\t\t\t\tif (currVal === startVal - step) {\n\t\t\t\t\tclasses.push('old');\n\t\t\t\t} else if (currVal === endVal + step) {\n\t\t\t\t\tclasses.push('new');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(currVal, selected) !== -1) {\n\t\t\t\t\tclasses.push('active');\n\t\t\t\t}\n\t\t\t\tif (currVal < startYear || currVal > endYear) {\n\t\t\t\t\tclasses.push('disabled');\n\t\t\t\t}\n\t\t\t\tif (currVal === focusedVal) {\n\t\t\t\t  classes.push('focused');\n        }\n\n\t\t\t\tif (beforeFn !== $.noop) {\n\t\t\t\t\tbefore = beforeFn(new Date(currVal, 0, 1));\n\t\t\t\t\tif (before === undefined) {\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\t} else if (typeof before === 'boolean') {\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\t} else if (typeof before === 'string') {\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\t}\n\t\t\t\t\tif (before.enabled === false) {\n\t\t\t\t\t\tclasses.push('disabled');\n\t\t\t\t\t}\n\t\t\t\t\tif (before.classes) {\n\t\t\t\t\t\tclasses = classes.concat(before.classes.split(/\\s+/));\n\t\t\t\t\t}\n\t\t\t\t\tif (before.tooltip) {\n\t\t\t\t\t\ttooltip = before.tooltip;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\thtml += '<span class=\"' + classes.join(' ') + '\"' + (tooltip ? ' title=\"' + tooltip + '\"' : '') + '>' + currVal + '</span>';\n\t\t\t}\n\n\t\t\tview.find('.datepicker-switch').text(startVal + '-' + endVal);\n\t\t\tview.find('td').html(html);\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        titleFormat = dates[this.o.language].titleFormat || dates['en'].titleFormat,\n        todayDate = UTCToday(),\n        titleBtnVisible = (this.o.todayBtn === true || this.o.todayBtn === 'linked') && todayDate >= this.o.startDate && todayDate <= this.o.endDate && !this.weekOfDateIsDisabled(todayDate),\n\t\t\t\ttooltip,\n\t\t\t\tbefore;\n\t\t\tif (isNaN(year) || isNaN(month))\n\t\t\t\treturn;\n\t\t\tthis.picker.find('.datepicker-days .datepicker-switch')\n\t\t\t\t\t\t.text(DPGlobal.formatDate(d, titleFormat, this.o.language));\n\t\t\tthis.picker.find('tfoot .today')\n\t\t\t\t\t\t.text(todaytxt)\n            .css('display', titleBtnVisible ? 'table-cell' : 'none');\n\t\t\tthis.picker.find('tfoot .clear')\n\t\t\t\t\t\t.text(cleartxt)\n\t\t\t\t\t\t.css('display', this.o.clearBtn === true ? 'table-cell' : 'none');\n\t\t\tthis.picker.find('thead .datepicker-title')\n\t\t\t\t\t\t.text(this.o.title)\n\t\t\t\t\t\t.css('display', typeof this.o.title === 'string' && this.o.title !== '' ? 'table-cell' : 'none');\n\t\t\tthis.updateNavArrows();\n\t\t\tthis.fillMonths();\n\t\t\tvar prevMonth = UTCDate(year, month, 0),\n\t\t\t\tday = prevMonth.getUTCDate();\n\t\t\tprevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);\n\t\t\tvar nextMonth = new Date(prevMonth);\n\t\t\tif (prevMonth.getUTCFullYear() < 100){\n        nextMonth.setUTCFullYear(prevMonth.getUTCFullYear());\n      }\n\t\t\tnextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n\t\t\tnextMonth = nextMonth.valueOf();\n\t\t\tvar html = [];\n\t\t\tvar weekDay, clsName;\n\t\t\twhile (prevMonth.valueOf() < nextMonth){\n\t\t\t\tweekDay = prevMonth.getUTCDay();\n\t\t\t\tif (weekDay === this.o.weekStart){\n\t\t\t\t\thtml.push('<tr>');\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 - weekDay - 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('<td class=\"cw\">'+ calWeek +'</td>');\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\tvar content = prevMonth.getUTCDate();\n\n\t\t\t\tif (this.o.beforeShowDay !== $.noop){\n\t\t\t\t\tbefore = 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\tif (before.content)\n\t\t\t\t\t\tcontent = before.content;\n\t\t\t\t}\n\n\t\t\t\t//Check if uniqueSort exists (supported by jquery >=1.12 and >=2.2)\n\t\t\t\t//Fallback to unique function for older jquery versions\n\t\t\t\tif (typeof $.uniqueSort === \"function\") {\n\t\t\t\t\tclsName = $.uniqueSort(clsName);\n\t\t\t\t} else {\n\t\t\t\t\tclsName = $.unique(clsName);\n\t\t\t\t}\n\n\t\t\t\thtml.push('<td class=\"'+clsName.join(' ')+'\"' + (tooltip ? ' title=\"'+tooltip+'\"' : '') + ' data-date=\"' + prevMonth.getTime().toString() + '\">' + content + '</td>');\n\t\t\t\ttooltip = null;\n\t\t\t\tif (weekDay === this.o.weekEnd){\n\t\t\t\t\thtml.push('</tr>');\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').html(html.join(''));\n\n\t\t\tvar monthsTitle = dates[this.o.language].monthsTitle || dates['en'].monthsTitle || 'Months';\n\t\t\tvar months = this.picker.find('.datepicker-months')\n\t\t\t\t\t\t.find('.datepicker-switch')\n\t\t\t\t\t\t\t.text(this.o.maxViewMode < 2 ? monthsTitle : year)\n\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t.find('tbody 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\tif (this.o.beforeShowMonth !== $.noop){\n\t\t\t\tvar that = this;\n\t\t\t\t$.each(months, function(i, month){\n          var moDate = new Date(year, i, 1);\n          var before = that.o.beforeShowMonth(moDate);\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 && !$(month).hasClass('disabled'))\n\t\t\t\t\t    $(month).addClass('disabled');\n\t\t\t\t\tif (before.classes)\n\t\t\t\t\t    $(month).addClass(before.classes);\n\t\t\t\t\tif (before.tooltip)\n\t\t\t\t\t    $(month).prop('title', before.tooltip);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Generating decade/years picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-years',\n\t\t\t\t'year',\n\t\t\t\t10,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowYear\n\t\t\t);\n\n\t\t\t// Generating century/decades picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-decades',\n\t\t\t\t'decade',\n\t\t\t\t100,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowDecade\n\t\t\t);\n\n\t\t\t// Generating millennium/centuries picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-centuries',\n\t\t\t\t'century',\n\t\t\t\t1000,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowCentury\n\t\t\t);\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\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\tprevIsDisabled,\n\t\t\t\tnextIsDisabled,\n\t\t\t\tfactor = 1;\n\t\t\tswitch (this.viewMode){\n\t\t\t\tcase 4:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 3:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 2:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\tprevIsDisabled = Math.floor(year / factor) * factor <= startYear;\n\t\t\t\t\tnextIsDisabled = Math.floor(year / factor) * factor + factor > endYear;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tprevIsDisabled = year <= startYear && month <= startMonth;\n\t\t\t\t\tnextIsDisabled = year >= endYear && month >= endMonth;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.picker.find('.prev').toggleClass('disabled', prevIsDisabled);\n\t\t\tthis.picker.find('.next').toggleClass('disabled', nextIsDisabled);\n\t\t},\n\n\t\tclick: function(e){\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\n\t\t\tvar target, dir, day, year, month;\n\t\t\ttarget = $(e.target);\n\n\t\t\t// Clicked on the switch\n\t\t\tif (target.hasClass('datepicker-switch') && this.viewMode !== this.o.maxViewMode){\n\t\t\t\tthis.setViewMode(this.viewMode + 1);\n\t\t\t}\n\n\t\t\t// Clicked on today button\n\t\t\tif (target.hasClass('today') && !target.hasClass('day')){\n\t\t\t\tthis.setViewMode(0);\n\t\t\t\tthis._setDate(UTCToday(), this.o.todayBtn === 'linked' ? null : 'view');\n\t\t\t}\n\n\t\t\t// Clicked on clear button\n\t\t\tif (target.hasClass('clear')){\n\t\t\t\tthis.clearDates();\n\t\t\t}\n\n\t\t\tif (!target.hasClass('disabled')){\n\t\t\t\t// Clicked on a month, year, decade, century\n\t\t\t\tif (target.hasClass('month')\n\t\t\t\t\t\t|| target.hasClass('year')\n\t\t\t\t\t\t|| target.hasClass('decade')\n\t\t\t\t\t\t|| target.hasClass('century')) {\n\t\t\t\t\tthis.viewDate.setUTCDate(1);\n\n\t\t\t\t\tday = 1;\n\t\t\t\t\tif (this.viewMode === 1){\n\t\t\t\t\t\tmonth = target.parent().find('span').index(target);\n\t\t\t\t\t\tyear = this.viewDate.getUTCFullYear();\n\t\t\t\t\t\tthis.viewDate.setUTCMonth(month);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\tyear = Number(target.text());\n\t\t\t\t\t\tthis.viewDate.setUTCFullYear(year);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._trigger(DPGlobal.viewModes[this.viewMode - 1].e, this.viewDate);\n\n\t\t\t\t\tif (this.viewMode === this.o.minViewMode){\n\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.setViewMode(this.viewMode - 1);\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.picker.is(':visible') && this._focused_from){\n\t\t\t\tthis._focused_from.focus();\n\t\t\t}\n\t\t\tdelete this._focused_from;\n\t\t},\n\n\t\tdayCellClick: function(e){\n\t\t\tvar $target = $(e.currentTarget);\n\t\t\tvar timestamp = $target.data('date');\n\t\t\tvar date = new Date(timestamp);\n\n\t\t\tif (this.o.updateViewDate) {\n\t\t\t\tif (date.getUTCFullYear() !== this.viewDate.getUTCFullYear()) {\n\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t}\n\n\t\t\t\tif (date.getUTCMonth() !== this.viewDate.getUTCMonth()) {\n\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._setDate(date);\n\t\t},\n\n\t\t// Clicked on prev or next\n\t\tnavArrowsClick: function(e){\n\t\t\tvar $target = $(e.currentTarget);\n\t\t\tvar dir = $target.hasClass('prev') ? -1 : 1;\n\t\t\tif (this.viewMode !== 0){\n\t\t\t\tdir *= DPGlobal.viewModes[this.viewMode].navStep * 12;\n\t\t\t}\n\t\t\tthis.viewDate = this.moveMonth(this.viewDate, dir);\n\t\t\tthis._trigger(DPGlobal.viewModes[this.viewMode].e, this.viewDate);\n\t\t\tthis.fill();\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\n\t\t\tif (ix !== -1){\n\t\t\t\tif (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive){\n\t\t\t\t\tthis.dates.remove(ix);\n\t\t\t\t}\n\t\t\t} else if (this.o.multidate === false) {\n\t\t\t\tthis.dates.clear();\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\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 && this.o.updateViewDate) || 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\tif (!which || which !== 'view') {\n\t\t\t\tthis._trigger('changeDate');\n\t\t\t}\n\t\t\tthis.inputField.trigger('change');\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\tmoveDay: function(date, dir){\n\t\t\tvar newDate = new Date(date);\n\t\t\tnewDate.setUTCDate(date.getUTCDate() + dir);\n\n\t\t\treturn newDate;\n\t\t},\n\n\t\tmoveWeek: function(date, dir){\n\t\t\treturn this.moveDay(date, dir * 7);\n\t\t},\n\n\t\tmoveMonth: function(date, dir){\n\t\t\tif (!isValidDate(date))\n\t\t\t\treturn this.o.defaultViewDate;\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\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\tmoveAvailableDate: function(date, dir, fn){\n\t\t\tdo {\n\t\t\t\tdate = this[fn](date, dir);\n\n\t\t\t\tif (!this.dateWithinRange(date))\n\t\t\t\t\treturn false;\n\n\t\t\t\tfn = 'moveDay';\n\t\t\t}\n\t\t\twhile (this.dateIsDisabled(date));\n\n\t\t\treturn date;\n\t\t},\n\n\t\tweekOfDateIsDisabled: function(date){\n\t\t\treturn $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1;\n\t\t},\n\n\t\tdateIsDisabled: function(date){\n\t\t\treturn (\n\t\t\t\tthis.weekOfDateIsDisabled(date) ||\n\t\t\t\t$.grep(this.o.datesDisabled, function(d){\n\t\t\t\t\treturn isUTCEquals(date, d);\n\t\t\t\t}).length > 0\n\t\t\t);\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(':visible')){\n\t\t\t\tif (e.keyCode === 40 || e.keyCode === 27) { // allow down to re-show picker\n\t\t\t\t\tthis.show();\n\t\t\t\t\te.stopPropagation();\n        }\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar dateChanged = false,\n\t\t\t\tdir, 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\te.stopPropagation();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37: // left\n\t\t\t\tcase 38: // up\n\t\t\t\tcase 39: // right\n\t\t\t\tcase 40: // down\n\t\t\t\t\tif (!this.o.keyboardNavigation || this.o.daysOfWeekDisabled.length === 7)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdir = e.keyCode === 37 || e.keyCode === 38 ? -1 : 1;\n          if (this.viewMode === 0) {\n  \t\t\t\t\tif (e.ctrlKey){\n  \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n\n  \t\t\t\t\t\tif (newViewDate)\n  \t\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n  \t\t\t\t\t} else if (e.shiftKey){\n  \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n\n  \t\t\t\t\t\tif (newViewDate)\n  \t\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n  \t\t\t\t\t} else if (e.keyCode === 37 || e.keyCode === 39){\n  \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveDay');\n  \t\t\t\t\t} else if (!this.weekOfDateIsDisabled(focusDate)){\n  \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveWeek');\n  \t\t\t\t\t}\n          } else if (this.viewMode === 1) {\n            if (e.keyCode === 38 || e.keyCode === 40) {\n              dir = dir * 4;\n            }\n            newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n          } else if (this.viewMode === 2) {\n            if (e.keyCode === 38 || e.keyCode === 40) {\n              dir = dir * 4;\n            }\n            newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n          }\n\t\t\t\t\tif (newViewDate){\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 13: // enter\n\t\t\t\t\tif (!this.o.forceParse)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tfocusDate = this.focusDate || this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tif (this.o.keyboardNavigation) {\n\t\t\t\t\t\tthis._toggle_multidate(focusDate);\n\t\t\t\t\t\tdateChanged = true;\n\t\t\t\t\t}\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\te.stopPropagation();\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\tthis.inputField.trigger('change');\n\t\t\t}\n\t\t},\n\n\t\tsetViewMode: function(viewMode){\n\t\t\tthis.viewMode = viewMode;\n\t\t\tthis.picker\n\t\t\t\t.children('div')\n\t\t\t\t.hide()\n\t\t\t\t.filter('.datepicker-' + DPGlobal.viewModes[this.viewMode].clsName)\n\t\t\t\t\t.show();\n\t\t\tthis.updateNavArrows();\n      this._trigger('changeViewMode', new Date(this.viewDate));\n\t\t}\n\t};\n\n\tvar DateRangePicker = function(element, options){\n\t\t$.data(element, 'datepicker', this);\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\tthis.keepEmptyValues = options.keepEmptyValues;\n\t\tdelete options.keepEmptyValues;\n\n\t\tdatepickerPlugin.call($(this.inputs), options)\n\t\t\t.on('changeDate', $.proxy(this.dateUpdated, this));\n\n\t\tthis.pickers = $.map(this.inputs, function(i){\n\t\t\treturn $.data(i, '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\tclearDates: function(){\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.clearDates();\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 = $.data(e.target, 'datepicker');\n\n\t\t\tif (dp === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar new_date = dp.getUTCDate(),\n\t\t\t\tkeep_empty_values = this.keepEmptyValues,\n\t\t\t\ti = $.inArray(e.target, this.inputs),\n\t\t\t\tj = i - 1,\n\t\t\t\tk = i + 1,\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() && (p === dp || !keep_empty_values))\n\t\t\t\t\tp.setUTCDate(new_date);\n\t\t\t});\n\n\t\t\tif (new_date < this.dates[j]){\n\t\t\t\t// Date being moved earlier/left\n\t\t\t\twhile (j >= 0 && new_date < this.dates[j] && (this.pickers[j].element.val() || \"\").length > 0) {\n\t\t\t\t\tthis.pickers[j--].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t} else if (new_date > this.dates[k]){\n\t\t\t\t// Date being moved later/right\n\t\t\t\twhile (k < l && new_date > this.dates[k] && (this.pickers[k].element.val() || \"\").length > 0) {\n\t\t\t\t\tthis.pickers[k++].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\tdestroy: function(){\n\t\t\t$.map(this.pickers, function(p){ p.destroy(); });\n\t\t\t$(this.inputs).off('changeDate', this.dateUpdated);\n\t\t\tdelete this.element.data().datepicker;\n\t\t},\n\t\tremove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead')\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\tvar datepickerPlugin = 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.hasClass('input-daterange') || opts.inputs){\n\t\t\t\t\t$.extend(opts, {\n\t\t\t\t\t\tinputs: opts.inputs || $this.find('input').toArray()\n\t\t\t\t\t});\n\t\t\t\t\tdata = new DateRangePicker(this, opts);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdata = new Datepicker(this, opts);\n\t\t\t\t}\n\t\t\t\t$this.data('datepicker', data);\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}\n\t\t});\n\n\t\tif (\n\t\t\tinternal_return === undefined ||\n\t\t\tinternal_return instanceof Datepicker ||\n\t\t\tinternal_return instanceof DateRangePicker\n\t\t)\n\t\t\treturn this;\n\n\t\tif (this.length > 1)\n\t\t\tthrow new Error('Using only allowed for the collection of a single element (' + option + ' function)');\n\t\telse\n\t\t\treturn internal_return;\n\t};\n\t$.fn.datepicker = datepickerPlugin;\n\n\tvar defaults = $.fn.datepicker.defaults = {\n\t\tassumeNearbyYear: false,\n\t\tautoclose: false,\n\t\tbeforeShowDay: $.noop,\n\t\tbeforeShowMonth: $.noop,\n\t\tbeforeShowYear: $.noop,\n\t\tbeforeShowDecade: $.noop,\n\t\tbeforeShowCentury: $.noop,\n\t\tcalendarWeeks: false,\n\t\tclearBtn: false,\n\t\ttoggleActive: false,\n\t\tdaysOfWeekDisabled: [],\n\t\tdaysOfWeekHighlighted: [],\n\t\tdatesDisabled: [],\n\t\tendDate: Infinity,\n\t\tforceParse: true,\n\t\tformat: 'mm/dd/yyyy',\n\t\tisInline: null,\n\t\tkeepEmptyValues: false,\n\t\tkeyboardNavigation: true,\n\t\tlanguage: 'en',\n\t\tminViewMode: 0,\n\t\tmaxViewMode: 4,\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\tupdateViewDate: true,\n\t\tweekStart: 0,\n\t\tdisableTouchKeyboard: false,\n\t\tenableOnReadonly: true,\n\t\tshowOnFocus: true,\n\t\tzIndexOffset: 10,\n\t\tcontainer: 'body',\n\t\timmediateUpdates: false,\n\t\ttitle: '',\n\t\ttemplates: {\n\t\t\tleftArrow: '&#x00AB;',\n\t\t\trightArrow: '&#x00BB;'\n\t\t},\n    showWeekDays: true\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\"],\n\t\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\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\ttitleFormat: \"MM yyyy\"\n\t\t}\n\t};\n\n\tvar DPGlobal = {\n\t\tviewModes: [\n\t\t\t{\n\t\t\t\tnames: ['days', 'month'],\n\t\t\t\tclsName: 'days',\n\t\t\t\te: 'changeMonth'\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['months', 'year'],\n\t\t\t\tclsName: 'months',\n\t\t\t\te: 'changeYear',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['years', 'decade'],\n\t\t\t\tclsName: 'years',\n\t\t\t\te: 'changeDecade',\n\t\t\t\tnavStep: 10\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['decades', 'century'],\n\t\t\t\tclsName: 'decades',\n\t\t\t\te: 'changeCentury',\n\t\t\t\tnavStep: 100\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['centuries', 'millennium'],\n\t\t\t\tclsName: 'centuries',\n\t\t\t\te: 'changeMillennium',\n\t\t\t\tnavStep: 1000\n\t\t\t}\n\t\t],\n\t\tvalidParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,\n\t\tnonpunctuation: /[^ -\\/:-@\\u5e74\\u6708\\u65e5\\[-`{-~\\t\\n\\r]+/g,\n\t\tparseFormat: function(format){\n\t\t\tif (typeof format.toValue === 'function' && typeof format.toDisplay === 'function')\n                return format;\n            // IE treats \\0 as a string end in inputs (truncating the value),\n\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, assumeNearby){\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\tif (format.toValue)\n\t\t\t\treturn format.toValue(date, format, language);\n\t\t\tvar fn_map = {\n\t\t\t\t\td: 'moveDay',\n\t\t\t\t\tm: 'moveMonth',\n\t\t\t\t\tw: 'moveWeek',\n\t\t\t\t\ty: 'moveYear'\n\t\t\t\t},\n\t\t\t\tdateAliases = {\n\t\t\t\t\tyesterday: '-1d',\n\t\t\t\t\ttoday: '+0d',\n\t\t\t\t\ttomorrow: '+1d'\n\t\t\t\t},\n\t\t\t\tparts, part, dir, i, fn;\n\t\t\tif (date in dateAliases){\n\t\t\t\tdate = dateAliases[date];\n\t\t\t}\n\t\t\tif (/^[\\-+]\\d+[dmwy]([\\s,]+[\\-+]\\d+[dmwy])*$/i.test(date)){\n\t\t\t\tparts = date.match(/([\\-+]\\d+)([dmwy])/gi);\n\t\t\t\tdate = new Date();\n\t\t\t\tfor (i=0; i < parts.length; i++){\n\t\t\t\t\tpart = parts[i].match(/([\\-+]\\d+)([dmwy])/i);\n\t\t\t\t\tdir = Number(part[1]);\n\t\t\t\t\tfn = fn_map[part[2].toLowerCase()];\n\t\t\t\t\tdate = Datepicker.prototype[fn](date, dir);\n\t\t\t\t}\n\t\t\t\treturn Datepicker.prototype._zero_utc_time(date);\n\t\t\t}\n\n\t\t\tparts = date && date.match(this.nonpunctuation) || [];\n\n\t\t\tfunction applyNearbyYear(year, threshold){\n\t\t\t\tif (threshold === true)\n\t\t\t\t\tthreshold = 10;\n\n\t\t\t\t// if year is 2 digits or less, than the user most likely is trying to get a recent century\n\t\t\t\tif (year < 100){\n\t\t\t\t\tyear += 2000;\n\t\t\t\t\t// if the new year is more than threshold years in advance, use last century\n\t\t\t\t\tif (year > ((new Date()).getFullYear()+threshold)){\n\t\t\t\t\t\tyear -= 100;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn year;\n\t\t\t}\n\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(assumeNearby ? applyNearbyYear(v, assumeNearby) : 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['yy'] = setters_map['yyyy'];\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 = UTCToday();\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.toLowerCase() === p.toLowerCase();\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\tif (format.toDisplay)\n                return format.toDisplay(date, format, language);\n            var 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: '<thead>'+\n\t\t\t              '<tr>'+\n\t\t\t                '<th colspan=\"7\" class=\"datepicker-title\"></th>'+\n\t\t\t              '</tr>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th class=\"prev\">'+defaults.templates.leftArrow+'</th>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"5\" class=\"datepicker-switch\"></th>'+\n\t\t\t\t\t\t\t\t'<th class=\"next\">'+defaults.templates.rightArrow+'</th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t'</thead>',\n\t\tcontTemplate: '<tbody><tr><td colspan=\"7\"></td></tr></tbody>',\n\t\tfootTemplate: '<tfoot>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"7\" class=\"today\"></th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"7\" class=\"clear\"></th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t'</tfoot>'\n\t};\n\tDPGlobal.template = '<div class=\"datepicker\">'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-days\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\t'<tbody></tbody>'+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-months\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\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'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-years\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\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'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-decades\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\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'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-centuries\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\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'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t'</div>';\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\t/* DATEPICKER VERSION\n\t * =================== */\n\t$.fn.datepicker.version = '1.10.0';\n\n\t$.fn.datepicker.deprecated = function(msg){\n\t\tvar console = window.console;\n\t\tif (console && console.warn) {\n\t\t\tconsole.warn('DEPRECATED: ' + msg);\n\t\t}\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\tdatepickerPlugin.call($this, 'show');\n\t\t}\n\t);\n\t$(function(){\n\t\tdatepickerPlugin.call($('[data-provide=\"datepicker-inline\"]'));\n\t});\n\n}));\n"
  },
  {
    "path": "docs/Makefile",
    "content": "# Makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line.\nSPHINXOPTS    =\nSPHINXBUILD   = sphinx-build\nPAPER         =\nBUILDDIR      = _build\n\n# Internal variables.\nPAPEROPT_a4     = -D latex_paper_size=a4\nPAPEROPT_letter = -D latex_paper_size=letter\nALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .\n# the i18n builder cannot share the environment and doctrees with the others\nI18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .\n\n.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext\n\nhelp:\n\t@echo \"Please use \\`make <target>' where <target> is one of\"\n\t@echo \"  html       to make standalone HTML files\"\n\t@echo \"  dirhtml    to make HTML files named index.html in directories\"\n\t@echo \"  singlehtml to make a single large HTML file\"\n\t@echo \"  pickle     to make pickle files\"\n\t@echo \"  json       to make JSON files\"\n\t@echo \"  htmlhelp   to make HTML files and a HTML help project\"\n\t@echo \"  qthelp     to make HTML files and a qthelp project\"\n\t@echo \"  devhelp    to make HTML files and a Devhelp project\"\n\t@echo \"  epub       to make an epub\"\n\t@echo \"  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter\"\n\t@echo \"  latexpdf   to make LaTeX files and run them through pdflatex\"\n\t@echo \"  text       to make text files\"\n\t@echo \"  man        to make manual pages\"\n\t@echo \"  texinfo    to make Texinfo files\"\n\t@echo \"  info       to make Texinfo files and run them through makeinfo\"\n\t@echo \"  gettext    to make PO message catalogs\"\n\t@echo \"  changes    to make an overview of all changed/added/deprecated items\"\n\t@echo \"  linkcheck  to check all external links for integrity\"\n\t@echo \"  doctest    to run all doctests embedded in the documentation (if enabled)\"\n\nclean:\n\t-rm -rf $(BUILDDIR)/*\n\nhtml:\n\t$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html\n\t@echo\n\t@echo \"Build finished. The HTML pages are in $(BUILDDIR)/html.\"\n\ndirhtml:\n\t$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml\n\t@echo\n\t@echo \"Build finished. The HTML pages are in $(BUILDDIR)/dirhtml.\"\n\nsinglehtml:\n\t$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml\n\t@echo\n\t@echo \"Build finished. The HTML page is in $(BUILDDIR)/singlehtml.\"\n\npickle:\n\t$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle\n\t@echo\n\t@echo \"Build finished; now you can process the pickle files.\"\n\njson:\n\t$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json\n\t@echo\n\t@echo \"Build finished; now you can process the JSON files.\"\n\nhtmlhelp:\n\t$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp\n\t@echo\n\t@echo \"Build finished; now you can run HTML Help Workshop with the\" \\\n\t      \".hhp project file in $(BUILDDIR)/htmlhelp.\"\n\nqthelp:\n\t$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp\n\t@echo\n\t@echo \"Build finished; now you can run \"qcollectiongenerator\" with the\" \\\n\t      \".qhcp project file in $(BUILDDIR)/qthelp, like this:\"\n\t@echo \"# qcollectiongenerator $(BUILDDIR)/qthelp/bootstrap-datepicker.qhcp\"\n\t@echo \"To view the help file:\"\n\t@echo \"# assistant -collectionFile $(BUILDDIR)/qthelp/bootstrap-datepicker.qhc\"\n\ndevhelp:\n\t$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp\n\t@echo\n\t@echo \"Build finished.\"\n\t@echo \"To view the help file:\"\n\t@echo \"# mkdir -p $$HOME/.local/share/devhelp/bootstrap-datepicker\"\n\t@echo \"# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/bootstrap-datepicker\"\n\t@echo \"# devhelp\"\n\nepub:\n\t$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub\n\t@echo\n\t@echo \"Build finished. The epub file is in $(BUILDDIR)/epub.\"\n\nlatex:\n\t$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex\n\t@echo\n\t@echo \"Build finished; the LaTeX files are in $(BUILDDIR)/latex.\"\n\t@echo \"Run \\`make' in that directory to run these through (pdf)latex\" \\\n\t      \"(use \\`make latexpdf' here to do that automatically).\"\n\nlatexpdf:\n\t$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex\n\t@echo \"Running LaTeX files through pdflatex...\"\n\t$(MAKE) -C $(BUILDDIR)/latex all-pdf\n\t@echo \"pdflatex finished; the PDF files are in $(BUILDDIR)/latex.\"\n\ntext:\n\t$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text\n\t@echo\n\t@echo \"Build finished. The text files are in $(BUILDDIR)/text.\"\n\nman:\n\t$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man\n\t@echo\n\t@echo \"Build finished. The manual pages are in $(BUILDDIR)/man.\"\n\ntexinfo:\n\t$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo\n\t@echo\n\t@echo \"Build finished. The Texinfo files are in $(BUILDDIR)/texinfo.\"\n\t@echo \"Run \\`make' in that directory to run these through makeinfo\" \\\n\t      \"(use \\`make info' here to do that automatically).\"\n\ninfo:\n\t$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo\n\t@echo \"Running Texinfo files through makeinfo...\"\n\tmake -C $(BUILDDIR)/texinfo info\n\t@echo \"makeinfo finished; the Info files are in $(BUILDDIR)/texinfo.\"\n\ngettext:\n\t$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale\n\t@echo\n\t@echo \"Build finished. The message catalogs are in $(BUILDDIR)/locale.\"\n\nchanges:\n\t$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes\n\t@echo\n\t@echo \"The overview file is in $(BUILDDIR)/changes.\"\n\nlinkcheck:\n\t$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck\n\t@echo\n\t@echo \"Link check complete; look for any errors in the above output \" \\\n\t      \"or in $(BUILDDIR)/linkcheck/output.txt.\"\n\ndoctest:\n\t$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest\n\t@echo \"Testing of doctests in the sources finished, look at the \" \\\n\t      \"results in $(BUILDDIR)/doctest/output.txt.\"\n"
  },
  {
    "path": "docs/README.md",
    "content": "Documentation\n=============\n\nProject documentation is built using [Sphinx docs](https://www.sphinx-doc.org/), which uses [reST](http://docutils.sourceforge.net/rst.html) for markup.  This allows the docs to cover a vast amount of topics without using a thousand-line README file.\n\nSphinx docs is pip-installable via `pip install sphinx`.  Once installed, open a command line in the docs folder and run the following commands:\n\n```bash\n$ sudo pip install -r requirements.txt\n```\n\nThis will install the requirements needed for the generating the docs. Afterwards you can run:\n\n```bash\n$ make html\n```\n\nThe docs will be generated, the output files will be placed in the `_build/html/` directory, and can be browsed (locally) with any browser.\n\nThe docs can also be found online at <https://bootstrap-datepicker.readthedocs.org/>.\n"
  },
  {
    "path": "docs/_screenshots/assets/common.css",
    "content": "@import url('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css');\n@import url('../../../dist/css/bootstrap-datepicker3.css');\n\nbody {\n    /* Padding around all elements to allow space for screenshots */\n    padding: 10px;\n\n    /* Transparent background for PNG screenshots */\n    background: none;\n}\n"
  },
  {
    "path": "docs/_screenshots/assets/common.js",
    "content": "document.write(\"<script src='../../node_modules/jquery/dist/jquery.slim.js'></script>\");\ndocument.write(\"<script src='../../js/bootstrap-datepicker.js'></script>\");\n"
  },
  {
    "path": "docs/_screenshots/demo_head.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <link rel=\"stylesheet\" href=\"assets/common.css\">\n        <script src=\"assets/common.js\"></script>\n        <script>\n            document.addEventListener('DOMContentLoaded', function() {\n                const dp = $('.base').datepicker().data('datepicker');\n\n                dp.focusDate = new Date(Date.UTC(2013, 7, 14));\n                dp.update();\n                dp.show();\n\n                $('.date').datepicker({\n                    format: 'mm-dd-yyyy'\n                }).datepicker('show');\n\n                $('.inline').datepicker();\n            });\n        </script>\n    </head>\n    <body data-capture=\".base, .date, .datepicker\">\n        <div class=\"row\">\n            <div class=\"col-sm-3\">\n                <input type=\"text\" class=\"form-control base\" value=\"08/03/2013\">\n            </div>\n            <div class=\"col-sm-offset-1 col-sm-3\">\n                <div class=\"input-group date\">\n                    <input type=\"text\" class=\"form-control\" value=\"10-05-2003\" readonly>\n                    <div class=\"input-group-addon\">\n                        <span class=\"glyphicon glyphicon-th\"></span>\n                    </div>\n                </div>\n            </div>\n            <div class=\"col-sm-offset-1 col-sm-4 inline\" data-date=\"01/03/2004\"></div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "docs/_screenshots/markup_component.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <link rel=\"stylesheet\" href=\"assets/common.css\">\n        <script src=\"assets/common.js\"></script>\n        <script>\n            document.addEventListener('DOMContentLoaded', function() {\n                $('.date').datepicker({\n                    format: 'mm-dd-yyyy'\n                }).datepicker('show');\n            });\n        </script>\n    </head>\n    <body data-capture=\".input-group, .datepicker\">\n        <div class=\"row\">\n            <div class=\"col-sm-offset-4 col-sm-3\">\n                <div class=\"input-group date\">\n                    <input type=\"text\" class=\"form-control\" value=\"12-02-2012\">\n                    <div class=\"input-group-addon\">\n                        <span class=\"glyphicon glyphicon-th\"></span>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "docs/_screenshots/markup_daterange.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <link rel=\"stylesheet\" href=\"assets/common.css\">\n        <script src=\"assets/common.js\"></script>\n        <script>\n            document.addEventListener('DOMContentLoaded', function() {\n                $('.input-daterange').datepicker({\n                    format: 'yyyy-mm-dd'\n                });\n\n                $('.js-datepicker-show').datepicker('show');\n            });\n        </script>\n    </head>\n    <body data-capture=\".input-daterange, .datepicker\">\n        <div class=\"row\">\n            <div class=\"col-sm-5\">\n                <div class=\"input-group input-daterange\">\n                    <input type=\"text\" class=\"form-control js-datepicker-show\" value=\"2012-04-05\">\n                    <div class=\"input-group-addon\">to</div>\n                    <input type=\"text\" class=\"form-control\" value=\"2012-04-19\">\n                </div>\n            </div>\n            <div class=\"col-sm-5\">\n                <div class=\"input-group input-daterange\">\n                    <input type=\"text\" class=\"form-control\" value=\"2012-04-05\">\n                    <div class=\"input-group-addon\">to</div>\n                    <input type=\"text\" class=\"form-control js-datepicker-show\" value=\"2012-04-19\">\n                </div>\n            </div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "docs/_screenshots/markup_inline.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <link rel=\"stylesheet\" href=\"assets/common.css\">\n        <script src=\"assets/common.js\"></script>\n        <script>\n            document.addEventListener('DOMContentLoaded', function() {\n                $('div').datepicker();\n            });\n        </script>\n    </head>\n    <body data-capture=\".datepicker\">\n        <div data-date=\"12/03/2012\"></div>\n    </body>\n</html>\n"
  },
  {
    "path": "docs/_screenshots/markup_input.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <link rel=\"stylesheet\" href=\"assets/common.css\">\n        <script src=\"assets/common.js\"></script>\n        <script>\n            document.addEventListener('DOMContentLoaded', function() {\n                $('input').datepicker({\n                    format: 'mm-dd-yyyy'\n                }).datepicker('show');\n            });\n        </script>\n    </head>\n    <body data-capture=\"input, .datepicker\">\n        <div class=\"row\">\n            <div class=\"col-sm-offset-4 col-sm-3\">\n                <input type=\"text\" class=\"form-control\" value=\"02-16-2012\">\n            </div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "docs/_screenshots/option_calendarweeks.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <link rel=\"stylesheet\" href=\"assets/common.css\">\n        <script src=\"assets/common.js\"></script>\n        <script>\n            document.addEventListener('DOMContentLoaded', function() {\n                $('input').datepicker({\n                    format: 'mm-dd-yyyy',\n                    calendarWeeks: true\n                }).datepicker('show');\n            });\n        </script>\n    </head>\n    <body data-capture=\"input, .datepicker\">\n        <div class=\"row\">\n            <div class=\"col-sm-3\">\n                <input type=\"text\" class=\"form-control\" value=\"01-16-2012\">\n            </div>\n            <div class=\"col-sm-offset-2 col-sm-3\">\n                <input type=\"text\" class=\"form-control\" value=\"12-16-2012\">\n            </div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "docs/_screenshots/option_clearbtn.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <link rel=\"stylesheet\" href=\"assets/common.css\">\n        <script src=\"assets/common.js\"></script>\n        <script>\n            document.addEventListener('DOMContentLoaded', function() {\n                $('input').datepicker({\n                    format: 'mm-dd-yyyy',\n                    clearBtn: true\n                }).datepicker('show');\n            });\n        </script>\n    </head>\n    <body data-capture=\"input, .datepicker\">\n        <div class=\"row\">\n            <div class=\"col-sm-offset-4 col-sm-3\">\n                <input type=\"text\" class=\"form-control\" value=\"03-03-2013\">\n            </div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "docs/_screenshots/option_daysofweekdisabled.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <link rel=\"stylesheet\" href=\"assets/common.css\">\n        <script src=\"assets/common.js\"></script>\n        <script>\n            document.addEventListener('DOMContentLoaded', function() {\n                $('input').datepicker({\n                    format: 'mm-dd-yyyy',\n                    daysOfWeekDisabled: [0, 6]\n                }).datepicker('show');\n            });\n        </script>\n    </head>\n    <body data-capture=\"input, .datepicker\">\n        <div class=\"row\">\n            <div class=\"col-sm-offset-4 col-sm-3\">\n                <input type=\"text\" class=\"form-control\" value=\"03-05-2013\">\n            </div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "docs/_screenshots/option_enddate.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <link rel=\"stylesheet\" href=\"assets/common.css\">\n        <script src=\"assets/common.js\"></script>\n        <script>\n            document.addEventListener('DOMContentLoaded', function() {\n                $('input').datepicker({\n                    format: 'mm-dd-yyyy',\n                    endDate: '03-14-2013'\n                }).datepicker('show');\n            });\n        </script>\n    </head>\n    <body data-capture=\"input, .datepicker\">\n        <div class=\"row\">\n            <div class=\"col-sm-offset-4 col-sm-3\">\n                <input type=\"text\" class=\"form-control\" value=\"03-03-2013\">\n            </div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "docs/_screenshots/option_language.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <link rel=\"stylesheet\" href=\"assets/common.css\">\n        <style>\n            .row + .row {\n              margin-top: 30px;\n            }\n        </style>\n        <script src=\"assets/common.js\"></script>\n        <script src=\"../../js/locales/bootstrap-datepicker.es.js\" charset=\"UTF-8\"></script>\n        <script src=\"../../js/locales/bootstrap-datepicker.fr.js\" charset=\"UTF-8\"></script>\n        <script src=\"../../js/locales/bootstrap-datepicker.zh-TW.js\" charset=\"UTF-8\"></script>\n        <script src=\"../../js/locales/bootstrap-datepicker.ru.js\" charset=\"UTF-8\"></script>\n        <script src=\"../../js/locales/bootstrap-datepicker.ja.js\" charset=\"UTF-8\"></script>\n        <script>\n            document.addEventListener('DOMContentLoaded', function() {\n                $('[data-date]').datepicker({\n                    format: 'mm/dd/yyyy' // To override locale-specific formats\n                });\n            });\n        </script>\n    </head>\n    <body data-capture=\".datepicker\">\n        <div class=\"row\">\n            <div class=\"col-sm-4\" data-date=\"03/03/2013\" data-date-language=\"en\"></div>\n            <div class=\"col-sm-4\" data-date=\"03/03/2013\" data-date-start-view=\"1\" data-date-language=\"es\"></div>\n            <div class=\"col-sm-4\" data-date=\"03/03/2013\" data-date-language=\"fr\"></div>\n        </div>\n        <div class=\"row\">\n            <div class=\"col-sm-4\" data-date=\"03/03/2013\" data-date-start-view=\"1\" data-date-language=\"zh-TW\"></div>\n            <div class=\"col-sm-4\" data-date=\"03/03/2013\" data-date-language=\"ja\"></div>\n            <div class=\"col-sm-4\" data-date=\"03/03/2013\" data-date-start-view=\"1\" data-date-language=\"ru\"></div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "docs/_screenshots/option_multidate.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <link rel=\"stylesheet\" href=\"assets/common.css\">\n        <script src=\"assets/common.js\"></script>\n        <script>\n            document.addEventListener('DOMContentLoaded', function() {\n                $('input').datepicker({\n                    multidate: true\n                }).datepicker('show');\n            });\n        </script>\n    </head>\n    <body data-capture=\"input, .datepicker\">\n        <div class=\"row\">\n            <div class=\"col-sm-4\">\n                <input type=\"text\" class=\"form-control\" value=\"03/03/2013,03/16/2013\">\n            </div>\n            <div class=\"col-sm-4\">\n                <input type=\"text\" class=\"form-control\" value=\"03/03/2013,06/16/2013\" data-date-start-view=\"1\">\n            </div>\n            <div class=\"col-sm-4\">\n                <input type=\"text\" class=\"form-control\" value=\"03/03/2013,03/16/2014\" data-date-start-view=\"2\">\n            </div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "docs/_screenshots/option_showweekdays.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <link rel=\"stylesheet\" href=\"assets/common.css\">\n        <script src=\"assets/common.js\"></script>\n        <script>\n            document.addEventListener('DOMContentLoaded', function() {\n                $('input').datepicker({\n                    format: 'mm-dd-yyyy',\n                    showWeekDays: false\n                }).datepicker('show');\n            });\n        </script>\n    </head>\n    <body data-capture=\"input, .datepicker\">\n        <div class=\"row\">\n            <div class=\"col-sm-offset-4 col-sm-3\">\n                <input type=\"text\" class=\"form-control\" value=\"03-03-2013\">\n            </div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "docs/_screenshots/option_startdate.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <link rel=\"stylesheet\" href=\"assets/common.css\">\n        <script src=\"assets/common.js\"></script>\n        <script>\n            document.addEventListener('DOMContentLoaded', function() {\n                $('input').datepicker({\n                    format: 'mm-dd-yyyy',\n                    startDate: '03-14-2013'\n                }).datepicker('show');\n            });\n        </script>\n    </head>\n    <body data-capture=\"input, .datepicker\">\n        <div class=\"row\">\n            <div class=\"col-sm-offset-4 col-sm-3\">\n                <input type=\"text\" class=\"form-control\" value=\"03-18-2013\">\n            </div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "docs/_screenshots/option_todaybtn.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <link rel=\"stylesheet\" href=\"assets/common.css\">\n        <script src=\"assets/common.js\"></script>\n        <script>\n            document.addEventListener('DOMContentLoaded', function() {\n                $('input').datepicker({\n                    todayBtn: true\n                }).datepicker('show');\n            });\n        </script>\n    </head>\n    <body data-capture=\"input, .datepicker\">\n        <div class=\"row\">\n            <div class=\"col-sm-offset-4 col-sm-3\">\n                <input type=\"text\" class=\"form-control\" value=\"03/03/2013\">\n            </div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "docs/_screenshots/option_todayhighlight.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <link rel=\"stylesheet\" href=\"assets/common.css\">\n        <script src=\"assets/common.js\"></script>\n        <script>\n            function patch_date(f) {\n                const NativeDate = window.Date;\n                const date = function date(y,m,d,h,i,s,j){\n                    switch(arguments.length){\n                        case 0: return new NativeDate(date.now());\n                        case 1: return new NativeDate(y);\n                        case 2: return new NativeDate(y,m);\n                        case 3: return new NativeDate(y,m,d);\n                        case 4: return new NativeDate(y,m,d,h);\n                        case 5: return new NativeDate(y,m,d,h,i);\n                        case 6: return new NativeDate(y,m,d,h,i,s);\n                        case 7: return new NativeDate(y,y,m,d,h,i,s,j);\n                    }\n                };\n                date.now = NativeDate.now;\n                date.UTC = NativeDate.UTC;\n                return function() {\n                    Array.prototype.push.call(arguments, date);\n                    window.Date = date;\n                    f.apply(this, arguments);\n                    window.Date = NativeDate;\n                };\n            }\n            document.addEventListener('DOMContentLoaded', function() {\n                patch_date(function(Date){\n                    Date.now = () => {\n                        return new Date(2013, 2, 18).getTime();\n                    };\n\n                    $('input').datepicker({\n                        todayHighlight: true\n                    }).datepicker('show');\n                })();\n            });\n        </script>\n    </head>\n    <body data-capture=\"input, .datepicker\">\n        <div class=\"row\">\n            <div class=\"col-sm-3\">\n                <input type=\"text\" class=\"form-control\" value=\"03/03/2013\">\n            </div>\n            <div class=\"col-sm-offset-2 col-sm-3\">\n                <input type=\"text\" class=\"form-control\" value=\"03/18/2013\">\n            </div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "docs/_screenshots/option_weekstart.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <link rel=\"stylesheet\" href=\"assets/common.css\">\n        <script src=\"assets/common.js\"></script>\n        <script>\n            document.addEventListener('DOMContentLoaded', function() {\n                $('input').datepicker().datepicker('show');\n            });\n        </script>\n    </head>\n    <body data-capture=\"input, .datepicker\">\n        <div class=\"row\">\n            <div class=\"col-sm-3\">\n                <input type=\"text\" class=\"form-control\" value=\"03/03/2013\" data-date-week-start=\"2\">\n            </div>\n            <div class=\"col-sm-offset-1 col-sm-3\">\n                <input type=\"text\" class=\"form-control\" value=\"03/03/2013\" data-date-week-start=\"4\">\n            </div>\n            <div class=\"col-sm-offset-1 col-sm-3\">\n                <input type=\"text\" class=\"form-control\" value=\"03/03/2013\" data-date-week-start=\"6\">\n            </div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "docs/conf.py",
    "content": "# -*- coding: utf-8 -*-\n#\n# bootstrap-datepicker documentation build configuration file, created by\n# sphinx-quickstart on Fri Aug  2 14:45:57 2013.\n#\n# This file is execfile()d with the current directory set to its containing dir.\n#\n# Note that not all possible configuration values are present in this\n# autogenerated file.\n#\n# All configuration values have a default; values that are commented out\n# serve to show the default.\n\nimport sys, os\n\n# The version info for the project you're documenting, acts as replacement for\n# |version| and |release|, also used in various other places throughout the\n# built documents.\n#\n# The short X.Y version.\n#version = ''\n# The full version, including alpha/beta/rc tags.\n#release = ''\n\nimport sphinx_rtd_theme\n\n# If extensions (or modules to document with autodoc) are in another directory,\n# add these directories to sys.path here. If the directory is relative to the\n# documentation root, use os.path.abspath to make it absolute, like shown here.\n#sys.path.insert(0, os.path.abspath('.'))\n\n# -- General configuration -----------------------------------------------------\n\n# If your documentation needs a minimal Sphinx version, state it here.\n#needs_sphinx = '1.0'\n\nprimary_domain = 'js'\n\n# Add any Sphinx extension module names here, as strings. They can be extensions\n# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.\nextensions = []\n\n# Add any paths that contain templates here, relative to this directory.\ntemplates_path = ['_templates']\n\n# The suffix of source filenames.\nsource_suffix = '.rst'\n\n# The encoding of source files.\n#source_encoding = 'utf-8-sig'\n\n# The master toctree document.\nmaster_doc = 'index'\n\n# General information about the project.\nproject = u'bootstrap-datepicker'\ncopyright = u'2016, eternicode'\n\n# The language for content autogenerated by Sphinx. Refer to documentation\n# for a list of supported languages.\n#language = None\n\n# There are two options for replacing |today|: either, you set today to some\n# non-false value, then it is used:\n#today = ''\n# Else, today_fmt is used as the format for a strftime call.\n#today_fmt = '%B %d, %Y'\n\n# List of patterns, relative to source directory, that match files and\n# directories to ignore when looking for source files.\nexclude_patterns = ['_build']\n\n# The reST default role (used for this markup: `text`) to use for all documents.\n#default_role = None\n\n# If true, '()' will be appended to :func: etc. cross-reference text.\n#add_function_parentheses = True\n\n# If true, the current module name will be prepended to all description\n# unit titles (such as .. function::).\n#add_module_names = True\n\n# If true, sectionauthor and moduleauthor directives will be shown in the\n# output. They are ignored by default.\n#show_authors = False\n\n# The name of the Pygments (syntax highlighting) style to use.\npygments_style = 'sphinx'\n\nhighlight_language = 'javascript'\n\n# A list of ignored prefixes for module index sorting.\n#modindex_common_prefix = []\n\n\n# -- Options for HTML output ---------------------------------------------------\n\n# The theme to use for HTML and HTML Help pages.  See the documentation for\n# a list of builtin themes.\nhtml_theme = 'sphinx_rtd_theme'\n\n# Theme options are theme-specific and customize the look and feel of a theme\n# further.  For a list of options available for each theme, see the\n# documentation.\n#html_theme_options = {}\n\n# Add any paths that contain custom themes here, relative to this directory.\n# html_theme_path = ['_themes',]\nhtml_theme_path = [sphinx_rtd_theme.get_html_theme_path()]\n\n# The name for this set of Sphinx documents.  If None, it defaults to\n# \"<project> v<release> documentation\".\n#html_title = None\n\n# A shorter title for the navigation bar.  Default is the same as html_title.\n#html_short_title = None\n\n# The name of an image file (relative to this directory) to place at the top\n# of the sidebar.\n#html_logo = None\n\n# The name of an image file (within the static path) to use as favicon of the\n# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32\n# pixels large.\n#html_favicon = None\n\n# Add any paths that contain custom static files (such as style sheets) here,\n# relative to this directory. They are copied after the builtin static files,\n# so a file named \"default.css\" will overwrite the builtin \"default.css\".\nhtml_static_path = ['_static']\n\n# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,\n# using the given strftime format.\n#html_last_updated_fmt = '%b %d, %Y'\n\n# If true, SmartyPants will be used to convert quotes and dashes to\n# typographically correct entities.\n#html_use_smartypants = True\n\n# Custom sidebar templates, maps document names to template names.\n#html_sidebars = {}\n\n# Additional templates that should be rendered to pages, maps page names to\n# template names.\n#html_additional_pages = {}\n\n# If false, no module index is generated.\n#html_domain_indices = True\n\n# If false, no index is generated.\n#html_use_index = True\n\n# If true, the index is split into individual pages for each letter.\n#html_split_index = False\n\n# If true, links to the reST sources are added to the pages.\n#html_show_sourcelink = True\n\n# If true, \"Created using Sphinx\" is shown in the HTML footer. Default is True.\n#html_show_sphinx = True\n\n# If true, \"(C) Copyright ...\" is shown in the HTML footer. Default is True.\n#html_show_copyright = True\n\n# If true, an OpenSearch description file will be output, and all pages will\n# contain a <link> tag referring to it.  The value of this option must be the\n# base URL from which the finished HTML is served.\n#html_use_opensearch = ''\n\n# This is the file name suffix for HTML files (e.g. \".xhtml\").\n#html_file_suffix = None\n\n# Output file base name for HTML help builder.\nhtmlhelp_basename = 'bootstrap-datepickerdoc'\n\n\n# -- Options for LaTeX output --------------------------------------------------\n\nlatex_elements = {\n# The paper size ('letterpaper' or 'a4paper').\n#'papersize': 'letterpaper',\n\n# The font size ('10pt', '11pt' or '12pt').\n#'pointsize': '10pt',\n\n# Additional stuff for the LaTeX preamble.\n#'preamble': '',\n}\n\n# Grouping the document tree into LaTeX files. List of tuples\n# (source start file, target name, title, author, documentclass [howto/manual]).\nlatex_documents = [\n  ('index', 'bootstrap-datepicker.tex', u'bootstrap-datepicker Documentation',\n   u'eternicode', 'manual'),\n]\n\n# The name of an image file (relative to this directory) to place at the top of\n# the title page.\n#latex_logo = None\n\n# For \"manual\" documents, if this is true, then toplevel headings are parts,\n# not chapters.\n#latex_use_parts = False\n\n# If true, show page references after internal links.\n#latex_show_pagerefs = False\n\n# If true, show URL addresses after external links.\n#latex_show_urls = False\n\n# Documents to append as an appendix to all manuals.\n#latex_appendices = []\n\n# If false, no module index is generated.\n#latex_domain_indices = True\n\n\n# -- Options for manual page output --------------------------------------------\n\n# One entry per manual page. List of tuples\n# (source start file, name, description, authors, manual section).\nman_pages = [\n    ('index', 'bootstrap-datepicker', u'bootstrap-datepicker Documentation',\n     [u'eternicode'], 1)\n]\n\n# If true, show URL addresses after external links.\n#man_show_urls = False\n\n\n# -- Options for Texinfo output ------------------------------------------------\n\n# Grouping the document tree into Texinfo files. List of tuples\n# (source start file, target name, title, author,\n#  dir menu entry, description, category)\ntexinfo_documents = [\n  ('index', 'bootstrap-datepicker', u'bootstrap-datepicker Documentation',\n   u'eternicode', 'bootstrap-datepicker', 'One line description of project.',\n   'Miscellaneous'),\n]\n\n# Documents to append as an appendix to all manuals.\n#texinfo_appendices = []\n\n# If false, no module index is generated.\n#texinfo_domain_indices = True\n\n# How to display URL addresses: 'footnote', 'no', or 'inline'.\n#texinfo_show_urls = 'footnote'\n"
  },
  {
    "path": "docs/events.rst",
    "content": "Events\n======\n\nDatepicker triggers a number of events in certain circumstances.  All events have extra data attached to the event object that is passed to any event handlers\n\n::\n\n    $('.datepicker').datepicker()\n        .on(picker_event, function(e) {\n            // `e` here contains the extra attributes\n        });\n\n* ``date``: the relevant Date object, in local timezone.  For a multidate picker, this will be the latest date picked.\n* ``dates``: an Array of Date objects, in local timezone, when using a multidate picker.\n* ``format([ix], [format])``: a function to make formatting ``date`` easier.  ``ix`` can be the index of a Date in the ``dates`` array to format; if absent, the last date selected will be used.  ``format`` can be any format string that datepicker supports; if absent, the format set on the datepicker will be used.  Both arguments are optional.\n\n\nshow\n----\n\nFired when the date picker is displayed.\n\n\nhide\n----\n\nFired when the date picker is hidden.\n\n\nclearDate\n---------\n\nFired when the date is cleared, normally when the \"clear\" button (enabled with the ``clearBtn`` option) is pressed.\n\n\nchangeDate\n----------\n\nFired when the date is changed.\n\n\nchangeMonth\n-----------\n\nFired when the *view* month is changed from year view.\n\n\nchangeYear\n----------\n\nFired when the *view* year is changed from decade view.\n\n\nchangeDecade\n------------\n\nFired when the *view* decade is changed from century view.\n\n\nchangeCentury\n-------------\n\nFired when the *view* century is changed from millennium view.\n"
  },
  {
    "path": "docs/i18n.rst",
    "content": "I18N\n====\n\nThe plugin supports i18n for the month and weekday names and the ``weekStart`` option.  The default is English (\"en\"); other available translations are available in the ``js/locales/`` directory, simply include your desired locale after the plugin.  To add more languages, simply add a key to ``$.fn.datepicker.dates``, before calling ``.datepicker()``.  Example\n\n::\n\n    $.fn.datepicker.dates['en'] = {\n        days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n        daysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n        daysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n        months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n        monthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n        today: \"Today\",\n        clear: \"Clear\",\n        format: \"mm/dd/yyyy\",\n        titleFormat: \"MM yyyy\", /* Leverages same syntax as 'format' */\n        weekStart: 0\n    };\n\nRight-to-left languages may also include ``rtl: true`` to make the calendar display appropriately.\n\nIf your browser (or those of your users) is displaying characters wrong, chances are the browser is loading the javascript file with a non-unicode encoding.  Simply add ``charset=\"UTF-8\"`` to your ``script`` tag:\n\n.. code-block:: html\n\n    <script src=\"bootstrap-datepicker.XX.js\" charset=\"UTF-8\"></script>\n\n::\n\n    $('.datepicker').datepicker({\n        language: 'XX'\n    });\n\n.. figure:: _static/screenshots/option_language.png\n    :align: center\n"
  },
  {
    "path": "docs/index.rst",
    "content": "bootstrap-datepicker\n====================\n\nBootstrap-datepicker provides a flexible datepicker widget in the Bootstrap style.\n\n.. figure:: _static/screenshots/demo_head.png\n    :align: center\n\nVersions are incremented according to `semver <https://semver.org/>`_.\n\n`Online Demo <https://uxsolutions.github.io/bootstrap-datepicker>`_\n\n\nRequirements\n------------\n\n* `Bootstrap`_ 2.0.4+\n* `jQuery`_ 1.7.1+\n\n.. _Bootstrap: https://getbootstrap.com/\n.. _jQuery: https://jquery.com/\n\nThese are the specific versions bootstrap-datepicker is tested against (``js`` files) and built against (``css`` files).  Use other versions at your own risk.\n\n\nDependencies\n------------\n\nRequires bootstrap's dropdown component (``dropdowns.less``) for some styles, and bootstrap's sprites (``sprites.less`` and associated images) for arrows.\n\nA standalone .css file (including necessary dropdown styles and alternative, text-based arrows) can be generated by running ``build/build_standalone.less`` through the ``lessc`` compiler::\n\n    $ lessc build/build_standalone.less datepicker.css\n\n\nUsage\n-----\n\nCall the datepicker via javascript::\n\n    $('.datepicker').datepicker();\n\n\nData API\n^^^^^^^^\n\nAs with bootstrap's own plugins, datepicker provides a data-api that can be used to instantiate datepickers without the need for custom javascript.  For most datepickers, simply set ``data-provide=\"datepicker\"`` on the element you want to initialize, and it will be intialized lazily, in true bootstrap fashion.  For inline datepickers, use ``data-provide=\"datepicker-inline\"``; these will be immediately initialized on page load, and cannot be lazily loaded.\n\n.. code-block:: html\n\n    <input data-provide=\"datepicker\">\n\nMarkup with component\n\n.. code-block:: html\n\n    <div class=\"input-group date\" data-provide=\"datepicker\">\n        <input type=\"text\" class=\"form-control\">\n        <div class=\"input-group-addon\">\n            <span class=\"glyphicon glyphicon-th\"></span>\n        </div>\n    </div>\n\nYou can disable datepicker's data-api in the same way as you would disable other bootstrap plugins::\n\n    $(document).off('.datepicker.data-api');\n\n\nConfiguration\n^^^^^^^^^^^^^\n\n:doc:`options` are passed to the ``datepicker`` function via an options hash at instantiation::\n\n    $('.datepicker').datepicker({\n        format: 'mm/dd/yyyy',\n        startDate: '-3d'\n    });\n\nMost options may be provided as data-attributes on the target element:\n\n.. code-block:: html\n\n    <input class=\"datepicker\" data-date-format=\"mm/dd/yyyy\">\n\n::\n\n    $('.datepicker').datepicker({\n        startDate: '-3d'\n    });\n\nDefaults for all options can be modified directly by changing values in the ``$.fn.datepicker.defaults`` hash::\n\n    $.fn.datepicker.defaults.format = \"mm/dd/yyyy\";\n    $('.datepicker').datepicker({\n        startDate: '-3d'\n    });\n\n\nStylesheets\n^^^^^^^^^^^\n\nThere are a few different stylesheets included in the library. This is an overview of what each file is to be used for:\n\n:code:`bootstrap-datepicker.css` gives legacy support for twitter bootstrap v2, :code:`bootstrap-datepicker3.css` is used for twitter bootstrap v3 support\nand :code:`bootstrap-datepicker.standalone.css` can be used to include the datepicker without depending on the twitter bootstrap library.\n\nNo Conflict mode\n^^^^^^^^^^^^^^^^\n\n``$.fn.datepicker.noConflict`` provides a way to avoid conflict with other jQuery datepicker plugins::\n\n    var datepicker = $.fn.datepicker.noConflict(); // return $.fn.datepicker to previously assigned value\n    $.fn.bootstrapDP = datepicker;                 // give $().bootstrapDP the bootstrap-datepicker functionality\n\n\n\nTable of Contents\n-----------------\n\n.. toctree::\n\n   markup\n   options\n   methods\n   events\n   keyboard\n   i18n\n"
  },
  {
    "path": "docs/keyboard.rst",
    "content": "Keyboard support\n================\n\nThe datepicker includes keyboard navigation.  The \"focused date\" is kept track of and highlighted (as with mouse hover) during keyboard nav, and is cleared when a date is toggled or the picker is hidden.\n\nup, down, left, right arrow keys\n--------------------------------\n\nBy themselves, left/right will move focus backward/forward one day, up/down will move focus back/forward one week.\n\nWith the shift key, up/left will move focus backward one month, down/right will move focus forward one month.\n\nWith the ctrl key, up/left will move focus backward one year, down/right will move focus forward one year.\n\nShift+ctrl behaves the same as ctrl -- that is, it does not change both month and year simultaneously, only the year.\n\nenter\n-----\n\nWhen the picker is visible, enter will toggle the focused date (if there is one).  When the picker is not visible, enter will have normal effects -- submitting the current form, etc.\n\nWhen the date is deselected, the ``clearDate`` event is triggered; otherwise, the ``changeDate`` event is triggered.  If ``autoclose`` is enabled, the picker will be hidden after selection or deselection.\n\nescape\n------\n\nThe escape key can be used to clear the focused date and hide and re-show the datepicker; hiding the picker is necessary if the user wants to manually edit the value.\n"
  },
  {
    "path": "docs/make.bat",
    "content": "@ECHO OFF\n\nREM Command file for Sphinx documentation\n\nif \"%SPHINXBUILD%\" == \"\" (\n\tset SPHINXBUILD=sphinx-build\n)\nset BUILDDIR=_build\nset ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .\nset I18NSPHINXOPTS=%SPHINXOPTS% .\nif NOT \"%PAPER%\" == \"\" (\n\tset ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%\n\tset I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%\n)\n\nif \"%1\" == \"\" goto help\n\nif \"%1\" == \"help\" (\n\t:help\n\techo.Please use `make ^<target^>` where ^<target^> is one of\n\techo.  html       to make standalone HTML files\n\techo.  dirhtml    to make HTML files named index.html in directories\n\techo.  singlehtml to make a single large HTML file\n\techo.  pickle     to make pickle files\n\techo.  json       to make JSON files\n\techo.  htmlhelp   to make HTML files and a HTML help project\n\techo.  qthelp     to make HTML files and a qthelp project\n\techo.  devhelp    to make HTML files and a Devhelp project\n\techo.  epub       to make an epub\n\techo.  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter\n\techo.  text       to make text files\n\techo.  man        to make manual pages\n\techo.  texinfo    to make Texinfo files\n\techo.  gettext    to make PO message catalogs\n\techo.  changes    to make an overview over all changed/added/deprecated items\n\techo.  linkcheck  to check all external links for integrity\n\techo.  doctest    to run all doctests embedded in the documentation if enabled\n\tgoto end\n)\n\nif \"%1\" == \"clean\" (\n\tfor /d %%i in (%BUILDDIR%\\*) do rmdir /q /s %%i\n\tdel /q /s %BUILDDIR%\\*\n\tgoto end\n)\n\nif \"%1\" == \"html\" (\n\t%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished. The HTML pages are in %BUILDDIR%/html.\n\tgoto end\n)\n\nif \"%1\" == \"dirhtml\" (\n\t%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.\n\tgoto end\n)\n\nif \"%1\" == \"singlehtml\" (\n\t%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.\n\tgoto end\n)\n\nif \"%1\" == \"pickle\" (\n\t%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished; now you can process the pickle files.\n\tgoto end\n)\n\nif \"%1\" == \"json\" (\n\t%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished; now you can process the JSON files.\n\tgoto end\n)\n\nif \"%1\" == \"htmlhelp\" (\n\t%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished; now you can run HTML Help Workshop with the ^\n.hhp project file in %BUILDDIR%/htmlhelp.\n\tgoto end\n)\n\nif \"%1\" == \"qthelp\" (\n\t%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished; now you can run \"qcollectiongenerator\" with the ^\n.qhcp project file in %BUILDDIR%/qthelp, like this:\n\techo.^> qcollectiongenerator %BUILDDIR%\\qthelp\\bootstrap-datepicker.qhcp\n\techo.To view the help file:\n\techo.^> assistant -collectionFile %BUILDDIR%\\qthelp\\bootstrap-datepicker.ghc\n\tgoto end\n)\n\nif \"%1\" == \"devhelp\" (\n\t%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished.\n\tgoto end\n)\n\nif \"%1\" == \"epub\" (\n\t%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished. The epub file is in %BUILDDIR%/epub.\n\tgoto end\n)\n\nif \"%1\" == \"latex\" (\n\t%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished; the LaTeX files are in %BUILDDIR%/latex.\n\tgoto end\n)\n\nif \"%1\" == \"text\" (\n\t%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished. The text files are in %BUILDDIR%/text.\n\tgoto end\n)\n\nif \"%1\" == \"man\" (\n\t%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished. The manual pages are in %BUILDDIR%/man.\n\tgoto end\n)\n\nif \"%1\" == \"texinfo\" (\n\t%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.\n\tgoto end\n)\n\nif \"%1\" == \"gettext\" (\n\t%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Build finished. The message catalogs are in %BUILDDIR%/locale.\n\tgoto end\n)\n\nif \"%1\" == \"changes\" (\n\t%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.The overview file is in %BUILDDIR%/changes.\n\tgoto end\n)\n\nif \"%1\" == \"linkcheck\" (\n\t%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Link check complete; look for any errors in the above output ^\nor in %BUILDDIR%/linkcheck/output.txt.\n\tgoto end\n)\n\nif \"%1\" == \"doctest\" (\n\t%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest\n\tif errorlevel 1 exit /b 1\n\techo.\n\techo.Testing of doctests in the sources finished, look at the ^\nresults in %BUILDDIR%/doctest/output.txt.\n\tgoto end\n)\n\n:end\n"
  },
  {
    "path": "docs/markup.rst",
    "content": "Markup\n=======\n\nThe following are examples of supported markup.  On their own, these will not provide a datepicker widget; you will need to instantiate the datepicker on the markup.\n\n\ninput\n-----\n\nThe simplest case: focusing the input (clicking or tabbing into it) will show the picker.\n\n.. code-block:: html\n\n    <input type=\"text\" class=\"form-control\" value=\"02-16-2012\">\n\n.. figure:: _static/screenshots/markup_input.png\n    :align: center\n\ncomponent\n---------\n\nAdding the ``date`` class to an ``input-group`` bootstrap component will allow the ``input-group-addon`` elements to trigger the picker.\n\n.. code-block:: html\n\n    <div class=\"input-group date\">\n        <input type=\"text\" class=\"form-control\" value=\"12-02-2012\">\n        <div class=\"input-group-addon\">\n            <span class=\"glyphicon glyphicon-th\"></span>\n        </div>\n    </div>\n\n.. figure:: _static/screenshots/markup_component.png\n    :align: center\n\n.. _daterange:\n\ndate-range\n----------\n\nUsing the ``input-daterange`` construct with multiple child inputs will instantiate one picker per input and link them together to allow selecting ranges.\n\n.. code-block:: html\n\n    <div class=\"input-group input-daterange\">\n        <input type=\"text\" class=\"form-control\" value=\"2012-04-05\">\n        <div class=\"input-group-addon\">to</div>\n        <input type=\"text\" class=\"form-control\" value=\"2012-04-19\">\n    </div>\n\n.. figure:: _static/screenshots/markup_daterange.png\n    :align: center\n\nNote that that ``input-daterange`` itself does not implement the ``datepicker`` methods. Methods should be directly called to the inputs. For example:\n\n::\n\n    $('.input-daterange input').each(function() {\n        $(this).datepicker('clearDates');\n    });\n\ninline or embedded\n------------------\n\nInstantiating the datepicker on a simple div will give an embedded picker that is always visible.\n\n.. code-block:: html\n\n    <div data-date=\"12/03/2012\"></div>\n\n.. figure:: _static/screenshots/markup_inline.png\n    :align: center\n\n\nExample to save the embedded datepicker value to a hidden field\n\n.. code-block:: html\n\n    <div id=\"datepicker\" data-date=\"12/03/2012\"></div>\n    <input type=\"hidden\" id=\"my_hidden_input\">\n\n::\n\n    $('#datepicker').datepicker();\n    $('#datepicker').on('changeDate', function() {\n        $('#my_hidden_input').val(\n            $('#datepicker').datepicker('getFormattedDate')\n        );\n    });\n"
  },
  {
    "path": "docs/methods.rst",
    "content": "Methods\n=======\n\nMethods are called on a datepicker by calling the ``datepicker`` function with a string first argument, followed by any arguments the method takes\n\n::\n\n    $('.datepicker').datepicker('method', arg1, arg2);\n\n\ndestroy\n-------\n\nArguments: None\n\nRemove the datepicker.  Removes attached events, internal attached objects, and added HTML elements.\n\n*Alias: remove*\n\n\nshow\n----\n\nArguments: None\n\nShow the picker.\n\n\nhide\n----\n\nArguments: None\n\nHide the picker.\n\n\nupdate\n------\n\nArguments:\n\n* date (String|Date|Array, optional)\n* date (String|Date, optional)\n* ...\n\nUpdate the datepicker with given arguments or the current input value.\nThe arguments can be either an array of strings, an array of Date objects, multiples strings or multiples Date objects.\nIf ``date`` arguments are provided and they are Date objects, it is assumed to be \"local\" Date objects, and will be converted to UTC for internal use.\n\n::\n\n    $('.datepicker').datepicker('update');\n    $('.datepicker').datepicker('update', '2011-03-05');\n    $('.datepicker').datepicker('update', '2011-03-05', '2011-03-07');\n    $('.datepicker').datepicker('update', new Date(2011, 2, 5));\n    $('.datepicker').datepicker('update', [new Date(2011, 2, 5), new Date(2011, 2, 7)]);\n\nTo reset the datepicker and clear the selected date, pass an empty string with ``update``:\n\n::\n\n    $('.datepicker').datepicker('update', '');\n\n\nsetDate\n-------\n\nArguments:\n\n* date (Date)\n\nSets the internal date.  ``date`` is assumed to be a \"local\" date object, and will be converted to UTC for internal use.\n\n\nsetUTCDate\n----------\n\nArguments:\n\n* date (Date)\n\nSets the internal date.  ``date`` is assumed to be a UTC date object, and will not be converted.\n\n\nsetDates\n--------\n\nArguments:\n\n* date[, date[, ...]] (Date)\n\nor\n\n* [date[, date[, ...]]] (Array)\n\nSets the internal date list; accepts multiple dates or a single array of dates as arguments.  Each ``date`` is assumed to be a \"local\" date object, and will be converted to UTC for internal use.  For use with multidate pickers.\n\n\nclearDates\n----------\n\nArguments: None\n\nClear dates.\n\n\nsetUTCDates\n-----------\n\nArguments:\n\n* date[, date[, ...]] (Date)\n\nor\n\n* [date[, date[, ...]]] (Array)\n\nSets the internal date list.  Each ``date`` is assumed to be a UTC date object, and will not be converted.  For use with multidate pickers.\n\n\ngetDate\n-------\n\nArguments: None\n\nReturns a localized date object representing the internal date object of the first datepicker in the selection.  For multidate pickers, returns the latest date selected.\n\n\ngetUTCDate\n----------\n\nArguments: None\n\nReturns the internal UTC date object, as-is and unconverted to local time, of the first datepicker in the selection.  For multidate pickers, returns the latest date selected.\n\n\ngetDates\n--------\n\nArguments: None\n\nReturns a list of localized date objects representing the internal date objects of the first datepicker in the selection.  For use with multidate pickers.\n\n\ngetUTCDates\n-----------\n\nArguments: None\n\nReturns the internal list of UTC date objects, as they are and unconverted to local time, of the first datepicker in the selection.  For use with multidate pickers.\n\n\ngetStartDate\n------------\n\nArguments: None\n\nReturns the lower date limit on the datepicker.\n\n\ngetEndDate\n----------\n\nArguments: None\n\nReturns the upper date limit on the datepicker.\n\n\nsetStartDate\n------------\n\nArguments:\n\n* startDate (Date)\n\nSets a new lower date limit on the datepicker.  See :ref:`startDate` for valid values.\n\nOmit startDate (or provide an otherwise falsey value) to unset the limit.\n\n\nsetEndDate\n----------\n\nArguments:\n\n* endDate (Date)\n\nSets a new upper date limit on the datepicker.  See :ref:`endDate` for valid values.\n\nOmit endDate (or provide an otherwise falsey value) to unset the limit.\n\n\nsetDatesDisabled\n----------------\n\nArguments:\n\n* datesDisabled (String|Array)\n\nSets the days that should be disabled.  See :ref:`datesDisabled` for valid values.\n\nOmit datesDisabled (or provide an otherwise falsey value) to unset the disabled days.\n\n\nsetDaysOfWeekDisabled\n---------------------\n\nArguments:\n\n* daysOfWeekDisabled (String|Array)\n\nSets the days of week that should be disabled.  See :ref:`daysOfWeekDisabled` for valid values.\n\nOmit daysOfWeekDisabled (or provide an otherwise falsey value) to unset the disabled days of week.\n\n\nsetDaysOfWeekHighlighted\n------------------------\n\nArguments:\n\n* daysOfWeekHighlighted (String|Array)\n\nSets the days of week that should be highlighted.  See :ref:`daysOfWeekHighlighted` for valid values.\n\nOmit daysOfWeekHighlighted (or provide an otherwise falsey value) to unset the highlighted days of week.\n"
  },
  {
    "path": "docs/options.rst",
    "content": "Options\n=======\n\nAll options that take a \"Date\" can handle a ``Date`` object; a String formatted according to the given ``format``; or a timedelta relative to today, eg \"-1d\", \"+6m +1y\", etc, where valid units are \"d\" (day), \"w\" (week), \"m\" (month), and \"y\" (year). Use \"0\" as today.\nThere are also aliases for the relative timedelta's: \"yesterday\" equals \"-1d\", \"today\" is equal to \"+0d\" and \"tomorrow\" is equal to \"+1d\".\n\nMost options can be provided via data-attributes.  An option can be converted to a data-attribute by taking its name, replacing each uppercase letter with its lowercase equivalent preceded by a dash, and prepending \"data-date-\" to the result.  For example, ``startDate`` would be ``data-date-start-date``, ``format`` would be ``data-date-format``, and ``daysOfWeekDisabled`` would be ``data-date-days-of-week-disabled``.\n\nSee the `quick reference`_ for an overview of all options and their default values\n\nautoclose\n---------\n\nBoolean.  Default: false\n\nWhether or not to close the datepicker immediately when a date is selected.\n\n\nassumeNearbyYear\n----------------\n\nBoolean or Integer.  Default: false\n\nIf true, manually-entered dates with two-digit years, such as \"5/1/15\", will be parsed as \"2015\", not \"15\". If the year is less than 10 years in advance, the picker will use the current century, otherwise, it will use the previous one. For example \"5/1/15\" would parse to May 1st, 2015, but \"5/1/97\" would be May 1st, 1997.\n\nTo configure the number of years in advance that the picker will still use the current century, use an Integer instead of the Boolean true. E.g. \"assumeNearbyYear: 20\"\n\n\nbeforeShowDay\n-------------\n\nFunction(Date).  Default: $.noop\n\nA function that takes a date as a parameter and returns one of the following values:\n\n * undefined to have no effect\n * A Boolean, indicating whether or not this date is selectable\n * A String representing additional CSS classes to apply to the date's cell\n * An object with the following properties:\n\n   * ``enabled``: same as the Boolean value above\n   * ``classes``: same as the String value above\n   * ``tooltip``: a tooltip to apply to this date, via the ``title`` HTML attribute\n   * ``content``: the content to display in the day cell, rather than the default (day of month as text)\n\n\nbeforeShowMonth\n---------------\n\nFunction(Date).  Default: $.noop\n\nA function that takes a date as a parameter and returns one of the following values:\n\n * undefined to have no effect\n * A Boolean, indicating whether or not this month is selectable\n * A String representing additional CSS classes to apply to the month's cell\n * An object with the following properties:\n\n   * ``enabled``: same as the Boolean value above\n   * ``classes``: same as the String value above\n   * ``tooltip``: a tooltip to apply to this date, via the ``title`` HTML attribute\n\n\nbeforeShowYear\n--------------\n\nFunction(Date).  Default: $.noop\n\nA function that takes a date as a parameter and returns one of the following values:\n\n * undefined to have no effect\n * A Boolean, indicating whether or not this year is selectable\n * A String representing additional CSS classes to apply to the year's cell\n * An object with the following properties:\n\n   * ``enabled``: same as the Boolean value above\n   * ``classes``: same as the String value above\n   * ``tooltip``: a tooltip to apply to this year, via the ``title`` HTML attribute\n\n\nbeforeShowDecade\n----------------\n\nFunction(Date).  Default: $.noop\n\nA function that takes a date as a parameter and returns one of the following values:\n\n * undefined to have no effect\n * A Boolean, indicating whether or not this year is selectable\n * A String representing additional CSS classes to apply to the year's cell\n * An object with the following properties:\n\n   * ``enabled``: same as the Boolean value above\n   * ``classes``: same as the String value above\n   * ``tooltip``: a tooltip to apply to this year, via the ``title`` HTML attribute\n\n\nbeforeShowCentury\n-----------------\n\nFunction(Date).  Default: $.noop\n\nA function that takes a date as a parameter and returns one of the following values:\n\n * undefined to have no effect\n * A Boolean, indicating whether or not this year is selectable\n * A String representing additional CSS classes to apply to the year's cell\n * An object with the following properties:\n\n   * ``enabled``: same as the Boolean value above\n   * ``classes``: same as the String value above\n   * ``tooltip``: a tooltip to apply to this year, via the ``title`` HTML attribute\n\n\ncalendarWeeks\n-------------\n\nBoolean. Default: false\n\nWhether or not to show week numbers to the left of week rows.\n\n.. figure:: _static/screenshots/option_calendarweeks.png\n    :align: center\n\n\nclearBtn\n--------\n\nBoolean.  Default: false\n\nIf true, displays a \"Clear\" button at the bottom of the datepicker to clear the input value. If \"autoclose\" is also set to true, this button will also close the datepicker.\n\n.. figure:: _static/screenshots/option_clearbtn.png\n    :align: center\n\n\ncontainer\n---------\n\nString.  Default: \"body\"\n\nAppends the date picker popup to a specific element; eg: container: '#picker-container' (will default to \"body\")\n\n.. _datesDisabled:\n\n\ndatesDisabled\n-------------\n\nString, Array.  Default: []\n\nArray of date strings or a single date string formatted in the given date format\n\n.. _daysOfWeekDisabled:\n\n\ndaysOfWeekDisabled\n------------------\n\nString, Array.  Default: []\n\nDays of the week that should be disabled. Values are 0 (Sunday) to 6 (Saturday). Multiple values should be comma-separated. Example: disable weekends: ``'06'`` or ``'0,6'`` or ``[0,6]``.\n\n.. figure:: _static/screenshots/option_daysofweekdisabled.png\n    :align: center\n\n.. _daysOfWeekHighlighted:\n\n\ndaysOfWeekHighlighted\n---------------------\n\nString, Array.  Default: []\n\nDays of the week that should be highlighted. Values are 0 (Sunday) to 6 (Saturday). Multiple values should be comma-separated. Example: highlight weekends: ``'06'`` or ``'0,6'`` or ``[0,6]``.\n\n\ndefaultViewDate\n---------------\n\nDate, String or Object with keys ``year``, ``month``, and ``day``. Default: today\n\nDate to view when initially opening the calendar. The internal value of the date remains today as default, but when the datepicker is first opened the calendar will open to ``defaultViewDate`` rather than today. If this option is not used, \"today\" remains the default view date.\n\nThis option can be:\n * A date, which should be in local timezone.\n * A string which must be parsable with ``format``.\n * An object with keys ``year``, ``month`` and ``day`` (can't be set from a data attribute). If the given object is missing any of the required keys, their defaults are:\n\n   * ``year``: the current year\n   * ``month``: 0 (Note that it starts with 0 for January)\n   * ``day``: 1\n\ndisableTouchKeyboard\n--------------------\n\nBoolean.  Default: false\n\nIf true, no keyboard will show on mobile devices\n\n\nenableOnReadonly\n----------------\n\nBoolean. Default: true\n\nIf false the datepicker will not show on a readonly datepicker field.\n\n.. _endDate:\n\n\nendDate\n-------\n\nDate or String.  Default: End of time\n\nThe latest date that may be selected; all later dates will be disabled.\n\nDate should be in local timezone. String must be parsable with ``format``.\n\n.. figure:: _static/screenshots/option_enddate.png\n    :align: center\n\n.. code-block:: html\n\n    <input type=\"text\" class=\"form-control\" data-date-end-date=\"0d\">\n\nWill disable all dates after today.\n\n\nforceParse\n----------\n\nBoolean.  Default: true\n\nWhether or not to force parsing of the input value when the picker is closed.  That is, when an invalid date is left in the input field by the user, the picker will forcibly parse that value, and set the input's value to the new, valid date, conforming to the given `format`.\n\n\nformat\n------\n\nString.  Default: \"mm/dd/yyyy\"\n\nThe date format, combination of d, dd, D, DD, m, mm, M, MM, yy, yyyy.\n\n* d, dd: Numeric date, no leading zero and leading zero, respectively.  Eg, 5, 05.\n* D, DD: Abbreviated and full weekday names, respectively.  Eg, Mon, Monday.\n* m, mm: Numeric month, no leading zero and leading zero, respectively.  Eg, 7, 07.\n* M, MM: Abbreviated and full month names, respectively.  Eg, Jan, January\n* yy, yyyy: 2- and 4-digit years, respectively.  Eg, 12, 2012.\n\nObject.\n\nCustom formatting options\n\n* toDisplay: function (date, format, language) to convert date object to string, that will be stored in input field\n* toValue: function (date, format, language) to convert string object to date, that will be used in date selection\n\n::\n\n    $('.datepicker').datepicker({\n        format: {\n            /*\n             * Say our UI should display a week ahead,\n             * but textbox should store the actual date.\n             * This is useful if we need UI to select local dates,\n             * but store in UTC\n             */\n            toDisplay: function (date, format, language) {\n                var d = new Date(date);\n                d.setDate(d.getDate() - 7);\n                return d.toISOString();\n            },\n            toValue: function (date, format, language) {\n                var d = new Date(date);\n                d.setDate(d.getDate() + 7);\n                return new Date(d);\n            }\n        }\n    });\n\n\nimmediateUpdates\n----------------\n\nBoolean. Default: false\n\nIf true, selecting a year or month in the datepicker will update the input value immediately. Otherwise, only selecting a day of the month will update the input value immediately.\n\n\ninputs\n------\n\nArray, jQuery. Default: None\n\nA list of inputs to be used in a range picker, which will be attached to the selected element.  Allows for explicitly creating a range picker on a non-standard element.\n\n.. code-block:: html\n\n    <div id=\"event_period\">\n        <input type=\"text\" class=\"actual_range\">\n        <input type=\"text\" class=\"actual_range\">\n    </div>\n\n::\n\n    $('#event_period').datepicker({\n        inputs: $('.actual_range')\n    });\n\n\nkeepEmptyValues\n---------------\n\nBoolean. Default: false\n\nOnly effective in a range picker. If true, the selected value does not get propagated to other, currently empty, pickers in the range.\n\n\nkeyboardNavigation\n------------------\n\nBoolean.  Default: true\n\nWhether or not to allow date navigation by arrow keys.\n\nKeyboard navigation is not supported at all for embedded / inline mode. Also it's not working if input element hasn't focus. This could be an issue if used as component or if opened by `show` method.\n\n\nlanguage\n--------\n\nString.  Default: \"en\"\n\nThe IETF code (eg  \"en\" for English, \"pt-BR\" for Brazilian Portuguese) of the language to use for month and day names.  These will also be used as the input's value (and subsequently sent to the server in the case of form submissions).  If a full code (eg \"de-DE\") is supplied the picker will first check for an \"de-DE\" language and if not found will fallback and check for a \"de\" language.  If an unknown language code is given, English will be used.  See :doc:`i18n`.\n\n.. figure:: _static/screenshots/option_language.png\n    :align: center\n\n\nmaxViewMode\n-----------\n\nNumber, String.  Default: 4, \"centuries\"\n\nSet a maximum limit for the view mode.  Accepts: 0 or \"days\" or \"month\", 1 or \"months\" or \"year\", 2 or \"years\" or \"decade\", 3 or \"decades\" or \"century\", and 4 or \"centuries\" or \"millennium\".\nGives the ability to pick only a day, a month, a year or a decade.  The day is set to the 1st for \"months\", the month is set to January for \"years\", the year is set to the first year from the decade for \"decades\", and the year is set to the first from the millennium for \"centuries\".\n\n\nminViewMode\n-----------\n\nNumber, String.  Default: 0, \"days\"\n\nSet a minimum limit for the view mode.  Accepts: 0 or \"days\" or \"month\", 1 or \"months\" or \"year\", 2 or \"years\" or \"decade\", 3 or \"decades\" or \"century\", and 4 or \"centuries\" or \"millennium\".\nGives the ability to pick only a month, a year or a decade.  The day is set to the 1st for \"months\", and the month is set to January for \"years\", the year is set to the first year from the decade for \"decades\", and the year is set to the first from the millennium for \"centuries\".\n\n\nmultidate\n---------\n\nBoolean, Number.  Default: false\n\nEnable multidate picking.  Each date in month view acts as a toggle button, keeping track of which dates the user has selected in order.  If a number is given, the picker will limit how many dates can be selected to that number, dropping the oldest dates from the list when the number is exceeded.  ``true`` equates to no limit.  The input's value (if present) is set to a string generated by joining the dates, formatted, with ``multidateSeparator``.\n\nFor selecting 2 dates as a range please see :ref:`daterange`\n\n.. figure:: _static/screenshots/option_multidate.png\n    :align: center\n\n\nmultidateSeparator\n------------------\n\nString.  Default: \",\"\n\nThe string that will appear between dates when generating the input's value.  When parsing the input's value for a multidate picker, this will also be used to split the incoming string to separate multiple formatted dates; as such, it is highly recommended that you not use a string that could be a substring of a formatted date (eg, using '-' to separate dates when your format is 'yyyy-mm-dd').\n\n\norientation\n-----------\n\nString.  Default: \"auto\"\n\nA space-separated string consisting of one or two of \"left\" or \"right\", \"top\" or \"bottom\", and \"auto\" (may be omitted); for example, \"top left\", \"bottom\" (horizontal orientation will default to \"auto\"), \"right\" (vertical orientation will default to \"auto\"), \"auto top\".  Allows for fixed placement of the picker popup.\n\n\"orientation\" refers to the location of the picker popup's \"anchor\"; you can also think of it as the location of the trigger element (input, component, etc) relative to the picker.\n\n\"auto\" triggers \"smart orientation\" of the picker.  Horizontal orientation will default to \"left\" and left offset will be tweaked to keep the picker inside the browser viewport; vertical orientation will simply choose \"top\" or \"bottom\", whichever will show more of the picker in the viewport.\n\n\nshowOnFocus\n-----------\n\nBoolean.  Default: true\n\nIf false, the datepicker will be prevented from showing when the input field associated with it receives focus.\n\n.. _startdate:\n\nstartDate\n---------\n\nDate or String.  Default: Beginning of time\n\nThe earliest date that may be selected; all earlier dates will be disabled.\n\nDate should be in local timezone. String must be parsable with ``format``.\n\n.. figure:: _static/screenshots/option_startdate.png\n    :align: center\n\n\nstartView\n---------\n\nNumber, String.  Default: 0, \"days\"\n\nThe view that the datepicker should show when it is opened.  Accepts: 0 or \"days\" or \"month\", 1 or \"months\" or \"year\", 2 or \"years\" or \"decade\", 3 or \"decades\" or \"century\", and 4 or \"centuries\" or \"millennium\".  Useful for date-of-birth datepickers.\n\n\ntemplates\n---------\n\nObject. Default:\n\n::\n\n    {\n        leftArrow: '&laquo;',\n        rightArrow: '&raquo;'\n    }\n\nThe templates used to generate some parts of the picker. Each property must be a string with only text, or valid html.\nYou can use this property to use custom icons libs. for example:\n\n::\n\n    {\n        leftArrow: '<i class=\"fa fa-long-arrow-left\"></i>',\n        rightArrow: '<i class=\"fa fa-long-arrow-right\"></i>'\n    }\n\n\nshowWeekDays\n------------\n\nBoolean.  Default: true\n\nIf false, the datepicker will not append the names of the weekdays to its view. Default behavior is appending the weekdays.\n\n.. figure:: _static/screenshots/option_showweekdays.png\n    :align: center\n\n\ntitle\n-----\n\nString. Default: \"\"\n\nThe string that will appear on top of the datepicker. If empty the title will be hidden.\n\n\ntodayBtn\n--------\n\nBoolean, \"linked\".  Default: false\n\nIf true or \"linked\", displays a \"Today\" button at the bottom of the datepicker to select the current date.  If true, the \"Today\" button will only move the current date into view; if \"linked\", the current date will also be selected.\n\n.. figure:: _static/screenshots/option_todaybtn.png\n    :align: center\n\n\ntodayHighlight\n--------------\n\nBoolean.  Default: false\n\nIf true, highlights the current date.\n\n.. figure:: _static/screenshots/option_todayhighlight.png\n    :align: center\n\n\ntoggleActive\n------------\n\nBoolean. Default: false\n\nIf true, selecting the currently active date in the datepicker will unset the respective date. This option is always true when the multidate option is being used.\n\n\nupdateViewDate\n--------------\n\nBoolean. Default: true\n\nIf false viewDate is set according to `value` on initialization and updated\n* if a day in last oder next month is selected or\n* if dates are changed by `setDate`, `setDates`, `setUTCDate` and `setUTCDates` methods.\nIf `multidate` option is `true` the last selected date or the last date in array\npassed to `setDates` or `setUTCDates` is used.\n\nweekStart\n---------\n\nInteger.  Default: 0\n\nDay of the week start. 0 (Sunday) to 6 (Saturday)\n\n.. figure:: _static/screenshots/option_weekstart.png\n    :align: center\n\n\nzIndexOffset\n------------\n\nInteger.  Default: 10\n\nThe CSS z-index of the open datepicker is the maximum z-index of the input and all of its DOM ancestors *plus* the ``zIndexOffset``.\n\nQuick reference\n===============\n\nThis is a quick overview of all the options and their default values\n\n=====================        =============\nOption                       Default value\n=====================        =============\nautoclose                    false\nassumeNearbyYear             false\nbeforeShowDay\nbeforeShowMonth\nbeforeShowYear\nbeforeShowDecade\nbeforeShowCentury\ncalendarWeeks                false\nclearBtn                     false\ncontainer                    'body'\ndatesDisabled                []\ndaysOfWeekDisabled           []\ndaysOfWeekHighlighted        []\ndefaultViewDate              today\ndisableTouchKeyboard         false\nenableOnReadonly             true\nendDate                      Infinity\nforceParse                   true\nformat                       'mm/dd/yyyy'\nimmediateUpdates             false\ninputs\nkeepEmptyValues              false\nkeyboardNavigation           true\nlanguage                     'en'\nmaxViewMode                  4 'centuries'\nminViewMode                  0 'days'\nmultidate                    false\nmultidateSeparator           ','\norientation                  'auto'\nshowOnFocus                  true\nstartDate                    -Infinity\nstartView                    0 'days' (current month)\ntemplates\ntitle                        ''\ntodayBtn                     false\ntodayHighlight               false\ntoggleActive                 false\nweekStart                    0 (Sunday)\nzIndexOffset                 10\n=====================        =============\n"
  },
  {
    "path": "docs/requirements.txt",
    "content": "sphinx_rtd_theme\n"
  },
  {
    "path": "docs/screenshots.js",
    "content": "const fs = require('fs');\nconst path = require('path');\nconst puppeteer = require('puppeteer');\n\n(async () => {\n    const browser = await puppeteer.launch({\n        args: [\n            '--disable-gpu',\n            '--disable-translate',\n            '--disable-extensions',\n            '--hide-scrollbars'\n        ]\n    });\n\n    const page = await browser.newPage();\n    const files = fs.readdirSync(`${__dirname}/_screenshots/`);\n\n    for (const file of files) {\n        const ext = path.extname(file);\n\n        if (ext !== '.html') {\n            continue;\n        }\n\n        const name = path.basename(file, ext);\n        const url = `file://${__dirname}/_screenshots/${file}`;\n\n        await page.goto(url, {\n            waitUntil: 'networkidle2'\n        });\n\n        const box = await page.evaluate(() => {\n            const lefts = [];\n            const rights = [];\n            const tops = [];\n            const bottoms = [];\n            const padding = 10; // px\n\n            const captureNodes = document.querySelectorAll(document.body.dataset.capture);\n\n            for (const node of captureNodes) {\n                const rect = node.getBoundingClientRect();\n\n                lefts.push(rect.left);\n                rights.push(rect.right);\n                tops.push(rect.top);\n                bottoms.push(rect.bottom);\n            }\n\n            // Convert bounds to single bounding box\n            const b = {\n                top: Math.min.apply(Math, tops),\n                left: Math.min.apply(Math, lefts)\n            };\n\n            b.width = Math.max.apply(Math, rights) - b.left;\n            b.height = Math.max.apply(Math, bottoms) - b.top;\n\n            // Return bounding box\n            return {\n                y: Math.max(b.top - padding, 0),\n                x: Math.max(b.left - padding, 0),\n                width: b.width + 2 * padding,\n                height: b.height + 2 * padding\n            };\n        });\n\n        await page.screenshot({\n            path: `${__dirname}/_static/screenshots/${name}.png`,\n            omitBackground: true,\n            clip: box\n        });\n    }\n\n    await browser.close();\n})();\n"
  },
  {
    "path": "grunt/.jshintrc",
    "content": "{\n  \"extends\" : \"../js/.jshintrc\",\n  \"asi\"     : false,\n  \"browser\" : false,\n  \"es3\"     : false,\n  \"node\"    : true\n}\n"
  },
  {
    "path": "js/.jscsrc",
    "content": "{\n    \"requireSpaceAfterKeywords\": [\n        \"if\", \"else\", \"for\", \"while\", \"do\", \"switch\", \"return\"\n    ],\n    \"disallowSpacesInFunctionExpression\": {\n        \"beforeOpeningRoundBrace\": true,\n        \"beforeOpeningCurlyBrace\": true\n    },\n    \"disallowSpacesInsideObjectBrackets\": true,\n    \"disallowSpacesInsideArrayBrackets\": true,\n    \"disallowSpacesInsideParentheses\": true,\n    \"disallowQuotedKeysInObjects\": \"allButReserved\",\n    \"disallowSpaceAfterObjectKeys\": true,\n    \"requireSpaceAfterBinaryOperators\": [\"==\", \"===\", \"!=\", \"!==\", \">\", \"<\", \">=\", \"<=\"],\n    \"requireSpaceBeforeBinaryOperators\": [\"==\", \"===\", \"!=\", \"!==\", \">\", \"<\", \">=\", \"<=\"],\n    \"disallowSpaceAfterPrefixUnaryOperators\": [\"++\", \"--\", \"+\", \"-\", \"~\", \"!\"],\n    \"disallowSpaceBeforeBinaryOperators\": [\",\"],\n    \"disallowSpaceBeforePostfixUnaryOperators\": [\"++\", \"--\"],\n    \"validateLineBreaks\": \"LF\",\n    \"requireKeywordsOnNewLine\": [\"return\", \"break\", \"delete\"],\n    \"requireLineFeedAtFileEnd\": true\n}\n"
  },
  {
    "path": "js/.jshintrc",
    "content": "{\n    // Extra globals.\n    \"predef\" : [\n      \"require\",\n      \"define\"\n    ],\n    \"jquery\": true,\n    \"browser\": true,\n\n    \"eqeqeq\": true,\n    \"freeze\": true,\n    //\"indent\": 4, // when we move to spaces\n    \"latedef\": false,\n    \"undef\": true,\n    \"unused\": false,\n    \"immed\": true,\n    \"trailing\": true,\n    \"maxcomplexity\": 50, // Can we get this under 5?\n    //\"maxlen\": 120,\n\n    \"-W014\": false, // Bad line breaking before ? (in tertiary operator)\n    \"-W065\": false, // Missing radix parameter to parseInt (defaults to 10)\n    \"-W069\": false, // Literal accessor is better written in dot notation\n    \"-W100\": false // Silently deleted characters (in locales)\n}\n"
  },
  {
    "path": "js/bootstrap-datepicker.js",
    "content": "/* =========================================================\n * bootstrap-datepicker.js\n * Repo: https://github.com/uxsolutions/bootstrap-datepicker/\n * Demo: https://uxsolutions.github.io/bootstrap-datepicker/\n * Docs: https://bootstrap-datepicker.readthedocs.org/\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 * https://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(factory){\n    if (typeof define === 'function' && define.amd) {\n        define(['jquery'], factory);\n    } else if (typeof exports === 'object') {\n        factory(require('jquery'));\n    } else {\n        factory(jQuery);\n    }\n}(function($, undefined){\n\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 isUTCEquals(date1, date2) {\n\t\treturn (\n\t\t\tdate1.getUTCFullYear() === date2.getUTCFullYear() &&\n\t\t\tdate1.getUTCMonth() === date2.getUTCMonth() &&\n\t\t\tdate1.getUTCDate() === date2.getUTCDate()\n\t\t);\n\t}\n\tfunction alias(method, deprecationMsg){\n\t\treturn function(){\n\t\t\tif (deprecationMsg !== undefined) {\n\t\t\t\t$.fn.datepicker.deprecated(deprecationMsg);\n\t\t\t}\n\n\t\t\treturn this[method].apply(this, arguments);\n\t\t};\n\t}\n\tfunction isValidDate(d) {\n\t\treturn d && !isNaN(d.getTime());\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          // Use date arithmetic to allow dates with different times to match\n          if (0 <= this[i].valueOf() - val && this[i].valueOf() - val < 1000*60*60*24)\n\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 (!Array.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.length = 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\t$.data(element, 'datepicker', this);\n\n\t\tthis._events = [];\n\t\tthis._secondaryEvents = [];\n\n\t\tthis._process_options(options);\n\n\t\tthis.dates = new DateArray();\n\t\tthis.viewDate = this.o.defaultViewDate;\n\t\tthis.focusDate = null;\n\n\t\tthis.element = $(element);\n\t\tthis.isInput = this.element.is('input');\n\t\tthis.inputField = this.isInput ? this.element : this.element.find('input');\n\t\tthis.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .input-group-append, .input-group-prepend, .btn') : false;\n\t\tif (this.component && this.component.length === 0){\n\t\t\tthis.component = false;\n    }\n\n\t\tif (this.o.isInline === null){\n\t\t\tthis.isInline = !this.component && !this.isInput;\n\t\t} else {\n\t\t\tthis.isInline = this.o.isInline;\n\t\t}\n\n\t\tthis.picker = $(DPGlobal.template);\n\n\t\t// Checking templates and inserting\n\t\tif (this._check_template(this.o.templates.leftArrow)) {\n\t\t\tthis.picker.find('.prev').html(this.o.templates.leftArrow);\n\t\t}\n\n\t\tif (this._check_template(this.o.templates.rightArrow)) {\n\t\t\tthis.picker.find('.next').html(this.o.templates.rightArrow);\n\t\t}\n\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\tif (this.o.calendarWeeks) {\n\t\t\tthis.picker.find('.datepicker-days .datepicker-switch, thead .datepicker-title, tfoot .today, tfoot .clear')\n\t\t\t\t.attr('colspan', function(i, val){\n\t\t\t\t\treturn Number(val) + 1;\n\t\t\t\t});\n\t\t}\n\n\t\tthis._process_options({\n\t\t\tstartDate: this._o.startDate,\n\t\t\tendDate: this._o.endDate,\n\t\t\tdaysOfWeekDisabled: this.o.daysOfWeekDisabled,\n\t\t\tdaysOfWeekHighlighted: this.o.daysOfWeekHighlighted,\n\t\t\tdatesDisabled: this.o.datesDisabled\n\t\t});\n\n\t\tthis._allow_update = false;\n\t\tthis.setViewMode(this.o.startView);\n\t\tthis._allow_update = true;\n\n\t\tthis.fillDow();\n\t\tthis.fillMonths();\n\n\t\tthis.update();\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_resolveViewName: function(view){\n\t\t\t$.each(DPGlobal.viewModes, function(i, viewMode){\n\t\t\t\tif (view === i || $.inArray(view, viewMode.names) !== -1){\n\t\t\t\t\tview = i;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn view;\n\t\t},\n\n\t\t_resolveDaysOfWeek: function(daysOfWeek){\n\t\t\tif (!Array.isArray(daysOfWeek))\n\t\t\t\tdaysOfWeek = daysOfWeek.split(/[,\\s]*/);\n\t\t\treturn $.map(daysOfWeek, Number);\n\t\t},\n\n\t\t_check_template: function(tmp){\n\t\t\ttry {\n\t\t\t\t// If empty\n\t\t\t\tif (tmp === undefined || tmp === \"\") {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// If no html, everything ok\n\t\t\t\tif ((tmp.match(/[<>]/g) || []).length <= 0) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t// Checking if html is fine\n\t\t\t\tvar jDom = $(tmp);\n\t\t\t\treturn jDom.length > 0;\n\t\t\t}\n\t\t\tcatch (ex) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\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\t// Retrieve view index from any aliases\n\t\t\to.startView = this._resolveViewName(o.startView);\n\t\t\to.minViewMode = this._resolveViewName(o.minViewMode);\n\t\t\to.maxViewMode = this._resolveViewName(o.maxViewMode);\n\n\t\t\t// Check view is between min and max\n\t\t\to.startView = Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, o.startView));\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}\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, o.assumeNearbyYear);\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, o.assumeNearbyYear);\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 = this._resolveDaysOfWeek(o.daysOfWeekDisabled||[]);\n\t\t\to.daysOfWeekHighlighted = this._resolveDaysOfWeek(o.daysOfWeekHighlighted||[]);\n\n\t\t\to.datesDisabled = o.datesDisabled||[];\n\t\t\tif (!Array.isArray(o.datesDisabled)) {\n\t\t\t\to.datesDisabled = o.datesDisabled.split(',');\n\t\t\t}\n\t\t\to.datesDisabled = $.map(o.datesDisabled, function(d){\n\t\t\t\treturn DPGlobal.parseDate(d, format, o.language, o.assumeNearbyYear);\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\tif (o.defaultViewDate instanceof Date || typeof o.defaultViewDate === 'string') {\n\t\t\t\to.defaultViewDate = DPGlobal.parseDate(o.defaultViewDate, format, o.language, o.assumeNearbyYear);\n\t\t\t} else if (o.defaultViewDate) {\n\t\t\t\tvar year = o.defaultViewDate.year || new Date().getFullYear();\n\t\t\t\tvar month = o.defaultViewDate.month || 0;\n\t\t\t\tvar day = o.defaultViewDate.day || 1;\n\t\t\t\to.defaultViewDate = UTCDate(year, month, day);\n\t\t\t} else {\n\t\t\t\to.defaultViewDate = UTCToday();\n\t\t\t}\n\t\t},\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} else 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} else 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            var events = {\n                keyup: $.proxy(function(e){\n                    if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1)\n                        this.update();\n                }, this),\n                keydown: $.proxy(this.keydown, this),\n                paste: $.proxy(this.paste, this)\n            };\n\n            if (this.o.showOnFocus === true) {\n                events.focus = $.proxy(this.show, this);\n            }\n\n            if (this.isInput) { // single input\n                this._events = [\n                    [this.element, events]\n                ];\n            }\n            // component: input + button\n            else if (this.component && this.inputField.length) {\n                this._events = [\n                    // For components that are not readonly, allow keyboard nav\n                    [this.inputField, events],\n                    [this.component, {\n                        click: $.proxy(this.show, this)\n                    }]\n                ];\n            }\n\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\tkeydown: $.proxy(this.keydown, 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\tif (this.o.immediateUpdates) {\n\t\t\t\t// Trigger input updates immediately on changed year/month\n\t\t\t\tthis._events.push([this.element, {\n\t\t\t\t\t'changeYear changeMonth': $.proxy(function(e){\n\t\t\t\t\t\tthis.update(e.date);\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[this.picker, '.prev, .next', {\n\t\t\t\t\tclick: $.proxy(this.navArrowsClick, this)\n\t\t\t\t}],\n\t\t\t\t[this.picker, '.day:not(.disabled)', {\n\t\t\t\t\tclick: $.proxy(this.dayCellClick, 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\tthis.isInline\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\tviewMode: this.viewMode,\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} else 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.inputField.is(':disabled') || (this.inputField.prop('readonly') && this.o.enableOnReadonly === false))\n\t\t\t\treturn;\n\t\t\tif (!this.isInline)\n\t\t\t\tthis.picker.appendTo(this.o.container);\n\t\t\tthis.place();\n\t\t\tthis.picker.show();\n\t\t\tthis._attachSecondaryEvents();\n\t\t\tthis._trigger('show');\n\t\t\tif ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard) {\n\t\t\t\t$(this.element).blur();\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\thide: function(){\n\t\t\tif (this.isInline || !this.picker.is(':visible'))\n\t\t\t\treturn this;\n\t\t\tthis.focusDate = null;\n\t\t\tthis.picker.hide().detach();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.setViewMode(this.o.startView);\n\n\t\t\tif (this.o.forceParse && this.inputField.val())\n\t\t\t\tthis.setValue();\n\t\t\tthis._trigger('hide');\n\t\t\treturn this;\n\t\t},\n\n\t\tdestroy: 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\treturn this;\n\t\t},\n\n\t\tpaste: function(e){\n\t\t\tvar dateString;\n\t\t\tif (e.originalEvent.clipboardData && e.originalEvent.clipboardData.types\n\t\t\t\t&& $.inArray('text/plain', e.originalEvent.clipboardData.types) !== -1) {\n\t\t\t\tdateString = e.originalEvent.clipboardData.getData('text/plain');\n\t\t\t} else if (window.clipboardData) {\n\t\t\t\tdateString = window.clipboardData.getData('Text');\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.setDate(dateString);\n\t\t\tthis.update();\n\t\t\te.preventDefault();\n\t\t},\n\n\t\t_utc_to_local: function(utc){\n\t\t\tif (!utc) {\n\t\t\t\treturn utc;\n\t\t\t}\n\n\t\t\tvar local = new Date(utc.getTime() + (utc.getTimezoneOffset() * 60000));\n\n\t\t\tif (local.getTimezoneOffset() !== utc.getTimezoneOffset()) {\n\t\t\t\tlocal = new Date(utc.getTime() + (local.getTimezoneOffset() * 60000));\n\t\t\t}\n\n\t\t\treturn local;\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 && UTCDate(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\tvar selected_date = this.dates.get(-1);\n\t\t\tif (selected_date !== undefined) {\n\t\t\t\treturn new Date(selected_date);\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\n\t\tclearDates: function(){\n\t\t\tthis.inputField.val('');\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.update();\n\t\t\tif (this.o.autoclose) {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\n\t\tsetDates: function(){\n\t\t\tvar args = Array.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\treturn this;\n\t\t},\n\n\t\tsetUTCDates: function(){\n\t\t\tvar args = Array.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.setDates.apply(this, $.map(args, this._utc_to_local));\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDate: alias('setDates'),\n\t\tsetUTCDate: alias('setUTCDates'),\n\t\tremove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead'),\n\n\t\tsetValue: function(){\n\t\t\tvar formatted = this.getFormattedDate();\n\t\t\tthis.inputField.val(formatted);\n\t\t\treturn this;\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\tgetStartDate: function(){\n\t\t\treturn this.o.startDate;\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\treturn this;\n\t\t},\n\n\t\tgetEndDate: function(){\n\t\t\treturn this.o.endDate;\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\treturn this;\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\treturn this;\n\t\t},\n\n\t\tsetDaysOfWeekHighlighted: function(daysOfWeekHighlighted){\n\t\t\tthis._process_options({daysOfWeekHighlighted: daysOfWeekHighlighted});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDatesDisabled: function(datesDisabled){\n\t\t\tthis._process_options({datesDisabled: datesDisabled});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tplace: function(){\n\t\t\tif (this.isInline)\n\t\t\t\treturn this;\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\tcontainer = $(this.o.container),\n\t\t\t\twindowWidth = container.width(),\n\t\t\t\tscrollTop = this.o.container === 'body' ? $(document).scrollTop() : container.scrollTop(),\n\t\t\t\tappendOffset = container.offset();\n\n\t\t\tvar parentsZindex = [0];\n\t\t\tthis.element.parents().each(function(){\n\t\t\t\tvar itemZIndex = $(this).css('z-index');\n\t\t\t\tif (itemZIndex !== 'auto' && Number(itemZIndex) !== 0) parentsZindex.push(Number(itemZIndex));\n\t\t\t});\n\t\t\tvar zIndex = Math.max.apply(Math, parentsZindex) + this.o.zIndexOffset;\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 - appendOffset.left;\n\t\t\tvar top = offset.top - appendOffset.top;\n\n\t\t\tif (this.o.container !== 'body') {\n\t\t\t\ttop += scrollTop;\n\t\t\t}\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\tif (offset.left < 0) {\n\t\t\t\t\t// component is outside the window on the left side. Move it into visible range\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t\tleft -= offset.left - visualPadding;\n\t\t\t\t} else if (left + calendarWidth > windowWidth) {\n\t\t\t\t\t// the calendar passes the widow right edge. Align it to component right side\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-right');\n\t\t\t\t\tleft += width - calendarWidth;\n\t\t\t\t} else {\n\t\t\t\t\tif (this.o.rtl) {\n\t\t\t\t\t\t// Default to right\n\t\t\t\t\t\tthis.picker.addClass('datepicker-orient-right');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Default to left\n\t\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t\t}\n\t\t\t\t}\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;\n\t\t\tif (yorient === 'auto'){\n\t\t\t\ttop_overflow = -scrollTop + top - calendarHeight;\n\t\t\t\tyorient = top_overflow < 0 ? 'bottom' : 'top';\n\t\t\t}\n\n\t\t\tthis.picker.addClass('datepicker-orient-' + yorient);\n\t\t\tif (yorient === 'top')\n\t\t\t\ttop -= calendarHeight + parseInt(this.picker.css('padding-top'));\n\t\t\telse\n\t\t\t\ttop += height;\n\n\t\t\tif (this.o.rtl) {\n\t\t\t\tvar right = windowWidth - (left + width);\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tright: right,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tleft: left,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this;\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 this;\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} else {\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.inputField.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, this.o.assumeNearbyYear);\n\t\t\t}, this));\n\t\t\tdates = $.grep(dates, $.proxy(function(date){\n\t\t\t\treturn (\n\t\t\t\t\t!this.dateWithinRange(date) ||\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.o.updateViewDate) {\n\t\t\t\tif (this.dates.length)\n\t\t\t\t\tthis.viewDate = new Date(this.dates.get(-1));\n\t\t\t\telse if (this.viewDate < this.o.startDate)\n\t\t\t\t\tthis.viewDate = new Date(this.o.startDate);\n\t\t\t\telse if (this.viewDate > this.o.endDate)\n\t\t\t\t\tthis.viewDate = new Date(this.o.endDate);\n\t\t\t\telse\n\t\t\t\t\tthis.viewDate = this.o.defaultViewDate;\n\t\t\t}\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\tthis.element.change();\n\t\t\t}\n\t\t\telse if (this.dates.length){\n\t\t\t\t// setting date by typing\n\t\t\t\tif (String(oldDates) !== String(this.dates) && fromArgs) {\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\t\tthis.element.change();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!this.dates.length && oldDates.length) {\n\t\t\t\tthis._trigger('clearDate');\n\t\t\t\tthis.element.change();\n\t\t\t}\n\n\t\t\tthis.fill();\n\t\t\treturn this;\n\t\t},\n\n\t\tfillDow: function(){\n      if (this.o.showWeekDays) {\n\t\t\tvar dowCnt = this.o.weekStart,\n\t\t\t\thtml = '<tr>';\n\t\t\tif (this.o.calendarWeeks){\n\t\t\t\thtml += '<th class=\"cw\">&#160;</th>';\n\t\t\t}\n\t\t\twhile (dowCnt < this.o.weekStart + 7){\n\t\t\t\thtml += '<th class=\"dow';\n        if ($.inArray(dowCnt, this.o.daysOfWeekDisabled) !== -1)\n          html += ' disabled';\n        html += '\">'+dates[this.o.language].daysMin[(dowCnt++)%7]+'</th>';\n\t\t\t}\n\t\t\thtml += '</tr>';\n\t\t\tthis.picker.find('.datepicker-days thead').append(html);\n      }\n\t\t},\n\n\t\tfillMonths: function(){\n      var localDate = this._utc_to_local(this.viewDate);\n\t\t\tvar html = '';\n\t\t\tvar focused;\n\t\t\tfor (var i = 0; i < 12; i++){\n\t\t\t\tfocused = localDate && localDate.getMonth() === i ? ' focused' : '';\n\t\t\t\thtml += '<span class=\"month' + focused + '\">' + dates[this.o.language].monthsShort[i] + '</span>';\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 = UTCToday();\n\t\t\tif (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){\n\t\t\t\tcls.push('old');\n\t\t\t} else 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 UTC today, not local today\n\t\t\tif (this.o.todayHighlight && isUTCEquals(date, today)) {\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 (!this.dateWithinRange(date)){\n\t\t\t\tcls.push('disabled');\n\t\t\t}\n\t\t\tif (this.dateIsDisabled(date)){\n\t\t\t\tcls.push('disabled', 'disabled-date');\n\t\t\t}\n\t\t\tif ($.inArray(date.getUTCDay(), this.o.daysOfWeekHighlighted) !== -1){\n\t\t\t\tcls.push('highlighted');\n\t\t\t}\n\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\tif (date.valueOf() === this.range[0]){\n          cls.push('range-start');\n        }\n        if (date.valueOf() === this.range[this.range.length-1]){\n          cls.push('range-end');\n        }\n\t\t\t}\n\t\t\treturn cls;\n\t\t},\n\n\t\t_fill_yearsView: function(selector, cssClass, factor, year, startYear, endYear, beforeFn){\n\t\t\tvar html = '';\n\t\t\tvar step = factor / 10;\n\t\t\tvar view = this.picker.find(selector);\n\t\t\tvar startVal = Math.floor(year / factor) * factor;\n\t\t\tvar endVal = startVal + step * 9;\n\t\t\tvar focusedVal = Math.floor(this.viewDate.getFullYear() / step) * step;\n\t\t\tvar selected = $.map(this.dates, function(d){\n\t\t\t\treturn Math.floor(d.getUTCFullYear() / step) * step;\n\t\t\t});\n\n\t\t\tvar classes, tooltip, before;\n\t\t\tfor (var currVal = startVal - step; currVal <= endVal + step; currVal += step) {\n\t\t\t\tclasses = [cssClass];\n\t\t\t\ttooltip = null;\n\n\t\t\t\tif (currVal === startVal - step) {\n\t\t\t\t\tclasses.push('old');\n\t\t\t\t} else if (currVal === endVal + step) {\n\t\t\t\t\tclasses.push('new');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(currVal, selected) !== -1) {\n\t\t\t\t\tclasses.push('active');\n\t\t\t\t}\n\t\t\t\tif (currVal < startYear || currVal > endYear) {\n\t\t\t\t\tclasses.push('disabled');\n\t\t\t\t}\n\t\t\t\tif (currVal === focusedVal) {\n\t\t\t\t  classes.push('focused');\n        }\n\n\t\t\t\tif (beforeFn !== $.noop) {\n\t\t\t\t\tbefore = beforeFn(new Date(currVal, 0, 1));\n\t\t\t\t\tif (before === undefined) {\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\t} else if (typeof before === 'boolean') {\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\t} else if (typeof before === 'string') {\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\t}\n\t\t\t\t\tif (before.enabled === false) {\n\t\t\t\t\t\tclasses.push('disabled');\n\t\t\t\t\t}\n\t\t\t\t\tif (before.classes) {\n\t\t\t\t\t\tclasses = classes.concat(before.classes.split(/\\s+/));\n\t\t\t\t\t}\n\t\t\t\t\tif (before.tooltip) {\n\t\t\t\t\t\ttooltip = before.tooltip;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\thtml += '<span class=\"' + classes.join(' ') + '\"' + (tooltip ? ' title=\"' + tooltip + '\"' : '') + '>' + currVal + '</span>';\n\t\t\t}\n\n\t\t\tview.find('.datepicker-switch').text(startVal + '-' + endVal);\n\t\t\tview.find('td').html(html);\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        titleFormat = dates[this.o.language].titleFormat || dates['en'].titleFormat,\n        todayDate = UTCToday(),\n        titleBtnVisible = (this.o.todayBtn === true || this.o.todayBtn === 'linked') && todayDate >= this.o.startDate && todayDate <= this.o.endDate && !this.weekOfDateIsDisabled(todayDate),\n\t\t\t\ttooltip,\n\t\t\t\tbefore;\n\t\t\tif (isNaN(year) || isNaN(month))\n\t\t\t\treturn;\n\t\t\tthis.picker.find('.datepicker-days .datepicker-switch')\n\t\t\t\t\t\t.text(DPGlobal.formatDate(d, titleFormat, this.o.language));\n\t\t\tthis.picker.find('tfoot .today')\n\t\t\t\t\t\t.text(todaytxt)\n            .css('display', titleBtnVisible ? 'table-cell' : 'none');\n\t\t\tthis.picker.find('tfoot .clear')\n\t\t\t\t\t\t.text(cleartxt)\n\t\t\t\t\t\t.css('display', this.o.clearBtn === true ? 'table-cell' : 'none');\n\t\t\tthis.picker.find('thead .datepicker-title')\n\t\t\t\t\t\t.text(this.o.title)\n\t\t\t\t\t\t.css('display', typeof this.o.title === 'string' && this.o.title !== '' ? 'table-cell' : 'none');\n\t\t\tthis.updateNavArrows();\n\t\t\tthis.fillMonths();\n\t\t\tvar prevMonth = UTCDate(year, month, 0),\n\t\t\t\tday = prevMonth.getUTCDate();\n\t\t\tprevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);\n\t\t\tvar nextMonth = new Date(prevMonth);\n\t\t\tif (prevMonth.getUTCFullYear() < 100){\n        nextMonth.setUTCFullYear(prevMonth.getUTCFullYear());\n      }\n\t\t\tnextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n\t\t\tnextMonth = nextMonth.valueOf();\n\t\t\tvar html = [];\n\t\t\tvar weekDay, clsName;\n\t\t\twhile (prevMonth.valueOf() < nextMonth){\n\t\t\t\tweekDay = prevMonth.getUTCDay();\n\t\t\t\tif (weekDay === this.o.weekStart){\n\t\t\t\t\thtml.push('<tr>');\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 - weekDay - 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('<td class=\"cw\">'+ calWeek +'</td>');\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\tvar content = prevMonth.getUTCDate();\n\n\t\t\t\tif (this.o.beforeShowDay !== $.noop){\n\t\t\t\t\tbefore = 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\tif (before.content)\n\t\t\t\t\t\tcontent = before.content;\n\t\t\t\t}\n\n\t\t\t\t//Check if uniqueSort exists (supported by jquery >=1.12 and >=2.2)\n\t\t\t\t//Fallback to unique function for older jquery versions\n\t\t\t\tif (typeof $.uniqueSort === \"function\") {\n\t\t\t\t\tclsName = $.uniqueSort(clsName);\n\t\t\t\t} else {\n\t\t\t\t\tclsName = $.unique(clsName);\n\t\t\t\t}\n\n\t\t\t\thtml.push('<td class=\"'+clsName.join(' ')+'\"' + (tooltip ? ' title=\"'+tooltip+'\"' : '') + ' data-date=\"' + prevMonth.getTime().toString() + '\">' + content + '</td>');\n\t\t\t\ttooltip = null;\n\t\t\t\tif (weekDay === this.o.weekEnd){\n\t\t\t\t\thtml.push('</tr>');\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').html(html.join(''));\n\n\t\t\tvar monthsTitle = dates[this.o.language].monthsTitle || dates['en'].monthsTitle || 'Months';\n\t\t\tvar months = this.picker.find('.datepicker-months')\n\t\t\t\t\t\t.find('.datepicker-switch')\n\t\t\t\t\t\t\t.text(this.o.maxViewMode < 2 ? monthsTitle : year)\n\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t.find('tbody 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\tif (this.o.beforeShowMonth !== $.noop){\n\t\t\t\tvar that = this;\n\t\t\t\t$.each(months, function(i, month){\n          var moDate = new Date(year, i, 1);\n          var before = that.o.beforeShowMonth(moDate);\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 && !$(month).hasClass('disabled'))\n\t\t\t\t\t    $(month).addClass('disabled');\n\t\t\t\t\tif (before.classes)\n\t\t\t\t\t    $(month).addClass(before.classes);\n\t\t\t\t\tif (before.tooltip)\n\t\t\t\t\t    $(month).prop('title', before.tooltip);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Generating decade/years picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-years',\n\t\t\t\t'year',\n\t\t\t\t10,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowYear\n\t\t\t);\n\n\t\t\t// Generating century/decades picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-decades',\n\t\t\t\t'decade',\n\t\t\t\t100,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowDecade\n\t\t\t);\n\n\t\t\t// Generating millennium/centuries picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-centuries',\n\t\t\t\t'century',\n\t\t\t\t1000,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowCentury\n\t\t\t);\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\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\tprevIsDisabled,\n\t\t\t\tnextIsDisabled,\n\t\t\t\tfactor = 1;\n\t\t\tswitch (this.viewMode){\n\t\t\t\tcase 4:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 3:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 2:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\tprevIsDisabled = Math.floor(year / factor) * factor <= startYear;\n\t\t\t\t\tnextIsDisabled = Math.floor(year / factor) * factor + factor > endYear;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tprevIsDisabled = year <= startYear && month <= startMonth;\n\t\t\t\t\tnextIsDisabled = year >= endYear && month >= endMonth;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.picker.find('.prev').toggleClass('disabled', prevIsDisabled);\n\t\t\tthis.picker.find('.next').toggleClass('disabled', nextIsDisabled);\n\t\t},\n\n\t\tclick: function(e){\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\n\t\t\tvar target, dir, day, year, month;\n\t\t\ttarget = $(e.target);\n\n\t\t\t// Clicked on the switch\n\t\t\tif (target.hasClass('datepicker-switch') && this.viewMode !== this.o.maxViewMode){\n\t\t\t\tthis.setViewMode(this.viewMode + 1);\n\t\t\t}\n\n\t\t\t// Clicked on today button\n\t\t\tif (target.hasClass('today') && !target.hasClass('day')){\n\t\t\t\tthis.setViewMode(0);\n\t\t\t\tthis._setDate(UTCToday(), this.o.todayBtn === 'linked' ? null : 'view');\n\t\t\t}\n\n\t\t\t// Clicked on clear button\n\t\t\tif (target.hasClass('clear')){\n\t\t\t\tthis.clearDates();\n\t\t\t}\n\n\t\t\tif (!target.hasClass('disabled')){\n\t\t\t\t// Clicked on a month, year, decade, century\n\t\t\t\tif (target.hasClass('month')\n\t\t\t\t\t\t|| target.hasClass('year')\n\t\t\t\t\t\t|| target.hasClass('decade')\n\t\t\t\t\t\t|| target.hasClass('century')) {\n\t\t\t\t\tthis.viewDate.setUTCDate(1);\n\n\t\t\t\t\tday = 1;\n\t\t\t\t\tif (this.viewMode === 1){\n\t\t\t\t\t\tmonth = target.parent().find('span').index(target);\n\t\t\t\t\t\tyear = this.viewDate.getUTCFullYear();\n\t\t\t\t\t\tthis.viewDate.setUTCMonth(month);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\tyear = Number(target.text());\n\t\t\t\t\t\tthis.viewDate.setUTCFullYear(year);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._trigger(DPGlobal.viewModes[this.viewMode - 1].e, this.viewDate);\n\n\t\t\t\t\tif (this.viewMode === this.o.minViewMode){\n\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.setViewMode(this.viewMode - 1);\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.picker.is(':visible') && this._focused_from){\n\t\t\t\tthis._focused_from.focus();\n\t\t\t}\n\t\t\tdelete this._focused_from;\n\t\t},\n\n\t\tdayCellClick: function(e){\n\t\t\tvar $target = $(e.currentTarget);\n\t\t\tvar timestamp = $target.data('date');\n\t\t\tvar date = new Date(timestamp);\n\n\t\t\tif (this.o.updateViewDate) {\n\t\t\t\tif (date.getUTCFullYear() !== this.viewDate.getUTCFullYear()) {\n\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t}\n\n\t\t\t\tif (date.getUTCMonth() !== this.viewDate.getUTCMonth()) {\n\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._setDate(date);\n\t\t},\n\n\t\t// Clicked on prev or next\n\t\tnavArrowsClick: function(e){\n\t\t\tvar $target = $(e.currentTarget);\n\t\t\tvar dir = $target.hasClass('prev') ? -1 : 1;\n\t\t\tif (this.viewMode !== 0){\n\t\t\t\tdir *= DPGlobal.viewModes[this.viewMode].navStep * 12;\n\t\t\t}\n\t\t\tthis.viewDate = this.moveMonth(this.viewDate, dir);\n\t\t\tthis._trigger(DPGlobal.viewModes[this.viewMode].e, this.viewDate);\n\t\t\tthis.fill();\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\n\t\t\tif (ix !== -1){\n\t\t\t\tif (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive){\n\t\t\t\t\tthis.dates.remove(ix);\n\t\t\t\t}\n\t\t\t} else if (this.o.multidate === false) {\n\t\t\t\tthis.dates.clear();\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\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 && this.o.updateViewDate) || 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\tif (!which || which !== 'view') {\n\t\t\t\tthis._trigger('changeDate');\n\t\t\t}\n\t\t\tthis.inputField.trigger('change');\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\tmoveDay: function(date, dir){\n\t\t\tvar newDate = new Date(date);\n\t\t\tnewDate.setUTCDate(date.getUTCDate() + dir);\n\n\t\t\treturn newDate;\n\t\t},\n\n\t\tmoveWeek: function(date, dir){\n\t\t\treturn this.moveDay(date, dir * 7);\n\t\t},\n\n\t\tmoveMonth: function(date, dir){\n\t\t\tif (!isValidDate(date))\n\t\t\t\treturn this.o.defaultViewDate;\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\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\tmoveAvailableDate: function(date, dir, fn){\n\t\t\tdo {\n\t\t\t\tdate = this[fn](date, dir);\n\n\t\t\t\tif (!this.dateWithinRange(date))\n\t\t\t\t\treturn false;\n\n\t\t\t\tfn = 'moveDay';\n\t\t\t}\n\t\t\twhile (this.dateIsDisabled(date));\n\n\t\t\treturn date;\n\t\t},\n\n\t\tweekOfDateIsDisabled: function(date){\n\t\t\treturn $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1;\n\t\t},\n\n\t\tdateIsDisabled: function(date){\n\t\t\treturn (\n\t\t\t\tthis.weekOfDateIsDisabled(date) ||\n\t\t\t\t$.grep(this.o.datesDisabled, function(d){\n\t\t\t\t\treturn isUTCEquals(date, d);\n\t\t\t\t}).length > 0\n\t\t\t);\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(':visible')){\n\t\t\t\tif (e.keyCode === 40 || e.keyCode === 27) { // allow down to re-show picker\n\t\t\t\t\tthis.show();\n\t\t\t\t\te.stopPropagation();\n        }\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar dateChanged = false,\n\t\t\t\tdir, 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\te.stopPropagation();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37: // left\n\t\t\t\tcase 38: // up\n\t\t\t\tcase 39: // right\n\t\t\t\tcase 40: // down\n\t\t\t\t\tif (!this.o.keyboardNavigation || this.o.daysOfWeekDisabled.length === 7)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdir = e.keyCode === 37 || e.keyCode === 38 ? -1 : 1;\n          if (this.viewMode === 0) {\n  \t\t\t\t\tif (e.ctrlKey){\n  \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n\n  \t\t\t\t\t\tif (newViewDate)\n  \t\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n  \t\t\t\t\t} else if (e.shiftKey){\n  \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n\n  \t\t\t\t\t\tif (newViewDate)\n  \t\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n  \t\t\t\t\t} else if (e.keyCode === 37 || e.keyCode === 39){\n  \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveDay');\n  \t\t\t\t\t} else if (!this.weekOfDateIsDisabled(focusDate)){\n  \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveWeek');\n  \t\t\t\t\t}\n          } else if (this.viewMode === 1) {\n            if (e.keyCode === 38 || e.keyCode === 40) {\n              dir = dir * 4;\n            }\n            newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n          } else if (this.viewMode === 2) {\n            if (e.keyCode === 38 || e.keyCode === 40) {\n              dir = dir * 4;\n            }\n            newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n          }\n\t\t\t\t\tif (newViewDate){\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 13: // enter\n\t\t\t\t\tif (!this.o.forceParse)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tfocusDate = this.focusDate || this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tif (this.o.keyboardNavigation) {\n\t\t\t\t\t\tthis._toggle_multidate(focusDate);\n\t\t\t\t\t\tdateChanged = true;\n\t\t\t\t\t}\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\te.stopPropagation();\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\tthis.inputField.trigger('change');\n\t\t\t}\n\t\t},\n\n\t\tsetViewMode: function(viewMode){\n\t\t\tthis.viewMode = viewMode;\n\t\t\tthis.picker\n\t\t\t\t.children('div')\n\t\t\t\t.hide()\n\t\t\t\t.filter('.datepicker-' + DPGlobal.viewModes[this.viewMode].clsName)\n\t\t\t\t\t.show();\n\t\t\tthis.updateNavArrows();\n      this._trigger('changeViewMode', new Date(this.viewDate));\n\t\t}\n\t};\n\n\tvar DateRangePicker = function(element, options){\n\t\t$.data(element, 'datepicker', this);\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\tthis.keepEmptyValues = options.keepEmptyValues;\n\t\tdelete options.keepEmptyValues;\n\n\t\tdatepickerPlugin.call($(this.inputs), options)\n\t\t\t.on('changeDate', $.proxy(this.dateUpdated, this));\n\n\t\tthis.pickers = $.map(this.inputs, function(i){\n\t\t\treturn $.data(i, '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\tclearDates: function(){\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.clearDates();\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 = $.data(e.target, 'datepicker');\n\n\t\t\tif (dp === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar new_date = dp.getUTCDate(),\n\t\t\t\tkeep_empty_values = this.keepEmptyValues,\n\t\t\t\ti = $.inArray(e.target, this.inputs),\n\t\t\t\tj = i - 1,\n\t\t\t\tk = i + 1,\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() && (p === dp || !keep_empty_values))\n\t\t\t\t\tp.setUTCDate(new_date);\n\t\t\t});\n\n\t\t\tif (new_date < this.dates[j]){\n\t\t\t\t// Date being moved earlier/left\n\t\t\t\twhile (j >= 0 && new_date < this.dates[j] && (this.pickers[j].element.val() || \"\").length > 0) {\n\t\t\t\t\tthis.pickers[j--].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t} else if (new_date > this.dates[k]){\n\t\t\t\t// Date being moved later/right\n\t\t\t\twhile (k < l && new_date > this.dates[k] && (this.pickers[k].element.val() || \"\").length > 0) {\n\t\t\t\t\tthis.pickers[k++].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\tdestroy: function(){\n\t\t\t$.map(this.pickers, function(p){ p.destroy(); });\n\t\t\t$(this.inputs).off('changeDate', this.dateUpdated);\n\t\t\tdelete this.element.data().datepicker;\n\t\t},\n\t\tremove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead')\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\tvar datepickerPlugin = 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.hasClass('input-daterange') || opts.inputs){\n\t\t\t\t\t$.extend(opts, {\n\t\t\t\t\t\tinputs: opts.inputs || $this.find('input').toArray()\n\t\t\t\t\t});\n\t\t\t\t\tdata = new DateRangePicker(this, opts);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdata = new Datepicker(this, opts);\n\t\t\t\t}\n\t\t\t\t$this.data('datepicker', data);\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}\n\t\t});\n\n\t\tif (\n\t\t\tinternal_return === undefined ||\n\t\t\tinternal_return instanceof Datepicker ||\n\t\t\tinternal_return instanceof DateRangePicker\n\t\t)\n\t\t\treturn this;\n\n\t\tif (this.length > 1)\n\t\t\tthrow new Error('Using only allowed for the collection of a single element (' + option + ' function)');\n\t\telse\n\t\t\treturn internal_return;\n\t};\n\t$.fn.datepicker = datepickerPlugin;\n\n\tvar defaults = $.fn.datepicker.defaults = {\n\t\tassumeNearbyYear: false,\n\t\tautoclose: false,\n\t\tbeforeShowDay: $.noop,\n\t\tbeforeShowMonth: $.noop,\n\t\tbeforeShowYear: $.noop,\n\t\tbeforeShowDecade: $.noop,\n\t\tbeforeShowCentury: $.noop,\n\t\tcalendarWeeks: false,\n\t\tclearBtn: false,\n\t\ttoggleActive: false,\n\t\tdaysOfWeekDisabled: [],\n\t\tdaysOfWeekHighlighted: [],\n\t\tdatesDisabled: [],\n\t\tendDate: Infinity,\n\t\tforceParse: true,\n\t\tformat: 'mm/dd/yyyy',\n\t\tisInline: null,\n\t\tkeepEmptyValues: false,\n\t\tkeyboardNavigation: true,\n\t\tlanguage: 'en',\n\t\tminViewMode: 0,\n\t\tmaxViewMode: 4,\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\tupdateViewDate: true,\n\t\tweekStart: 0,\n\t\tdisableTouchKeyboard: false,\n\t\tenableOnReadonly: true,\n\t\tshowOnFocus: true,\n\t\tzIndexOffset: 10,\n\t\tcontainer: 'body',\n\t\timmediateUpdates: false,\n\t\ttitle: '',\n\t\ttemplates: {\n\t\t\tleftArrow: '&#x00AB;',\n\t\t\trightArrow: '&#x00BB;'\n\t\t},\n    showWeekDays: true\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\"],\n\t\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\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\ttitleFormat: \"MM yyyy\"\n\t\t}\n\t};\n\n\tvar DPGlobal = {\n\t\tviewModes: [\n\t\t\t{\n\t\t\t\tnames: ['days', 'month'],\n\t\t\t\tclsName: 'days',\n\t\t\t\te: 'changeMonth'\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['months', 'year'],\n\t\t\t\tclsName: 'months',\n\t\t\t\te: 'changeYear',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['years', 'decade'],\n\t\t\t\tclsName: 'years',\n\t\t\t\te: 'changeDecade',\n\t\t\t\tnavStep: 10\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['decades', 'century'],\n\t\t\t\tclsName: 'decades',\n\t\t\t\te: 'changeCentury',\n\t\t\t\tnavStep: 100\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['centuries', 'millennium'],\n\t\t\t\tclsName: 'centuries',\n\t\t\t\te: 'changeMillennium',\n\t\t\t\tnavStep: 1000\n\t\t\t}\n\t\t],\n\t\tvalidParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,\n\t\tnonpunctuation: /[^ -\\/:-@\\u5e74\\u6708\\u65e5\\[-`{-~\\t\\n\\r]+/g,\n\t\tparseFormat: function(format){\n\t\t\tif (typeof format.toValue === 'function' && typeof format.toDisplay === 'function')\n                return format;\n            // IE treats \\0 as a string end in inputs (truncating the value),\n\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, assumeNearby){\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\tif (format.toValue)\n\t\t\t\treturn format.toValue(date, format, language);\n\t\t\tvar fn_map = {\n\t\t\t\t\td: 'moveDay',\n\t\t\t\t\tm: 'moveMonth',\n\t\t\t\t\tw: 'moveWeek',\n\t\t\t\t\ty: 'moveYear'\n\t\t\t\t},\n\t\t\t\tdateAliases = {\n\t\t\t\t\tyesterday: '-1d',\n\t\t\t\t\ttoday: '+0d',\n\t\t\t\t\ttomorrow: '+1d'\n\t\t\t\t},\n\t\t\t\tparts, part, dir, i, fn;\n\t\t\tif (date in dateAliases){\n\t\t\t\tdate = dateAliases[date];\n\t\t\t}\n\t\t\tif (/^[\\-+]\\d+[dmwy]([\\s,]+[\\-+]\\d+[dmwy])*$/i.test(date)){\n\t\t\t\tparts = date.match(/([\\-+]\\d+)([dmwy])/gi);\n\t\t\t\tdate = new Date();\n\t\t\t\tfor (i=0; i < parts.length; i++){\n\t\t\t\t\tpart = parts[i].match(/([\\-+]\\d+)([dmwy])/i);\n\t\t\t\t\tdir = Number(part[1]);\n\t\t\t\t\tfn = fn_map[part[2].toLowerCase()];\n\t\t\t\t\tdate = Datepicker.prototype[fn](date, dir);\n\t\t\t\t}\n\t\t\t\treturn Datepicker.prototype._zero_utc_time(date);\n\t\t\t}\n\n\t\t\tparts = date && date.match(this.nonpunctuation) || [];\n\n\t\t\tfunction applyNearbyYear(year, threshold){\n\t\t\t\tif (threshold === true)\n\t\t\t\t\tthreshold = 10;\n\n\t\t\t\t// if year is 2 digits or less, than the user most likely is trying to get a recent century\n\t\t\t\tif (year < 100){\n\t\t\t\t\tyear += 2000;\n\t\t\t\t\t// if the new year is more than threshold years in advance, use last century\n\t\t\t\t\tif (year > ((new Date()).getFullYear()+threshold)){\n\t\t\t\t\t\tyear -= 100;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn year;\n\t\t\t}\n\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(assumeNearby ? applyNearbyYear(v, assumeNearby) : 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['yy'] = setters_map['yyyy'];\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 = UTCToday();\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.toLowerCase() === p.toLowerCase();\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\tif (format.toDisplay)\n                return format.toDisplay(date, format, language);\n            var 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: '<thead>'+\n\t\t\t              '<tr>'+\n\t\t\t                '<th colspan=\"7\" class=\"datepicker-title\"></th>'+\n\t\t\t              '</tr>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th class=\"prev\">'+defaults.templates.leftArrow+'</th>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"5\" class=\"datepicker-switch\"></th>'+\n\t\t\t\t\t\t\t\t'<th class=\"next\">'+defaults.templates.rightArrow+'</th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t'</thead>',\n\t\tcontTemplate: '<tbody><tr><td colspan=\"7\"></td></tr></tbody>',\n\t\tfootTemplate: '<tfoot>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"7\" class=\"today\"></th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t\t'<tr>'+\n\t\t\t\t\t\t\t\t'<th colspan=\"7\" class=\"clear\"></th>'+\n\t\t\t\t\t\t\t'</tr>'+\n\t\t\t\t\t\t'</tfoot>'\n\t};\n\tDPGlobal.template = '<div class=\"datepicker\">'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-days\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\t'<tbody></tbody>'+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-months\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\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'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-years\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\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'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-decades\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\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'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t\t'<div class=\"datepicker-centuries\">'+\n\t\t\t\t\t\t\t\t'<table class=\"table-condensed\">'+\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'</table>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t'</div>';\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\t/* DATEPICKER VERSION\n\t * =================== */\n\t$.fn.datepicker.version = '1.10.0';\n\n\t$.fn.datepicker.deprecated = function(msg){\n\t\tvar console = window.console;\n\t\tif (console && console.warn) {\n\t\t\tconsole.warn('DEPRECATED: ' + msg);\n\t\t}\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\tdatepickerPlugin.call($this, 'show');\n\t\t}\n\t);\n\t$(function(){\n\t\tdatepickerPlugin.call($('[data-provide=\"datepicker-inline\"]'));\n\t});\n\n}));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker-en-CA.js",
    "content": "/**\n * Canadian English translation for bootstrap-datepicker\n * Mike Nacey <mnacey@gmail.com>\n * DEPRECATED: This filename doesn't follow the convention, use bootstrap-datepicker.en-CA.js instead\n */\n;(function($){\n\t$.fn.datepicker.dates['en-CA'] = {\n\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Today\",\n\t\tmonthsTitle: \"Months\",\n\t\tclear: \"Clear\",\n\t\tweekStart: 0,\n\t\tformat: \"yyyy-mm-dd\"\n\t};\n\n\t$.fn.datepicker.deprecated('This filename doesn\\'t follow the convention, use bootstrap-datepicker.en-CA.js instead.');\n\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.ar-DZ.js",
    "content": "/**\n * Arabic-Algeria translation for bootstrap-datepicker\n * Rabah Saadi <infosrabah@gmail.com>\n */\n;(function($){\n    $.fn.datepicker.dates['ar-DZ'] = {\n        days: [\"الأحد\", \"الاثنين\", \"الثلاثاء\", \"الأربعاء\", \"الخميس\", \"الجمعة\", \"السبت\", \"الأحد\"],\n        daysShort: [\"أحد\", \"اثنين\", \"ثلاثاء\", \"أربعاء\", \"خميس\", \"جمعة\", \"سبت\", \"أحد\"],\n        daysMin: [\"ح\", \"ن\", \"ث\", \"ع\", \"خ\", \"ج\", \"س\", \"ح\"],\n        months: [\"جانفي\",\"فيفري\",\"مارس\",\"أفريل\",\"ماي\",\"جوان\",\"جويليه\",\"أوت\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],\n        monthsShort: [\"جانفي\",\"فيفري\",\"مارس\",\"أفريل\",\"ماي\",\"جوان\",\"جويليه\",\"أوت\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],\n        today: \"هذا اليوم\",\n        rtl: true,\n        monthsTitle: \"أشهر\",\n        clear: \"إزالة\",\n        format: \"yyyy/mm/dd\",\n        weekStart: 0\n    };\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.ar-tn.js",
    "content": "/**\n * Arabic-Tunisia translation for bootstrap-datepicker\n * Souhaieb Besbes <besbes.souhaieb@gmail.com>\n */\n;(function($){\n    $.fn.datepicker.dates['ar-tn'] = {\n        days: [\"الأحد\", \"الاثنين\", \"الثلاثاء\", \"الأربعاء\", \"الخميس\", \"الجمعة\", \"السبت\", \"الأحد\"],\n        daysShort: [\"أحد\", \"اثنين\", \"ثلاثاء\", \"أربعاء\", \"خميس\", \"جمعة\", \"سبت\", \"أحد\"],\n        daysMin: [\"ح\", \"ن\", \"ث\", \"ع\", \"خ\", \"ج\", \"س\", \"ح\"],\n        months: [\"جانفي\",\"فيفري\",\"مارس\",\"أفريل\",\"ماي\",\"جوان\",\"جويليه\",\"أوت\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],\n        monthsShort: [\"جانفي\",\"فيفري\",\"مارس\",\"أفريل\",\"ماي\",\"جوان\",\"جويليه\",\"أوت\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"],\n        today: \"هذا اليوم\",\n        rtl: true\n    };\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.ar.js",
    "content": "/**\n * Arabic translation for bootstrap-datepicker\n * Mohammed Alshehri <alshehri866@gmail.com>\n */\n;(function($){\n    $.fn.datepicker.dates['ar'] = {\n        days: [\"الأحد\", \"الاثنين\", \"الثلاثاء\", \"الأربعاء\", \"الخميس\", \"الجمعة\", \"السبت\", \"الأحد\"],\n        daysShort: [\"أحد\", \"اثنين\", \"ثلاثاء\", \"أربعاء\", \"خميس\", \"جمعة\", \"سبت\", \"أحد\"],\n        daysMin: [\"ح\", \"ن\", \"ث\", \"ع\", \"خ\", \"ج\", \"س\", \"ح\"],\n        months: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\n        monthsShort: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\n        today: \"هذا اليوم\",\n        rtl: true\n    };\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.az.js",
    "content": "// Azerbaijani\n;(function($){\n    $.fn.datepicker.dates['az'] = {\n        days: [\"Bazar\", \"Bazar ertəsi\", \"Çərşənbə axşamı\", \"Çərşənbə\", \"Cümə axşamı\", \"Cümə\", \"Şənbə\"],\n        daysShort: [\"B.\", \"B.e\", \"Ç.a\", \"Ç.\", \"C.a\", \"C.\", \"Ş.\"],\n        daysMin: [\"B.\", \"B.e\", \"Ç.a\", \"Ç.\", \"C.a\", \"C.\", \"Ş.\"],\n        months: [\"Yanvar\", \"Fevral\", \"Mart\", \"Aprel\", \"May\", \"İyun\", \"İyul\", \"Avqust\", \"Sentyabr\", \"Oktyabr\", \"Noyabr\", \"Dekabr\"],\n        monthsShort: [\"Yan\", \"Fev\", \"Mar\", \"Apr\", \"May\", \"İyun\", \"İyul\", \"Avq\", \"Sen\", \"Okt\", \"Noy\", \"Dek\"],\n        today: \"Bu gün\",\n        weekStart: 1,\n        clear: \"Təmizlə\",\n        monthsTitle: 'Aylar'\n    };\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.bg.js",
    "content": "/**\n * Bulgarian translation for bootstrap-datepicker\n * Apostol Apostolov <apostol.s.apostolov@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['bg'] = {\n\t\tdays: [\"Неделя\", \"Понеделник\", \"Вторник\", \"Сряда\", \"Четвъртък\", \"Петък\", \"Събота\"],\n\t\tdaysShort: [\"Нед\", \"Пон\", \"Вто\", \"Сря\", \"Чет\", \"Пет\", \"Съб\"],\n\t\tdaysMin: [\"Н\", \"П\", \"В\", \"С\", \"Ч\", \"П\", \"С\"],\n\t\tmonths: [\"Януари\", \"Февруари\", \"Март\", \"Април\", \"Май\", \"Юни\", \"Юли\", \"Август\", \"Септември\", \"Октомври\", \"Ноември\", \"Декември\"],\n\t\tmonthsShort: [\"Ян\", \"Фев\", \"Мар\", \"Апр\", \"Май\", \"Юни\", \"Юли\", \"Авг\", \"Сеп\", \"Окт\", \"Ное\", \"Дек\"],\n\t\ttoday: \"днес\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.bm.js",
    "content": "/**\n * Bamanankan (bm) translation for bootstrap-datepicker\n * Fatou Fall <fatou@medicmobile.org>\n */\n;(function($){\n  $.fn.datepicker.dates['bm'] = {\n    days: [\"Kari\",\"Ntɛnɛn\",\"Tarata\",\"Araba\",\"Alamisa\",\"Juma\",\"Sibiri\"],\n    daysShort: [\"Kar\",\"Ntɛ\",\"Tar\",\"Ara\",\"Ala\",\"Jum\",\"Sib\"],\n    daysMin: [\"Ka\",\"Nt\",\"Ta\",\"Ar\",\"Al\",\"Ju\",\"Si\"],\n    months: [\"Zanwuyekalo\",\"Fewuruyekalo\",\"Marisikalo\",\"Awirilikalo\",\"Mɛkalo\",\"Zuwɛnkalo\",\"Zuluyekalo\",\"Utikalo\",\"Sɛtanburukalo\",\"ɔkutɔburukalo\",\"Nowanburukalo\",\"Desanburukalo\"],\n    monthsShort: [\"Zan\",\"Few\",\"Mar\",\"Awi\",\"Mɛ\",\"Zuw\",\"Zul\",\"Uti\",\"Sɛt\",\"ɔku\",\"Now\",\"Des\"],\n    today: \"Bi\",\n    monthsTitle: \"Kalo\",\n    clear: \"Ka jɔsi\",\n    weekStart: 1,\n    format: \"dd/mm/yyyy\"\n  };\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.bn.js",
    "content": "/**\n * Bengali (Bangla) translation for bootstrap-datepicker\n * Karim Khan <kkhancse91@gmail.com>\n * Orif N. Jr. <orif.zade@gmail.com>\n */\n;(function($){\n  $.fn.datepicker.dates['bn'] = {\n\t\tdays: [\"রবিবার\",\"সোমবার\",\"মঙ্গলবার\",\"বুধবার\",\"বৃহস্পতিবার\",\"শুক্রবার\",\"শনিবার\"],\n\t\tdaysShort: [\"রবিবার\",\"সোমবার\",\"মঙ্গলবার\",\"বুধবার\",\"বৃহস্পতিবার\",\"শুক্রবার\",\"শনিবার\"],\n\t\tdaysMin: [\"রবি\",\"সোম\",\"মঙ্গল\",\"বুধ\",\"বৃহস্পতি\",\"শুক্র\",\"শনি\"],\n\t\tmonths: [\"জানুয়ারী\",\"ফেব্রুয়ারি\",\"মার্চ\",\"এপ্রিল\",\"মে\",\"জুন\",\"জুলাই\",\"অগাস্ট\",\"সেপ্টেম্বর\",\"অক্টোবর\",\"নভেম্বর\",\"ডিসেম্বর\"],\n\t\tmonthsShort: [\"জানুয়ারী\",\"ফেব্রুয়ারি\",\"মার্চ\",\"এপ্রিল\",\"মে\",\"জুন\",\"জুলাই\",\"অগাস্ট\",\"সেপ্টেম্বর\",\"অক্টোবর\",\"নভেম্বর\",\"ডিসেম্বর\"],\n\t\ttoday: \"আজ\",\n\t\tmonthsTitle: \"মাস\",\n\t\tclear: \"পরিষ্কার\",\n\t\tweekStart: 0,\n\t\tformat: \"mm/dd/yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.br.js",
    "content": "/**\n * Breton translation for bootstrap-datepicker\n * Gwenn Meynier <tornoz@laposte.net>\n */\n;(function($){\n\t$.fn.datepicker.dates['br'] = {\n\t\tdays: [\"Sul\", \"Lun\", \"Meurzh\", \"Merc'her\", \"Yaou\", \"Gwener\", \"Sadorn\"],\n\t\tdaysShort: [\"Sul\", \"Lun\", \"Meu.\", \"Mer.\", \"Yao.\", \"Gwe.\", \"Sad.\"],\n\t\tdaysMin: [\"Su\", \"L\", \"Meu\", \"Mer\", \"Y\", \"G\", \"Sa\"],\n\t\tmonths: [\"Genver\", \"C'hwevrer\", \"Meurzh\", \"Ebrel\", \"Mae\", \"Mezheven\", \"Gouere\", \"Eost\", \"Gwengolo\", \"Here\", \"Du\", \"Kerzu\"],\n\t\tmonthsShort: [\"Genv.\", \"C'hw.\", \"Meur.\", \"Ebre.\", \"Mae\", \"Mezh.\", \"Goue.\", \"Eost\", \"Gwen.\", \"Here\", \"Du\", \"Kerz.\"],\n\t\ttoday: \"Hiziv\",\n\t\tmonthsTitle: \"Miz\",\n\t\tclear: \"Dilemel\",\n\t\tweekStart: 1,\n\t\tformat: \"dd/mm/yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.bs.js",
    "content": "/**\n * Bosnian translation for bootstrap-datepicker\n */\n;(function($){\n\t$.fn.datepicker.dates['bs'] = {\n\t\tdays: [\"Nedjelja\",\"Ponedjeljak\", \"Utorak\", \"Srijeda\", \"Četvrtak\", \"Petak\", \"Subota\"],\n\t\tdaysShort: [\"Ned\", \"Pon\", \"Uto\", \"Sri\", \"Čet\", \"Pet\", \"Sub\"],\n\t\tdaysMin: [\"N\", \"Po\", \"U\", \"Sr\", \"Č\", \"Pe\", \"Su\"],\n\t\tmonths: [\"Januar\", \"Februar\", \"Mart\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"August\", \"Septembar\", \"Oktobar\", \"Novembar\", \"Decembar\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Danas\",\n\t\tweekStart: 1,\n\t\tformat: \"dd.mm.yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.ca.js",
    "content": "/**\n * Catalan translation for bootstrap-datepicker\n * J. Garcia <jogaco.en@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['ca'] = {\n\t\tdays: [\"diumenge\", \"dilluns\", \"dimarts\", \"dimecres\", \"dijous\", \"divendres\", \"dissabte\"],\n\t\tdaysShort: [\"dg.\",  \"dl.\", \"dt.\", \"dc.\", \"dj.\", \"dv.\", \"ds.\"],\n\t\tdaysMin: [\"dg\", \"dl\", \"dt\", \"dc\", \"dj\", \"dv\", \"ds\"],\n\t\tmonths: [\"gener\", \"febrer\", \"març\", \"abril\", \"maig\", \"juny\", \"juliol\", \"agost\", \"setembre\", \"octubre\", \"novembre\", \"desembre\"],\n\t\tmonthsShort: [\"gen.\", \"febr.\", \"març\", \"abr.\", \"maig\", \"juny\", \"jul.\", \"ag.\", \"set.\", \"oct.\", \"nov.\", \"des.\"],\n\t\ttoday: \"Avui\",\n\t\tmonthsTitle: \"Mesos\",\n\t\tclear: \"Esborra\",\n\t\tweekStart: 1,\n\t\tformat: \"dd/mm/yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.cs.js",
    "content": "/**\n * Czech translation for bootstrap-datepicker\n * Matěj Koubík <matej@koubik.name>\n * Fixes by Michal Remiš <michal.remis@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['cs'] = {\n\t\tdays: [\"Neděle\", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"],\n\t\tdaysShort: [\"Ned\", \"Pon\", \"Úte\", \"Stř\", \"Čtv\", \"Pát\", \"Sob\"],\n\t\tdaysMin: [\"Ne\", \"Po\", \"Út\", \"St\", \"Čt\", \"Pá\", \"So\"],\n\t\tmonths: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\n\t\tmonthsShort: [\"Led\", \"Úno\", \"Bře\", \"Dub\", \"Kvě\", \"Čer\", \"Čnc\", \"Srp\", \"Zář\", \"Říj\", \"Lis\", \"Pro\"],\n\t\ttoday: \"Dnes\",\n\t\tclear: \"Vymazat\",\n\t\tmonthsTitle: \"Měsíc\",\n\t\tweekStart: 1,\n\t\tformat: \"dd.mm.yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.cy.js",
    "content": "/**\n * Welsh translation for bootstrap-datepicker\n * S. Morris <s.morris@bangor.ac.uk>\n */\n;(function($){\n\t$.fn.datepicker.dates['cy'] = {\n\t\tdays: [\"Sul\", \"Llun\", \"Mawrth\", \"Mercher\", \"Iau\", \"Gwener\", \"Sadwrn\"],\n\t\tdaysShort: [\"Sul\", \"Llu\", \"Maw\", \"Mer\", \"Iau\", \"Gwe\", \"Sad\"],\n\t\tdaysMin: [\"Su\", \"Ll\", \"Ma\", \"Me\", \"Ia\", \"Gwe\", \"Sa\"],\n\t\tmonths: [\"Ionawr\", \"Chewfror\", \"Mawrth\", \"Ebrill\", \"Mai\", \"Mehefin\", \"Gorfennaf\", \"Awst\", \"Medi\", \"Hydref\", \"Tachwedd\", \"Rhagfyr\"],\n\t\tmonthsShort: [\"Ion\", \"Chw\", \"Maw\", \"Ebr\", \"Mai\", \"Meh\", \"Gor\", \"Aws\", \"Med\", \"Hyd\", \"Tach\", \"Rha\"],\n\t\ttoday: \"Heddiw\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.da.js",
    "content": "/**\n * Danish translation for bootstrap-datepicker\n * Christian Pedersen <https://github.com/chripede>\n * Ivan Mylyanyk <https://github.com/imylyanyk>\n */\n;(function($){\n\t$.fn.datepicker.dates['da'] = {\n\t\tdays: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\n\t\tdaysShort: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"],\n\t\tdaysMin: [\"Sø\", \"Ma\", \"Ti\", \"On\", \"To\", \"Fr\", \"Lø\"],\n\t\tmonths: [\"Januar\", \"Februar\", \"Marts\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"December\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\ttoday: \"I Dag\",\n\t\tweekStart: 1,\n\t\tclear: \"Nulstil\",\n        format: \"dd/mm/yyyy\",\n        monthsTitle:\"Måneder\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.de.js",
    "content": "/**\n * German translation for bootstrap-datepicker\n * Sam Zurcher <sam@orelias.ch>\n */\n;(function($){\n\t$.fn.datepicker.dates['de'] = {\n\t\tdays: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"],\n\t\tdaysShort: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n\t\tdaysMin: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n\t\tmonths: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mär\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"],\n\t\ttoday: \"Heute\",\n\t\tmonthsTitle: \"Monate\",\n\t\tclear: \"Löschen\",\n\t\tweekStart: 1,\n\t\tformat: \"dd.mm.yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.el.js",
    "content": "/**\n * Greek translation for bootstrap-datepicker\n */\n;(function($){\n  $.fn.datepicker.dates['el'] = {\n    days: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"],\n    daysShort: [\"Κυρ\", \"Δευ\", \"Τρι\", \"Τετ\", \"Πεμ\", \"Παρ\", \"Σαβ\"],\n    daysMin: [\"Κυ\", \"Δε\", \"Τρ\", \"Τε\", \"Πε\", \"Πα\", \"Σα\"],\n    months: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάιος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\n    monthsShort: [\"Ιαν\", \"Φεβ\", \"Μαρ\", \"Απρ\", \"Μάι\", \"Ιουν\", \"Ιουλ\", \"Αυγ\", \"Σεπ\", \"Οκτ\", \"Νοε\", \"Δεκ\"],\n    today: \"Σήμερα\",\n    clear: \"Καθαρισμός\",\n    weekStart: 1,\n    format: \"d/m/yyyy\"\n  };\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.en-AU.js",
    "content": "/**\n * Australian English translation for bootstrap-datepicker\n * Steve Chapman <steven.p.chapman@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['en-AU'] = {\n\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Today\",\n\t\tmonthsTitle: \"Months\",\n\t\tclear: \"Clear\",\n\t\tweekStart: 1,\n\t\tformat: \"d/mm/yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.en-CA.js",
    "content": "/**\n * Canadian English translation for bootstrap-datepicker\n * Mike Nacey <mnacey@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['en-CA'] = {\n\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Today\",\n\t\tmonthsTitle: \"Months\",\n\t\tclear: \"Clear\",\n\t\tweekStart: 0,\n\t\tformat: \"yyyy-mm-dd\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.en-GB.js",
    "content": "/**\n * British English translation for bootstrap-datepicker\n * Xavier Dutreilh <xavier@dutreilh.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['en-GB'] = {\n\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Today\",\n\t\tmonthsTitle: \"Months\",\n\t\tclear: \"Clear\",\n\t\tweekStart: 1,\n\t\tformat: \"dd/mm/yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.en-IE.js",
    "content": "/**\n * Irish English translation for bootstrap-datepicker\n */\n;(function($){\n\t$.fn.datepicker.dates['en-IE'] = {\n\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Today\",\n\t\tmonthsTitle: \"Months\",\n\t\tclear: \"Clear\",\n\t\tweekStart: 1,\n\t\tformat: \"dd/mm/yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.en-NZ.js",
    "content": "/**\n * New Zealand English translation for bootstrap-datepicker\n */\n;(function($){\n\t$.fn.datepicker.dates['en-NZ'] = {\n\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Today\",\n\t\tmonthsTitle: \"Months\",\n\t\tclear: \"Clear\",\n\t\tweekStart: 1,\n\t\tformat: \"d/mm/yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.en-US.js",
    "content": "/**\n * American English translation for bootstrap-datepicker\n */\n;(function($){\n\t$.fn.datepicker.dates['en-US'] = {\n\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Today\",\n\t\tmonthsTitle: \"Months\",\n\t\tclear: \"Clear\",\n\t\tweekStart: 0,\n\t\tformat: \"m/d/yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.en-ZA.js",
    "content": "/**\n * South African English translation for bootstrap-datepicker\n */\n;(function($){\n\t$.fn.datepicker.dates['en-ZA'] = {\n\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Today\",\n\t\tmonthsTitle: \"Months\",\n\t\tclear: \"Clear\",\n\t\tweekStart: 1,\n\t\tformat: \"yyyy/mm/d\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.eo.js",
    "content": "/**\n * Esperanto translation for bootstrap-datepicker\n * Emmanuel Debanne <https://github.com/debanne>\n */\n;(function($){\n\t$.fn.datepicker.dates['eo'] = {\n\t\tdays: [\"dimanĉo\", \"lundo\", \"mardo\", \"merkredo\", \"ĵaŭdo\", \"vendredo\", \"sabato\"],\n\t\tdaysShort: [\"dim.\", \"lun.\", \"mar.\", \"mer.\", \"ĵaŭ.\", \"ven.\", \"sam.\"],\n\t\tdaysMin: [\"d\", \"l\", \"ma\", \"me\", \"ĵ\", \"v\", \"s\"],\n\t\tmonths: [\"januaro\", \"februaro\", \"marto\", \"aprilo\", \"majo\", \"junio\", \"julio\", \"aŭgusto\", \"septembro\", \"oktobro\", \"novembro\", \"decembro\"],\n\t\tmonthsShort: [\"jan.\", \"feb.\", \"mar.\", \"apr.\", \"majo\", \"jun.\", \"jul.\", \"aŭg.\", \"sep.\", \"okt.\", \"nov.\", \"dec.\"],\n\t\ttoday: \"Hodiaŭ\",\n\t\tclear: \"Nuligi\",\n\t\tweekStart: 1,\n\t\tformat: \"yyyy-mm-dd\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.es.js",
    "content": "/**\n * Spanish translation for bootstrap-datepicker\n * Bruno Bonamin <bruno.bonamin@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['es'] = {\n\t\tdays: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jueves\", \"Viernes\", \"Sábado\"],\n\t\tdaysShort: [\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\"],\n\t\tdaysMin: [\"Do\", \"Lu\", \"Ma\", \"Mi\", \"Ju\", \"Vi\", \"Sa\"],\n\t\tmonths: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\n\t\tmonthsShort: [\"Ene\", \"Feb\", \"Mar\", \"Abr\", \"May\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Oct\", \"Nov\", \"Dic\"],\n\t\ttoday: \"Hoy\",\n\t\tmonthsTitle: \"Meses\",\n\t\tclear: \"Borrar\",\n\t\tweekStart: 1,\n\t\tformat: \"dd/mm/yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.et.js",
    "content": "/**\n * Estonian translation for bootstrap-datepicker\n * Ando Roots <https://github.com/anroots>\n * Fixes by Illimar Tambek <<https://github.com/ragulka>\n */\n;(function($){\n\t$.fn.datepicker.dates['et'] = {\n\t\tdays: [\"Pühapäev\", \"Esmaspäev\", \"Teisipäev\", \"Kolmapäev\", \"Neljapäev\", \"Reede\", \"Laupäev\"],\n\t\tdaysShort: [\"Pühap\", \"Esmasp\", \"Teisip\", \"Kolmap\", \"Neljap\", \"Reede\", \"Laup\"],\n\t\tdaysMin: [\"P\", \"E\", \"T\", \"K\", \"N\", \"R\", \"L\"],\n\t\tmonths: [\"Jaanuar\", \"Veebruar\", \"Märts\", \"Aprill\", \"Mai\", \"Juuni\", \"Juuli\", \"August\", \"September\", \"Oktoober\", \"November\", \"Detsember\"],\n\t\tmonthsShort: [\"Jaan\", \"Veebr\", \"Märts\", \"Apr\", \"Mai\", \"Juuni\", \"Juuli\", \"Aug\", \"Sept\", \"Okt\", \"Nov\", \"Dets\"],\n\t\ttoday: \"Täna\",\n\t\tclear: \"Tühjenda\",\n\t\tweekStart: 1,\n\t\tformat: \"dd.mm.yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.eu.js",
    "content": "/**\n * Basque translation for bootstrap-datepicker\n * Arkaitz Etxeberria <kondi80@gmail.com>\n */\n;(function($){\n    $.fn.datepicker.dates['eu'] = {\n        days: ['Igandea', 'Astelehena', 'Asteartea', 'Asteazkena', 'Osteguna', 'Ostirala', 'Larunbata'],\n        daysShort: ['Ig', 'Al', 'Ar', 'Az', 'Og', 'Ol', 'Lr'],\n        daysMin: ['Ig', 'Al', 'Ar', 'Az', 'Og', 'Ol', 'Lr'],\n        months: ['Urtarrila', 'Otsaila', 'Martxoa', 'Apirila', 'Maiatza', 'Ekaina', 'Uztaila', 'Abuztua', 'Iraila', 'Urria', 'Azaroa', 'Abendua'],\n        monthsShort: ['Urt', 'Ots', 'Mar', 'Api', 'Mai', 'Eka', 'Uzt', 'Abu', 'Ira', 'Urr', 'Aza', 'Abe'],\n        today: \"Gaur\",\n        monthsTitle: \"Hilabeteak\",\n        clear: \"Ezabatu\",\n        weekStart: 1,\n        format: \"yyyy/mm/dd\"\n    };\n}(jQuery));\n\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.fa.js",
    "content": "/**\n * Persian translation for bootstrap-datepicker\n * Mostafa Rokooie <mostafa.rokooie@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['fa'] = {\n\t\tdays: [\"یک‌شنبه\", \"دوشنبه\", \"سه‌شنبه\", \"چهارشنبه\", \"پنج‌شنبه\", \"جمعه\", \"شنبه\", \"یک‌شنبه\"],\n\t\tdaysShort: [\"یک\", \"دو\", \"سه\", \"چهار\", \"پنج\", \"جمعه\", \"شنبه\", \"یک\"],\n\t\tdaysMin: [\"ی\", \"د\", \"س\", \"چ\", \"پ\", \"ج\", \"ش\", \"ی\"],\n\t\tmonths: [\"ژانویه\", \"فوریه\", \"مارس\", \"آوریل\", \"مه\", \"ژوئن\", \"ژوئیه\", \"اوت\", \"سپتامبر\", \"اکتبر\", \"نوامبر\", \"دسامبر\"],\n\t\tmonthsShort: [\"ژان\", \"فور\", \"مار\", \"آور\", \"مه\", \"ژون\", \"ژوی\", \"اوت\", \"سپت\", \"اکت\", \"نوا\", \"دسا\"],\n\t\ttoday: \"امروز\",\n\t\tclear: \"پاک کن\",\n\t\tweekStart: 1,\n\t\tformat: \"yyyy/mm/dd\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.fi.js",
    "content": "/**\n * Finnish translation for bootstrap-datepicker\n * Jaakko Salonen <https://github.com/jsalonen>\n */\n;(function($){\n\t$.fn.datepicker.dates['fi'] = {\n\t\tdays: [\"sunnuntai\", \"maanantai\", \"tiistai\", \"keskiviikko\", \"torstai\", \"perjantai\", \"lauantai\"],\n\t\tdaysShort: [\"sun\", \"maa\", \"tii\", \"kes\", \"tor\", \"per\", \"lau\"],\n\t\tdaysMin: [\"su\", \"ma\", \"ti\", \"ke\", \"to\", \"pe\", \"la\"],\n\t\tmonths: [\"tammikuu\", \"helmikuu\", \"maaliskuu\", \"huhtikuu\", \"toukokuu\", \"kesäkuu\", \"heinäkuu\", \"elokuu\", \"syyskuu\", \"lokakuu\", \"marraskuu\", \"joulukuu\"],\n\t\tmonthsShort: [\"tammi\", \"helmi\", \"maalis\", \"huhti\", \"touko\", \"kesä\", \"heinä\", \"elo\", \"syys\", \"loka\", \"marras\", \"joulu\"],\n\t\ttoday: \"tänään\",\n\t\tclear: \"Tyhjennä\",\n\t\tweekStart: 1,\n\t\tformat: \"d.m.yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.fo.js",
    "content": "/**\n * Faroese translation for bootstrap-datepicker\n * Theodor Johannesen <https://github.com/theodorjohannesen>\n */\n;(function($){\n\t$.fn.datepicker.dates['fo'] = {\n\t\tdays: [\"Sunnudagur\", \"Mánadagur\", \"Týsdagur\", \"Mikudagur\", \"Hósdagur\", \"Fríggjadagur\", \"Leygardagur\"],\n\t\tdaysShort: [\"Sun\", \"Mán\", \"Týs\", \"Mik\", \"Hós\", \"Frí\", \"Ley\"],\n\t\tdaysMin: [\"Su\", \"Má\", \"Tý\", \"Mi\", \"Hó\", \"Fr\", \"Le\"],\n\t\tmonths: [\"Januar\", \"Februar\", \"Marts\", \"Apríl\", \"Mei\", \"Juni\", \"Juli\", \"August\", \"Septembur\", \"Oktobur\", \"Novembur\", \"Desembur\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\n\t\ttoday: \"Í Dag\",\n\t\tclear: \"Reinsa\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.fr-CH.js",
    "content": "/**\n * French (Switzerland) translation for bootstrap-datepicker\n * Christoph Jossi <c.jossi@ascami.ch>\n * Based on \n * French translation for bootstrap-datepicker\n * Nico Mollet <nico.mollet@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['fr'] = {\n\t\tdays: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"],\n\t\tdaysShort: [\"Dim\", \"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\"],\n\t\tdaysMin: [\"D\", \"L\", \"Ma\", \"Me\", \"J\", \"V\", \"S\"],\n\t\tmonths: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\n\t\tmonthsShort: [\"Jan\", \"Fév\", \"Mar\", \"Avr\", \"Mai\", \"Jui\", \"Jul\", \"Aou\", \"Sep\", \"Oct\", \"Nov\", \"Déc\"],\n\t\ttoday: \"Aujourd'hui\",\n\t\tmonthsTitle: \"Mois\",\n\t\tclear: \"Effacer\",\n\t\tweekStart: 1,\n\t\tformat: \"dd.mm.yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.fr.js",
    "content": "/**\n * French translation for bootstrap-datepicker\n * Nico Mollet <nico.mollet@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['fr'] = {\n\t\tdays: [\"dimanche\", \"lundi\", \"mardi\", \"mercredi\", \"jeudi\", \"vendredi\", \"samedi\"],\n\t\tdaysShort: [\"dim.\", \"lun.\", \"mar.\", \"mer.\", \"jeu.\", \"ven.\", \"sam.\"],\n\t\tdaysMin: [\"d\", \"l\", \"ma\", \"me\", \"j\", \"v\", \"s\"],\n\t\tmonths: [\"janvier\", \"février\", \"mars\", \"avril\", \"mai\", \"juin\", \"juillet\", \"août\", \"septembre\", \"octobre\", \"novembre\", \"décembre\"],\n\t\tmonthsShort: [\"janv.\", \"févr.\", \"mars\", \"avril\", \"mai\", \"juin\", \"juil.\", \"août\", \"sept.\", \"oct.\", \"nov.\", \"déc.\"],\n\t\ttoday: \"Aujourd'hui\",\n\t\tmonthsTitle: \"Mois\",\n\t\tclear: \"Effacer\",\n\t\tweekStart: 1,\n\t\tformat: \"dd/mm/yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.gl.js",
    "content": ";(function($){\n\t$.fn.datepicker.dates['gl'] = {\n\t\tdays: [\"Domingo\", \"Luns\", \"Martes\", \"Mércores\", \"Xoves\", \"Venres\", \"Sábado\"],\n\t\tdaysShort: [\"Dom\", \"Lun\", \"Mar\", \"Mér\", \"Xov\", \"Ven\", \"Sáb\"],\n\t\tdaysMin: [\"Do\", \"Lu\", \"Ma\", \"Me\", \"Xo\", \"Ve\", \"Sa\"],\n\t\tmonths: [\"Xaneiro\", \"Febreiro\", \"Marzo\", \"Abril\", \"Maio\", \"Xuño\", \"Xullo\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Decembro\"],\n\t\tmonthsShort: [\"Xan\", \"Feb\", \"Mar\", \"Abr\", \"Mai\", \"Xun\", \"Xul\", \"Ago\", \"Sep\", \"Out\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Hoxe\",\n\t\tclear: \"Limpar\",\n\t\tweekStart: 1,\n\t\tformat: \"dd/mm/yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.he.js",
    "content": "/**\n * Hebrew translation for bootstrap-datepicker\n * Sagie Maoz <sagie@maoz.info>\n */\n;(function($){\n  $.fn.datepicker.dates['he'] = {\n      days: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\", \"ראשון\"],\n      daysShort: [\"א\", \"ב\", \"ג\", \"ד\", \"ה\", \"ו\", \"ש\", \"א\"],\n      daysMin: [\"א\", \"ב\", \"ג\", \"ד\", \"ה\", \"ו\", \"ש\", \"א\"],\n      months: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\n      monthsShort: [\"ינו\", \"פבר\", \"מרץ\", \"אפר\", \"מאי\", \"יונ\", \"יול\", \"אוג\", \"ספט\", \"אוק\", \"נוב\", \"דצמ\"],\n      today: \"היום\",\n      rtl: true\n  };\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.hi.js",
    "content": "/**\n * Hindi translation for bootstrap-datepicker\n * Visar Uruqi <visar.uruqi@gmail.com>\n */\n; (function($){\n\t$.fn.datepicker.dates['hi'] = {\n\t\tdays: [\"रविवार\", \"सोमवार\", \"मंगलवार\", \"बुधवार\", \"गुरुवार\", \"शुक्रवार\", \"शनिवार\"],\n\t\tdaysShort: [\"सूर्य\", \"सोम\", \"मंगल\", \"बुध\", \"गुरु\", \"शुक्र\", \"शनि\"],\n\t\tdaysMin: [\"र\", \"सो\", \"मं\", \"बु\", \"गु\", \"शु\", \"श\"],\n\t\tmonths: [\"जनवरी\", \"फ़रवरी\", \"मार्च\", \"अप्रैल\", \"मई\", \"जून\", \"जुलाई\", \"अगस्त\", \"सितम्बर\", \"अक्टूबर\", \"नवंबर\", \"दिसम्बर\"],\n\t\tmonthsShort: [\"जन\", \"फ़रवरी\", \"मार्च\", \"अप्रैल\", \"मई\", \"जून\", \"जुलाई\", \"अगस्त\", \"सितं\", \"अक्टूबर\", \"नवं\", \"दिसम्बर\"],\n\t\ttoday: \"आज\",\n\t\tmonthsTitle: \"महीने\",\n\t\tclear: \"साफ\",\n\t\tweekStart: 1,\n\t\tformat: \"dd / mm / yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.hr.js",
    "content": "/**\n * Croatian localisation\n */\n;(function($){\n\t$.fn.datepicker.dates['hr'] = {\n\t\tdays: [\"Nedjelja\", \"Ponedjeljak\", \"Utorak\", \"Srijeda\", \"Četvrtak\", \"Petak\", \"Subota\"],\n\t\tdaysShort: [\"Ned\", \"Pon\", \"Uto\", \"Sri\", \"Čet\", \"Pet\", \"Sub\"],\n\t\tdaysMin: [\"Ne\", \"Po\", \"Ut\", \"Sr\", \"Če\", \"Pe\", \"Su\"],\n\t\tmonths: [\"Siječanj\", \"Veljača\", \"Ožujak\", \"Travanj\", \"Svibanj\", \"Lipanj\", \"Srpanj\", \"Kolovoz\", \"Rujan\", \"Listopad\", \"Studeni\", \"Prosinac\"],\n\t\tmonthsShort: [\"Sij\", \"Velj\", \"Ožu\", \"Tra\", \"Svi\", \"Lip\", \"Srp\", \"Kol\", \"Ruj\", \"Lis\", \"Stu\", \"Pro\"],\n\t\ttoday: \"Danas\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.hu.js",
    "content": "/**\n * Hungarian translation for bootstrap-datepicker\n * Sotus László <lacisan@gmail.com>\n */\n;(function($){\n  $.fn.datepicker.dates['hu'] = {\n\t\tdays: [\"vasárnap\", \"hétfő\", \"kedd\", \"szerda\", \"csütörtök\", \"péntek\", \"szombat\"],\n\t\tdaysShort: [\"vas\", \"hét\", \"ked\", \"sze\", \"csü\", \"pén\", \"szo\"],\n\t\tdaysMin: [\"V\", \"H\", \"K\", \"Sze\", \"Cs\", \"P\", \"Szo\"],\n\t\tmonths: [\"január\", \"február\", \"március\", \"április\", \"május\", \"június\", \"július\", \"augusztus\", \"szeptember\", \"október\", \"november\", \"december\"],\n\t\tmonthsShort: [\"jan\", \"feb\", \"már\", \"ápr\", \"máj\", \"jún\", \"júl\", \"aug\", \"sze\", \"okt\", \"nov\", \"dec\"],\n\t\ttoday: \"ma\",\n\t\tweekStart: 1,\n\t\tclear: \"töröl\",\n\t\ttitleFormat: \"yyyy. MM\",\n\t\tformat: \"yyyy.mm.dd\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.hy.js",
    "content": "/**\n * Armenian translation for bootstrap-datepicker\n * Hayk Chamyan <hamshen@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['hy'] = {\n\t\tdays: [\"Կիրակի\", \"Երկուշաբթի\", \"Երեքշաբթի\", \"Չորեքշաբթի\", \"Հինգշաբթի\", \"Ուրբաթ\", \"Շաբաթ\"],\n\t\tdaysShort: [\"Կիր\", \"Երկ\", \"Երե\", \"Չոր\", \"Հին\", \"Ուրբ\", \"Շաբ\"],\n\t\tdaysMin: [\"Կի\", \"Եկ\", \"Եք\", \"Չո\", \"Հի\", \"Ու\", \"Շա\"],\n\t\tmonths: [\"Հունվար\", \"Փետրվար\", \"Մարտ\", \"Ապրիլ\", \"Մայիս\", \"Հունիս\", \"Հուլիս\", \"Օգոստոս\", \"Սեպտեմբեր\", \"Հոկտեմբեր\", \"Նոյեմբեր\", \"Դեկտեմբեր\"],\n\t\tmonthsShort: [\"Հնվ\", \"Փետ\", \"Մար\", \"Ապր\", \"Մայ\", \"Հուն\", \"Հուլ\", \"Օգս\", \"Սեպ\", \"Հոկ\", \"Նոյ\", \"Դեկ\"],\n\t\ttoday: \"Այսօր\",\n\t\tclear: \"Ջնջել\",\n\t\tformat: \"dd.mm.yyyy\",\n\t\tweekStart: 1,\n    monthsTitle: 'Ամիսնէր'\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.id.js",
    "content": "/**\n * Bahasa translation for bootstrap-datepicker\n * Azwar Akbar <azwar.akbar@gmail.com>\n * Ardeman <mail@ardeman.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['id'] = {\n\t\tdays: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"],\n\t\tdaysShort: [\"Min\", \"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\"],\n\t\tdaysMin: [\"Mg\", \"Sn\", \"Sl\", \"Rb\", \"Km\", \"Jm\", \"Sb\"],\n\t\tmonths: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Agt\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\n\t\ttoday: \"Hari Ini\",\n\t\tmonthsTitle: \"Bulan\",\n\t\tclear: \"Kosongkan\",\n\t\tweekStart: 0,\n\t\tformat: \"dd-mm-yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.is.js",
    "content": "/**\n * Icelandic translation for bootstrap-datepicker\n * Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['is'] = {\n\t\tdays: [\"Sunnudagur\", \"Mánudagur\", \"Þriðjudagur\", \"Miðvikudagur\", \"Fimmtudagur\", \"Föstudagur\", \"Laugardagur\"],\n\t\tdaysShort: [\"Sun\", \"Mán\", \"Þri\", \"Mið\", \"Fim\", \"Fös\", \"Lau\"],\n\t\tdaysMin: [\"Su\", \"Má\", \"Þr\", \"Mi\", \"Fi\", \"Fö\", \"La\"],\n\t\tmonths: [\"Janúar\", \"Febrúar\", \"Mars\", \"Apríl\", \"Maí\", \"Júní\", \"Júlí\", \"Ágúst\", \"September\", \"Október\", \"Nóvember\", \"Desember\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maí\", \"Jún\", \"Júl\", \"Ágú\", \"Sep\", \"Okt\", \"Nóv\", \"Des\"],\n\t\ttoday: \"Í Dag\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.it-CH.js",
    "content": "/**\n * Italian (Switzerland) translation for bootstrap-datepicker\n * Christoph Jossi <c.jossi@ascami.ch>\n * Based on \n * Italian translation for bootstrap-datepicker\n * Enrico Rubboli <rubboli@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['it'] = {\n\t\tdays: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"],\n\t\tdaysShort: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"],\n\t\tdaysMin: [\"Do\", \"Lu\", \"Ma\", \"Me\", \"Gi\", \"Ve\", \"Sa\"],\n\t\tmonths: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\n\t\tmonthsShort: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"],\n\t\ttoday: \"Oggi\",\n\t\tclear: \"Cancella\",\n\t\tweekStart: 1,\n\t\tformat: \"dd.mm.yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.it.js",
    "content": "/**\n * Italian translation for bootstrap-datepicker\n * Enrico Rubboli <rubboli@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['it'] = {\n\t\tdays: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"],\n\t\tdaysShort: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"],\n\t\tdaysMin: [\"Do\", \"Lu\", \"Ma\", \"Me\", \"Gi\", \"Ve\", \"Sa\"],\n\t\tmonths: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\n\t\tmonthsShort: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"],\n\t\ttoday: \"Oggi\",\n\t\tmonthsTitle: \"Mesi\",\n\t\tclear: \"Cancella\",\n\t\tweekStart: 1,\n\t\tformat: \"dd/mm/yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.ja.js",
    "content": "/**\n * Japanese translation for bootstrap-datepicker\n * Norio Suzuki <https://github.com/suzuki/>\n */\n;(function($){\n\t$.fn.datepicker.dates['ja'] = {\n\t\tdays: [\"日曜\", \"月曜\", \"火曜\", \"水曜\", \"木曜\", \"金曜\", \"土曜\"],\n\t\tdaysShort: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"],\n\t\tdaysMin: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"],\n\t\tmonths: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\n\t\tmonthsShort: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\n\t\ttoday: \"今日\",\n\t\tformat: \"yyyy/mm/dd\",\n\t\ttitleFormat: \"yyyy年mm月\",\n\t\tclear: \"クリア\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.ka.js",
    "content": "/**\n * Georgian translation for bootstrap-datepicker\n * Levan Melikishvili <levani0101@yahoo.com>\n */\n;(function($){\n    $.fn.datepicker.dates['ka'] = {\n        days: [\"კვირა\", \"ორშაბათი\", \"სამშაბათი\", \"ოთხშაბათი\", \"ხუთშაბათი\", \"პარასკევი\", \"შაბათი\"],\n        daysShort: [\"კვი\", \"ორშ\", \"სამ\", \"ოთხ\", \"ხუთ\", \"პარ\", \"შაბ\"],\n        daysMin: [\"კვ\", \"ორ\", \"სა\", \"ოთ\", \"ხუ\", \"პა\", \"შა\"],\n        months: [\"იანვარი\", \"თებერვალი\", \"მარტი\", \"აპრილი\", \"მაისი\", \"ივნისი\", \"ივლისი\", \"აგვისტო\", \"სექტემბერი\", \"ოქტომბერი\", \"ნოემბერი\", \"დეკემბერი\"],\n        monthsShort: [\"იან\", \"თებ\", \"მარ\", \"აპრ\", \"მაი\", \"ივნ\", \"ივლ\", \"აგვ\", \"სექ\", \"ოქტ\", \"ნოე\", \"დეკ\"],\n        today: \"დღეს\",\n        clear: \"გასუფთავება\",\n        weekStart: 1,\n        format: \"dd.mm.yyyy\"\n    };\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.kh.js",
    "content": "/**\n * Cambodia (Khmer) translation for bootstrap-datepicker\n * Lytay TOUCH <lytaytouch@gmail.com>\n *\n * DEPRECATED: This language code 'kh' is deprecated and will be removed in 2.0.\n * Khmer support is now in a 'km' translation file to follow the ISO language\n * code - http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes\n */\n;(function($){\n\t$.fn.datepicker.dates['kh'] = {\n\t\tdays: [\"អាទិត្យ\", \"ចន្ទ\", \"អង្គារ\", \"ពុធ\", \"ព្រហស្បតិ៍\", \"សុក្រ\", \"សៅរ៍\"],\n\t\tdaysShort: [\"អា.ទិ\", \"ចន្ទ\", \"អង្គារ\", \"ពុធ\", \"ព្រ.ហ\", \"សុក្រ\", \"សៅរ៍\"],\n\t\tdaysMin: [\"អា.ទិ\", \"ចន្ទ\", \"អង្គារ\", \"ពុធ\", \"ព្រ.ហ\", \"សុក្រ\", \"សៅរ៍\"],\n\t\tmonths: [\"មករា\", \"កុម្ភះ\", \"មិនា\", \"មេសា\", \"ឧសភា\", \"មិថុនា\", \"កក្កដា\", \"សីហា\", \"កញ្ញា\", \"តុលា\", \"វិច្ឆិកា\", \"ធ្នូ\"],\n\t\tmonthsShort: [\"មករា\", \"កុម្ភះ\", \"មិនា\", \"មេសា\", \"ឧសភា\", \"មិថុនា\", \"កក្កដា\", \"សីហា\", \"កញ្ញា\", \"តុលា\", \"វិច្ឆិកា\", \"ធ្នូ\"],\n\t\ttoday: \"ថ្ងៃនេះ\",\n\t\tclear: \"សំអាត\"\n\t};\n\n\t$.fn.datepicker.deprecated('The language code \"kh\" is deprecated and will be removed in 2.0. For Khmer support use \"km\" instead.');\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.kk.js",
    "content": "/**\n * Kazakh translation for bootstrap-datepicker\n * Yerzhan Tolekov <era.tolekov@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['kk'] = {\n\t\tdays: [\"Жексенбі\", \"Дүйсенбі\", \"Сейсенбі\", \"Сәрсенбі\", \"Бейсенбі\", \"Жұма\", \"Сенбі\"],\n\t\tdaysShort: [\"Жек\", \"Дүй\", \"Сей\", \"Сәр\", \"Бей\", \"Жұм\", \"Сен\"],\n\t\tdaysMin: [\"Жк\", \"Дс\", \"Сс\", \"Ср\", \"Бс\", \"Жм\", \"Сн\"],\n\t\tmonths: [\"Қаңтар\", \"Ақпан\", \"Наурыз\", \"Сәуір\", \"Мамыр\", \"Маусым\", \"Шілде\", \"Тамыз\", \"Қыркүйек\", \"Қазан\", \"Қараша\", \"Желтоқсан\"],\n\t\tmonthsShort: [\"Қаң\", \"Ақп\", \"Нау\", \"Сәу\", \"Мам\", \"Мау\", \"Шіл\", \"Там\", \"Қыр\", \"Қаз\", \"Қар\", \"Жел\"],\n\t\ttoday: \"Бүгін\",\n\t\tweekStart: 1\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.km.js",
    "content": "/**\n * Khmer translation for bootstrap-datepicker\n * This is the Updated Version of: https://github.com/uxsolutions/bootstrap-datepicker/blob/71308d42cce9524284c50c6fac50422d1790ac0f/js/locales/bootstrap-datepicker.kh.js\n */\n;(function($){\n  $.fn.datepicker.dates['km'] = {\n    days: [\"អាទិត្យ\", \"ចន្ទ\", \"អង្គារ\", \"ពុធ\", \"ព្រហស្បតិ៍\", \"សុក្រ\", \"សៅរ៍\"],\n    daysShort: [\"អា.ទិ\", \"ចន្ទ\", \"អង្គារ\", \"ពុធ\", \"ព្រ.ហ\", \"សុក្រ\", \"សៅរ៍\"],\n    daysMin: [\"អា.ទិ\", \"ចន្ទ\", \"អង្គារ\", \"ពុធ\", \"ព្រ.ហ\", \"សុក្រ\", \"សៅរ៍\"],\n    months: [\"មករា\", \"កុម្ភះ\", \"មិនា\", \"មេសា\", \"ឧសភា\", \"មិថុនា\", \"កក្កដា\", \"សីហា\", \"កញ្ញា\", \"តុលា\", \"វិច្ឆិកា\", \"ធ្នូ\"],\n    monthsShort: [\"មករា\", \"កុម្ភះ\", \"មិនា\", \"មេសា\", \"ឧសភា\", \"មិថុនា\", \"កក្កដា\", \"សីហា\", \"កញ្ញា\", \"តុលា\", \"វិច្ឆិកា\", \"ធ្នូ\"],\n    today: \"ថ្ងៃនេះ\",\n    clear: \"សំអាត\"\n  };\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.ko.js",
    "content": "/**\n * Korean translation for bootstrap-datepicker\n * This is a port from https://github.com/moment/moment/blob/develop/src/locale/ko.js\n */\n;(function($){\n\t$.fn.datepicker.dates['ko'] = {\n\t\tdays: [\"일요일\", \"월요일\", \"화요일\", \"수요일\", \"목요일\", \"금요일\", \"토요일\"],\n\t\tdaysShort: [\"일\", \"월\", \"화\", \"수\", \"목\", \"금\", \"토\"],\n\t\tdaysMin: [\"일\", \"월\", \"화\", \"수\", \"목\", \"금\", \"토\"],\n\t\tmonths: [\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"],\n\t\tmonthsShort: [\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"],\n\t\ttoday: \"오늘\",\n\t\tclear: \"삭제\",\n\t\tformat: \"yyyy-mm-dd\",\n\t\ttitleFormat: \"yyyy년mm월\",\n\t\tweekStart: 0\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.kr.js",
    "content": "/**\n * Korean translation for bootstrap-datepicker\n * Gu Youn <https://github.com/guyoun>\n *\n * DEPRECATED: This language code 'kr' is deprecated and will be removed in 2.0.\n * Korean support is now in a 'ko' translation file to follow the ISO language\n * code - http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes\n */\n;(function($){\n\t$.fn.datepicker.dates['kr'] = {\n\t\tdays: [\"일요일\", \"월요일\", \"화요일\", \"수요일\", \"목요일\", \"금요일\", \"토요일\"],\n\t\tdaysShort: [\"일\", \"월\", \"화\", \"수\", \"목\", \"금\", \"토\"],\n\t\tdaysMin: [\"일\", \"월\", \"화\", \"수\", \"목\", \"금\", \"토\"],\n\t\tmonths: [\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"],\n\t\tmonthsShort: [\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"]\n\t};\n\n\t$.fn.datepicker.deprecated('The language code \"kr\" is deprecated and will be removed in 2.0. For korean support use \"ko\" instead.');\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.lt.js",
    "content": "/**\n * Lithuanian translation for bootstrap-datepicker\n * Šarūnas Gliebus <ssharunas@yahoo.co.uk>\n */\n\n;(function($){\n    $.fn.datepicker.dates['lt'] = {\n        days: [\"Sekmadienis\", \"Pirmadienis\", \"Antradienis\", \"Trečiadienis\", \"Ketvirtadienis\", \"Penktadienis\", \"Šeštadienis\"],\n        daysShort: [\"S\", \"Pr\", \"A\", \"T\", \"K\", \"Pn\", \"Š\"],\n        daysMin: [\"Sk\", \"Pr\", \"An\", \"Tr\", \"Ke\", \"Pn\", \"Št\"],\n        months: [\"Sausis\", \"Vasaris\", \"Kovas\", \"Balandis\", \"Gegužė\", \"Birželis\", \"Liepa\", \"Rugpjūtis\", \"Rugsėjis\", \"Spalis\", \"Lapkritis\", \"Gruodis\"],\n        monthsShort: [\"Sau\", \"Vas\", \"Kov\", \"Bal\", \"Geg\", \"Bir\", \"Lie\", \"Rugp\", \"Rugs\", \"Spa\", \"Lap\", \"Gru\"],\n        today: \"Šiandien\",\n        monthsTitle:\"Mėnesiai\",\n        clear:\"Išvalyti\",\n        weekStart: 1,\n        format:\"yyyy-mm-dd\"\n    };\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.lv.js",
    "content": "/**\n * Latvian translation for bootstrap-datepicker\n * Artis Avotins <artis@apit.lv>\n */\n\n;(function($){\n    $.fn.datepicker.dates['lv'] = {\n        days: [\"Svētdiena\", \"Pirmdiena\", \"Otrdiena\", \"Trešdiena\", \"Ceturtdiena\", \"Piektdiena\", \"Sestdiena\"],\n        daysShort: [\"Sv\", \"P\", \"O\", \"T\", \"C\", \"Pk\", \"S\"],\n        daysMin: [\"Sv\", \"Pr\", \"Ot\", \"Tr\", \"Ce\", \"Pk\", \"Se\"],\n        months: [\"Janvāris\", \"Februāris\", \"Marts\", \"Aprīlis\", \"Maijs\", \"Jūnijs\", \"Jūlijs\", \"Augusts\", \"Septembris\", \"Oktobris\", \"Novembris\", \"Decembris\"],\n        monthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jūn\", \"Jūl\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n        monthsTitle: \"Mēneši\",\n        today: \"Šodien\",\n        clear: \"Nodzēst\",\n        weekStart: 1\n    };\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.me.js",
    "content": "/**\n * Montenegrin translation for bootstrap-datepicker\n * Miodrag Nikač <miodrag@restartit.me>\n */\n;(function($){\n\t$.fn.datepicker.dates['me'] = {\n\t\tdays: [\"Nedjelja\",\"Ponedjeljak\", \"Utorak\", \"Srijeda\", \"Četvrtak\", \"Petak\", \"Subota\"],\n\t\tdaysShort: [\"Ned\", \"Pon\", \"Uto\", \"Sri\", \"Čet\", \"Pet\", \"Sub\"],\n\t\tdaysMin: [\"Ne\", \"Po\", \"Ut\", \"Sr\", \"Če\", \"Pe\", \"Su\"],\n\t\tmonths: [\"Januar\", \"Februar\", \"Mart\", \"April\", \"Maj\", \"Jun\", \"Jul\", \"Avgust\", \"Septembar\", \"Oktobar\", \"Novembar\", \"Decembar\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Avg\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Danas\",\n\t\tweekStart: 1,\n\t\tclear: \"Izbriši\",\n\t\tformat: \"dd.mm.yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.mk.js",
    "content": "/**\n * Macedonian translation for bootstrap-datepicker\n * Marko Aleksic <psybaron@gmail.com>\n */\n;(function($){\n    $.fn.datepicker.dates['mk'] = {\n        days: [\"Недела\", \"Понеделник\", \"Вторник\", \"Среда\", \"Четврток\", \"Петок\", \"Сабота\"],\n        daysShort: [\"Нед\", \"Пон\", \"Вто\", \"Сре\", \"Чет\", \"Пет\", \"Саб\"],\n        daysMin: [\"Не\", \"По\", \"Вт\", \"Ср\", \"Че\", \"Пе\", \"Са\"],\n        months: [\"Јануари\", \"Февруари\", \"Март\", \"Април\", \"Мај\", \"Јуни\", \"Јули\", \"Август\", \"Септември\", \"Октомври\", \"Ноември\", \"Декември\"],\n        monthsShort: [\"Јан\", \"Фев\", \"Мар\", \"Апр\", \"Мај\", \"Јун\", \"Јул\", \"Авг\", \"Сеп\", \"Окт\", \"Ное\", \"Дек\"],\n        today: \"Денес\",\n        format: \"dd.mm.yyyy\"\n    };\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.mn.js",
    "content": "/**\n * Mongolian translation for bootstrap-datepicker\n * Andrey Torsunov <andrey.torsunov@gmail.com>\n */\n;(function($){\n    $.fn.datepicker.dates['mn'] = {\n        days: [\"Ням\", \"Даваа\", \"Мягмар\", \"Лхагва\", \"Пүрэв\", \"Баасан\", \"Бямба\"],\n        daysShort: [\"Ням\", \"Дав\", \"Мяг\", \"Лха\", \"Пүр\", \"Баа\", \"Бям\"],\n        daysMin: [\"Ня\", \"Да\", \"Мя\", \"Лх\", \"Пү\", \"Ба\", \"Бя\"],\n        months: [\"Хулгана\", \"Үхэр\", \"Бар\", \"Туулай\", \"Луу\", \"Могой\", \"Морь\", \"Хонь\", \"Бич\", \"Тахиа\", \"Нохой\", \"Гахай\"],\n        monthsShort: [\"Хул\", \"Үхэ\", \"Бар\", \"Туу\", \"Луу\", \"Мог\", \"Мор\", \"Хон\", \"Бич\", \"Тах\", \"Нох\", \"Гах\"],\n        today: \"Өнөөдөр\",\n        clear: \"Тодорхой\",\n        format: \"yyyy.mm.dd\",\n        weekStart: 1\n    };\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.mr.js",
    "content": "/**\n * Marathi translation for bootstrap-datepicker\n * Sushant Pimple <pimplesushant@gmail.com>\n */\n; (function($){\n\t$.fn.datepicker.dates['mar'] = {\n\t\tdays: [\"रविवार\", \"सोमवार\", \"मंगळवार\", \"बुधवार\", \"गुरुवार\", \"शुक्रवार\", \"शनिवार\"],\n\t\tdaysShort: [\"रवि\", \"सोम\", \"मंगळ\", \"बुध\", \"गुरु\", \"शुक्र\", \"शनि\"],\n\t\tdaysMin: [\"र\", \"सो\", \"मं\", \"बु\", \"गु\", \"शु\", \"श\"],\n\t\tmonths: [\"जानेवारी\", \"फेब्रुवारी\", \"मार्च\", \"एप्रिल\", \"मे\", \"जून\", \"जुलै\", \"ऑगस्ट\", \"सप्टेंबर\", \"ऑक्टोबर\", \"नोव्हेंबर\", \"डिसेंबर\"],\n\t\tmonthsShort: [\"जाने.\", \"फेब्रु.\", \"मार्च\", \"एप्रिल\", \"मे\", \"जून\", \"जुलै\", \"ऑगस्ट\", \"सप्टें.\", \"ऑक्टो.\", \"नोव्हें.\", \"डिसें.\"],\n\t\ttoday: \"आज\",\n\t\tmonthsTitle: \"महीने\",\n\t\tclear: \"हटवा\",\n\t\tweekStart: 1,\n\t\tformat: \"dd / mm / yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.ms.js",
    "content": "/**\n * Malay translation for bootstrap-datepicker\n * Ateman Faiz <noorulfaiz@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['ms'] = {\n\t\tdays: [\"Ahad\", \"Isnin\", \"Selasa\", \"Rabu\", \"Khamis\", \"Jumaat\", \"Sabtu\"],\n\t\tdaysShort: [\"Aha\", \"Isn\", \"Sel\", \"Rab\", \"Kha\", \"Jum\", \"Sab\"],\n\t\tdaysMin: [\"Ah\", \"Is\", \"Se\", \"Ra\", \"Kh\", \"Ju\", \"Sa\"],\n\t\tmonths: [\"Januari\", \"Februari\", \"Mac\", \"April\", \"Mei\", \"Jun\", \"Julai\", \"Ogos\", \"September\", \"Oktober\", \"November\", \"Disember\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Ogo\", \"Sep\", \"Okt\", \"Nov\", \"Dis\"],\n\t\ttoday: \"Hari Ini\",\n        clear: \"Bersihkan\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.nl-BE.js",
    "content": "/**\n * Belgium-Dutch translation for bootstrap-datepicker\n * Julien Poulin <poulin_julien@hotmail.com>\n */\n;(function($){\n  $.fn.datepicker.dates['nl-BE'] = {\n    days: [\"zondag\", \"maandag\", \"dinsdag\", \"woensdag\", \"donderdag\", \"vrijdag\", \"zaterdag\"],\n    daysShort: [\"zo\", \"ma\", \"di\", \"wo\", \"do\", \"vr\", \"za\"],\n    daysMin: [\"zo\", \"ma\", \"di\", \"wo\", \"do\", \"vr\", \"za\"],\n    months: [\"januari\", \"februari\", \"maart\", \"april\", \"mei\", \"juni\", \"juli\", \"augustus\", \"september\", \"oktober\", \"november\", \"december\"],\n    monthsShort: [\"jan\", \"feb\", \"mrt\", \"apr\", \"mei\", \"jun\", \"jul\", \"aug\", \"sep\", \"okt\", \"nov\", \"dec\"],\n    today: \"Vandaag\",\n    monthsTitle: \"Maanden\",\n    clear: \"Leegmaken\",\n    weekStart: 1,\n    format: \"dd/mm/yyyy\"\n  };\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.nl.js",
    "content": "/**\n * Dutch translation for bootstrap-datepicker\n * Reinier Goltstein <mrgoltstein@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['nl'] = {\n\t\tdays: [\"zondag\", \"maandag\", \"dinsdag\", \"woensdag\", \"donderdag\", \"vrijdag\", \"zaterdag\"],\n\t\tdaysShort: [\"zo\", \"ma\", \"di\", \"wo\", \"do\", \"vr\", \"za\"],\n\t\tdaysMin: [\"zo\", \"ma\", \"di\", \"wo\", \"do\", \"vr\", \"za\"],\n\t\tmonths: [\"januari\", \"februari\", \"maart\", \"april\", \"mei\", \"juni\", \"juli\", \"augustus\", \"september\", \"oktober\", \"november\", \"december\"],\n\t\tmonthsShort: [\"jan\", \"feb\", \"mrt\", \"apr\", \"mei\", \"jun\", \"jul\", \"aug\", \"sep\", \"okt\", \"nov\", \"dec\"],\n\t\ttoday: \"Vandaag\",\n\t\tmonthsTitle: \"Maanden\",\n\t\tclear: \"Wissen\",\n\t\tweekStart: 1,\n\t\tformat: \"dd-mm-yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.no.js",
    "content": "/**\n * Norwegian translation for bootstrap-datepicker\n * George Gooding <george@nettsentrisk.no>\n */\n;(function($){\n  $.fn.datepicker.dates['no'] = {\n    days: ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'],\n    daysShort: ['søn', 'man', 'tir', 'ons', 'tor', 'fre', 'lør'],\n    daysMin: ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'],\n    months: ['januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember'],\n    monthsShort: ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'],\n    today: 'i dag',\n    monthsTitle: 'Måneder',\n    clear: 'Nullstill',\n    weekStart: 1,\n    format: 'dd.mm.yyyy'\n  };\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.oc.js",
    "content": "/**\n * Occitan translation for bootstrap-datepicker\n */\n;(function($){\n\t$.fn.datepicker.dates['oc'] = {\n\t\tdays: [\"Dimenge\", \"Diluns\", \"Dimars\", \"Dimècres\", \"Dijòus\", \"Divendres\", \"Dissabte\"],\n\t\tdaysShort: [\"Dim\",  \"Dil\", \"Dmr\", \"Dmc\", \"Dij\", \"Div\", \"Dis\"],\n\t\tdaysMin: [\"dg\", \"dl\", \"dr\", \"dc\", \"dj\", \"dv\", \"ds\"],\n\t\tmonths: [\"Genièr\", \"Febrièr\", \"Març\", \"Abrial\", \"Mai\", \"Junh\", \"Julhet\", \"Agost\", \"Setembre\", \"Octobre\", \"Novembre\", \"Decembre\"],\n\t\tmonthsShort: [\"Gen\", \"Feb\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Oct\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Uèi\",\n\t\tmonthsTitle: \"Meses\",\n\t\tclear: \"Escafar\",\n\t\tweekStart: 1,\n\t\tformat: \"dd/mm/yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.pl.js",
    "content": "/**\n * Polish translation for bootstrap-datepicker\n * Robert <rtpm@gazeta.pl>\n */\n;(function($){\n    $.fn.datepicker.dates['pl'] = {\n        days: [\"Niedziela\", \"Poniedziałek\", \"Wtorek\", \"Środa\", \"Czwartek\", \"Piątek\", \"Sobota\"],\n        daysShort: [\"Niedz.\", \"Pon.\", \"Wt.\", \"Śr.\", \"Czw.\", \"Piąt.\", \"Sob.\"],\n        daysMin: [\"Ndz.\", \"Pn.\", \"Wt.\", \"Śr.\", \"Czw.\", \"Pt.\", \"Sob.\"],\n        months: [\"Styczeń\", \"Luty\", \"Marzec\", \"Kwiecień\", \"Maj\", \"Czerwiec\", \"Lipiec\", \"Sierpień\", \"Wrzesień\", \"Październik\", \"Listopad\", \"Grudzień\"],\n        monthsShort: [\"Sty.\", \"Lut.\", \"Mar.\", \"Kwi.\", \"Maj\", \"Cze.\", \"Lip.\", \"Sie.\", \"Wrz.\", \"Paź.\", \"Lis.\", \"Gru.\"],\n        today: \"Dzisiaj\",\n        weekStart: 1,\n        clear: \"Wyczyść\",\n        format: \"dd.mm.yyyy\"\n    };\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.pt-BR.js",
    "content": "/**\n * Brazilian translation for bootstrap-datepicker\n * Cauan Cabral <cauan@radig.com.br>\n */\n;(function($){\n\t$.fn.datepicker.dates['pt-BR'] = {\n\t\tdays: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"],\n\t\tdaysShort: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sáb\"],\n\t\tdaysMin: [\"Do\", \"Se\", \"Te\", \"Qu\", \"Qu\", \"Se\", \"Sa\"],\n\t\tmonths: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\n\t\tmonthsShort: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"],\n\t\ttoday: \"Hoje\",\n\t\tmonthsTitle: \"Meses\",\n\t\tclear: \"Limpar\",\n\t\tformat: \"dd/mm/yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.pt.js",
    "content": "/**\n * Portuguese translation for bootstrap-datepicker\n * Original code: Cauan Cabral <cauan@radig.com.br>\n * Tiago Melo <tiago.blackcode@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['pt'] = {\n\t\tdays: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"],\n\t\tdaysShort: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sáb\"],\n\t\tdaysMin: [\"Do\", \"Se\", \"Te\", \"Qu\", \"Qu\", \"Se\", \"Sa\"],\n\t\tmonths: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\n\t\tmonthsShort: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"],\n\t\ttoday: \"Hoje\",\n\t\tmonthsTitle: \"Meses\",\n\t\tclear: \"Limpar\",\n\t\tformat: \"dd/mm/yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.ro.js",
    "content": "/**\n * Romanian translation for bootstrap-datepicker\n * Cristian Vasile <cristi.mie@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['ro'] = {\n\t\tdays: [\"Duminică\", \"Luni\", \"Marţi\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sâmbătă\"],\n\t\tdaysShort: [\"Dum\", \"Lun\", \"Mar\", \"Mie\", \"Joi\", \"Vin\", \"Sâm\"],\n\t\tdaysMin: [\"Du\", \"Lu\", \"Ma\", \"Mi\", \"Jo\", \"Vi\", \"Sâ\"],\n\t\tmonths: [\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"Noiembrie\", \"Decembrie\"],\n\t\tmonthsShort: [\"Ian\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Iun\", \"Iul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Astăzi\",\n\t\tclear: \"Șterge\",\n\t\tweekStart: 1,\n\t\tformat: \"dd/mm/yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.rs-latin.js",
    "content": "/**\n * Serbian latin translation for bootstrap-datepicker\n * Bojan Milosavlević <milboj@gmail.com>\n *\n * DEPRECATED: This language code 'rs-latin' is deprecated (invalid serbian language code) and will be removed in 2.0.\n */\n;(function($){\n\t$.fn.datepicker.dates['rs-latin'] = {\n\t\tdays: [\"Nedelja\",\"Ponedeljak\", \"Utorak\", \"Sreda\", \"Četvrtak\", \"Petak\", \"Subota\"],\n\t\tdaysShort: [\"Ned\", \"Pon\", \"Uto\", \"Sre\", \"Čet\", \"Pet\", \"Sub\"],\n\t\tdaysMin: [\"N\", \"Po\", \"U\", \"Sr\", \"Č\", \"Pe\", \"Su\"],\n\t\tmonths: [\"Januar\", \"Februar\", \"Mart\", \"April\", \"Maj\", \"Jun\", \"Jul\", \"Avgust\", \"Septembar\", \"Oktobar\", \"Novembar\", \"Decembar\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Avg\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Danas\",\n\t\tweekStart: 1,\n\t\tformat: \"dd.mm.yyyy\"\n\t};\n\n\t$.fn.datepicker.deprecated('This language code \"rs-latin\" is deprecated (invalid serbian language code) and will be removed in 2.0. For Serbian latin support use \"sr-latin\" instead.');\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.rs.js",
    "content": "/**\n * Serbian cyrillic translation for bootstrap-datepicker\n * Bojan Milosavlević <milboj@gmail.com>\n *\n * DEPRECATED: This language code 'rs' is deprecated (invalid serbian language code) and will be removed in 2.0.\n */\n;(function($){\n\t$.fn.datepicker.dates['rs'] = {\n\t\tdays: [\"Недеља\",\"Понедељак\", \"Уторак\", \"Среда\", \"Четвртак\", \"Петак\", \"Субота\"],\n\t\tdaysShort: [\"Нед\", \"Пон\", \"Уто\", \"Сре\", \"Чет\", \"Пет\", \"Суб\"],\n\t\tdaysMin: [\"Н\", \"По\", \"У\", \"Ср\", \"Ч\", \"Пе\", \"Су\"],\n\t\tmonths: [\"Јануар\", \"Фебруар\", \"Март\", \"Април\", \"Мај\", \"Јун\", \"Јул\", \"Август\", \"Септембар\", \"Октобар\", \"Новембар\", \"Децембар\"],\n\t\tmonthsShort: [\"Јан\", \"Феб\", \"Мар\", \"Апр\", \"Мај\", \"Јун\", \"Јул\", \"Авг\", \"Сеп\", \"Окт\", \"Нов\", \"Дец\"],\n\t\ttoday: \"Данас\",\n\t\tweekStart: 1,\n\t\tformat: \"dd.mm.yyyy\"\n\t};\n\n\t$.fn.datepicker.deprecated('This language code \"rs\" is deprecated (invalid serbian language code) and will be removed in 2.0. For Serbian support use \"sr\" instead.');\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.ru.js",
    "content": "/**\n * Russian translation for bootstrap-datepicker\n * Victor Taranenko <darwin@snowdale.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['ru'] = {\n\t\tdays: [\"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среда\", \"Четверг\", \"Пятница\", \"Суббота\"],\n\t\tdaysShort: [\"Вск\", \"Пнд\", \"Втр\", \"Срд\", \"Чтв\", \"Птн\", \"Суб\"],\n\t\tdaysMin: [\"Вс\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"],\n\t\tmonths: [\"Январь\", \"Февраль\", \"Март\", \"Апрель\", \"Май\", \"Июнь\", \"Июль\", \"Август\", \"Сентябрь\", \"Октябрь\", \"Ноябрь\", \"Декабрь\"],\n\t\tmonthsShort: [\"Янв\", \"Фев\", \"Мар\", \"Апр\", \"Май\", \"Июн\", \"Июл\", \"Авг\", \"Сен\", \"Окт\", \"Ноя\", \"Дек\"],\n\t\ttoday: \"Сегодня\",\n\t\tclear: \"Очистить\",\n\t\tformat: \"dd.mm.yyyy\",\n\t\tweekStart: 1,\n    monthsTitle: 'Месяцы'\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.si.js",
    "content": "/**\n * Sinhala translation for bootstrap-datepicker\n * Chanaka Fernando <chanaka.fernando@hotmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['si'] = {\n\t\tdays: [\"ඉරිදා\", \"සඳුදා\", \"අඟහරුවාදා\", \"බදාදා\", \"බ්‍රහස්පතින්දා\", \"සිකුරාදා\", \"සෙනසුරාදා\"],\n\t\tdaysShort: [\"ඉරි\", \"සඳු\", \"අඟ\", \"බදා\", \"බ්‍රහ\", \"සිකු\", \"සෙන\"],\n\t\tdaysMin: [\"ඉ\", \"ස\", \"අ\", \"බ\", \"බ්‍ර\", \"සි\", \"සෙ\"],\n\t\tmonths: [\"ජනවාරි\", \"පෙබරවාරි\", \"මාර්තු\", \"අප්‍රේල්\", \"මැයි\", \"ජුනි\", \"ජූලි\", \"අගෝස්තු\", \"සැප්තැම්බර්\", \"ඔක්තෝබර්\", \"නොවැම්බර්\", \"දෙසැම්බර්\"],\n\t\tmonthsShort: [\"ජන\", \"පෙබ\", \"මාර්\", \"අප්‍රේ\", \"මැයි\", \"ජුනි\", \"ජූලි\", \"අගෝ\", \"සැප්\", \"ඔක්\", \"නොවැ\", \"දෙසැ\"],\n\t\ttoday: \"අද\",\n\t\tmonthsTitle: \"මාස\",\n\t\tclear: \"මකන්න\",\n\t\tweekStart: 0,\n\t\tformat: \"yyyy-mm-dd\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.sk.js",
    "content": "/**\n * Slovak translation for bootstrap-datepicker\n * Marek Lichtner <marek@licht.sk>\n * Fixes by Michal Remiš <michal.remis@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates[\"sk\"] = {\n\t\tdays: [\"Nedeľa\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"],\n\t\tdaysShort: [\"Ned\", \"Pon\", \"Uto\", \"Str\", \"Štv\", \"Pia\", \"Sob\"],\n\t\tdaysMin: [\"Ne\", \"Po\", \"Ut\", \"St\", \"Št\", \"Pia\", \"So\"],\n\t\tmonths: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Dnes\",\n\t\tclear: \"Vymazať\",\n\t\tweekStart: 1,\n\t\tformat: \"d.m.yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.sl.js",
    "content": "/**\n * Slovene translation for bootstrap-datepicker\n * Gregor Rudolf <gregor.rudolf@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['sl'] = {\n\t\tdays: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"],\n\t\tdaysShort: [\"Ned\", \"Pon\", \"Tor\", \"Sre\", \"Čet\", \"Pet\", \"Sob\"],\n\t\tdaysMin: [\"Ne\", \"Po\", \"To\", \"Sr\", \"Če\", \"Pe\", \"So\"],\n\t\tmonths: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Avg\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Danes\",\n\t\tweekStart: 1\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.sq.js",
    "content": "/**\n * Albanian translation for bootstrap-datepicker\n * Tomor Pupovci <https://www.github.com/ttomor>\n */\n;(function($){\n\t$.fn.datepicker.dates['sq'] = {\n\t\tdays: [\"E Diel\", \"E Hënë\", \"E Martē\", \"E Mërkurë\", \"E Enjte\", \"E Premte\", \"E Shtunë\"],\n\t\tdaysShort: [\"Die\", \"Hën\", \"Mar\", \"Mër\", \"Enj\", \"Pre\", \"Shtu\"],\n\t\tdaysMin: [\"Di\", \"Hë\", \"Ma\", \"Më\", \"En\", \"Pr\", \"Sht\"],\n\t\tmonths: [\"Janar\", \"Shkurt\", \"Mars\", \"Prill\", \"Maj\", \"Qershor\", \"Korrik\", \"Gusht\", \"Shtator\", \"Tetor\", \"Nëntor\", \"Dhjetor\"],\n\t\tmonthsShort: [\"Jan\", \"Shk\", \"Mar\", \"Pri\", \"Maj\", \"Qer\", \"Korr\", \"Gu\", \"Sht\", \"Tet\", \"Nën\", \"Dhjet\"],\n    monthsTitle: \"Muaj\",\n\t\ttoday: \"Sot\",\n    weekStart: 1,\n    format: \"dd/mm/yyyy\",\n    clear: \"Pastro\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.sr-latin.js",
    "content": "/**\n * Serbian latin translation for bootstrap-datepicker\n * Bojan Milosavlević <milboj@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['sr-latin'] = {\n\t\tdays: [\"Nedelja\",\"Ponedeljak\", \"Utorak\", \"Sreda\", \"Četvrtak\", \"Petak\", \"Subota\"],\n\t\tdaysShort: [\"Ned\", \"Pon\", \"Uto\", \"Sre\", \"Čet\", \"Pet\", \"Sub\"],\n\t\tdaysMin: [\"N\", \"Po\", \"U\", \"Sr\", \"Č\", \"Pe\", \"Su\"],\n\t\tmonths: [\"Januar\", \"Februar\", \"Mart\", \"April\", \"Maj\", \"Jun\", \"Jul\", \"Avgust\", \"Septembar\", \"Oktobar\", \"Novembar\", \"Decembar\"],\n\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Avg\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\n\t\ttoday: \"Danas\",\n\t\tweekStart: 1,\n\t\tformat: \"dd.mm.yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.sr.js",
    "content": "/**\n * Serbian cyrillic translation for bootstrap-datepicker\n * Bojan Milosavlević <milboj@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['sr'] = {\n\t\tdays: [\"Недеља\",\"Понедељак\", \"Уторак\", \"Среда\", \"Четвртак\", \"Петак\", \"Субота\"],\n\t\tdaysShort: [\"Нед\", \"Пон\", \"Уто\", \"Сре\", \"Чет\", \"Пет\", \"Суб\"],\n\t\tdaysMin: [\"Н\", \"По\", \"У\", \"Ср\", \"Ч\", \"Пе\", \"Су\"],\n\t\tmonths: [\"Јануар\", \"Фебруар\", \"Март\", \"Април\", \"Мај\", \"Јун\", \"Јул\", \"Август\", \"Септембар\", \"Октобар\", \"Новембар\", \"Децембар\"],\n\t\tmonthsShort: [\"Јан\", \"Феб\", \"Мар\", \"Апр\", \"Мај\", \"Јун\", \"Јул\", \"Авг\", \"Сеп\", \"Окт\", \"Нов\", \"Дец\"],\n\t\ttoday: \"Данас\",\n\t\tweekStart: 1,\n\t\tformat: \"dd.mm.yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.sv.js",
    "content": "/**\n * Swedish translation for bootstrap-datepicker\n * Patrik Ragnarsson <patrik@starkast.net>\n */\n;(function($){\n\t$.fn.datepicker.dates['sv'] = {\n\t\tdays: [\"söndag\", \"måndag\", \"tisdag\", \"onsdag\", \"torsdag\", \"fredag\", \"lördag\"],\n\t\tdaysShort: [\"sön\", \"mån\", \"tis\", \"ons\", \"tor\", \"fre\", \"lör\"],\n\t\tdaysMin: [\"sö\", \"må\", \"ti\", \"on\", \"to\", \"fr\", \"lö\"],\n\t\tmonths: [\"januari\", \"februari\", \"mars\", \"april\", \"maj\", \"juni\", \"juli\", \"augusti\", \"september\", \"oktober\", \"november\", \"december\"],\n\t\tmonthsShort: [\"jan\", \"feb\", \"mar\", \"apr\", \"maj\", \"jun\", \"jul\", \"aug\", \"sep\", \"okt\", \"nov\", \"dec\"],\n\t\ttoday: \"Idag\",\n\t\tformat: \"yyyy-mm-dd\",\n\t\tweekStart: 1,\n\t\tclear: \"Rensa\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.sw.js",
    "content": "/**\n * Swahili translation for bootstrap-datepicker\n * Edwin Mugendi <https://github.com/edwinmugendi>\n * Source: http://scriptsource.org/cms/scripts/page.php?item_id=entry_detail&uid=xnfaqyzcku\n */\n;(function($){\n    $.fn.datepicker.dates['sw'] = {\n        days: [\"Jumapili\", \"Jumatatu\", \"Jumanne\", \"Jumatano\", \"Alhamisi\", \"Ijumaa\", \"Jumamosi\"],\n        daysShort: [\"J2\", \"J3\", \"J4\", \"J5\", \"Alh\", \"Ij\", \"J1\"],\n        daysMin: [\"2\", \"3\", \"4\", \"5\", \"A\", \"I\", \"1\"],\n        months: [\"Januari\", \"Februari\", \"Machi\", \"Aprili\", \"Mei\", \"Juni\", \"Julai\", \"Agosti\", \"Septemba\", \"Oktoba\", \"Novemba\", \"Desemba\"],\n        monthsShort: [\"Jan\", \"Feb\", \"Mac\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\n        today: \"Leo\"\n    };\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.ta.js",
    "content": "/**\n * Tamil translation for bootstrap-datepicker\n * Abubacker Siddik A <abuabdul86@hotmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['ta'] = {\n\t\tdays: [\"ஞாயிறு\", \"திங்கள்\", \"செவ்வாய்\", \"புதன்\", \"வியாழன்\", \"வெள்ளி\", \"சனி\"],\n\t\tdaysShort: [\"ஞாயி\", \"திங்\", \"செவ்\", \"புத\", \"வியா\", \"வெள்\", \"சனி\"],\n\t\tdaysMin: [\"ஞா\", \"தி\", \"செ\", \"பு\", \"வி\", \"வெ\", \"ச\"],\n\t\tmonths: [\"ஜனவரி\", \"பிப்ரவரி\", \"மார்ச்\", \"ஏப்ரல்\", \"மே\", \"ஜூன்\", \"ஜூலை\", \"ஆகஸ்டு\", \"செப்டம்பர்\", \"அக்டோபர்\", \"நவம்பர்\", \"டிசம்பர்\"],\n\t\tmonthsShort: [\"ஜன\", \"பிப்\", \"மார்\", \"ஏப்\", \"மே\", \"ஜூன்\", \"ஜூலை\", \"ஆக\", \"செப்\", \"அக்\", \"நவ\", \"டிச\"],\n\t\ttoday: \"இன்று\",\n\t\tmonthsTitle: \"மாதங்கள்\",\n\t\tclear: \"நீக்கு\",\n\t\tweekStart: 1,\n\t\tformat: \"dd/mm/yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.tg.js",
    "content": "/**\n * Tajik (cyrillic) translation for bootstrap-datepicker\n * Bakhtiyor Bahritidinov <i@bakhtiyor.tj>\n * Orif N. Jr. <orif.zade@gmail.com>\n */\n;(function($){\n    $.fn.datepicker.dates['tg'] = {\n        days: [\"Якшанбе\", \"Душанбе\", \"Сешанбе\", \"Чоршанбе\", \"Панҷшанбе\", \"Ҷумъа\", \"Шанбе\"],\n        daysShort: [\"Яшб\", \"Дшб\", \"Сшб\", \"Чшб\", \"Пшб\", \"Ҷум\", \"Шнб\"],\n        daysMin: [\"Яш\", \"Дш\", \"Сш\", \"Чш\", \"Пш\", \"Ҷм\", \"Шб\"],\n        months: [\"Январ\", \"Феврал\", \"Март\", \"Апрел\", \"Май\", \"Июн\", \"Июл\", \"Август\", \"Сентябр\", \"Октябр\", \"Ноябр\", \"Декабр\"],\n        monthsShort: [\"Янв\", \"Фев\", \"Мар\", \"Апр\", \"Май\", \"Июн\", \"Июл\", \"Авг\", \"Сен\", \"Окт\", \"Ноя\", \"Дек\"],\n        today: \"Имрӯз\",\n        monthsTitle: \"Моҳҳо\",\n        clear: \"Тоза намудан\",\n        weekStart: 1,\n        format: \"dd.mm.yyyy\"\n    };\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.th.js",
    "content": "/**\n * Thai translation for bootstrap-datepicker\n * Suchau Jiraprapot <seroz24@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['th'] = {\n\t\tdays: [\"อาทิตย์\", \"จันทร์\", \"อังคาร\", \"พุธ\", \"พฤหัส\", \"ศุกร์\", \"เสาร์\", \"อาทิตย์\"],\n\t\tdaysShort: [\"อา\", \"จ\", \"อ\", \"พ\", \"พฤ\", \"ศ\", \"ส\", \"อา\"],\n\t\tdaysMin: [\"อา\", \"จ\", \"อ\", \"พ\", \"พฤ\", \"ศ\", \"ส\", \"อา\"],\n\t\tmonths: [\"มกราคม\", \"กุมภาพันธ์\", \"มีนาคม\", \"เมษายน\", \"พฤษภาคม\", \"มิถุนายน\", \"กรกฎาคม\", \"สิงหาคม\", \"กันยายน\", \"ตุลาคม\", \"พฤศจิกายน\", \"ธันวาคม\"],\n\t\tmonthsShort: [\"ม.ค.\", \"ก.พ.\", \"มี.ค.\", \"เม.ย.\", \"พ.ค.\", \"มิ.ย.\", \"ก.ค.\", \"ส.ค.\", \"ก.ย.\", \"ต.ค.\", \"พ.ย.\", \"ธ.ค.\"],\n\t\ttoday: \"วันนี้\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.tk.js",
    "content": "/**\n * Turkmen translation for bootstrap-datepicker\n * N'Bayramberdiyev <nbayramberdiyev@outlook.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['tk'] = {\n\t\tdays: [\"Ýekşenbe\", \"Duşenbe\", \"Sişenbe\", \"Çarşenbe\", \"Penşenbe\", \"Anna\", \"Şenbe\"],\n\t\tdaysShort: [\"Ýek\", \"Duş\", \"Siş\", \"Çar\", \"Pen\", \"Ann\", \"Şen\"],\n\t\tdaysMin: [\"Ýe\", \"Du\", \"Si\", \"Ça\", \"Pe\", \"An\", \"Şe\"],\n\t\tmonths: [\"Ýanwar\", \"Fewral\", \"Mart\", \"Aprel\", \"Maý\", \"Iýun\", \"Iýul\", \"Awgust\", \"Sentýabr\", \"Oktýabr\", \"Noýabr\", \"Dekabr\"],\n\t\tmonthsShort: [\"Ýan\", \"Few\", \"Mar\", \"Apr\", \"Maý\", \"Iýn\", \"Iýl\", \"Awg\", \"Sen\", \"Okt\", \"Noý\", \"Dek\"],\n\t\ttoday: \"Bu gün\",\n\t\tmonthsTitle: \"Aýlar\",\n\t\tclear: \"Aýyr\",\n\t\tweekStart: 1,\n\t\tformat: \"dd.mm.yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.tr.js",
    "content": "/**\n * Turkish translation for bootstrap-datepicker\n * Serkan Algur <kaisercrazy_2@hotmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['tr'] = {\n\t\tdays: [\"Pazar\", \"Pazartesi\", \"Salı\", \"Çarşamba\", \"Perşembe\", \"Cuma\", \"Cumartesi\"],\n\t\tdaysShort: [\"Pz\", \"Pzt\", \"Sal\", \"Çrş\", \"Prş\", \"Cu\", \"Cts\"],\n\t\tdaysMin: [\"Pz\", \"Pzt\", \"Sa\", \"Çr\", \"Pr\", \"Cu\", \"Ct\"],\n\t\tmonths: [\"Ocak\", \"Şubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"Ağustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"],\n\t\tmonthsShort: [\"Oca\", \"Şub\", \"Mar\", \"Nis\", \"May\", \"Haz\", \"Tem\", \"Ağu\", \"Eyl\", \"Eki\", \"Kas\", \"Ara\"],\n\t\ttoday: \"Bugün\",\n\t\tclear: \"Temizle\",\n\t\tweekStart: 1,\n\t\tformat: \"dd.mm.yyyy\"\n\t};\n}(jQuery));\n\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.uk.js",
    "content": "/**\n * Ukrainian translation for bootstrap-datepicker\n * Igor Polynets\n */\n;(function($){\n\t$.fn.datepicker.dates['uk'] = {\n\t\tdays: [\"Неділя\", \"Понеділок\", \"Вівторок\", \"Середа\", \"Четвер\", \"П'ятниця\", \"Субота\"],\n\t\tdaysShort: [\"Нед\", \"Пнд\", \"Втр\", \"Срд\", \"Чтв\", \"Птн\", \"Суб\"],\n\t\tdaysMin: [\"Нд\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"],\n\t\tmonths: [\"Січень\", \"Лютий\", \"Березень\", \"Квітень\", \"Травень\", \"Червень\", \"Липень\", \"Серпень\", \"Вересень\", \"Жовтень\", \"Листопад\", \"Грудень\"],\n\t\tmonthsShort: [\"Січ\", \"Лют\", \"Бер\", \"Кві\", \"Тра\", \"Чер\", \"Лип\", \"Сер\", \"Вер\", \"Жов\", \"Лис\", \"Гру\"],\n\t\ttoday: \"Сьогодні\",\n\t\tclear: \"Очистити\",\n\t\tformat: \"dd.mm.yyyy\",\n\t\tweekStart: 1\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.uz-cyrl.js",
    "content": "/**\n * Uzbek latin translation for bootstrap-datepicker\n * Kakhramonov Javlonbek <kakjavlon@gmail.com>\n */\n;(function($){\n    $.fn.datepicker.dates['uz-cyrl'] = {\n        days: [\"Якшанба\", \"Душанба\", \"Сешанба\", \"Чоршанба\", \"Пайшанба\", \"Жума\", \"Шанба\"],\n        daysShort: [\"Якш\", \"Ду\", \"Се\", \"Чор\", \"Пай\", \"Жу\", \"Ша\"],\n        daysMin: [\"Як\", \"Ду\", \"Се\", \"Чо\", \"Па\", \"Жу\", \"Ша\"],\n        months: [\"Январь\",\"Февраль\",\"Март\",\"Апрель\",\"Май\",\"Июнь\",\"Июль\",\"Август\",\"Сентябрь\",\"Октябрь\",\"Ноябрь\",\"Декабрь\"],\n        monthsShort: [\"Янв\",\"Фев\",\"Мар\",\"Апр\",\"Май\",\"Июн\",\"Июл\",\"Авг\",\"Сен\",\"Окт\",\"Ноя\",\"Дек\"],\n        today: \"Бугун\",\n        clear: \"Ўчириш\",\n        format: \"dd.mm.yyyy\",\n        weekStart: 1,\n        monthsTitle: 'Ойлар'\n    };\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.uz-latn.js",
    "content": "/**\n * Uzbek latin translation for bootstrap-datepicker\n * Kakhramonov Javlonbek <kakjavlon@gmail.com>\n */\n;(function($){\n    $.fn.datepicker.dates['uz-latn'] = {\n        days: [\"Yakshanba\", \"Dushanba\", \"Seshanba\", \"Chorshanba\", \"Payshanba\", \"Juma\", \"Shanba\"],\n        daysShort: [\"Yak\", \"Du\", \"Se\", \"Chor\", \"Pay\", \"Ju\", \"Sha\"],\n        daysMin: [\"Ya\", \"Du\", \"Se\", \"Cho\", \"Pa\", \"Ju\", \"Sha\"],\n        months: [\"Yanvar\", \"Fevral\", \"Mart\", \"Aprel\", \"May\", \"Iyun\", \"Iyul\", \"Avgust\", \"Sentabr\", \"Oktabr\", \"Noyabr\", \"Dekabr\"],\n        monthsShort: [\"Yan\", \"Fev\", \"Mar\", \"Apr\", \"May\", \"Iyn\", \"Iyl\", \"Avg\", \"Sen\", \"Okt\", \"Noy\", \"Dek\"],\n        today: \"Bugun\",\n        clear: \"O'chirish\",\n        format: \"dd.mm.yyyy\",\n        weekStart: 1,\n        monthsTitle: 'Oylar'\n    };\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.vi.js",
    "content": "/**\n * Vietnamese translation for bootstrap-datepicker\n * An Vo <https://github.com/anvoz/>\n */\n;(function($){\n\t$.fn.datepicker.dates['vi'] = {\n\t\tdays: [\"Chủ nhật\", \"Thứ hai\", \"Thứ ba\", \"Thứ tư\", \"Thứ năm\", \"Thứ sáu\", \"Thứ bảy\"],\n\t\tdaysShort: [\"CN\", \"Thứ 2\", \"Thứ 3\", \"Thứ 4\", \"Thứ 5\", \"Thứ 6\", \"Thứ 7\"],\n\t\tdaysMin: [\"CN\", \"T2\", \"T3\", \"T4\", \"T5\", \"T6\", \"T7\"],\n\t\tmonths: [\"Tháng 1\", \"Tháng 2\", \"Tháng 3\", \"Tháng 4\", \"Tháng 5\", \"Tháng 6\", \"Tháng 7\", \"Tháng 8\", \"Tháng 9\", \"Tháng 10\", \"Tháng 11\", \"Tháng 12\"],\n\t\tmonthsShort: [\"Th1\", \"Th2\", \"Th3\", \"Th4\", \"Th5\", \"Th6\", \"Th7\", \"Th8\", \"Th9\", \"Th10\", \"Th11\", \"Th12\"],\n\t\ttoday: \"Hôm nay\",\n\t\tclear: \"Xóa\",\n\t\tformat: \"dd/mm/yyyy\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.zh-CN.js",
    "content": "/**\n * Simplified Chinese translation for bootstrap-datepicker\n * Yuan Cheung <advanimal@gmail.com>\n */\n;(function($){\n\t$.fn.datepicker.dates['zh-CN'] = {\n\t\tdays: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\n\t\tdaysShort: [\"周日\", \"周一\", \"周二\", \"周三\", \"周四\", \"周五\", \"周六\"],\n\t\tdaysMin: [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"],\n\t\tmonths: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\n\t\tmonthsShort: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\n\t\ttoday: \"今天\",\n\t\tmonthsTitle: \"选择月份\",\n\t\tclear: \"清除\",\n\t\tformat: \"yyyy-mm-dd\",\n\t\ttitleFormat: \"yyyy年mm月\",\n\t\tweekStart: 1\n\t};\n}(jQuery));\n"
  },
  {
    "path": "js/locales/bootstrap-datepicker.zh-TW.js",
    "content": "/**\n * Traditional Chinese translation for bootstrap-datepicker\n * Rung-Sheng Jang <daniel@i-trend.co.cc>\n * FrankWu  <frankwu100@gmail.com> Fix more appropriate use of Traditional Chinese habit\n */\n;(function($){\n\t$.fn.datepicker.dates['zh-TW'] = {\n\t\tdays: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\n\t\tdaysShort: [\"週日\", \"週一\", \"週二\", \"週三\", \"週四\", \"週五\", \"週六\"],\n\t\tdaysMin: [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"],\n\t\tmonths: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\n\t\tmonthsShort: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\n\t\ttoday: \"今天\",\n\t\tmonthsTitle: \"月份\",\n\t\tformat: \"yyyy/mm/dd\",\n\t\tweekStart: 0,\n\t\ttitleFormat: \"yyyy年mm月\",\n\t\tclear: \"清除\"\n\t};\n}(jQuery));\n"
  },
  {
    "path": "less/.csslintrc",
    "content": "{\n  \"adjoining-classes\": false,\n  \"box-sizing\": false,\n  \"box-model\": false,\n  \"compatible-vendor-prefixes\": false,\n  \"floats\": false,\n  \"font-sizes\": false,\n  \"gradients\": false,\n  \"important\": false,\n  \"known-properties\": false,\n  \"outline-none\": false,\n  \"qualified-headings\": false,\n  \"regex-selectors\": false,\n  \"shorthand\": false,\n  \"text-indent\": false,\n  \"unique-headings\": false,\n  \"universal-selector\": false,\n  \"unqualified-attributes\": false\n}\n"
  },
  {
    "path": "less/datepicker.less",
    "content": ".datepicker {\n\tpadding: 4px;\n\t.border-radius(@baseBorderRadius);\n\t&-inline {\n\t\twidth: 220px;\n\t}\n\tdirection: ltr;\n\t&-rtl {\n\t\tdirection: rtl;\n\t\t&.dropdown-menu { left: auto; }\n\t\ttable tr td span {\n\t\t\tfloat: right;\n\t\t}\n\t}\n\t&-dropdown {\n\t\ttop: 0;\n\t\tleft: 0;\n\t\t&:before {\n\t\t\tcontent: '';\n\t\t\tdisplay: inline-block;\n\t\t\tborder-left:   7px solid transparent;\n\t\t\tborder-right:  7px solid transparent;\n\t\t\tborder-bottom: 7px solid @grayLight;\n\t\t\tborder-top:    0;\n\t\t\tborder-bottom-color: rgba(0,0,0,.2);\n\t\t\tposition: absolute;\n\t\t}\n\t\t&:after {\n\t\t\tcontent: '';\n\t\t\tdisplay: inline-block;\n\t\t\tborder-left:   6px solid transparent;\n\t\t\tborder-right:  6px solid transparent;\n\t\t\tborder-bottom: 6px solid @white;\n\t\t\tborder-top:    0;\n\t\t\tposition: absolute;\n\t\t}\n\t\t&.datepicker-orient-left:before   { left: 6px; }\n\t\t&.datepicker-orient-left:after    { left: 7px; }\n\t\t&.datepicker-orient-right:before  { right: 6px; }\n\t\t&.datepicker-orient-right:after   { right: 7px; }\n\t\t&.datepicker-orient-bottom:before { top: -7px; }\n\t\t&.datepicker-orient-bottom:after  { top: -6px; }\n\t\t&.datepicker-orient-top:before {\n\t\t\tbottom: -7px;\n\t\t\tborder-bottom: 0;\n\t\t\tborder-top:    7px solid @grayLight;\n\t\t}\n\t\t&.datepicker-orient-top:after {\n\t\t\tbottom: -6px;\n\t\t\tborder-bottom: 0;\n\t\t\tborder-top:    6px solid @white;\n\t\t}\n\t}\n\ttable {\n\t\tmargin: 0;\n\t\t-webkit-touch-callout: none;\n\t\t-webkit-user-select: none;\n\t\t-khtml-user-select: none;\n\t\t-moz-user-select: none;\n\t\t-ms-user-select: none;\n\t\tuser-select: none;\n\t}\n\ttd, th {\n\t\ttext-align: center;\n\t\twidth: 20px;\n\t\theight: 20px;\n\t\t.border-radius(4px);\n\n\t\tborder: none;\n\t}\n\t// Inline display inside a table presents some problems with\n\t// border and background colors.\n\t.table-striped & table tr {\n\t\ttd, th {\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\ttable tr td {\n\t\t&.day:hover,\n\t\t&.day.focused {\n\t\t\tbackground: @grayLighter;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t&.old,\n\t\t&.new {\n\t\t\tcolor: @grayLight;\n\t\t}\n\t\t&.disabled,\n\t\t&.disabled:hover {\n\t\t\tbackground: none;\n\t\t\tcolor: @grayLight;\n\t\t\tcursor: default;\n\t\t}\n\t\t&.highlighted {\n\t\t\tbackground: @infoBackground;\n\t\t\tborder-radius: 0;\n\t\t}\n\t\t&.today,\n\t\t&.today:hover,\n\t\t&.today.disabled,\n\t\t&.today.disabled:hover {\n\t\t\t@todayBackground: lighten(@orange, 30%);\n\t\t\t.buttonBackground(@todayBackground, spin(@todayBackground, 20));\n\t\t\tcolor: #000;\n\t\t}\n\t\t&.today:hover:hover { // Thank bootstrap 2.0 for this selector...\n\t\t\t// TODO: Bump min BS to 2.1, use @textColor in buttonBackground above\n\t\t\tcolor: #000;\n\t\t}\n\t\t&.today.active:hover {\n\t\t\tcolor: #fff;\n\t\t}\n\t\t&.range,\n\t\t&.range:hover,\n\t\t&.range.disabled,\n\t\t&.range.disabled:hover {\n\t\t\tbackground: @grayLighter;\n\t\t\t.border-radius(0);\n\t\t}\n\t\t&.range.today,\n\t\t&.range.today:hover,\n\t\t&.range.today.disabled,\n\t\t&.range.today.disabled:hover {\n\t\t\t@todayBackground: mix(@orange, @grayLighter, 50%);\n\t\t\t.buttonBackground(@todayBackground, spin(@todayBackground, 20));\n\t\t\t.border-radius(0);\n\t\t}\n\t\t&.selected,\n\t\t&.selected:hover,\n\t\t&.selected.disabled,\n\t\t&.selected.disabled:hover {\n\t\t\t.buttonBackground(lighten(@grayLight, 10), darken(@grayLight, 10));\n\t\t\tcolor: #fff;\n\t\t\ttext-shadow: 0 -1px 0 rgba(0,0,0,.25);\n\t\t}\n\t\t&.active,\n\t\t&.active:hover,\n\t\t&.active.disabled,\n\t\t&.active.disabled:hover {\n\t\t\t.buttonBackground(@btnPrimaryBackground, spin(@btnPrimaryBackground, 20));\n\t\t\tcolor: #fff;\n\t\t\ttext-shadow: 0 -1px 0 rgba(0,0,0,.25);\n\t\t}\n\t\tspan {\n\t\t\tdisplay: block;\n\t\t\twidth: 23%;\n\t\t\theight: 54px;\n\t\t\tline-height: 54px;\n\t\t\tfloat: left;\n\t\t\tmargin: 1%;\n\t\t\tcursor: pointer;\n\t\t\t.border-radius(4px);\n\t\t\t&:hover,\n\t\t\t&.focused {\n\t\t\t\tbackground: @grayLighter;\n\t\t\t}\n\t\t\t&.disabled,\n\t\t\t&.disabled:hover {\n\t\t\t\tbackground: none;\n\t\t\t\tcolor: @grayLight;\n\t\t\t\tcursor: default;\n\t\t\t}\n\t\t\t&.active,\n\t\t\t&.active:hover,\n\t\t\t&.active.disabled,\n\t\t\t&.active.disabled:hover {\n\t\t\t\t.buttonBackground(@btnPrimaryBackground, spin(@btnPrimaryBackground, 20));\n\t\t\t\tcolor: #fff;\n\t\t\t\ttext-shadow: 0 -1px 0 rgba(0,0,0,.25);\n\t\t\t}\n\t\t\t&.old,\n\t\t\t&.new {\n\t\t\t\tcolor: @grayLight;\n\t\t\t}\n\t\t}\n\t}\n\n\t.datepicker-switch {\n\t\twidth: 145px;\n\t}\n\n\t.datepicker-switch,\n\t.prev,\n\t.next,\n\ttfoot tr th {\n\t\tcursor: pointer;\n\t\t&:hover {\n\t\t\tbackground: @grayLighter;\n\t\t}\n\t}\n\n\t.prev, .next {\n\t\t&.disabled {\n\t\t\tvisibility: hidden;\n\t\t}\n\t}\n\n\t// Basic styling for calendar-week cells\n\t.cw {\n\t\tfont-size: 10px;\n\t\twidth: 12px;\n\t\tpadding: 0 2px 0 5px;\n\t\tvertical-align: middle;\n\t}\n}\n.input-append,\n.input-prepend {\n\t&.date .add-on {\n\t\tcursor: pointer;\n\n\t\ti {\n\t\t\tmargin-top: 3px;\n\t\t}\n\t}\n}\n.input-daterange {\n\tinput {\n\t\ttext-align:center;\n\t}\n\tinput:first-child {\n\t\t.border-radius(3px 0 0 3px);\n\t}\n\tinput:last-child {\n\t\t.border-radius(0 3px 3px 0);\n\t}\n\t.add-on {\n\t\tdisplay: inline-block;\n\t\twidth: auto;\n\t\tmin-width: 16px;\n\t\theight: @baseLineHeight;\n\t\tpadding: 4px 5px;\n\t\tfont-weight: normal;\n\t\tline-height: @baseLineHeight;\n\t\ttext-align: center;\n\t\ttext-shadow: 0 1px 0 @white;\n\t\tvertical-align: middle;\n\t\tbackground-color: @grayLighter;\n\t\tborder: 1px solid #ccc;\n\t\tmargin-left: -5px;\n\t\tmargin-right: -5px;\n\t}\n}\n"
  },
  {
    "path": "less/datepicker3.less",
    "content": ".datepicker {\n\tborder-radius: @border-radius-base;\n\t&-inline {\n\t\twidth: 220px;\n\t}\n\tdirection: ltr;\n\t&-rtl {\n\t\tdirection: rtl;\n\t\t&.dropdown-menu { left: auto; }\n\t\ttable tr td span {\n\t\t\tfloat: right;\n\t\t}\n\t}\n\t&-dropdown {\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tpadding: 4px;\n\t\t&:before {\n\t\t\tcontent: '';\n\t\t\tdisplay: inline-block;\n\t\t\tborder-left:   7px solid transparent;\n\t\t\tborder-right:  7px solid transparent;\n\t\t\tborder-bottom: 7px solid @dropdown-border;\n\t\t\tborder-top:    0;\n\t\t\tborder-bottom-color: rgba(0,0,0,.2);\n\t\t\tposition: absolute;\n\t\t}\n\t\t&:after {\n\t\t\tcontent: '';\n\t\t\tdisplay: inline-block;\n\t\t\tborder-left:   6px solid transparent;\n\t\t\tborder-right:  6px solid transparent;\n\t\t\tborder-bottom: 6px solid @dropdown-bg;\n\t\t\tborder-top:    0;\n\t\t\tposition: absolute;\n\t\t}\n\t\t&.datepicker-orient-left:before   { left: 6px; }\n\t\t&.datepicker-orient-left:after    { left: 7px; }\n\t\t&.datepicker-orient-right:before  { right: 6px; }\n\t\t&.datepicker-orient-right:after   { right: 7px; }\n\t\t&.datepicker-orient-bottom:before { top: -7px; }\n\t\t&.datepicker-orient-bottom:after  { top: -6px; }\n\t\t&.datepicker-orient-top:before {\n\t\t\tbottom: -7px;\n\t\t\tborder-bottom: 0;\n\t\t\tborder-top:    7px solid @dropdown-border;\n\t\t}\n\t\t&.datepicker-orient-top:after {\n\t\t\tbottom: -6px;\n\t\t\tborder-bottom: 0;\n\t\t\tborder-top:    6px solid @dropdown-bg;\n\t\t}\n\t}\n\ttable {\n\t\tmargin: 0;\n\t\t-webkit-touch-callout: none;\n\t\t-webkit-user-select: none;\n\t\t-khtml-user-select: none;\n\t\t-moz-user-select: none;\n\t\t-ms-user-select: none;\n\t\tuser-select: none;\n\t\ttr {\n\t\t\ttd, th {\n\t\t\t\ttext-align: center;\n\t\t\t\twidth: 30px;\n\t\t\t\theight: 30px;\n\t\t\t\tborder-radius: 4px;\n\t\t\t\tborder: none;\n\t\t\t}\n\t\t}\n\t}\n\t// Inline display inside a table presents some problems with\n\t// border and background colors.\n\t.table-striped & table tr {\n\t\ttd, th {\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\ttable tr td {\n\t\t&.old,\n\t\t&.new {\n\t\t\tcolor: @btn-link-disabled-color;\n\t\t}\n\t\t&.day:hover,\n\t\t&.focused {\n\t\t\tbackground: @gray-lighter;\n\t\t\tcursor: pointer;\n\t\t}\n\t\t&.disabled,\n\t\t&.disabled:hover {\n\t\t\tbackground: none;\n\t\t\tcolor: @btn-link-disabled-color;\n\t\t\tcursor: default;\n\t\t}\n\t\t&.highlighted {\n\t\t\t@highlighted-bg: @state-info-bg;\n\t\t\t.button-variant(#000, @highlighted-bg, darken(@highlighted-bg, 20%));\n\t\t\tborder-radius: 0;\n\n\t\t\t&.focused {\n\t\t\t\tbackground: darken(@highlighted-bg, 10%);\n\t\t\t}\n\n\t\t\t&.disabled,\n\t\t\t&.disabled:active {\n\t\t\t\tbackground: @highlighted-bg;\n\t\t\t\tcolor: @btn-link-disabled-color;\n\t\t\t}\n\t\t}\n\t\t&.today {\n\t\t\t@today-bg: lighten(orange, 30%);\n\t\t\t.button-variant(#000, @today-bg, darken(@today-bg, 20%));\n\n\t\t\t&.focused {\n\t\t\t\tbackground: darken(@today-bg, 10%);\n\t\t\t}\n\n\t\t\t&.disabled,\n\t\t\t&.disabled:active {\n\t\t\t\tbackground: @today-bg;\n\t\t\t\tcolor: @btn-link-disabled-color;\n\t\t\t}\n\t\t}\n\t\t&.range {\n\t\t\t@range-bg: @gray-lighter;\n\t\t\t.button-variant(#000, @range-bg, darken(@range-bg, 20%));\n\t\t\tborder-radius: 0;\n\n\t\t\t&.focused {\n\t\t\t\tbackground: darken(@range-bg, 10%);\n\t\t\t}\n\n\t\t\t&.disabled,\n\t\t\t&.disabled:active {\n\t\t\t\tbackground: @range-bg;\n\t\t\t\tcolor: @btn-link-disabled-color;\n\t\t\t}\n\t\t}\n\t\t&.range.highlighted {\n\t\t\t@range-highlighted-bg: mix(@state-info-bg, @gray-lighter, 50%);\n\t\t\t.button-variant(#000, @range-highlighted-bg, darken(@range-highlighted-bg, 20%));\n\n\t\t\t&.focused {\n\t\t\t\tbackground: darken(@range-highlighted-bg, 10%);\n\t\t\t}\n\n\t\t\t&.disabled,\n\t\t\t&.disabled:active {\n\t\t\t\tbackground: @range-highlighted-bg;\n\t\t\t\tcolor: @btn-link-disabled-color;\n\t\t\t}\n\t\t}\n\t\t&.range.today {\n\t\t\t@range-today-bg: mix(orange, @gray-lighter, 50%);\n\t\t\t.button-variant(#000, @range-today-bg, darken(@range-today-bg, 20%));\n\n\t\t\t&.disabled,\n\t\t\t&.disabled:active {\n\t\t\t\tbackground: @range-today-bg;\n\t\t\t\tcolor: @btn-link-disabled-color;\n\t\t\t}\n\t\t}\n\t\t&.selected,\n\t\t&.selected.highlighted {\n\t\t\t.button-variant(#fff, @gray-light, @gray);\n\t\t\ttext-shadow: 0 -1px 0 rgba(0,0,0,.25);\n\t\t}\n\t\t&.active,\n\t\t&.active.highlighted {\n\t\t\t.button-variant(@btn-primary-color, @btn-primary-bg, @btn-primary-border);\n\t\t\ttext-shadow: 0 -1px 0 rgba(0,0,0,.25);\n\t\t}\n\t\tspan {\n\t\t\tdisplay: block;\n\t\t\twidth: 23%;\n\t\t\theight: 54px;\n\t\t\tline-height: 54px;\n\t\t\tfloat: left;\n\t\t\tmargin: 1%;\n\t\t\tcursor: pointer;\n\t\t\tborder-radius: 4px;\n\t\t\t&:hover,\n\t\t\t&.focused {\n\t\t\t\tbackground: @gray-lighter;\n\t\t\t}\n\t\t\t&.disabled,\n\t\t\t&.disabled:hover {\n\t\t\t\tbackground: none;\n\t\t\t\tcolor: @btn-link-disabled-color;\n\t\t\t\tcursor: default;\n\t\t\t}\n\t\t\t&.active,\n\t\t\t&.active:hover,\n\t\t\t&.active.disabled,\n\t\t\t&.active.disabled:hover {\n\t\t\t\t.button-variant(@btn-primary-color, @btn-primary-bg, @btn-primary-border);\n\t\t\t\ttext-shadow: 0 -1px 0 rgba(0,0,0,.25);\n\t\t\t}\n\t\t\t&.old,\n\t\t\t&.new {\n\t\t\t\tcolor: @btn-link-disabled-color;\n\t\t\t}\n\t\t}\n\t}\n\n\t.datepicker-switch {\n\t\twidth: 145px;\n\t}\n\n\t.datepicker-switch,\n\t.prev,\n\t.next,\n\ttfoot tr th {\n\t\tcursor: pointer;\n\t\t&:hover {\n\t\t\tbackground: @gray-lighter;\n\t\t}\n\t}\n\n\t.prev, .next {\n\t\t&.disabled {\n\t\t\tvisibility: hidden;\n\t\t}\n\t}\n\n\t// Basic styling for calendar-week cells\n\t.cw {\n\t\tfont-size: 10px;\n\t\twidth: 12px;\n\t\tpadding: 0 2px 0 5px;\n\t\tvertical-align: middle;\n\t}\n}\n.input-group.date .input-group-addon {\n\tcursor: pointer;\n}\n.input-daterange {\n\twidth: 100%;\n\tinput {\n\t\ttext-align: center;\n\t}\n\tinput:first-child {\n\t\tborder-radius: 3px 0 0 3px;\n\t}\n\tinput:last-child {\n\t\tborder-radius: 0 3px 3px 0;\n\t}\n\t.input-group-addon {\n\t\twidth: auto;\n\t\tmin-width: 16px;\n\t\tpadding: 4px 5px;\n\t\tline-height: @line-height-base;\n\t\tborder-width: 1px 0;\n\t\tmargin-left: -5px;\n\t\tmargin-right: -5px;\n\t}\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"bootstrap-datepicker\",\n  \"description\": \"A datepicker for Bootstrap\",\n  \"version\": \"1.10.0\",\n  \"license\": \"Apache-2.0\",\n  \"keywords\": [\n    \"datepicker\",\n    \"bootstrap\"\n  ],\n  \"main\": \"./dist/js/bootstrap-datepicker.js\",\n  \"files\": [\n    \"build\",\n    \"dist\",\n    \"js/**/*.js\",\n    \"less/*.less\",\n    \"LICENSE\"\n  ],\n  \"homepage\": \"https://github.com/uxsolutions/bootstrap-datepicker\",\n  \"author\": \"Andrew Rowls <eternicode@gmail.com>\",\n  \"scripts\": {\n    \"test\": \"grunt test\",\n    \"screenshots\": \"node ./docs/screenshots.js\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/uxsolutions/bootstrap-datepicker.git\"\n  },\n  \"dependencies\": {\n    \"jquery\": \">=3.4.0 <4.0.0\"\n  },\n  \"devDependencies\": {\n    \"grunt\": \"^1.0.4\",\n    \"grunt-banner\": \"~0.6.0\",\n    \"grunt-contrib-clean\": \"^1.0.0\",\n    \"grunt-contrib-compress\": \"^1.5.0\",\n    \"grunt-contrib-concat\": \"^1.0.1\",\n    \"grunt-contrib-csslint\": \"^2.0.0\",\n    \"grunt-contrib-cssmin\": \"^1.0.2\",\n    \"grunt-contrib-jshint\": \"^1.1.0\",\n    \"grunt-contrib-less\": \"^1.4.0\",\n    \"grunt-contrib-qunit\": \"^1.2.0\",\n    \"grunt-contrib-uglify\": \"^2.0.0\",\n    \"grunt-jscs\": \"^3.0.1\",\n    \"grunt-string-replace\": \"^1.3.1\",\n    \"load-grunt-tasks\": \"^3.5.2\",\n    \"puppeteer\": \"1.18.1\",\n    \"time-grunt\": \"^1.4.0\"\n  }\n}\n"
  },
  {
    "path": "tests/README.md",
    "content": "Unit tests, written with [QUnit](https://qunitjs.com), are used to\nexpose bugs for squashing, prevent bugs from respawning, and suppress new\nbugs when adding new features and making changes.\n\n# Running the tests\n\nThe simplest way to run the tests is to open `tests/tests.html` in your browser.\nThe test suites will automatically run themselves and present their results.\n\nTo run the tests from the command line (after running jshint and jscs, which is\nrecommended), install Grunt and run the `test` task from anywhere within the\nrepo:\n\n    $ grunt test\n\n# Adding tests\n\nTests go in js files in the `tests/suites/` directory tree. QUnit organizes\ntests into suites called \"modules\"; there is one module per js file.  If the\ntests you are adding do not fit into an existing module, create a new one at\n`tests/suites/<new module>.js`, where `<new module>` is a broad yet\ndescriptive name for the suite.  If tests have many year-specific cases (ie,\nbehave differently in leap years vs normal years, or have specific buggy\nbehavior in a certain year), create the module in a new directory,\n`tests/suites/<new module>/<year>.js`, where `<new module>` is the decriptive\nname and `<year>` is the four-digit year the tests pertain to.\n\nIn order for new tests to be run, they must be imported into `tests/tests.html`.\nFind the script includes headed by the html comment `<!-- Test suites -->`, and\nadd a new one to the list which includes the new js files.\n"
  },
  {
    "path": "tests/assets/coverage.js",
    "content": "(function(){\n    //we want this at global scope so outside callers can find it. In a more realistic implementation we\n    //should probably put it in a namespace.\n    window.getCoverageByLine = function(silent) {\n        var key = null;\n        var lines = null;\n        var source = null;\n        //look for code coverage data\n        if (typeof window._$jscoverage === 'object') {\n            for (key in _$jscoverage) {}\n            lines = _$jscoverage[key];\n        }\n\n        if (!lines && !silent) {\n           console.log('code coverage data is NOT available');\n        }\n\n        return { 'key': key, 'lines': lines };\n    };\n\n    QUnit.done = function(t) {\n        var cvgInfo = getCoverageByLine(true);\n        if (!!cvgInfo.key) {\n            var testableLines = 0;\n            var testedLines = 0;\n            var untestableLines = 0;\n            for (lineIdx in cvgInfo.lines) {\n                var cvg = cvgInfo.lines[lineIdx];\n                if (typeof cvg === 'number') {\n                    testableLines += 1;\n                    if (cvg > 0) {\n                        testedLines += 1;\n                    }\n                } else {\n                    untestableLines += 1;\n                }\n            }\n            var coverage = '' + Math.floor(100 * testedLines / testableLines) + '%';\n\n            var result = document.getElementById('qunit-testresult');\n            if (result != null) {\n                result.innerHTML = result.innerHTML + ' ' + coverage + ' test coverage of ' + cvgInfo.key;\n            } else {\n                console.log('can\\'t find test-result element to update');\n            }\n        }\n    };\n}());"
  },
  {
    "path": "tests/assets/mock.js",
    "content": ";(function(){\n\nwindow.patch_date = function(f){\n    const NativeDate = window.Date;\n    const date = function date(y,m,d,h,i,s,j){\n        switch(arguments.length){\n            case 0: return new NativeDate(date.now());\n            case 1: return new NativeDate(y);\n            case 2: return new NativeDate(y,m);\n            case 3: return new NativeDate(y,m,d);\n            case 4: return new NativeDate(y,m,d,h);\n            case 5: return new NativeDate(y,m,d,h,i);\n            case 6: return new NativeDate(y,m,d,h,i,s);\n            case 7: return new NativeDate(y,y,m,d,h,i,s,j);\n        }\n    };\n    date.now = NativeDate.now;\n    date.UTC = NativeDate.UTC;\n    return function(){\n        Array.prototype.push.call(arguments, date);\n        window.Date = date;\n        f.apply(this, arguments);\n        window.Date = NativeDate;\n    };\n};\n\nwindow.patch_show_hide = function(f){\n    var oldShow = $.fn.show,\n        newShow = function () {\n            $(this).removeClass('foo');\n            return oldShow.apply(this, arguments);\n        };\n\n    var oldHide = $.fn.hide,\n        newHide = function () {\n            $(this).addClass('foo');\n            return oldHide.apply(this, arguments);\n        };\n\n    return function(){\n        $.fn.show = newShow;\n        $.fn.hide = newHide;\n        f.apply(this, arguments);\n        $.fn.show = oldShow;\n        $.fn.hide = oldHide;\n    };\n};\n\n}());\n"
  },
  {
    "path": "tests/assets/qunit-logging.js",
    "content": "// Dummy logging calls (ie, if tests are run in IE)\nwindow.console = window.console || {};\nwindow.console.log = window.console.log || function(){};\nwindow.console.debug = window.console.debug || function(){};\nwindow.console.info = window.console.info || function(){};\nwindow.console.warn = window.console.warn || function(){};\nwindow.console.error = window.console.error || function(){};\n\n(function() {\n   var modName, testName;\n\n   //arg: { name }\n    QUnit.testStart = function(t) {\n        modName = t.module;\n        testName = t.name;\n    };\n\n    //arg: { name, failed, passed, total }\n    QUnit.testDone = function(t) {\n        if (t.failed)\n            console.log('Test \"' + t.module + ': ' + t.name + '\" completed: ' + (0 === t.failed ? 'pass' : 'FAIL') + '\\n')\n    };\n\n    //{ result, actual, expected, message }\n    QUnit.log = function(t) {\n        if (!t.result)\n            console.log('Test \"' + modName + ': ' + testName + '\" assertion failed. Expected <' + t.expected + '> Actual <' + t.actual + '>' + (t.message ? ': \\'' + t.message + '\\'' : ''));\n    };\n}());\n"
  },
  {
    "path": "tests/assets/qunit.css",
    "content": "/**\n * QUnit v1.5.0 - A JavaScript Unit Testing Framework\n *\n * http://docs.jquery.com/QUnit\n *\n * Copyright (c) 2012 John Resig, Jörn Zaefferer\n * Dual licensed under the MIT (MIT-LICENSE.txt)\n * or GPL (GPL-LICENSE.txt) licenses.\n */\n\n/** Font Family and Sizes */\n\n#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {\n\tfont-family: \"Helvetica Neue Light\", \"HelveticaNeue-Light\", \"Helvetica Neue\", Calibri, Helvetica, Arial, sans-serif;\n}\n\n#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }\n#qunit-tests { font-size: smaller; }\n\n\n/** Resets */\n\n#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n\n/** Header */\n\n#qunit-header {\n\tpadding: 0.5em 0 0.5em 1em;\n\n\tcolor: #8699a4;\n\tbackground-color: #0d3349;\n\n\tfont-size: 1.5em;\n\tline-height: 1em;\n\tfont-weight: normal;\n\n\tborder-radius: 15px 15px 0 0;\n\t-moz-border-radius: 15px 15px 0 0;\n\t-webkit-border-top-right-radius: 15px;\n\t-webkit-border-top-left-radius: 15px;\n}\n\n#qunit-header a {\n\ttext-decoration: none;\n\tcolor: #c2ccd1;\n}\n\n#qunit-header a:hover,\n#qunit-header a:focus {\n\tcolor: #fff;\n}\n\n#qunit-header label {\n\tdisplay: inline-block;\n}\n\n#qunit-banner {\n\theight: 5px;\n}\n\n#qunit-testrunner-toolbar {\n\tpadding: 0.5em 0 0.5em 2em;\n\tcolor: #5E740B;\n\tbackground-color: #eee;\n}\n\n#qunit-userAgent {\n\tpadding: 0.5em 0 0.5em 2.5em;\n\tbackground-color: #2b81af;\n\tcolor: #fff;\n\ttext-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;\n}\n\n\n/** Tests: Pass/Fail */\n\n#qunit-tests {\n\tlist-style-position: inside;\n}\n\n#qunit-tests li {\n\tpadding: 0.4em 0.5em 0.4em 2.5em;\n\tborder-bottom: 1px solid #fff;\n\tlist-style-position: inside;\n}\n\n#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running  {\n\tdisplay: none;\n}\n\n#qunit-tests li strong {\n\tcursor: pointer;\n}\n\n#qunit-tests li a {\n\tpadding: 0.5em;\n\tcolor: #c2ccd1;\n\ttext-decoration: none;\n}\n#qunit-tests li a:hover,\n#qunit-tests li a:focus {\n\tcolor: #000;\n}\n\n#qunit-tests ol {\n\tmargin-top: 0.5em;\n\tpadding: 0.5em;\n\n\tbackground-color: #fff;\n\n\tborder-radius: 15px;\n\t-moz-border-radius: 15px;\n\t-webkit-border-radius: 15px;\n\n\tbox-shadow: inset 0px 2px 13px #999;\n\t-moz-box-shadow: inset 0px 2px 13px #999;\n\t-webkit-box-shadow: inset 0px 2px 13px #999;\n}\n\n#qunit-tests table {\n\tborder-collapse: collapse;\n\tmargin-top: .2em;\n}\n\n#qunit-tests th {\n\ttext-align: right;\n\tvertical-align: top;\n\tpadding: 0 .5em 0 0;\n}\n\n#qunit-tests td {\n\tvertical-align: top;\n}\n\n#qunit-tests pre {\n\tmargin: 0;\n\twhite-space: pre-wrap;\n\tword-wrap: break-word;\n}\n\n#qunit-tests del {\n\tbackground-color: #e0f2be;\n\tcolor: #374e0c;\n\ttext-decoration: none;\n}\n\n#qunit-tests ins {\n\tbackground-color: #ffcaca;\n\tcolor: #500;\n\ttext-decoration: none;\n}\n\n/*** Test Counts */\n\n#qunit-tests b.counts                       { color: black; }\n#qunit-tests b.passed                       { color: #5E740B; }\n#qunit-tests b.failed                       { color: #710909; }\n\n#qunit-tests li li {\n\tmargin: 0.5em;\n\tpadding: 0.4em 0.5em 0.4em 0.5em;\n\tbackground-color: #fff;\n\tborder-bottom: none;\n\tlist-style-position: inside;\n}\n\n/*** Passing Styles */\n\n#qunit-tests li li.pass {\n\tcolor: #5E740B;\n\tbackground-color: #fff;\n\tborder-left: 26px solid #C6E746;\n}\n\n#qunit-tests .pass                          { color: #528CE0; background-color: #D2E0E6; }\n#qunit-tests .pass .test-name               { color: #366097; }\n\n#qunit-tests .pass .test-actual,\n#qunit-tests .pass .test-expected           { color: #999999; }\n\n#qunit-banner.qunit-pass                    { background-color: #C6E746; }\n\n/*** Failing Styles */\n\n#qunit-tests li li.fail {\n\tcolor: #710909;\n\tbackground-color: #fff;\n\tborder-left: 26px solid #EE5757;\n\twhite-space: pre;\n}\n\n#qunit-tests > li:last-child {\n\tborder-radius: 0 0 15px 15px;\n\t-moz-border-radius: 0 0 15px 15px;\n\t-webkit-border-bottom-right-radius: 15px;\n\t-webkit-border-bottom-left-radius: 15px;\n}\n\n#qunit-tests .fail                          { color: #000000; background-color: #EE5757; }\n#qunit-tests .fail .test-name,\n#qunit-tests .fail .module-name             { color: #000000; }\n\n#qunit-tests .fail .test-actual             { color: #EE5757; }\n#qunit-tests .fail .test-expected           { color: green;   }\n\n#qunit-banner.qunit-fail                    { background-color: #EE5757; }\n\n\n/** Result */\n\n#qunit-testresult {\n\tpadding: 0.5em 0.5em 0.5em 2.5em;\n\n\tcolor: #2b81af;\n\tbackground-color: #D2E0E6;\n\n\tborder-bottom: 1px solid white;\n}\n#qunit-testresult .module-name {\n\tfont-weight: bold;\n}\n\n/** Fixture */\n\n#qunit-fixture {\n\tposition: absolute;\n\ttop: -10000px;\n\tleft: -10000px;\n\twidth: 1000px;\n\theight: 1000px;\n}\n"
  },
  {
    "path": "tests/assets/qunit.js",
    "content": "/**\n * QUnit v1.5.0 - A JavaScript Unit Testing Framework\n *\n * http://docs.jquery.com/QUnit\n *\n * Copyright (c) 2012 John Resig, Jörn Zaefferer\n * Dual licensed under the MIT (MIT-LICENSE.txt)\n * or GPL (GPL-LICENSE.txt) licenses.\n */\n\n(function(window) {\n\nvar defined = {\n\tsetTimeout: typeof window.setTimeout !== \"undefined\",\n\tsessionStorage: (function() {\n\t\tvar x = \"qunit-test-string\";\n\t\ttry {\n\t\t\tsessionStorage.setItem(x, x);\n\t\t\tsessionStorage.removeItem(x);\n\t\t\treturn true;\n\t\t} catch(e) {\n\t\t\treturn false;\n\t\t}\n\t}())\n};\n\nvar\ttestId = 0,\n\ttoString = Object.prototype.toString,\n\thasOwn = Object.prototype.hasOwnProperty;\n\nvar Test = function(name, testName, expected, async, callback) {\n\tthis.name = name;\n\tthis.testName = testName;\n\tthis.expected = expected;\n\tthis.async = async;\n\tthis.callback = callback;\n\tthis.assertions = [];\n};\nTest.prototype = {\n\tinit: function() {\n\t\tvar tests = id(\"qunit-tests\");\n\t\tif (tests) {\n\t\t\tvar b = document.createElement(\"strong\");\n\t\t\t\tb.innerHTML = \"Running \" + this.name;\n\t\t\tvar li = document.createElement(\"li\");\n\t\t\t\tli.appendChild( b );\n\t\t\t\tli.className = \"running\";\n\t\t\t\tli.id = this.id = \"test-output\" + testId++;\n\t\t\ttests.appendChild( li );\n\t\t}\n\t},\n\tsetup: function() {\n\t\tif (this.module != config.previousModule) {\n\t\t\tif ( config.previousModule ) {\n\t\t\t\trunLoggingCallbacks('moduleDone', QUnit, {\n\t\t\t\t\tname: config.previousModule,\n\t\t\t\t\tfailed: config.moduleStats.bad,\n\t\t\t\t\tpassed: config.moduleStats.all - config.moduleStats.bad,\n\t\t\t\t\ttotal: config.moduleStats.all\n\t\t\t\t} );\n\t\t\t}\n\t\t\tconfig.previousModule = this.module;\n\t\t\tconfig.moduleStats = { all: 0, bad: 0 };\n\t\t\trunLoggingCallbacks( 'moduleStart', QUnit, {\n\t\t\t\tname: this.module\n\t\t\t} );\n\t\t} else if (config.autorun) {\n\t\t\trunLoggingCallbacks( 'moduleStart', QUnit, {\n\t\t\t\tname: this.module\n\t\t\t} );\n\t\t}\n\n\t\tconfig.current = this;\n\t\tthis.testEnvironment = extend({\n\t\t\tsetup: function() {},\n\t\t\tteardown: function() {}\n\t\t}, this.moduleTestEnvironment);\n\n\t\trunLoggingCallbacks( 'testStart', QUnit, {\n\t\t\tname: this.testName,\n\t\t\tmodule: this.module\n\t\t});\n\n\t\t// allow utility functions to access the current test environment\n\t\t// TODO why??\n\t\tQUnit.current_testEnvironment = this.testEnvironment;\n\n\t\tif ( !config.pollution ) {\n\t\t\tsaveGlobal();\n\t\t}\n\t\tif ( config.notrycatch ) {\n\t\t\tthis.testEnvironment.setup.call(this.testEnvironment);\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tthis.testEnvironment.setup.call(this.testEnvironment);\n\t\t} catch(e) {\n\t\t\tQUnit.pushFailure( \"Setup failed on \" + this.testName + \": \" + e.message, extractStacktrace( e, 1 ) );\n\t\t}\n\t},\n\trun: function() {\n\t\tconfig.current = this;\n\n\t\tvar running = id(\"qunit-testresult\");\n\n\t\tif ( running ) {\n\t\t\trunning.innerHTML = \"Running: <br/>\" + this.name;\n\t\t}\n\n\t\tif ( this.async ) {\n\t\t\tQUnit.stop();\n\t\t}\n\n\t\tif ( config.notrycatch ) {\n\t\t\tthis.callback.call(this.testEnvironment);\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tthis.callback.call(this.testEnvironment);\n\t\t} catch(e) {\n\t\t\tQUnit.pushFailure( \"Died on test #\" + (this.assertions.length + 1) + \": \" + e.message, extractStacktrace( e, 1 ) );\n\t\t\t// else next test will carry the responsibility\n\t\t\tsaveGlobal();\n\n\t\t\t// Restart the tests if they're blocking\n\t\t\tif ( config.blocking ) {\n\t\t\t\tQUnit.start();\n\t\t\t}\n\t\t}\n\t},\n\tteardown: function() {\n\t\tconfig.current = this;\n\t\tif ( config.notrycatch ) {\n\t\t\tthis.testEnvironment.teardown.call(this.testEnvironment);\n\t\t\treturn;\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tthis.testEnvironment.teardown.call(this.testEnvironment);\n\t\t\t} catch(e) {\n\t\t\t\tQUnit.pushFailure( \"Teardown failed on \" + this.testName + \": \" + e.message, extractStacktrace( e, 1 ) );\n\t\t\t}\n\t\t}\n\t\tcheckPollution();\n\t},\n\tfinish: function() {\n\t\tconfig.current = this;\n\t\tif ( this.expected != null && this.expected != this.assertions.length ) {\n\t\t\tQUnit.pushFailure( \"Expected \" + this.expected + \" assertions, but \" + this.assertions.length + \" were run\" );\n\t\t} else if ( this.expected == null && !this.assertions.length ) {\n\t\t\tQUnit.pushFailure( \"Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.\" );\n\t\t}\n\n\t\tvar good = 0, bad = 0,\n\t\t\tli, i,\n\t\t\ttests = id(\"qunit-tests\");\n\n\t\tconfig.stats.all += this.assertions.length;\n\t\tconfig.moduleStats.all += this.assertions.length;\n\n\t\tif ( tests ) {\n\t\t\tvar ol = document.createElement(\"ol\");\n\n\t\t\tfor ( i = 0; i < this.assertions.length; i++ ) {\n\t\t\t\tvar assertion = this.assertions[i];\n\n\t\t\t\tli = document.createElement(\"li\");\n\t\t\t\tli.className = assertion.result ? \"pass\" : \"fail\";\n\t\t\t\tli.innerHTML = assertion.message || (assertion.result ? \"okay\" : \"failed\");\n\t\t\t\tol.appendChild( li );\n\n\t\t\t\tif ( assertion.result ) {\n\t\t\t\t\tgood++;\n\t\t\t\t} else {\n\t\t\t\t\tbad++;\n\t\t\t\t\tconfig.stats.bad++;\n\t\t\t\t\tconfig.moduleStats.bad++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// store result when possible\n\t\t\tif ( QUnit.config.reorder && defined.sessionStorage ) {\n\t\t\t\tif (bad) {\n\t\t\t\t\tsessionStorage.setItem(\"qunit-test-\" + this.module + \"-\" + this.testName, bad);\n\t\t\t\t} else {\n\t\t\t\t\tsessionStorage.removeItem(\"qunit-test-\" + this.module + \"-\" + this.testName);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (bad === 0) {\n\t\t\t\tol.style.display = \"none\";\n\t\t\t}\n\n\t\t\tvar b = document.createElement(\"strong\");\n\t\t\tb.innerHTML = this.name + \" <b class='counts'>(<b class='failed'>\" + bad + \"</b>, <b class='passed'>\" + good + \"</b>, \" + this.assertions.length + \")</b>\";\n\n\t\t\tvar a = document.createElement(\"a\");\n\t\t\ta.innerHTML = \"Rerun\";\n\t\t\ta.href = QUnit.url({ filter: getText([b]).replace(/\\([^)]+\\)$/, \"\").replace(/(^\\s*|\\s*$)/g, \"\") });\n\n\t\t\taddEvent(b, \"click\", function() {\n\t\t\t\tvar next = b.nextSibling.nextSibling,\n\t\t\t\t\tdisplay = next.style.display;\n\t\t\t\tnext.style.display = display === \"none\" ? \"block\" : \"none\";\n\t\t\t});\n\n\t\t\taddEvent(b, \"dblclick\", function(e) {\n\t\t\t\tvar target = e && e.target ? e.target : window.event.srcElement;\n\t\t\t\tif ( target.nodeName.toLowerCase() == \"span\" || target.nodeName.toLowerCase() == \"b\" ) {\n\t\t\t\t\ttarget = target.parentNode;\n\t\t\t\t}\n\t\t\t\tif ( window.location && target.nodeName.toLowerCase() === \"strong\" ) {\n\t\t\t\t\twindow.location = QUnit.url({ filter: getText([target]).replace(/\\([^)]+\\)$/, \"\").replace(/(^\\s*|\\s*$)/g, \"\") });\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tli = id(this.id);\n\t\t\tli.className = bad ? \"fail\" : \"pass\";\n\t\t\tli.removeChild( li.firstChild );\n\t\t\tli.appendChild( b );\n\t\t\tli.appendChild( a );\n\t\t\tli.appendChild( ol );\n\n\t\t} else {\n\t\t\tfor ( i = 0; i < this.assertions.length; i++ ) {\n\t\t\t\tif ( !this.assertions[i].result ) {\n\t\t\t\t\tbad++;\n\t\t\t\t\tconfig.stats.bad++;\n\t\t\t\t\tconfig.moduleStats.bad++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tQUnit.reset();\n\n\t\trunLoggingCallbacks( 'testDone', QUnit, {\n\t\t\tname: this.testName,\n\t\t\tmodule: this.module,\n\t\t\tfailed: bad,\n\t\t\tpassed: this.assertions.length - bad,\n\t\t\ttotal: this.assertions.length\n\t\t} );\n\t},\n\n\tqueue: function() {\n\t\tvar test = this;\n\t\tsynchronize(function() {\n\t\t\ttest.init();\n\t\t});\n\t\tfunction run() {\n\t\t\t// each of these can by async\n\t\t\tsynchronize(function() {\n\t\t\t\ttest.setup();\n\t\t\t});\n\t\t\tsynchronize(function() {\n\t\t\t\ttest.run();\n\t\t\t});\n\t\t\tsynchronize(function() {\n\t\t\t\ttest.teardown();\n\t\t\t});\n\t\t\tsynchronize(function() {\n\t\t\t\ttest.finish();\n\t\t\t});\n\t\t}\n\t\t// defer when previous test run passed, if storage is available\n\t\tvar bad = QUnit.config.reorder && defined.sessionStorage && +sessionStorage.getItem(\"qunit-test-\" + this.module + \"-\" + this.testName);\n\t\tif (bad) {\n\t\t\trun();\n\t\t} else {\n\t\t\tsynchronize(run, true);\n\t\t}\n\t}\n\n};\n\nvar QUnit = {\n\n\t// call on start of module test to prepend name to all tests\n\tmodule: function(name, testEnvironment) {\n\t\tconfig.currentModule = name;\n\t\tconfig.currentModuleTestEnviroment = testEnvironment;\n\t},\n\n\tasyncTest: function(testName, expected, callback) {\n\t\tif ( arguments.length === 2 ) {\n\t\t\tcallback = expected;\n\t\t\texpected = null;\n\t\t}\n\n\t\tQUnit.test(testName, expected, callback, true);\n\t},\n\n\ttest: function(testName, expected, callback, async) {\n\t\tvar name = '<span class=\"test-name\">' + escapeInnerText(testName) + '</span>';\n\n\t\tif ( arguments.length === 2 ) {\n\t\t\tcallback = expected;\n\t\t\texpected = null;\n\t\t}\n\n\t\tif ( config.currentModule ) {\n\t\t\tname = '<span class=\"module-name\">' + config.currentModule + \"</span>: \" + name;\n\t\t}\n\n\t\tif ( !validTest(config.currentModule + \": \" + testName) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar test = new Test(name, testName, expected, async, callback);\n\t\ttest.module = config.currentModule;\n\t\ttest.moduleTestEnvironment = config.currentModuleTestEnviroment;\n\t\ttest.queue();\n\t},\n\n\t// Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.\n\texpect: function(asserts) {\n\t\tconfig.current.expected = asserts;\n\t},\n\n\t// Asserts true.\n\t// @example ok( \"asdfasdf\".length > 5, \"There must be at least 5 chars\" );\n\tok: function(result, msg) {\n\t\tif (!config.current) {\n\t\t\tthrow new Error(\"ok() assertion outside test context, was \" + sourceFromStacktrace(2));\n\t\t}\n\t\tresult = !!result;\n\t\tvar details = {\n\t\t\tresult: result,\n\t\t\tmessage: msg\n\t\t};\n\t\tmsg = escapeInnerText(msg || (result ? \"okay\" : \"failed\"));\n\t\tif ( !result ) {\n\t\t\tvar source = sourceFromStacktrace(2);\n\t\t\tif (source) {\n\t\t\t\tdetails.source = source;\n\t\t\t\tmsg += '<table><tr class=\"test-source\"><th>Source: </th><td><pre>' + escapeInnerText(source) + '</pre></td></tr></table>';\n\t\t\t}\n\t\t}\n\t\trunLoggingCallbacks( 'log', QUnit, details );\n\t\tconfig.current.assertions.push({\n\t\t\tresult: result,\n\t\t\tmessage: msg\n\t\t});\n\t},\n\n\t// Checks that the first two arguments are equal, with an optional message. Prints out both actual and expected values.\n\t// @example equal( format(\"Received {0} bytes.\", 2), \"Received 2 bytes.\" );\n\tequal: function(actual, expected, message) {\n\t\tQUnit.push(expected == actual, actual, expected, message);\n\t},\n\n\tnotEqual: function(actual, expected, message) {\n\t\tQUnit.push(expected != actual, actual, expected, message);\n\t},\n\n\tdeepEqual: function(actual, expected, message) {\n\t\tQUnit.push(QUnit.equiv(actual, expected), actual, expected, message);\n\t},\n\n\tnotDeepEqual: function(actual, expected, message) {\n\t\tQUnit.push(!QUnit.equiv(actual, expected), actual, expected, message);\n\t},\n\n\tstrictEqual: function(actual, expected, message) {\n\t\tQUnit.push(expected === actual, actual, expected, message);\n\t},\n\n\tnotStrictEqual: function(actual, expected, message) {\n\t\tQUnit.push(expected !== actual, actual, expected, message);\n\t},\n\n\traises: function(block, expected, message) {\n\t\tvar actual, ok = false;\n\n\t\tif (typeof expected === 'string') {\n\t\t\tmessage = expected;\n\t\t\texpected = null;\n\t\t}\n\n\t\ttry {\n\t\t\tblock.call(config.current.testEnvironment);\n\t\t} catch (e) {\n\t\t\tactual = e;\n\t\t}\n\n\t\tif (actual) {\n\t\t\t// we don't want to validate thrown error\n\t\t\tif (!expected) {\n\t\t\t\tok = true;\n\t\t\t// expected is a regexp\n\t\t\t} else if (QUnit.objectType(expected) === \"regexp\") {\n\t\t\t\tok = expected.test(actual);\n\t\t\t// expected is a constructor\n\t\t\t} else if (actual instanceof expected) {\n\t\t\t\tok = true;\n\t\t\t// expected is a validation function which returns true is validation passed\n\t\t\t} else if (expected.call({}, actual) === true) {\n\t\t\t\tok = true;\n\t\t\t}\n\t\t}\n\n\t\tQUnit.ok(ok, message);\n\t},\n\n\tstart: function(count) {\n\t\tconfig.semaphore -= count || 1;\n\t\tif (config.semaphore > 0) {\n\t\t\t// don't start until equal number of stop-calls\n\t\t\treturn;\n\t\t}\n\t\tif (config.semaphore < 0) {\n\t\t\t// ignore if start is called more often then stop\n\t\t\tconfig.semaphore = 0;\n\t\t}\n\t\t// A slight delay, to avoid any current callbacks\n\t\tif ( defined.setTimeout ) {\n\t\t\twindow.setTimeout(function() {\n\t\t\t\tif (config.semaphore > 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( config.timeout ) {\n\t\t\t\t\tclearTimeout(config.timeout);\n\t\t\t\t}\n\n\t\t\t\tconfig.blocking = false;\n\t\t\t\tprocess(true);\n\t\t\t}, 13);\n\t\t} else {\n\t\t\tconfig.blocking = false;\n\t\t\tprocess(true);\n\t\t}\n\t},\n\n\tstop: function(count) {\n\t\tconfig.semaphore += count || 1;\n\t\tconfig.blocking = true;\n\n\t\tif ( config.testTimeout && defined.setTimeout ) {\n\t\t\tclearTimeout(config.timeout);\n\t\t\tconfig.timeout = window.setTimeout(function() {\n\t\t\t\tQUnit.ok( false, \"Test timed out\" );\n\t\t\t\tconfig.semaphore = 1;\n\t\t\t\tQUnit.start();\n\t\t\t}, config.testTimeout);\n\t\t}\n\t}\n};\n\n//We want access to the constructor's prototype\n(function() {\n\tfunction F(){}\n\tF.prototype = QUnit;\n\tQUnit = new F();\n\t//Make F QUnit's constructor so that we can add to the prototype later\n\tQUnit.constructor = F;\n}());\n\n// deprecated; still export them to window to provide clear error messages\n// next step: remove entirely\nQUnit.equals = function() {\n\tQUnit.push(false, false, false, \"QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead\");\n};\nQUnit.same = function() {\n\tQUnit.push(false, false, false, \"QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead\");\n};\n\n// Maintain internal state\nvar config = {\n\t// The queue of tests to run\n\tqueue: [],\n\n\t// block until document ready\n\tblocking: true,\n\n\t// when enabled, show only failing tests\n\t// gets persisted through sessionStorage and can be changed in UI via checkbox\n\thidepassed: false,\n\n\t// by default, run previously failed tests first\n\t// very useful in combination with \"Hide passed tests\" checked\n\treorder: true,\n\n\t// by default, modify document.title when suite is done\n\taltertitle: true,\n\n\turlConfig: ['noglobals', 'notrycatch'],\n\n\t//logging callback queues\n\tbegin: [],\n\tdone: [],\n\tlog: [],\n\ttestStart: [],\n\ttestDone: [],\n\tmoduleStart: [],\n\tmoduleDone: []\n};\n\n// Load paramaters\n(function() {\n\tvar location = window.location || { search: \"\", protocol: \"file:\" },\n\t\tparams = location.search.slice( 1 ).split( \"&\" ),\n\t\tlength = params.length,\n\t\turlParams = {},\n\t\tcurrent;\n\n\tif ( params[ 0 ] ) {\n\t\tfor ( var i = 0; i < length; i++ ) {\n\t\t\tcurrent = params[ i ].split( \"=\" );\n\t\t\tcurrent[ 0 ] = decodeURIComponent( current[ 0 ] );\n\t\t\t// allow just a key to turn on a flag, e.g., test.html?noglobals\n\t\t\tcurrent[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;\n\t\t\turlParams[ current[ 0 ] ] = current[ 1 ];\n\t\t}\n\t}\n\n\tQUnit.urlParams = urlParams;\n\tconfig.filter = urlParams.filter;\n\n\t// Figure out if we're running the tests from a server or not\n\tQUnit.isLocal = location.protocol === 'file:';\n}());\n\n// Expose the API as global variables, unless an 'exports'\n// object exists, in that case we assume we're in CommonJS - export everything at the end\nif ( typeof exports === \"undefined\" || typeof require === \"undefined\" ) {\n\textend(window, QUnit);\n\twindow.QUnit = QUnit;\n}\n\n// define these after exposing globals to keep them in these QUnit namespace only\nextend(QUnit, {\n\tconfig: config,\n\n\t// Initialize the configuration options\n\tinit: function() {\n\t\textend(config, {\n\t\t\tstats: { all: 0, bad: 0 },\n\t\t\tmoduleStats: { all: 0, bad: 0 },\n\t\t\tstarted: +new Date(),\n\t\t\tupdateRate: 1000,\n\t\t\tblocking: false,\n\t\t\tautostart: true,\n\t\t\tautorun: false,\n\t\t\tfilter: \"\",\n\t\t\tqueue: [],\n\t\t\tsemaphore: 0\n\t\t});\n\n\t\tvar qunit = id( \"qunit\" );\n\t\tif ( qunit ) {\n\t\t\tqunit.innerHTML =\n\t\t\t\t'<h1 id=\"qunit-header\">' + escapeInnerText( document.title ) + '</h1>' +\n\t\t\t\t'<h2 id=\"qunit-banner\"></h2>' +\n\t\t\t\t'<div id=\"qunit-testrunner-toolbar\"></div>' +\n\t\t\t\t'<h2 id=\"qunit-userAgent\"></h2>' +\n\t\t\t\t'<ol id=\"qunit-tests\"></ol>';\n\t\t}\n\n\t\tvar tests = id( \"qunit-tests\" ),\n\t\t\tbanner = id( \"qunit-banner\" ),\n\t\t\tresult = id( \"qunit-testresult\" );\n\n\t\tif ( tests ) {\n\t\t\ttests.innerHTML = \"\";\n\t\t}\n\n\t\tif ( banner ) {\n\t\t\tbanner.className = \"\";\n\t\t}\n\n\t\tif ( result ) {\n\t\t\tresult.parentNode.removeChild( result );\n\t\t}\n\n\t\tif ( tests ) {\n\t\t\tresult = document.createElement( \"p\" );\n\t\t\tresult.id = \"qunit-testresult\";\n\t\t\tresult.className = \"result\";\n\t\t\ttests.parentNode.insertBefore( result, tests );\n\t\t\tresult.innerHTML = 'Running...<br/>&nbsp;';\n\t\t}\n\t},\n\n\t// Resets the test setup. Useful for tests that modify the DOM.\n\t// If jQuery is available, uses jQuery's html(), otherwise just innerHTML.\n\treset: function() {\n\t\tif ( window.jQuery ) {\n\t\t\tjQuery( \"#qunit-fixture\" ).html( config.fixture );\n\t\t} else {\n\t\t\tvar main = id( 'qunit-fixture' );\n\t\t\tif ( main ) {\n\t\t\t\tmain.innerHTML = config.fixture;\n\t\t\t}\n\t\t}\n\t},\n\n\t// Trigger an event on an element.\n\t// @example triggerEvent( document.body, \"click\" );\n\ttriggerEvent: function( elem, type, event ) {\n\t\tif ( document.createEvent ) {\n\t\t\tevent = document.createEvent(\"MouseEvents\");\n\t\t\tevent.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,\n\t\t\t\t0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\t\t\telem.dispatchEvent( event );\n\n\t\t} else if ( elem.fireEvent ) {\n\t\t\telem.fireEvent(\"on\"+type);\n\t\t}\n\t},\n\n\t// Safe object type checking\n\tis: function( type, obj ) {\n\t\treturn QUnit.objectType( obj ) == type;\n\t},\n\n\tobjectType: function( obj ) {\n\t\tif (typeof obj === \"undefined\") {\n\t\t\t\treturn \"undefined\";\n\n\t\t// consider: typeof null === object\n\t\t}\n\t\tif (obj === null) {\n\t\t\t\treturn \"null\";\n\t\t}\n\n\t\tvar type = toString.call( obj ).match(/^\\[object\\s(.*)\\]$/)[1] || '';\n\n\t\tswitch (type) {\n\t\t\tcase 'Number':\n\t\t\t\tif (isNaN(obj)) {\n\t\t\t\t\treturn \"nan\";\n\t\t\t\t}\n\t\t\t\treturn \"number\";\n\t\t\tcase 'String':\n\t\t\tcase 'Boolean':\n\t\t\tcase 'Array':\n\t\t\tcase 'Date':\n\t\t\tcase 'RegExp':\n\t\t\tcase 'Function':\n\t\t\t\t\treturn type.toLowerCase();\n\t\t}\n\t\tif (typeof obj === \"object\") {\n\t\t\t\treturn \"object\";\n\t\t}\n\t\treturn undefined;\n\t},\n\n\tpush: function(result, actual, expected, message) {\n\t\tif (!config.current) {\n\t\t\tthrow new Error(\"assertion outside test context, was \" + sourceFromStacktrace());\n\t\t}\n\t\tvar details = {\n\t\t\tresult: result,\n\t\t\tmessage: message,\n\t\t\tactual: actual,\n\t\t\texpected: expected\n\t\t};\n\n\t\tmessage = escapeInnerText(message) || (result ? \"okay\" : \"failed\");\n\t\tmessage = '<span class=\"test-message\">' + message + \"</span>\";\n\t\tvar output = message;\n\t\tif (!result) {\n\t\t\texpected = escapeInnerText(QUnit.jsDump.parse(expected));\n\t\t\tactual = escapeInnerText(QUnit.jsDump.parse(actual));\n\t\t\toutput += '<table><tr class=\"test-expected\"><th>Expected: </th><td><pre>' + expected + '</pre></td></tr>';\n\t\t\tif (actual != expected) {\n\t\t\t\toutput += '<tr class=\"test-actual\"><th>Result: </th><td><pre>' + actual + '</pre></td></tr>';\n\t\t\t\toutput += '<tr class=\"test-diff\"><th>Diff: </th><td><pre>' + QUnit.diff(expected, actual) +'</pre></td></tr>';\n\t\t\t}\n\t\t\tvar source = sourceFromStacktrace();\n\t\t\tif (source) {\n\t\t\t\tdetails.source = source;\n\t\t\t\toutput += '<tr class=\"test-source\"><th>Source: </th><td><pre>' + escapeInnerText(source) + '</pre></td></tr>';\n\t\t\t}\n\t\t\toutput += \"</table>\";\n\t\t}\n\n\t\trunLoggingCallbacks( 'log', QUnit, details );\n\n\t\tconfig.current.assertions.push({\n\t\t\tresult: !!result,\n\t\t\tmessage: output\n\t\t});\n\t},\n\n\tpushFailure: function(message, source) {\n\t\tvar details = {\n\t\t\tresult: false,\n\t\t\tmessage: message\n\t\t};\n\t\tvar output = escapeInnerText(message);\n\t\tif (source) {\n\t\t\tdetails.source = source;\n\t\t\toutput += '<table><tr class=\"test-source\"><th>Source: </th><td><pre>' + escapeInnerText(source) + '</pre></td></tr></table>';\n\t\t}\n\t\trunLoggingCallbacks( 'log', QUnit, details );\n\t\tconfig.current.assertions.push({\n\t\t\tresult: false,\n\t\t\tmessage: output\n\t\t});\n\t},\n\n\turl: function( params ) {\n\t\tparams = extend( extend( {}, QUnit.urlParams ), params );\n\t\tvar querystring = \"?\",\n\t\t\tkey;\n\t\tfor ( key in params ) {\n\t\t\tif ( !hasOwn.call( params, key ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tquerystring += encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( params[ key ] ) + \"&\";\n\t\t}\n\t\treturn window.location.pathname + querystring.slice( 0, -1 );\n\t},\n\n\textend: extend,\n\tid: id,\n\taddEvent: addEvent\n});\n\n//QUnit.constructor is set to the empty F() above so that we can add to it's prototype later\n//Doing this allows us to tell if the following methods have been overwritten on the actual\n//QUnit object, which is a deprecated way of using the callbacks.\nextend(QUnit.constructor.prototype, {\n\t// Logging callbacks; all receive a single argument with the listed properties\n\t// run test/logs.html for any related changes\n\tbegin: registerLoggingCallback('begin'),\n\t// done: { failed, passed, total, runtime }\n\tdone: registerLoggingCallback('done'),\n\t// log: { result, actual, expected, message }\n\tlog: registerLoggingCallback('log'),\n\t// testStart: { name }\n\ttestStart: registerLoggingCallback('testStart'),\n\t// testDone: { name, failed, passed, total }\n\ttestDone: registerLoggingCallback('testDone'),\n\t// moduleStart: { name }\n\tmoduleStart: registerLoggingCallback('moduleStart'),\n\t// moduleDone: { name, failed, passed, total }\n\tmoduleDone: registerLoggingCallback('moduleDone')\n});\n\nif ( typeof document === \"undefined\" || document.readyState === \"complete\" ) {\n\tconfig.autorun = true;\n}\n\nQUnit.load = function() {\n\trunLoggingCallbacks( 'begin', QUnit, {} );\n\n\t// Initialize the config, saving the execution queue\n\tvar oldconfig = extend({}, config);\n\tQUnit.init();\n\textend(config, oldconfig);\n\n\tconfig.blocking = false;\n\n\tvar urlConfigHtml = '', len = config.urlConfig.length;\n\tfor ( var i = 0, val; i < len; i++ ) {\n\t\tval = config.urlConfig[i];\n\t\tconfig[val] = QUnit.urlParams[val];\n\t\turlConfigHtml += '<label><input name=\"' + val + '\" type=\"checkbox\"' + ( config[val] ? ' checked=\"checked\"' : '' ) + '>' + val + '</label>';\n\t}\n\n\tvar userAgent = id(\"qunit-userAgent\");\n\tif ( userAgent ) {\n\t\tuserAgent.innerHTML = navigator.userAgent;\n\t}\n\tvar banner = id(\"qunit-header\");\n\tif ( banner ) {\n\t\tbanner.innerHTML = '<a href=\"' + QUnit.url({ filter: undefined }) + '\"> ' + banner.innerHTML + '</a> ' + urlConfigHtml;\n\t\taddEvent( banner, \"change\", function( event ) {\n\t\t\tvar params = {};\n\t\t\tparams[ event.target.name ] = event.target.checked ? true : undefined;\n\t\t\twindow.location = QUnit.url( params );\n\t\t});\n\t}\n\n\tvar toolbar = id(\"qunit-testrunner-toolbar\");\n\tif ( toolbar ) {\n\t\tvar filter = document.createElement(\"input\");\n\t\tfilter.type = \"checkbox\";\n\t\tfilter.id = \"qunit-filter-pass\";\n\t\taddEvent( filter, \"click\", function() {\n\t\t\tvar ol = document.getElementById(\"qunit-tests\");\n\t\t\tif ( filter.checked ) {\n\t\t\t\tol.className = ol.className + \" hidepass\";\n\t\t\t} else {\n\t\t\t\tvar tmp = \" \" + ol.className.replace( /[\\n\\t\\r]/g, \" \" ) + \" \";\n\t\t\t\tol.className = tmp.replace(/ hidepass /, \" \");\n\t\t\t}\n\t\t\tif ( defined.sessionStorage ) {\n\t\t\t\tif (filter.checked) {\n\t\t\t\t\tsessionStorage.setItem(\"qunit-filter-passed-tests\", \"true\");\n\t\t\t\t} else {\n\t\t\t\t\tsessionStorage.removeItem(\"qunit-filter-passed-tests\");\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tif ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem(\"qunit-filter-passed-tests\") ) {\n\t\t\tfilter.checked = true;\n\t\t\tvar ol = document.getElementById(\"qunit-tests\");\n\t\t\tol.className = ol.className + \" hidepass\";\n\t\t}\n\t\ttoolbar.appendChild( filter );\n\n\t\tvar label = document.createElement(\"label\");\n\t\tlabel.setAttribute(\"for\", \"qunit-filter-pass\");\n\t\tlabel.innerHTML = \"Hide passed tests\";\n\t\ttoolbar.appendChild( label );\n\t}\n\n\tvar main = id('qunit-fixture');\n\tif ( main ) {\n\t\tconfig.fixture = main.innerHTML;\n\t}\n\n\tif (config.autostart) {\n\t\tQUnit.start();\n\t}\n};\n\naddEvent(window, \"load\", QUnit.load);\n\n// addEvent(window, \"error\") gives us a useless event object\nwindow.onerror = function( message, file, line ) {\n\tif ( QUnit.config.current ) {\n\t\tQUnit.pushFailure( message, file + \":\" + line );\n\t} else {\n\t\tQUnit.test( \"global failure\", function() {\n\t\t\tQUnit.pushFailure( message, file + \":\" + line );\n\t\t});\n\t}\n};\n\nfunction done() {\n\tconfig.autorun = true;\n\n\t// Log the last module results\n\tif ( config.currentModule ) {\n\t\trunLoggingCallbacks( 'moduleDone', QUnit, {\n\t\t\tname: config.currentModule,\n\t\t\tfailed: config.moduleStats.bad,\n\t\t\tpassed: config.moduleStats.all - config.moduleStats.bad,\n\t\t\ttotal: config.moduleStats.all\n\t\t} );\n\t}\n\n\tvar banner = id(\"qunit-banner\"),\n\t\ttests = id(\"qunit-tests\"),\n\t\truntime = +new Date() - config.started,\n\t\tpassed = config.stats.all - config.stats.bad,\n\t\thtml = [\n\t\t\t'Tests completed in ',\n\t\t\truntime,\n\t\t\t' milliseconds.<br/>',\n\t\t\t'<span class=\"passed\">',\n\t\t\tpassed,\n\t\t\t'</span> tests of <span class=\"total\">',\n\t\t\tconfig.stats.all,\n\t\t\t'</span> passed, <span class=\"failed\">',\n\t\t\tconfig.stats.bad,\n\t\t\t'</span> failed.'\n\t\t].join('');\n\n\tif ( banner ) {\n\t\tbanner.className = (config.stats.bad ? \"qunit-fail\" : \"qunit-pass\");\n\t}\n\n\tif ( tests ) {\n\t\tid( \"qunit-testresult\" ).innerHTML = html;\n\t}\n\n\tif ( config.altertitle && typeof document !== \"undefined\" && document.title ) {\n\t\t// show ✖ for good, ✔ for bad suite result in title\n\t\t// use escape sequences in case file gets loaded with non-utf-8-charset\n\t\tdocument.title = [\n\t\t\t(config.stats.bad ? \"\\u2716\" : \"\\u2714\"),\n\t\t\tdocument.title.replace(/^[\\u2714\\u2716] /i, \"\")\n\t\t].join(\" \");\n\t}\n\n\t// clear own sessionStorage items if all tests passed\n\tif ( config.reorder && defined.sessionStorage && config.stats.bad === 0 ) {\n\t\tvar key;\n\t\tfor ( var i = 0; i < sessionStorage.length; i++ ) {\n\t\t\tkey = sessionStorage.key( i++ );\n\t\t\tif ( key.indexOf(\"qunit-test-\") === 0 ) {\n\t\t\t\tsessionStorage.removeItem( key );\n\t\t\t}\n\t\t}\n\t}\n\n\trunLoggingCallbacks( 'done', QUnit, {\n\t\tfailed: config.stats.bad,\n\t\tpassed: passed,\n\t\ttotal: config.stats.all,\n\t\truntime: runtime\n\t} );\n}\n\nfunction validTest( name ) {\n\tvar filter = config.filter,\n\t\trun = false;\n\n\tif ( !filter ) {\n\t\treturn true;\n\t}\n\n\tvar not = filter.charAt( 0 ) === \"!\";\n\tif ( not ) {\n\t\tfilter = filter.slice( 1 );\n\t}\n\n\tif ( name.indexOf( filter ) !== -1 ) {\n\t\treturn !not;\n\t}\n\n\tif ( not ) {\n\t\trun = true;\n\t}\n\n\treturn run;\n}\n\n// so far supports only Firefox, Chrome and Opera (buggy), Safari (for real exceptions)\n// Later Safari and IE10 are supposed to support error.stack as well\n// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack\nfunction extractStacktrace( e, offset ) {\n\toffset = offset || 3;\n\tif (e.stacktrace) {\n\t\t// Opera\n\t\treturn e.stacktrace.split(\"\\n\")[offset + 3];\n\t} else if (e.stack) {\n\t\t// Firefox, Chrome\n\t\tvar stack = e.stack.split(\"\\n\");\n\t\tif (/^error$/i.test(stack[0])) {\n\t\t\tstack.shift();\n\t\t}\n\t\treturn stack[offset];\n\t} else if (e.sourceURL) {\n\t\t// Safari, PhantomJS\n\t\t// hopefully one day Safari provides actual stacktraces\n\t\t// exclude useless self-reference for generated Error objects\n\t\tif ( /qunit.js$/.test( e.sourceURL ) ) {\n\t\t\treturn;\n\t\t}\n\t\t// for actual exceptions, this is useful\n\t\treturn e.sourceURL + \":\" + e.line;\n\t}\n}\nfunction sourceFromStacktrace(offset) {\n\ttry {\n\t\tthrow new Error();\n\t} catch ( e ) {\n\t\treturn extractStacktrace( e, offset );\n\t}\n}\n\nfunction escapeInnerText(s) {\n\tif (!s) {\n\t\treturn \"\";\n\t}\n\ts = s + \"\";\n\treturn s.replace(/[\\&<>]/g, function(s) {\n\t\tswitch(s) {\n\t\t\tcase \"&\": return \"&amp;\";\n\t\t\tcase \"<\": return \"&lt;\";\n\t\t\tcase \">\": return \"&gt;\";\n\t\t\tdefault: return s;\n\t\t}\n\t});\n}\n\nfunction synchronize( callback, last ) {\n\tconfig.queue.push( callback );\n\n\tif ( config.autorun && !config.blocking ) {\n\t\tprocess(last);\n\t}\n}\n\nfunction process( last ) {\n\tfunction next() {\n\t\tprocess( last );\n\t}\n\tvar start = new Date().getTime();\n\tconfig.depth = config.depth ? config.depth + 1 : 1;\n\n\twhile ( config.queue.length && !config.blocking ) {\n\t\tif ( !defined.setTimeout || config.updateRate <= 0 || ( ( new Date().getTime() - start ) < config.updateRate ) ) {\n\t\t\tconfig.queue.shift()();\n\t\t} else {\n\t\t\twindow.setTimeout( next, 13 );\n\t\t\tbreak;\n\t\t}\n\t}\n\tconfig.depth--;\n\tif ( last && !config.blocking && !config.queue.length && config.depth === 0 ) {\n\t\tdone();\n\t}\n}\n\nfunction saveGlobal() {\n\tconfig.pollution = [];\n\n\tif ( config.noglobals ) {\n\t\tfor ( var key in window ) {\n\t\t\tif ( !hasOwn.call( window, key ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconfig.pollution.push( key );\n\t\t}\n\t}\n}\n\nfunction checkPollution( name ) {\n\tvar old = config.pollution;\n\tsaveGlobal();\n\n\tvar newGlobals = diff( config.pollution, old );\n\tif ( newGlobals.length > 0 ) {\n\t\tQUnit.pushFailure( \"Introduced global variable(s): \" + newGlobals.join(\", \") );\n\t}\n\n\tvar deletedGlobals = diff( old, config.pollution );\n\tif ( deletedGlobals.length > 0 ) {\n\t\tQUnit.pushFailure( \"Deleted global variable(s): \" + deletedGlobals.join(\", \") );\n\t}\n}\n\n// returns a new Array with the elements that are in a but not in b\nfunction diff( a, b ) {\n\tvar result = a.slice();\n\tfor ( var i = 0; i < result.length; i++ ) {\n\t\tfor ( var j = 0; j < b.length; j++ ) {\n\t\t\tif ( result[i] === b[j] ) {\n\t\t\t\tresult.splice(i, 1);\n\t\t\t\ti--;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn result;\n}\n\nfunction extend(a, b) {\n\tfor ( var prop in b ) {\n\t\tif ( b[prop] === undefined ) {\n\t\t\tdelete a[prop];\n\n\t\t// Avoid \"Member not found\" error in IE8 caused by setting window.constructor\n\t\t} else if ( prop !== \"constructor\" || a !== window ) {\n\t\t\ta[prop] = b[prop];\n\t\t}\n\t}\n\n\treturn a;\n}\n\nfunction addEvent(elem, type, fn) {\n\tif ( elem.addEventListener ) {\n\t\telem.addEventListener( type, fn, false );\n\t} else if ( elem.attachEvent ) {\n\t\telem.attachEvent( \"on\" + type, fn );\n\t} else {\n\t\tfn();\n\t}\n}\n\nfunction id(name) {\n\treturn !!(typeof document !== \"undefined\" && document && document.getElementById) &&\n\t\tdocument.getElementById( name );\n}\n\nfunction registerLoggingCallback(key){\n\treturn function(callback){\n\t\tconfig[key].push( callback );\n\t};\n}\n\n// Supports deprecated method of completely overwriting logging callbacks\nfunction runLoggingCallbacks(key, scope, args) {\n\t//debugger;\n\tvar callbacks;\n\tif ( QUnit.hasOwnProperty(key) ) {\n\t\tQUnit[key].call(scope, args);\n\t} else {\n\t\tcallbacks = config[key];\n\t\tfor( var i = 0; i < callbacks.length; i++ ) {\n\t\t\tcallbacks[i].call( scope, args );\n\t\t}\n\t}\n}\n\n// Test for equality any JavaScript type.\n// Author: Philippe Rathé <prathe@gmail.com>\nQUnit.equiv = (function() {\n\n\tvar innerEquiv; // the real equiv function\n\tvar callers = []; // stack to decide between skip/abort functions\n\tvar parents = []; // stack to avoiding loops from circular referencing\n\n\t// Call the o related callback with the given arguments.\n\tfunction bindCallbacks(o, callbacks, args) {\n\t\tvar prop = QUnit.objectType(o);\n\t\tif (prop) {\n\t\t\tif (QUnit.objectType(callbacks[prop]) === \"function\") {\n\t\t\t\treturn callbacks[prop].apply(callbacks, args);\n\t\t\t} else {\n\t\t\t\treturn callbacks[prop]; // or undefined\n\t\t\t}\n\t\t}\n\t}\n\n\tvar getProto = Object.getPrototypeOf || function (obj) {\n\t\treturn obj.__proto__;\n\t};\n\n\tvar callbacks = (function () {\n\n\t\t// for string, boolean, number and null\n\t\tfunction useStrictEquality(b, a) {\n\t\t\tif (b instanceof a.constructor || a instanceof b.constructor) {\n\t\t\t\t// to catch short annotaion VS 'new' annotation of a\n\t\t\t\t// declaration\n\t\t\t\t// e.g. var i = 1;\n\t\t\t\t// var j = new Number(1);\n\t\t\t\treturn a == b;\n\t\t\t} else {\n\t\t\t\treturn a === b;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t\"string\" : useStrictEquality,\n\t\t\t\"boolean\" : useStrictEquality,\n\t\t\t\"number\" : useStrictEquality,\n\t\t\t\"null\" : useStrictEquality,\n\t\t\t\"undefined\" : useStrictEquality,\n\n\t\t\t\"nan\" : function(b) {\n\t\t\t\treturn isNaN(b);\n\t\t\t},\n\n\t\t\t\"date\" : function(b, a) {\n\t\t\t\treturn QUnit.objectType(b) === \"date\" && a.valueOf() === b.valueOf();\n\t\t\t},\n\n\t\t\t\"regexp\" : function(b, a) {\n\t\t\t\treturn QUnit.objectType(b) === \"regexp\" &&\n\t\t\t\t\t// the regex itself\n\t\t\t\t\ta.source === b.source &&\n\t\t\t\t\t// and its modifers\n\t\t\t\t\ta.global === b.global &&\n\t\t\t\t\t// (gmi) ...\n\t\t\t\t\ta.ignoreCase === b.ignoreCase &&\n\t\t\t\t\ta.multiline === b.multiline;\n\t\t\t},\n\n\t\t\t// - skip when the property is a method of an instance (OOP)\n\t\t\t// - abort otherwise,\n\t\t\t// initial === would have catch identical references anyway\n\t\t\t\"function\" : function() {\n\t\t\t\tvar caller = callers[callers.length - 1];\n\t\t\t\treturn caller !== Object && typeof caller !== \"undefined\";\n\t\t\t},\n\n\t\t\t\"array\" : function(b, a) {\n\t\t\t\tvar i, j, loop;\n\t\t\t\tvar len;\n\n\t\t\t\t// b could be an object literal here\n\t\t\t\tif (QUnit.objectType(b) !== \"array\") {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tlen = a.length;\n\t\t\t\tif (len !== b.length) { // safe and faster\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// track reference to avoid circular references\n\t\t\t\tparents.push(a);\n\t\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\t\tloop = false;\n\t\t\t\t\tfor (j = 0; j < parents.length; j++) {\n\t\t\t\t\t\tif (parents[j] === a[i]) {\n\t\t\t\t\t\t\tloop = true;// dont rewalk array\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!loop && !innerEquiv(a[i], b[i])) {\n\t\t\t\t\t\tparents.pop();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tparents.pop();\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t\"object\" : function(b, a) {\n\t\t\t\tvar i, j, loop;\n\t\t\t\tvar eq = true; // unless we can proove it\n\t\t\t\tvar aProperties = [], bProperties = []; // collection of\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// strings\n\n\t\t\t\t// comparing constructors is more strict than using\n\t\t\t\t// instanceof\n\t\t\t\tif (a.constructor !== b.constructor) {\n\t\t\t\t\t// Allow objects with no prototype to be equivalent to\n\t\t\t\t\t// objects with Object as their constructor.\n\t\t\t\t\tif (!((getProto(a) === null && getProto(b) === Object.prototype) ||\n\t\t\t\t\t\t(getProto(b) === null && getProto(a) === Object.prototype)))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// stack constructor before traversing properties\n\t\t\t\tcallers.push(a.constructor);\n\t\t\t\t// track reference to avoid circular references\n\t\t\t\tparents.push(a);\n\n\t\t\t\tfor (i in a) { // be strict: don't ensures hasOwnProperty\n\t\t\t\t\t\t\t\t// and go deep\n\t\t\t\t\tloop = false;\n\t\t\t\t\tfor (j = 0; j < parents.length; j++) {\n\t\t\t\t\t\tif (parents[j] === a[i]) {\n\t\t\t\t\t\t\t// don't go down the same path twice\n\t\t\t\t\t\t\tloop = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\taProperties.push(i); // collect a's properties\n\n\t\t\t\t\tif (!loop && !innerEquiv(a[i], b[i])) {\n\t\t\t\t\t\teq = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallers.pop(); // unstack, we are done\n\t\t\t\tparents.pop();\n\n\t\t\t\tfor (i in b) {\n\t\t\t\t\tbProperties.push(i); // collect b's properties\n\t\t\t\t}\n\n\t\t\t\t// Ensures identical properties name\n\t\t\t\treturn eq && innerEquiv(aProperties.sort(), bProperties.sort());\n\t\t\t}\n\t\t};\n\t}());\n\n\tinnerEquiv = function() { // can take multiple arguments\n\t\tvar args = Array.prototype.slice.apply(arguments);\n\t\tif (args.length < 2) {\n\t\t\treturn true; // end transition\n\t\t}\n\n\t\treturn (function(a, b) {\n\t\t\tif (a === b) {\n\t\t\t\treturn true; // catch the most you can\n\t\t\t} else if (a === null || b === null || typeof a === \"undefined\" ||\n\t\t\t\t\ttypeof b === \"undefined\" ||\n\t\t\t\t\tQUnit.objectType(a) !== QUnit.objectType(b)) {\n\t\t\t\treturn false; // don't lose time with error prone cases\n\t\t\t} else {\n\t\t\t\treturn bindCallbacks(a, callbacks, [ b, a ]);\n\t\t\t}\n\n\t\t\t// apply transition with (1..n) arguments\n\t\t}(args[0], args[1]) && arguments.callee.apply(this, args.splice(1, args.length - 1)));\n\t};\n\n\treturn innerEquiv;\n\n}());\n\n/**\n * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com |\n * http://flesler.blogspot.com Licensed under BSD\n * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008\n *\n * @projectDescription Advanced and extensible data dumping for Javascript.\n * @version 1.0.0\n * @author Ariel Flesler\n * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}\n */\nQUnit.jsDump = (function() {\n\tfunction quote( str ) {\n\t\treturn '\"' + str.toString().replace(/\"/g, '\\\\\"') + '\"';\n\t}\n\tfunction literal( o ) {\n\t\treturn o + '';\n\t}\n\tfunction join( pre, arr, post ) {\n\t\tvar s = jsDump.separator(),\n\t\t\tbase = jsDump.indent(),\n\t\t\tinner = jsDump.indent(1);\n\t\tif ( arr.join ) {\n\t\t\tarr = arr.join( ',' + s + inner );\n\t\t}\n\t\tif ( !arr ) {\n\t\t\treturn pre + post;\n\t\t}\n\t\treturn [ pre, inner + arr, base + post ].join(s);\n\t}\n\tfunction array( arr, stack ) {\n\t\tvar i = arr.length, ret = new Array(i);\n\t\tthis.up();\n\t\twhile ( i-- ) {\n\t\t\tret[i] = this.parse( arr[i] , undefined , stack);\n\t\t}\n\t\tthis.down();\n\t\treturn join( '[', ret, ']' );\n\t}\n\n\tvar reName = /^function (\\w+)/;\n\n\tvar jsDump = {\n\t\tparse: function( obj, type, stack ) { //type is used mostly internally, you can fix a (custom)type in advance\n\t\t\tstack = stack || [ ];\n\t\t\tvar parser = this.parsers[ type || this.typeOf(obj) ];\n\t\t\ttype = typeof parser;\n\t\t\tvar inStack = inArray(obj, stack);\n\t\t\tif (inStack != -1) {\n\t\t\t\treturn 'recursion('+(inStack - stack.length)+')';\n\t\t\t}\n\t\t\t//else\n\t\t\tif (type == 'function')  {\n\t\t\t\t\tstack.push(obj);\n\t\t\t\t\tvar res = parser.call( this, obj, stack );\n\t\t\t\t\tstack.pop();\n\t\t\t\t\treturn res;\n\t\t\t}\n\t\t\t// else\n\t\t\treturn (type == 'string') ? parser : this.parsers.error;\n\t\t},\n\t\ttypeOf: function( obj ) {\n\t\t\tvar type;\n\t\t\tif ( obj === null ) {\n\t\t\t\ttype = \"null\";\n\t\t\t} else if (typeof obj === \"undefined\") {\n\t\t\t\ttype = \"undefined\";\n\t\t\t} else if (QUnit.is(\"RegExp\", obj)) {\n\t\t\t\ttype = \"regexp\";\n\t\t\t} else if (QUnit.is(\"Date\", obj)) {\n\t\t\t\ttype = \"date\";\n\t\t\t} else if (QUnit.is(\"Function\", obj)) {\n\t\t\t\ttype = \"function\";\n\t\t\t} else if (typeof obj.setInterval !== undefined && typeof obj.document !== \"undefined\" && typeof obj.nodeType === \"undefined\") {\n\t\t\t\ttype = \"window\";\n\t\t\t} else if (obj.nodeType === 9) {\n\t\t\t\ttype = \"document\";\n\t\t\t} else if (obj.nodeType) {\n\t\t\t\ttype = \"node\";\n\t\t\t} else if (\n\t\t\t\t// native arrays\n\t\t\t\ttoString.call( obj ) === \"[object Array]\" ||\n\t\t\t\t// NodeList objects\n\t\t\t\t( typeof obj.length === \"number\" && typeof obj.item !== \"undefined\" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === \"undefined\" ) ) )\n\t\t\t) {\n\t\t\t\ttype = \"array\";\n\t\t\t} else {\n\t\t\t\ttype = typeof obj;\n\t\t\t}\n\t\t\treturn type;\n\t\t},\n\t\tseparator: function() {\n\t\t\treturn this.multiline ?\tthis.HTML ? '<br />' : '\\n' : this.HTML ? '&nbsp;' : ' ';\n\t\t},\n\t\tindent: function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing\n\t\t\tif ( !this.multiline ) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tvar chr = this.indentChar;\n\t\t\tif ( this.HTML ) {\n\t\t\t\tchr = chr.replace(/\\t/g,'   ').replace(/ /g,'&nbsp;');\n\t\t\t}\n\t\t\treturn new Array( this._depth_ + (extra||0) ).join(chr);\n\t\t},\n\t\tup: function( a ) {\n\t\t\tthis._depth_ += a || 1;\n\t\t},\n\t\tdown: function( a ) {\n\t\t\tthis._depth_ -= a || 1;\n\t\t},\n\t\tsetParser: function( name, parser ) {\n\t\t\tthis.parsers[name] = parser;\n\t\t},\n\t\t// The next 3 are exposed so you can use them\n\t\tquote: quote,\n\t\tliteral: literal,\n\t\tjoin: join,\n\t\t//\n\t\t_depth_: 1,\n\t\t// This is the list of parsers, to modify them, use jsDump.setParser\n\t\tparsers: {\n\t\t\twindow: '[Window]',\n\t\t\tdocument: '[Document]',\n\t\t\terror: '[ERROR]', //when no parser is found, shouldn't happen\n\t\t\tunknown: '[Unknown]',\n\t\t\t'null': 'null',\n\t\t\t'undefined': 'undefined',\n\t\t\t'function': function( fn ) {\n\t\t\t\tvar ret = 'function',\n\t\t\t\t\tname = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE\n\t\t\t\tif ( name ) {\n\t\t\t\t\tret += ' ' + name;\n\t\t\t\t}\n\t\t\t\tret += '(';\n\n\t\t\t\tret = [ ret, QUnit.jsDump.parse( fn, 'functionArgs' ), '){'].join('');\n\t\t\t\treturn join( ret, QUnit.jsDump.parse(fn,'functionCode'), '}' );\n\t\t\t},\n\t\t\tarray: array,\n\t\t\tnodelist: array,\n\t\t\t'arguments': array,\n\t\t\tobject: function( map, stack ) {\n\t\t\t\tvar ret = [ ], keys, key, val, i;\n\t\t\t\tQUnit.jsDump.up();\n\t\t\t\tif (Object.keys) {\n\t\t\t\t\tkeys = Object.keys( map );\n\t\t\t\t} else {\n\t\t\t\t\tkeys = [];\n\t\t\t\t\tfor (key in map) { keys.push( key ); }\n\t\t\t\t}\n\t\t\t\tkeys.sort();\n\t\t\t\tfor (i = 0; i < keys.length; i++) {\n\t\t\t\t\tkey = keys[ i ];\n\t\t\t\t\tval = map[ key ];\n\t\t\t\t\tret.push( QUnit.jsDump.parse( key, 'key' ) + ': ' + QUnit.jsDump.parse( val, undefined, stack ) );\n\t\t\t\t}\n\t\t\t\tQUnit.jsDump.down();\n\t\t\t\treturn join( '{', ret, '}' );\n\t\t\t},\n\t\t\tnode: function( node ) {\n\t\t\t\tvar open = QUnit.jsDump.HTML ? '&lt;' : '<',\n\t\t\t\t\tclose = QUnit.jsDump.HTML ? '&gt;' : '>';\n\n\t\t\t\tvar tag = node.nodeName.toLowerCase(),\n\t\t\t\t\tret = open + tag;\n\n\t\t\t\tfor ( var a in QUnit.jsDump.DOMAttrs ) {\n\t\t\t\t\tvar val = node[QUnit.jsDump.DOMAttrs[a]];\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\tret += ' ' + a + '=' + QUnit.jsDump.parse( val, 'attribute' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn ret + close + open + '/' + tag + close;\n\t\t\t},\n\t\t\tfunctionArgs: function( fn ) {//function calls it internally, it's the arguments part of the function\n\t\t\t\tvar l = fn.length;\n\t\t\t\tif ( !l ) {\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\n\t\t\t\tvar args = new Array(l);\n\t\t\t\twhile ( l-- ) {\n\t\t\t\t\targs[l] = String.fromCharCode(97+l);//97 is 'a'\n\t\t\t\t}\n\t\t\t\treturn ' ' + args.join(', ') + ' ';\n\t\t\t},\n\t\t\tkey: quote, //object calls it internally, the key part of an item in a map\n\t\t\tfunctionCode: '[code]', //function calls it internally, it's the content of the function\n\t\t\tattribute: quote, //node calls it internally, it's an html attribute value\n\t\t\tstring: quote,\n\t\t\tdate: quote,\n\t\t\tregexp: literal, //regex\n\t\t\tnumber: literal,\n\t\t\t'boolean': literal\n\t\t},\n\t\tDOMAttrs:{//attributes to dump from nodes, name=>realName\n\t\t\tid:'id',\n\t\t\tname:'name',\n\t\t\t'class':'className'\n\t\t},\n\t\tHTML:false,//if true, entities are escaped ( <, >, \\t, space and \\n )\n\t\tindentChar:'  ',//indentation unit\n\t\tmultiline:true //if true, items in a collection, are separated by a \\n, else just a space.\n\t};\n\n\treturn jsDump;\n}());\n\n// from Sizzle.js\nfunction getText( elems ) {\n\tvar ret = \"\", elem;\n\n\tfor ( var i = 0; elems[i]; i++ ) {\n\t\telem = elems[i];\n\n\t\t// Get the text from text nodes and CDATA nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 4 ) {\n\t\t\tret += elem.nodeValue;\n\n\t\t// Traverse everything else, except comment nodes\n\t\t} else if ( elem.nodeType !== 8 ) {\n\t\t\tret += getText( elem.childNodes );\n\t\t}\n\t}\n\n\treturn ret;\n}\n\n//from jquery.js\nfunction inArray( elem, array ) {\n\tif ( array.indexOf ) {\n\t\treturn array.indexOf( elem );\n\t}\n\n\tfor ( var i = 0, length = array.length; i < length; i++ ) {\n\t\tif ( array[ i ] === elem ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\n\treturn -1;\n}\n\n/*\n * Javascript Diff Algorithm\n *  By John Resig (http://ejohn.org/)\n *  Modified by Chu Alan \"sprite\"\n *\n * Released under the MIT license.\n *\n * More Info:\n *  http://ejohn.org/projects/javascript-diff-algorithm/\n *\n * Usage: QUnit.diff(expected, actual)\n *\n * QUnit.diff(\"the quick brown fox jumped over\", \"the quick fox jumps over\") == \"the  quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over\"\n */\nQUnit.diff = (function() {\n\tfunction diff(o, n) {\n\t\tvar ns = {};\n\t\tvar os = {};\n\t\tvar i;\n\n\t\tfor (i = 0; i < n.length; i++) {\n\t\t\tif (ns[n[i]] == null) {\n\t\t\t\tns[n[i]] = {\n\t\t\t\t\trows: [],\n\t\t\t\t\to: null\n\t\t\t\t};\n\t\t\t}\n\t\t\tns[n[i]].rows.push(i);\n\t\t}\n\n\t\tfor (i = 0; i < o.length; i++) {\n\t\t\tif (os[o[i]] == null) {\n\t\t\t\tos[o[i]] = {\n\t\t\t\t\trows: [],\n\t\t\t\t\tn: null\n\t\t\t\t};\n\t\t\t}\n\t\t\tos[o[i]].rows.push(i);\n\t\t}\n\n\t\tfor (i in ns) {\n\t\t\tif ( !hasOwn.call( ns, i ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (ns[i].rows.length == 1 && typeof(os[i]) != \"undefined\" && os[i].rows.length == 1) {\n\t\t\t\tn[ns[i].rows[0]] = {\n\t\t\t\t\ttext: n[ns[i].rows[0]],\n\t\t\t\t\trow: os[i].rows[0]\n\t\t\t\t};\n\t\t\t\to[os[i].rows[0]] = {\n\t\t\t\t\ttext: o[os[i].rows[0]],\n\t\t\t\t\trow: ns[i].rows[0]\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0; i < n.length - 1; i++) {\n\t\t\tif (n[i].text != null && n[i + 1].text == null && n[i].row + 1 < o.length && o[n[i].row + 1].text == null &&\n\t\t\tn[i + 1] == o[n[i].row + 1]) {\n\t\t\t\tn[i + 1] = {\n\t\t\t\t\ttext: n[i + 1],\n\t\t\t\t\trow: n[i].row + 1\n\t\t\t\t};\n\t\t\t\to[n[i].row + 1] = {\n\t\t\t\t\ttext: o[n[i].row + 1],\n\t\t\t\t\trow: i + 1\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tfor (i = n.length - 1; i > 0; i--) {\n\t\t\tif (n[i].text != null && n[i - 1].text == null && n[i].row > 0 && o[n[i].row - 1].text == null &&\n\t\t\tn[i - 1] == o[n[i].row - 1]) {\n\t\t\t\tn[i - 1] = {\n\t\t\t\t\ttext: n[i - 1],\n\t\t\t\t\trow: n[i].row - 1\n\t\t\t\t};\n\t\t\t\to[n[i].row - 1] = {\n\t\t\t\t\ttext: o[n[i].row - 1],\n\t\t\t\t\trow: i - 1\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\to: o,\n\t\t\tn: n\n\t\t};\n\t}\n\n\treturn function(o, n) {\n\t\to = o.replace(/\\s+$/, '');\n\t\tn = n.replace(/\\s+$/, '');\n\t\tvar out = diff(o === \"\" ? [] : o.split(/\\s+/), n === \"\" ? [] : n.split(/\\s+/));\n\n\t\tvar str = \"\";\n\t\tvar i;\n\n\t\tvar oSpace = o.match(/\\s+/g);\n\t\tif (oSpace == null) {\n\t\t\toSpace = [\" \"];\n\t\t}\n\t\telse {\n\t\t\toSpace.push(\" \");\n\t\t}\n\t\tvar nSpace = n.match(/\\s+/g);\n\t\tif (nSpace == null) {\n\t\t\tnSpace = [\" \"];\n\t\t}\n\t\telse {\n\t\t\tnSpace.push(\" \");\n\t\t}\n\n\t\tif (out.n.length === 0) {\n\t\t\tfor (i = 0; i < out.o.length; i++) {\n\t\t\t\tstr += '<del>' + out.o[i] + oSpace[i] + \"</del>\";\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (out.n[0].text == null) {\n\t\t\t\tfor (n = 0; n < out.o.length && out.o[n].text == null; n++) {\n\t\t\t\t\tstr += '<del>' + out.o[n] + oSpace[n] + \"</del>\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (i = 0; i < out.n.length; i++) {\n\t\t\t\tif (out.n[i].text == null) {\n\t\t\t\t\tstr += '<ins>' + out.n[i] + nSpace[i] + \"</ins>\";\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tvar pre = \"\";\n\n\t\t\t\t\tfor (n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++) {\n\t\t\t\t\t\tpre += '<del>' + out.o[n] + oSpace[n] + \"</del>\";\n\t\t\t\t\t}\n\t\t\t\t\tstr += \" \" + out.n[i].text + nSpace[i] + pre;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn str;\n\t};\n}());\n\n// for CommonJS enviroments, export everything\nif ( typeof exports !== \"undefined\" || typeof require !== \"undefined\" ) {\n\textend(exports, QUnit);\n}\n\n// get at whatever the global object is, like window in browsers\n}( (function() {return this;}.call()) ));\n"
  },
  {
    "path": "tests/assets/utils.js",
    "content": "function UTCDate(){\n    return new Date(Date.UTC.apply(Date, arguments));\n}\n\n\nfunction format_date(date){\n    var y = date.getUTCFullYear(),\n        m = date.getUTCMonth() + 1,\n        d = date.getUTCDate(),\n        h = date.getUTCHours(),\n        i = date.getUTCMinutes(),\n        s = date.getUTCSeconds(),\n        l = date.getUTCMilliseconds();\n    function z(i){return (i <= 9 ? '0'+i : i);}\n    return y+'-'+z(m)+'-'+z(d)+' '+z(h)+':'+z(i)+':'+z(s)+'.'+z(l);\n}\n\n\nfunction datesEqual(actual, expected, message){\n    QUnit.push(QUnit.equiv(actual, expected), format_date(actual), format_date(expected), message);\n}\n"
  },
  {
    "path": "tests/suites/calendar-weeks.js",
    "content": "module('Calendar Weeks', {\n    setup: function(){\n        this.input = $('<input type=\"text\">')\n            .appendTo('#qunit-fixture')\n            .val('2013-01-14')\n            .datepicker({\n                format: 'yyyy-mm-dd',\n                calendarWeeks: true\n            })\n            .focus(); // Activate for visibility checks\n        this.dp = this.input.data('datepicker');\n        this.picker = this.dp.picker;\n    },\n    teardown: function(){\n        this.picker.remove();\n    }\n});\n\ntest('adds cw header column', function(){\n    var target = this.picker.find('.datepicker-days thead tr:nth-child(3) th:first-child');\n    ok(target.hasClass('cw'), 'First column heading is from cw column');\n});\n\ntest('adds calendar week cells to each day row', function(){\n    var target = this.picker.find('.datepicker-days tbody tr');\n\n    expect(target.length);\n    target.each(function(i){\n        var t = $(this).children().first();\n        ok(t.hasClass('cw'), \"First column is cw column\");\n    });\n});\n\ntest('displays correct calendar week', function(){\n    var target = this.picker.find('.datepicker-days tbody tr');\n\n    expect(target.length);\n    target.each(function(i){\n        var t = $(this).children().first();\n        equal(t.text(), i+1, \"Displays correct calendar weeks\");\n    });\n});\n\ntest('it prepends column to switcher thead row', function(){\n    var target = this.picker.find('.datepicker-days thead tr:nth-child(2)');\n    equal(target.children().length, 3, 'first row has 3 columns');\n    ok(!target.children().first().hasClass('cw'), 'cw column is not prepended');\n});\n"
  },
  {
    "path": "tests/suites/component.js",
    "content": "module('Component', {\n    setup: function(){\n        this.fieldset = $('<fieldset>' +\n                                '<div class=\"input-append date\" id=\"datepicker\">'+\n                                    '<input size=\"16\" type=\"text\" value=\"12-02-2012\" readonly>'+\n                                    '<span class=\"add-on\"><i class=\"icon-th\"></i></span>'+\n                                '</div>' +\n                            '<fieldset>')\n                        .appendTo('#qunit-fixture');\n\n        this.component = this.fieldset.find('.input-append')\n                            .datepicker({format: \"dd-mm-yyyy\"});\n        this.input = this.component.find('input');\n        this.addon = this.component.find('.add-on');\n        this.dp = this.component.data('datepicker');\n        this.picker = this.dp.picker;\n    },\n    teardown: function(){\n        this.picker.remove();\n    }\n});\n\n\ntest('Component gets date/viewDate from input value', function(){\n    datesEqual(this.dp.getUTCDate(), UTCDate(2012, 1, 12));\n    datesEqual(this.dp.viewDate, UTCDate(2012, 1, 12));\n});\n\ntest('Activation by component', function(){\n    ok(!this.picker.is(':visible'));\n    this.addon.click();\n    ok(this.picker.is(':visible'));\n});\n\ntest('Dont activation (by disabled) by component', function(){\n    ok(!this.picker.is(':visible'));\n    this.input.prop('disabled', true);\n    this.addon.click();\n    ok(!this.picker.is(':visible'));\n    this.input.prop('disabled', false);\n    this.fieldset.prop('disabled', true);\n    this.addon.click();\n    ok(!this.picker.is(':visible'));\n});\n\ntest('simple keyboard nav test', function(){\n    var target;\n\n    // Keyboard nav only works with non-readonly inputs\n    this.input.removeAttr('readonly');\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'February 2012', 'Title is \"February 2012\"');\n    datesEqual(this.dp.getUTCDate(), UTCDate(2012, 1, 12));\n    datesEqual(this.dp.viewDate, UTCDate(2012, 1, 12));\n\n    // Focus/open\n    this.addon.click();\n\n    // Navigation: -1 day, left arrow key\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 37\n    });\n    datesEqual(this.dp.viewDate, UTCDate(2012, 1, 11));\n    datesEqual(this.dp.getUTCDate(), UTCDate(2012, 1, 12));\n    datesEqual(this.dp.focusDate, UTCDate(2012, 1, 11));\n    // Month not changed\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'February 2012', 'Title is \"February 2012\"');\n\n    // Navigation: +1 month, shift + right arrow key\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 39,\n        shiftKey: true\n    });\n    datesEqual(this.dp.viewDate, UTCDate(2012, 2, 11));\n    datesEqual(this.dp.getUTCDate(), UTCDate(2012, 1, 12));\n    datesEqual(this.dp.focusDate, UTCDate(2012, 2, 11));\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2012', 'Title is \"March 2012\"');\n\n    // Navigation: -1 year, ctrl + left arrow key\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 37,\n        ctrlKey: true\n    });\n    datesEqual(this.dp.viewDate, UTCDate(2011, 2, 11));\n    datesEqual(this.dp.getUTCDate(), UTCDate(2012, 1, 12));\n    datesEqual(this.dp.focusDate, UTCDate(2011, 2, 11));\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2011', 'Title is \"March 2011\"');\n});\n\ntest('setValue', function(){\n    this.dp.dates.replace(UTCDate(2012, 2, 13));\n    this.dp.setValue();\n    datesEqual(this.dp.dates[0], UTCDate(2012, 2, 13));\n    equal(this.input.val(), '13-03-2012');\n});\n\ntest('update', function(){\n    this.input.val('13-03-2012');\n    this.dp.update();\n    equal(this.dp.dates.length, 1);\n    datesEqual(this.dp.dates[0], UTCDate(2012, 2, 13));\n});\n\ntest('Navigating to/from decade view', function(){\n    var target;\n\n    this.addon.click();\n    this.input.val('31-03-2012');\n    this.dp.update();\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    ok(target.is(':visible'), 'View switcher is visible');\n\n    target.click();\n    ok(this.picker.find('.datepicker-months').is(':visible'), 'Month picker is visible');\n    equal(this.dp.viewMode, 1);\n    // Not modified when switching modes\n    datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31));\n    datesEqual(this.dp.dates[0], UTCDate(2012, 2, 31));\n\n    target = this.picker.find('.datepicker-months thead th.datepicker-switch');\n    ok(target.is(':visible'), 'View switcher is visible');\n\n    target.click();\n    ok(this.picker.find('.datepicker-years').is(':visible'), 'Year picker is visible');\n    equal(this.dp.viewMode, 2);\n    // Not modified when switching modes\n    datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31));\n    datesEqual(this.dp.dates[0], UTCDate(2012, 2, 31));\n\n    // Change years to test internal state changes\n    target = this.picker.find('.datepicker-years tbody span:contains(2011)');\n    target.click();\n    equal(this.dp.viewMode, 1);\n    // Only viewDate modified\n    datesEqual(this.dp.viewDate, UTCDate(2011, 2, 1));\n    datesEqual(this.dp.dates[0], UTCDate(2012, 2, 31));\n\n    target = this.picker.find('.datepicker-months tbody span:contains(Apr)');\n    target.click();\n    equal(this.dp.viewMode, 0);\n    // Only viewDate modified\n    datesEqual(this.dp.viewDate, UTCDate(2011, 3, 1));\n    datesEqual(this.dp.dates[0], UTCDate(2012, 2, 31));\n});\n\ntest('Selecting date resets viewDate and date', function(){\n    var target;\n\n    this.addon.click();\n    this.input.val('31-03-2012');\n    this.dp.update();\n\n    // Rendered correctly\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days tbody td:first');\n    equal(target.text(), '26'); // Should be Feb 26\n\n    // Updated internally on click\n    target.click();\n    datesEqual(this.dp.viewDate, UTCDate(2012, 1, 26));\n    datesEqual(this.dp.dates[0], UTCDate(2012, 1, 26));\n\n    // Re-rendered on click\n    target = this.picker.find('.datepicker-days tbody td:first');\n    equal(target.text(), '29'); // Should be Jan 29\n});\n\ntest('\"destroy\" removes associated HTML', function(){\n    var datepickerDivSelector = '.datepicker';\n\n    $('#datepicker').datepicker('show');\n\n    //there should be one datepicker initiated so that means one hidden .datepicker div\n    equal($(datepickerDivSelector).length, 1);\n    this.component.datepicker('destroy');\n    equal($(datepickerDivSelector).length, 0);//hidden HTML should be gone\n});\n\ntest('\"remove\" is an alias for \"destroy\"', function(){\n    var called, originalDestroy = this.dp.destroy;\n    this.dp.destroy = function () {\n        called = true;\n        return originalDestroy.apply(this, arguments);\n    };\n    this.dp.remove();\n    ok(called);\n});\n\ntest('Does not block events', function(){\n    var clicks = 0;\n    function handler(){\n        clicks++;\n    }\n    $('#qunit-fixture').on('click', '.add-on', handler);\n    this.addon.click();\n    equal(clicks, 1);\n    $('#qunit-fixture').off('click', '.add-on', handler);\n});\n\n\ntest('date and viewDate must be between startDate and endDate when setStartDate called', function() {\n    this.dp.setDate(new Date(2013, 1, 1));\n    datesEqual(this.dp.dates[0], UTCDate(2013, 1, 1));\n    datesEqual(this.dp.viewDate, UTCDate(2013, 1, 1));\n    this.dp.setStartDate(new Date(2013, 5, 6));\n    datesEqual(this.dp.viewDate, UTCDate(2013, 5, 6));\n    equal(this.dp.dates.length, 0);\n});\n\ntest('date and viewDate must be between startDate and endDate when setEndDate called', function() {\n    this.dp.setDate(new Date(2013, 11, 1));\n    datesEqual(this.dp.dates[0], UTCDate(2013, 11, 1));\n    datesEqual(this.dp.viewDate, UTCDate(2013, 11, 1));\n    this.dp.setEndDate(new Date(2013, 5, 6));\n    datesEqual(this.dp.viewDate, UTCDate(2013, 5, 6));\n    equal(this.dp.dates.length, 0);\n});\n\ntest('picker should render fine when `$.fn.show` and `$.fn.hide` are overridden', patch_show_hide(function () {\n    var viewModes = $.fn.datepicker.DPGlobal.viewModes,\n        minViewMode = this.dp.o.minViewMode,\n        maxViewMode = this.dp.o.maxViewMode,\n        childDivs = this.picker.children('div');\n\n    this.dp.setViewMode(minViewMode);\n\n    // Overwritten `$.fn.hide` method adds the `foo` class to its matched elements\n    var curDivShowing = childDivs.filter('.datepicker-' + viewModes[minViewMode].clsName);\n    ok(!curDivShowing.hasClass('foo'), 'Shown div does not have overridden `$.fn.hide` side-effects');\n\n    // Check that other classes do have `foo` class\n    var divNotShown;\n    for (var curViewMode = minViewMode + 1; curViewMode <= maxViewMode; curViewMode++) {\n        divNotShown = childDivs.filter('.datepicker-' + viewModes[curViewMode].clsName);\n        ok(divNotShown.hasClass('foo'), 'Other divs do have overridden `$.fn.hide` side-effects');\n    }\n}));\n\ntest('Focused ceil for decade/century/millennium views', function(){\n    var input = $('<input />')\n      .appendTo('#qunit-fixture')\n      .datepicker({\n        startView: 2,\n        defaultViewDate: {\n          year: 2115\n        }\n      }),\n      dp = input.data('datepicker'),\n      picker = dp.picker,\n      target;\n\n    input.focus();\n\n    target = picker.find('.datepicker-years tbody .focused');\n    ok(target.text() === '2115', 'Year cell is focused');\n\n    picker.find('.datepicker-years thead th.datepicker-switch').click();\n    target = picker.find('.datepicker-decades tbody .focused');\n    ok(target.text() === '2110', 'Decade cell is focused');\n\n    picker.find('.datepicker-decades thead th.datepicker-switch').click();\n    target = picker.find('.datepicker-centuries tbody .focused');\n    ok(target.text() === '2100', 'Century cell is focused');\n});\n"
  },
  {
    "path": "tests/suites/data-api.js",
    "content": "module('DATA-API');\n\ntest('DATA-API: data-provide=\"datepicker\" on input; focus', function(){\n    var input = $('<input data-provide=\"datepicker\" />')\n                .appendTo('#qunit-fixture');\n    input.focus();\n    ok(input.data('datepicker'), 'datepicker is initialized by \"focus\" event');\n});\n\ntest('DATA-API: data-provide=\"datepicker\" on input; click', function(){\n    var input = $('<input data-provide=\"datepicker\" />')\n                .appendTo('#qunit-fixture');\n    input.click();\n    ok(input.data('datepicker'), 'datepicker is initialized by \"focus\" event');\n});\n\ntest('DATA-API: data-provide=\"datepicker\" on component', function(){\n    var html, comp;\n\n    html = '<div class=\"input-append date\" data-provide=\"datepicker\">'+\n                '<input><span class=\"add-on\"><i class=\"icon-th\"></i></span>'+\n            '</div>';\n\n    comp = $(html).appendTo('#qunit-fixture');\n    comp.find('input').focus();\n    ok(comp.data('datepicker'), 'append component initialized by \"focus\" event on input');\n    comp.remove();\n\n    comp = $(html).appendTo('#qunit-fixture');\n    comp.find('input').click();\n    ok(comp.data('datepicker'), 'append component initialized by \"click\" event on input');\n    comp.remove();\n\n    comp = $(html).appendTo('#qunit-fixture');\n    comp.find('.add-on').focusin();\n    ok(comp.data('datepicker'), 'append component initialized by \"focus\" event on add-on');\n    comp.remove();\n\n    comp = $(html).appendTo('#qunit-fixture');\n    comp.find('.add-on').click();\n    ok(comp.data('datepicker'), 'append component initialized by \"click\" event on add-on');\n    comp.remove();\n\n\n    html = '<div class=\"input-prepend date\" data-provide=\"datepicker\">'+\n                '<span class=\"add-on\"><i class=\"icon-th\"></i></span><input>'+\n            '</div>';\n\n    comp = $(html).prependTo('#qunit-fixture');\n    comp.find('input').focus();\n    ok(comp.data('datepicker'), 'prepend component initialized by \"focus\" event on input');\n    comp.remove();\n\n    comp = $(html).prependTo('#qunit-fixture');\n    comp.find('input').click();\n    ok(comp.data('datepicker'), 'prepend component initialized by \"click\" event on input');\n    comp.remove();\n\n    comp = $(html).prependTo('#qunit-fixture');\n    comp.find('.add-on').focusin();\n    ok(comp.data('datepicker'), 'prepend component initialized by \"focus\" event on add-on');\n    comp.remove();\n\n    comp = $(html).prependTo('#qunit-fixture');\n    comp.find('.add-on').click();\n    ok(comp.data('datepicker'), 'prepend component initialized by \"click\" event on add-on');\n    comp.remove();\n});\n\ntest('DATA-API: data-provide=\"datepicker\" on button', function(){\n    var html, comp;\n\n    html = '<button data-provide=\"datepicker\">';\n\n    comp = $(html).appendTo('#qunit-fixture');\n    comp.focus();\n    ok(comp.data('datepicker'), 'button initialized by \"focus\" event on input');\n    comp.remove();\n\n    comp = $(html).appendTo('#qunit-fixture');\n    comp.click();\n    ok(comp.data('datepicker'), 'button initialized by \"click\" event on input');\n    comp.remove();\n});\n\ntest('DATA-API: data-provide=\"datepicker\" on rangepicker', function(){\n    var html, comp;\n\n    html = '<div class=\"input-daterange\" data-provide=\"datepicker\">'+\n                '<input class=\"datepicker\">'+\n                '<span class=\"add-on\">to</span>'+\n                '<input class=\"datepicker\">'+\n            '</div>';\n\n    comp = $(html).appendTo('#qunit-fixture');\n    comp.find('input:first').focusin();\n    ok(comp.data('datepicker'), 'range initialized by \"focus\" event on first input');\n    comp.remove();\n\n    comp = $(html).appendTo('#qunit-fixture');\n    comp.find('input:first').click();\n    ok(comp.data('datepicker'), 'range initialized by \"click\" event on first input');\n    comp.remove();\n\n    comp = $(html).appendTo('#qunit-fixture');\n    comp.find('input:last').focusin();\n    ok(comp.data('datepicker'), 'range initialized by \"focus\" event on last input');\n    comp.remove();\n\n    comp = $(html).appendTo('#qunit-fixture');\n    comp.find('input:last').click();\n    ok(comp.data('datepicker'), 'range initialized by \"click\" event on last input');\n    comp.remove();\n});\n"
  },
  {
    "path": "tests/suites/events.js",
    "content": "module('Events on initialization', {\n    setup: function(){\n        this.input = $('<input type=\"text\" value=\"31-03-2011\">')\n            .appendTo('#qunit-fixture')\n    }\n});\n\ntest('When initializing the datepicker, it should trigger no change or changeDate events', function(){\n    var triggered_change = 0,\n        triggered_changeDate = 0;\n\n    this.input.on({\n        change: function(){\n            triggered_change++;\n        },\n        changeDate: function(){\n            triggered_changeDate++;\n        }\n    });\n\n    this.input.datepicker({format: 'dd-mm-yyyy'});\n\n    equal(triggered_change, 0);\n    equal(triggered_changeDate, 0);\n});\n\nmodule('Events', {\n    setup: function(){\n        this.input = $('<input type=\"text\" value=\"31-03-2011\">')\n                        .appendTo('#qunit-fixture')\n                        .datepicker({format: \"dd-mm-yyyy\"})\n                        .focus(); // Activate for visibility checks\n        this.dp = this.input.data('datepicker');\n        this.picker = this.dp.picker;\n    },\n    teardown: function(){\n        this.picker.remove();\n    }\n});\n\ntest('Selecting a year from decade view triggers changeYear', function(){\n    var target,\n        triggered = 0;\n\n    this.input.on('changeYear', function(){\n        triggered++;\n    });\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    ok(target.is(':visible'), 'View switcher is visible');\n\n    target.click();\n    ok(this.picker.find('.datepicker-months').is(':visible'), 'Month picker is visible');\n    equal(this.dp.viewMode, 1);\n    // Not modified when switching modes\n    datesEqual(this.dp.viewDate, UTCDate(2011, 2, 31));\n    datesEqual(this.dp.dates[0], UTCDate(2011, 2, 31));\n\n    target = this.picker.find('.datepicker-months thead th.datepicker-switch');\n    ok(target.is(':visible'), 'View switcher is visible');\n\n    target.click();\n    ok(this.picker.find('.datepicker-years').is(':visible'), 'Year picker is visible');\n    equal(this.dp.viewMode, 2);\n    // Not modified when switching modes\n    datesEqual(this.dp.viewDate, UTCDate(2011, 2, 31));\n    datesEqual(this.dp.dates[0], UTCDate(2011, 2, 31));\n\n    // Change years to test internal state changes\n    target = this.picker.find('.datepicker-years tbody span:contains(2010)');\n    target.click();\n    equal(this.dp.viewMode, 1);\n    // Only viewDate modified\n    datesEqual(this.dp.viewDate, UTCDate(2010, 2, 1));\n    datesEqual(this.dp.dates[0], UTCDate(2011, 2, 31));\n    equal(triggered, 1);\n});\n\ntest('Navigating forward/backward from month view triggers changeYear', function(){\n    var target,\n        triggered = 0;\n\n    this.input.on('changeYear', function(){\n        triggered++;\n    });\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    ok(target.is(':visible'), 'View switcher is visible');\n\n    target.click();\n    ok(this.picker.find('.datepicker-months').is(':visible'), 'Month picker is visible');\n    equal(this.dp.viewMode, 1);\n\n    target = this.picker.find('.datepicker-months thead th.prev');\n    ok(target.is(':visible'), 'Prev switcher is visible');\n\n    target.click();\n    ok(this.picker.find('.datepicker-months').is(':visible'), 'Month picker is visible');\n    equal(triggered, 1);\n\n    target = this.picker.find('.datepicker-months thead th.next');\n    ok(target.is(':visible'), 'Next switcher is visible');\n\n    target.click();\n    ok(this.picker.find('.datepicker-months').is(':visible'), 'Month picker is visible');\n    equal(triggered, 2);\n});\n\ntest('Selecting a month from year view triggers changeMonth', function(){\n    var target,\n        triggered = 0;\n\n    this.input.on('changeMonth', function(){\n        triggered++;\n    });\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    ok(target.is(':visible'), 'View switcher is visible');\n\n    target.click();\n    ok(this.picker.find('.datepicker-months').is(':visible'), 'Month picker is visible');\n    equal(this.dp.viewMode, 1);\n    // Not modified when switching modes\n    datesEqual(this.dp.viewDate, UTCDate(2011, 2, 31));\n    datesEqual(this.dp.dates[0], UTCDate(2011, 2, 31));\n\n    target = this.picker.find('.datepicker-months tbody span:contains(Apr)');\n    target.click();\n    equal(this.dp.viewMode, 0);\n    // Only viewDate modified\n    datesEqual(this.dp.viewDate, UTCDate(2011, 3, 1));\n    datesEqual(this.dp.dates[0], UTCDate(2011, 2, 31));\n    equal(triggered, 1);\n});\n\ntest('Navigating forward/backward from month view triggers changeMonth', function(){\n    var target,\n        triggered = 0;\n\n    this.input.on('changeMonth', function(){\n        triggered++;\n    });\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.prev');\n    ok(target.is(':visible'), 'Prev switcher is visible');\n\n    target.click();\n    ok(this.picker.find('.datepicker-days').is(':visible'), 'Day picker is visible');\n    equal(triggered, 1);\n\n    target = this.picker.find('.datepicker-days thead th.next');\n    ok(target.is(':visible'), 'Next switcher is visible');\n\n    target.click();\n    ok(this.picker.find('.datepicker-days').is(':visible'), 'Day picker is visible');\n    equal(triggered, 2);\n});\n\ntest('format() returns a formatted date string', function(){\n    var target,\n        error, out;\n\n    this.input.on('changeDate', function(e){\n        try{\n            out = e.format();\n        }\n        catch(e){\n            error = e;\n        }\n    });\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days tbody td:nth(15)');\n    target.click();\n\n    datesEqual(this.dp.viewDate, UTCDate(2011, 2, 14));\n    datesEqual(this.dp.dates[0], UTCDate(2011, 2, 14));\n    equal(error, undefined);\n    equal(out, '14-03-2011');\n});\n\ntest('format(altformat) returns a formatted date string', function(){\n    var target,\n        error, out;\n\n    this.input.on('changeDate', function(e){\n        try{\n            out = e.format('m/d/yy');\n        }\n        catch(e){\n            error = e;\n        }\n    });\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days tbody td:nth(15)');\n    target.click();\n\n    datesEqual(this.dp.viewDate, UTCDate(2011, 2, 14));\n    datesEqual(this.dp.dates[0], UTCDate(2011, 2, 14));\n    equal(error, undefined);\n    equal(out, '3/14/11');\n});\n\ntest('format(ix) returns a formatted date string of the ix\\'th date selected', function(){\n    var target,\n        error, out;\n\n    this.dp._process_options({multidate: true});\n\n    this.input.on('changeDate', function(e){\n        try{\n            out = e.format(2);\n        }\n        catch(e){\n            error = e;\n        }\n    });\n\n    target = this.picker.find('.datepicker-days tbody td:nth(7)');\n    equal(target.text(), '6'); // Mar 6\n    target.click();\n\n    target = this.picker.find('.datepicker-days tbody td:nth(15)');\n    equal(target.text(), '14'); // Mar 16\n    target.click();\n\n    equal(this.dp.dates.length, 3);\n\n    equal(error, undefined);\n    equal(out, '14-03-2011');\n});\n\ntest('format(ix, altformat) returns a formatted date string', function(){\n    var target,\n        error, out;\n\n    this.dp._process_options({multidate: true});\n\n    this.input.on('changeDate', function(e){\n        try{\n            out = e.format(2, 'm/d/yy');\n        }\n        catch(e){\n            error = e;\n        }\n    });\n\n    target = this.picker.find('.datepicker-days tbody td:nth(7)');\n    equal(target.text(), '6'); // Mar 6\n    target.click();\n\n    target = this.picker.find('.datepicker-days tbody td:nth(15)');\n    equal(target.text(), '14'); // Mar 16\n    target.click();\n\n    equal(this.dp.dates.length, 3);\n\n    equal(error, undefined);\n    equal(out, '3/14/11');\n});\n\ntest('Clear button: triggers change and changeDate events', function(){\n    this.input = $('<input type=\"text\" value=\"31-03-2011\">')\n                    .appendTo('#qunit-fixture')\n                    .datepicker({\n                        format: \"dd-mm-yyyy\",\n                        clearBtn: true\n                    })\n                    .focus(); // Activate for visibility checks\n    this.dp = this.input.data('datepicker');\n    this.picker = this.dp.picker;\n\n    var target,\n        triggered_change = 0,\n        triggered_changeDate = 0;\n\n    this.input.on({\n        changeDate: function(){\n            triggered_changeDate++;\n        },\n        change: function(){\n            triggered_change++;\n        }\n    });\n\n    this.input.focus();\n    ok(this.picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n    ok(this.picker.find('.datepicker-days tfoot .clear').is(':visible'), 'Clear button visible');\n\n    target = this.picker.find('.datepicker-days tfoot .clear');\n    target.click();\n\n    equal(triggered_change, 1);\n    equal(triggered_changeDate, 1);\n});\n\ntest('setDate: triggers change and changeDate events', function(){\n    this.input = $('<input type=\"text\" value=\"31-03-2011\">')\n                    .appendTo('#qunit-fixture')\n                    .datepicker({\n                        format: \"dd-mm-yyyy\"\n                    })\n                    .focus(); // Activate for visibility checks\n    this.dp = this.input.data('datepicker');\n    this.picker = this.dp.picker;\n\n    var target,\n        triggered_change = 0,\n        triggered_changeDate = 0;\n\n    this.input.on({\n        changeDate: function(){\n            triggered_changeDate++;\n        },\n        change: function(){\n            triggered_change++;\n        }\n    });\n\n    this.input.focus();\n    ok(this.picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n\n    this.dp.setDate(new Date(2011, 2, 5));\n\n    equal(triggered_change, 1);\n    equal(triggered_changeDate, 1);\n});\n\ntest('paste must update the date', function() {\n    var dateToPaste = '22-07-2015';\n    var evt = {\n        type: 'paste',\n        originalEvent: {\n            clipboardData: {\n                types: ['text/plain'],\n                getData: function() { return dateToPaste; }\n            },\n            preventDefault: function() { evt.originalEvent.isDefaultPrevented = true; },\n            isDefaultPrevented: false\n        }\n    };\n    this.input.trigger(evt);\n    datesEqual(this.dp.dates[0], UTCDate(2015, 6, 22));\n\n    ok(evt.originalEvent.isDefaultPrevented, 'prevented original event');\n});\n\ntest('clicking outside datepicker triggers \\'hide\\' event', function(){\n    var $otherelement = $('<div />');\n    $('body').append($otherelement);\n\n    var isHideTriggered;\n    this.input.on('hide', function() { isHideTriggered = true; });\n\n    $otherelement.trigger('mousedown');\n\n    ok(isHideTriggered, '\\'hide\\' event is not triggered');\n\n    $otherelement.remove();\n});\n\ntest('Selecting date from previous month triggers changeMonth', function() {\n    var target,\n        triggered = 0;\n\n    this.input.on('changeMonth', function(){\n        triggered++;\n    });\n\n    // find first day of previous month\n    target = this.picker.find('.datepicker-days tbody td:first');\n    target.click();\n\n    // ensure event has been triggered\n    equal(triggered, 1);\n});\n\ntest('Selecting date from previous month in january triggers changeMonth/changeYear', function() {\n    var target,\n        triggeredM = 0,\n        triggeredY = 0;\n\n    this.input.val('01-01-2011');\n    this.dp.update();\n\n    this.input.on('changeMonth', function(){\n        triggeredM++;\n    });\n\n    this.input.on('changeYear', function(){\n        triggeredY++;\n    });\n\n    // find first day of previous month\n    target = this.picker.find('.datepicker-days tbody td:first');\n    target.click();\n\n    // ensure event has been triggered\n    equal(triggeredM, 1);\n    equal(triggeredY, 1);\n});\n\ntest('Selecting date from next month triggers changeMonth', function() {\n    var target,\n        triggered = 0;\n\n    this.input.on('changeMonth', function(){\n        triggered++;\n    });\n\n    // find first day of previous month\n    target = this.picker.find('.datepicker-days tbody td:last');\n    target.click();\n\n    // ensure event has been triggered\n    equal(triggered, 1);\n});\n\ntest('Selecting date from next month in december triggers changeMonth/changeYear', function() {\n    var target,\n        triggeredM = 0,\n        triggeredY = 0;\n\n    this.input.val('01-12-2011');\n    this.dp.update();\n\n    this.input.on('changeMonth', function(){\n        triggeredM++;\n    });\n\n    this.input.on('changeYear', function(){\n        triggeredY++;\n    });\n\n    // find first day of previous month\n    target = this.picker.find('.datepicker-days tbody td:last');\n    target.click();\n\n    // ensure event has been triggered\n    equal(triggeredM, 1);\n    equal(triggeredY, 1);\n});\n\ntest('Changing view mode triggers changeViewMode', function () {\n  var viewMode = -1,\n    triggered = 0;\n\n  this.input.val('22-07-2016');\n  this.dp.update();\n\n  this.input.on('changeViewMode', function (e) {\n    viewMode = e.viewMode;\n    triggered++;\n  });\n\n  // change from days to months\n  this.picker.find('.datepicker-days .datepicker-switch').click();\n  equal(triggered, 1);\n  equal(viewMode, 1);\n\n  // change from months to years\n  this.picker.find('.datepicker-months .datepicker-switch').click();\n  equal(triggered, 2);\n  equal(viewMode, 2);\n\n  // change from years to decade\n  this.picker.find('.datepicker-years .datepicker-switch').click();\n  equal(triggered, 3);\n  equal(viewMode, 3);\n\n  // change from decades to centuries\n  this.picker.find('.datepicker-decades .datepicker-switch').click();\n  equal(triggered, 4);\n  equal(viewMode, 4);\n\n});\n\ntest('Clicking inside content of date with custom beforeShowDay content works', function(){\n    this.input = $('<input type=\"text\" value=\"31-03-2011\">')\n                    .appendTo('#qunit-fixture')\n                    .datepicker({\n                        format: \"dd-mm-yyyy\",\n                        beforeShowDay: function (date) { return { content: '<div><div>' + date.getDate() + '</div></div>' }; }\n                    })\n                    .focus(); // Activate for visibility checks\n    this.dp = this.input.data('datepicker');\n    this.picker = this.dp.picker;\n\n    var target,\n        triggered = 0;\n\n    this.input.on('changeDate', function(){\n        triggered++;\n    });\n\n    // find deepest date\n    target = this.picker.find('.datepicker-days tbody td:first div div');\n    target.click();\n\n    // ensure event has been triggered\n    equal(triggered, 1);\n});\n"
  },
  {
    "path": "tests/suites/formats.js",
    "content": "module('Formats', {\n    setup: function(){\n        this.input = $('<input type=\"text\">').appendTo('#qunit-fixture');\n        this.date = UTCDate(2012, 2, 15, 0, 0, 0, 0); // March 15, 2012\n    },\n    teardown: function(){\n        this.input.data('datepicker').picker.remove();\n    }\n});\n\ntest('d: Day of month, no leading zero.', function(){\n    this.input\n        .val('2012-03-05')\n        .datepicker({format: 'yyyy-mm-d'})\n        .datepicker('setValue');\n    equal(this.input.val().split('-')[2], '5');\n});\n\ntest('dd: Day of month, leading zero.', function(){\n    this.input\n        .val('2012-03-5')\n        .datepicker({format: 'yyyy-mm-dd'})\n        .datepicker('setValue');\n    equal(this.input.val().split('-')[2], '05');\n});\n\ntest('D: Day of week, short.', function(){\n    this.input\n        .val('2012-03-05')\n        .datepicker({format: 'yyyy-mm-dd-D'})\n        .datepicker('setValue');\n    equal(this.input.val().split('-')[3], 'Mon');\n});\n\ntest('DD: Day of week, long.', function(){\n    this.input\n        .val('2012-03-05')\n        .datepicker({format: 'yyyy-mm-dd-DD'})\n        .datepicker('setValue');\n    equal(this.input.val().split('-')[3], 'Monday');\n});\n\ntest('m: Month, no leading zero.', function(){\n    this.input\n        .val('2012-03-05')\n        .datepicker({format: 'yyyy-m-dd'})\n        .datepicker('setValue');\n    equal(this.input.val().split('-')[1], '3');\n});\n\ntest('mm: Month, leading zero.', function(){\n    this.input\n        .val('2012-3-5')\n        .datepicker({format: 'yyyy-mm-dd'})\n        .datepicker('setValue');\n    equal(this.input.val().split('-')[1], '03');\n});\n\ntest('M: Month shortname.', function(){\n    this.input\n        .val('2012-Mar-05')\n        .datepicker({format: 'yyyy-M-dd'})\n        .datepicker('setValue');\n    equal(this.input.val().split('-')[1], 'Mar');\n});\n\ntest('M: Month shortname case insensitive.', function(){\n    this.input\n        .val('2012-MAR-05')\n        .datepicker({format: 'yyyy-M-dd'})\n        .datepicker('setValue');\n    equal(this.input.val().split('-')[1], 'Mar');\n});\n\ntest('MM: Month full name.', function(){\n    this.input\n        .val('2012-March-5')\n        .datepicker({format: 'yyyy-MM-dd'})\n        .datepicker('setValue');\n    equal(this.input.val().split('-')[1], 'March');\n});\n\ntest('M: Month fullname case insensitive.', function(){\n    this.input\n        .val('2012-MARCH-05')\n        .datepicker({format: 'yyyy-MM-dd'})\n        .datepicker('setValue');\n    equal(this.input.val().split('-')[1], 'March');\n});\n\ntest('yy: Year, two-digit.', function(){\n    this.input\n        .val('2012-03-05')\n        .datepicker({format: 'yy-mm-dd'})\n        .datepicker('setValue');\n    equal(this.input.val().split('-')[0], '12');\n});\n\ntest('yyyy: Year, four-digit.', function(){\n    this.input\n        .val('2012-03-5')\n        .datepicker({format: 'yyyy-mm-dd'})\n        .datepicker('setValue');\n    equal(this.input.val().split('-')[0], '2012');\n});\n\ntest('dd-mm-yyyy: Regression: Prevent potential month overflow in small-to-large formats (Mar 31, 2012 -> Mar 01, 2012)', function(){\n    this.input\n        .val('31-03-2012')\n        .datepicker({format: 'dd-mm-yyyy'})\n        .datepicker('setValue');\n    equal(this.input.val(), '31-03-2012');\n});\n\ntest('dd-mm-yyyy: Leap day', function(){\n    this.input\n        .val('29-02-2012')\n        .datepicker({format: 'dd-mm-yyyy'})\n        .datepicker('setValue');\n    equal(this.input.val(), '29-02-2012');\n});\n\ntest('yyyy-mm-dd: Alternative format', function(){\n    this.input\n        .val('2012-02-12')\n        .datepicker({format: 'yyyy-mm-dd'})\n        .datepicker('setValue');\n    equal(this.input.val(), '2012-02-12');\n});\n\ntest('yyyy-MM-dd: Regression: Infinite loop when numbers used for month', function(){\n    this.input\n        .val('2012-02-12')\n        .datepicker({format: 'yyyy-MM-dd'})\n        .datepicker('setValue');\n    equal(this.input.val(), '2012-February-12');\n});\n\ntest('+1d: Tomorrow', patch_date(function(Date){\n    Date.now = function(){\n        return UTCDate(2012, 2, 15).getTime();\n    };\n    this.input\n        .val('+1d')\n        .datepicker({format: 'dd-mm-yyyy'})\n        .datepicker('setValue');\n    equal(this.input.val(), '16-03-2012');\n}));\n\ntest('tomorrow (alias for +1d): Tomorrow', patch_date(function(Date){\n    Date.now = function(){\n        return UTCDate(2012, 2, 15).getTime();\n    };\n    this.input\n        .val('tomorrow')\n        .datepicker({format: 'dd-mm-yyyy'})\n        .datepicker('setValue');\n    equal(this.input.val(), '16-03-2012');\n}));\n\ntest('-1d: Yesterday', patch_date(function(Date){\n    Date.now = function(){\n        return UTCDate(2012, 2, 15).getTime();\n    };\n    this.input\n        .val('-1d')\n        .datepicker({format: 'dd-mm-yyyy'})\n        .datepicker('setValue');\n    equal(this.input.val(), '14-03-2012');\n}));\n\ntest('yesterday (alias for -1d): Yesterday', patch_date(function(Date){\n    Date.now = function(){\n        return UTCDate(2012, 2, 15).getTime();\n    };\n    this.input\n        .val('yesterday')\n        .datepicker({format: 'dd-mm-yyyy'})\n        .datepicker('setValue');\n    equal(this.input.val(), '14-03-2012');\n}));\n\ntest('+1w: Next week', patch_date(function(Date){\n    Date.now = function(){\n        return UTCDate(2012, 2, 15).getTime();\n    };\n    this.input\n        .val('+1w')\n        .datepicker({format: 'dd-mm-yyyy'})\n        .datepicker('setValue');\n    equal(this.input.val(), '22-03-2012');\n}));\n\ntest('-1w: Last week', patch_date(function(Date){\n    Date.now = function(){\n        return UTCDate(2012, 2, 15).getTime();\n    };\n    this.input\n        .val('-1w')\n        .datepicker({format: 'dd-mm-yyyy'})\n        .datepicker('setValue');\n    equal(this.input.val(), '08-03-2012');\n}));\n\ntest('+1m: Next month', patch_date(function(Date){\n    Date.now = function(){\n        return UTCDate(2012, 2, 15).getTime();\n    };\n    this.input\n        .val('+1m')\n        .datepicker({format: 'dd-mm-yyyy'})\n        .datepicker('setValue');\n    equal(this.input.val(), '15-04-2012');\n}));\n\ntest('-1m: Last month', patch_date(function(Date){\n    Date.now = function(){\n        return UTCDate(2012, 2, 15).getTime();\n    };\n    this.input\n        .val('-1m')\n        .datepicker({format: 'dd-mm-yyyy'})\n        .datepicker('setValue');\n    equal(this.input.val(), '15-02-2012');\n}));\n\ntest('+1y: Next year', patch_date(function(Date){\n    Date.now = function(){\n        return UTCDate(2012, 2, 15).getTime();\n    };\n    this.input\n        .val('+1y')\n        .datepicker({format: 'dd-mm-yyyy'})\n        .datepicker('setValue');\n    equal(this.input.val(), '15-03-2013');\n}));\n\ntest('-1y: Last year', patch_date(function(Date){\n    Date.now = function(){\n        return UTCDate(2012, 2, 15).getTime();\n    };\n    this.input\n        .val('-1y')\n        .datepicker({format: 'dd-mm-yyyy'})\n        .datepicker('setValue');\n    equal(this.input.val(), '15-03-2011');\n}));\n\ntest('-1y +2m: Multiformat', patch_date(function(Date){\n    Date.now = function(){\n        return UTCDate(2012, 2, 15).getTime();\n    };\n    this.input\n        .val('-1y +2m')\n        .datepicker({format: 'dd-mm-yyyy'})\n        .datepicker('setValue');\n    equal(this.input.val(), '15-05-2011');\n}));\n\ntest('Regression: End-of-month bug', patch_date(function(Date){\n    Date.now = function(){\n        return UTCDate(2012, 4, 31).getTime();\n    };\n    this.input\n        .val('29-02-2012')\n        .datepicker({format: 'dd-mm-yyyy'})\n        .datepicker('setValue');\n    equal(this.input.val(), '29-02-2012');\n}));\n\ntest('Invalid formats are force-parsed into a valid date on tab', patch_date(function(Date){\n    Date.now = function(){\n        return UTCDate(2012, 4, 31).getTime();\n    };\n    this.input\n        .val('44-44-4444')\n        .datepicker({format: 'yyyy-MM-dd'})\n        .focus();\n\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 9\n    });\n\n    equal(this.input.val(), '56-September-30');\n}));\n\ntest('Trailing separators', patch_date(function(Date){\n    Date.now = function(){\n        return UTCDate(2012, 4, 31).getTime();\n    };\n    this.input\n        .val('29.02.2012.')\n        .datepicker({format: 'dd.mm.yyyy.'})\n        .datepicker('setValue');\n    equal(this.input.val(), '29.02.2012.');\n}));\n\ntest('Assume nearby year - last century', patch_date(function(Date){\n    Date.now = function(){\n        return UTCDate(2012, 4, 31).getTime();\n    };\n    this.input\n        .val('02/14/91')\n        .datepicker({format: 'mm/dd/yyyy', assumeNearbyYear: true})\n        .datepicker('setValue');\n    equal(this.input.val(), '02/14/1991');\n}));\n\ntest('Assume nearby year - this century (- 1 year)', patch_date(function(Date){\n    Date.now = function(){\n        return UTCDate(2012, 4, 31).getTime();\n    };\n    this.input\n        .val('02/14/01')\n        .datepicker({format: 'mm/dd/yyyy', assumeNearbyYear: true})\n        .datepicker('setValue');\n    equal(this.input.val(), '02/14/2001');\n}));\n\ntest('Assume nearby year - this century (+ 7 years)', patch_date(function(Date){\n    Date.now = function(){\n        return UTCDate(2012, 4, 31).getTime();\n    };\n    this.input\n        .val('02/14/19')\n        .datepicker({format: 'mm/dd/yyyy', assumeNearbyYear: true})\n        .datepicker('setValue');\n    equal(this.input.val(), '02/14/2019');\n}));\n\ntest('Assume nearby year - this century (+ 13 years)', patch_date(function(Date){\n    Date.now = function(){\n        return UTCDate(2012, 4, 31).getTime();\n    };\n    this.input\n        .val('02/14/23')\n        .datepicker({format: 'mm/dd/yyyy', assumeNearbyYear: true})\n        .datepicker('setValue');\n    equal(this.input.val(), '02/14/1923');\n}));\n\ntest('Assume nearby year - this century (+ 13 years, threshold = 30)', patch_date(function(Date){\n    Date.now = function(){\n        return UTCDate(2012, 4, 31).getTime();\n    };\n    this.input\n        .val('02/14/23')\n        .datepicker({format: 'mm/dd/yyyy', assumeNearbyYear: 30})\n        .datepicker('setValue');\n    equal(this.input.val(), '02/14/2023');\n}));\n"
  },
  {
    "path": "tests/suites/inline.js",
    "content": "module('Inline', {\n    setup: function(){\n        this.component = $('<div data-date=\"12-02-2012\"></div>')\n                        .appendTo('#qunit-fixture')\n                        .datepicker({format: \"dd-mm-yyyy\"});\n        this.dp = this.component.data('datepicker');\n        this.picker = this.dp.picker;\n    },\n    teardown: function(){\n        this.picker.remove();\n    }\n});\n\n\ntest('Picker gets date/viewDate from data-date attr', function(){\n    datesEqual(this.dp.dates[0], UTCDate(2012, 1, 12));\n    datesEqual(this.dp.viewDate, UTCDate(2012, 1, 12));\n});\n\n\ntest('Visible after init', function(){\n    ok(this.picker.is(':visible'));\n});\n\ntest('update', function(){\n    this.dp.update('13-03-2012');\n    datesEqual(this.dp.dates[0], UTCDate(2012, 2, 13));\n});\n"
  },
  {
    "path": "tests/suites/keyboard_navigation/2011.js",
    "content": "module('Keyboard Navigation 2011', {\n    setup: function(){\n        /*\n            Tests start with picker on March 31, 2011.  Fun facts:\n\n            * March 1, 2011 was on a Tuesday\n            * March 31, 2011 was on a Thursday\n        */\n        this.input = $('<input type=\"text\" value=\"31-03-2011\">')\n                        .appendTo('#qunit-fixture')\n                        .datepicker({format: \"dd-mm-yyyy\"})\n                        .focus(); // Activate for visibility checks\n        this.dp = this.input.data('datepicker');\n        this.picker = this.dp.picker;\n    },\n    teardown: function(){\n        this.picker.remove();\n    }\n});\n\ntest('Regression: by week (up/down arrows); up from Mar 6, 2011 should go to Feb 27, 2011', function(){\n    var target;\n\n    this.input.val('06-03-2011').datepicker('update');\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2011', 'Title is \"March 2011\"');\n    datesEqual(this.dp.viewDate, UTCDate(2011, 2, 6));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 6));\n    equal(this.dp.focusDate, null);\n\n    // Navigation: -1 week, up arrow key\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 38\n    });\n    datesEqual(this.dp.viewDate, UTCDate(2011, 1, 27));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 6));\n    datesEqual(this.dp.focusDate, UTCDate(2011, 1, 27));\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'February 2011', 'Title is \"February 2011\"');\n});\n\ntest('Regression: by day (left/right arrows); left from Mar 1, 2011 should go to Feb 28, 2011', function(){\n    var target;\n\n    this.input.val('01-03-2011').datepicker('update');\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2011', 'Title is \"March 2011\"');\n    datesEqual(this.dp.viewDate, UTCDate(2011, 2, 1));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 1));\n    equal(this.dp.focusDate, null);\n\n    // Navigation: -1 day left arrow key\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 37\n    });\n    datesEqual(this.dp.viewDate, UTCDate(2011, 1, 28));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 1));\n    datesEqual(this.dp.focusDate, UTCDate(2011, 1, 28));\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'February 2011', 'Title is \"February 2011\"');\n});\n\ntest('Regression: by month (shift + left/right arrows); left from Mar 15, 2011 should go to Feb 15, 2011', function(){\n    var target;\n\n    this.input.val('15-03-2011').datepicker('update');\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2011', 'Title is \"March 2011\"');\n    datesEqual(this.dp.viewDate, UTCDate(2011, 2, 15));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 15));\n    equal(this.dp.focusDate, null);\n\n    // Navigation: -1 month, shift + left arrow key\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 37,\n        shiftKey: true\n    });\n    datesEqual(this.dp.viewDate, UTCDate(2011, 1, 15));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 15));\n    datesEqual(this.dp.focusDate, UTCDate(2011, 1, 15));\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'February 2011', 'Title is \"February 2011\"');\n});\n\ntest('Regression: by month with view mode = 1 (left/right arrow); left from March 15, 2011 should go to February 15, 2011', function () {\n  this.picker.remove();\n  this.input = $('<input type=\"text\" value=\"15-03-2011\">')\n    .appendTo('#qunit-fixture')\n    .datepicker({\n      format: \"dd-mm-yyyy\",\n      minViewMode: 1,\n      startView: 1\n    })\n    .focus(); // Activate for visibility checks\n  this.dp = this.input.data('datepicker');\n  this.picker = this.dp.picker;\n\n  this.input.val('15-03-2011').datepicker('update');\n  equal(this.dp.viewMode, 1);\n\n  target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n  equal(target.text(), 'March 2011', 'Title is \"March 2011\"');\n  datesEqual(this.dp.viewDate, UTCDate(2011, 2, 15));\n  datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 15));\n  equal(this.dp.focusDate, null);\n\n  this.input.trigger({\n    type: 'keydown',\n    keyCode: 37\n  });\n\n  datesEqual(this.dp.viewDate, UTCDate(2011, 1, 15));\n  datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 15));\n  datesEqual(this.dp.focusDate, UTCDate(2011, 1, 15));\n  target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n  equal(target.text(), 'February 2011', 'Title is \"February 2011\"');\n});\n\ntest('Regression: by month with view mode = 1 (up/down arrow); down from March 15, 2011 should go to July 15, 2010', function () {\n  this.picker.remove();\n  this.input = $('<input type=\"text\" value=\"15-03-2011\">')\n    .appendTo('#qunit-fixture')\n    .datepicker({\n      format: \"dd-mm-yyyy\",\n      minViewMode: 1,\n      startView: 1\n    })\n    .focus(); // Activate for visibility checks\n  this.dp = this.input.data('datepicker');\n  this.picker = this.dp.picker;\n\n  this.input.val('15-03-2011').datepicker('update');\n  equal(this.dp.viewMode, 1);\n\n  target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n  equal(target.text(), 'March 2011', 'Title is \"March 2011\"');\n  datesEqual(this.dp.viewDate, UTCDate(2011, 2, 15));\n  datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 15));\n  equal(this.dp.focusDate, null);\n\n  this.input.trigger({\n    type: 'keydown',\n    keyCode: 40\n  });\n\n  datesEqual(this.dp.viewDate, UTCDate(2011, 6, 15));\n  datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 15));\n  datesEqual(this.dp.focusDate, UTCDate(2011, 6, 15));\n  target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n  equal(target.text(), 'July 2011', 'Title is \"July 2011\"');\n});\n\ntest('Regression: by year with view mode = 2 (left/right arrow); left from March 15, 2011 should go to March 15, 2010', function () {\n  this.picker.remove();\n  this.input = $('<input type=\"text\" value=\"15-03-2011\">')\n    .appendTo('#qunit-fixture')\n    .datepicker({\n      format: \"dd-mm-yyyy\",\n      minViewMode: 2,\n      startView: 2\n    })\n    .focus(); // Activate for visibility checks\n  this.dp = this.input.data('datepicker');\n  this.picker = this.dp.picker;\n\n  this.input.val('15-03-2011').datepicker('update');\n  equal(this.dp.viewMode, 2);\n\n  target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n  equal(target.text(), 'March 2011', 'Title is \"March 2011\"');\n  datesEqual(this.dp.viewDate, UTCDate(2011, 2, 15));\n  datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 15));\n  equal(this.dp.focusDate, null);\n\n  this.input.trigger({\n    type: 'keydown',\n    keyCode: 37\n  });\n\n  datesEqual(this.dp.viewDate, UTCDate(2010, 2, 15));\n  datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 15));\n  datesEqual(this.dp.focusDate, UTCDate(2010, 2, 15));\n  target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n  equal(target.text(), 'March 2010', 'Title is \"March 2010\"');\n});\n\ntest('Regression: by year with view mode = 2 (up/down arrow); dows from March 15, 2011 should go to March 15, 2015', function () {\n  this.picker.remove();\n  this.input = $('<input type=\"text\" value=\"15-03-2011\">')\n    .appendTo('#qunit-fixture')\n    .datepicker({\n      format: \"dd-mm-yyyy\",\n      minViewMode: 2,\n      startView: 2\n    })\n    .focus(); // Activate for visibility checks\n  this.dp = this.input.data('datepicker');\n  this.picker = this.dp.picker;\n\n  this.input.val('15-03-2011').datepicker('update');\n  equal(this.dp.viewMode, 2);\n\n  target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n  equal(target.text(), 'March 2011', 'Title is \"March 2011\"');\n  datesEqual(this.dp.viewDate, UTCDate(2011, 2, 15));\n  datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 15));\n  equal(this.dp.focusDate, null);\n\n  this.input.trigger({\n    type: 'keydown',\n    keyCode: 40\n  });\n\n  datesEqual(this.dp.viewDate, UTCDate(2015, 2, 15));\n  datesEqual(this.dp.dates.get(-1), UTCDate(2011, 2, 15));\n  datesEqual(this.dp.focusDate, UTCDate(2015, 2, 15));\n  target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n  equal(target.text(), 'March 2015', 'Title is \"March 2015\"');\n});\n"
  },
  {
    "path": "tests/suites/keyboard_navigation/2012.js",
    "content": "module('Keyboard Navigation 2012', {\n    setup: function(){\n        /*\n            Tests start with picker on March 31, 2012.  Fun facts:\n\n            * February 1, 2012 was on a Wednesday\n            * February 29, 2012 was on a Wednesday\n            * March 1, 2012 was on a Thursday\n            * March 31, 2012 was on a Saturday\n        */\n        this.input = $('<input type=\"text\" value=\"31-03-2012\">')\n                        .appendTo('#qunit-fixture')\n                        .datepicker({format: \"dd-mm-yyyy\"})\n                        .focus(); // Activate for visibility checks\n        this.dp = this.input.data('datepicker');\n        this.picker = this.dp.picker;\n    },\n    teardown: function(){\n        this.picker.remove();\n    }\n});\n\n\ntest('by day (right/left arrows)', function(){\n    var target;\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2012', 'Title is \"March 2012\"');\n\n    // Navigation: -1 day, left arrow key\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 37\n    });\n    // view and focus updated on keyboard navigation, not selected\n    datesEqual(this.dp.viewDate, UTCDate(2012, 2, 30));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n    datesEqual(this.dp.focusDate, UTCDate(2012, 2, 30));\n    // Month not changed\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2012', 'Title is \"March 2012\"');\n\n    // Navigation: +1 day, right arrow key\n    for (var i=0; i<2; i++)\n        this.input.trigger({\n            type: 'keydown',\n            keyCode: 39\n        });\n    datesEqual(this.dp.viewDate, UTCDate(2012, 3, 1));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n    datesEqual(this.dp.focusDate, UTCDate(2012, 3, 1));\n    // Month changed: April 1 (this is not a joke!)\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'April 2012', 'Title is \"April 2012\"');\n});\n\ntest('by week (up/down arrows)', function(){\n    var target;\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2012', 'Title is \"March 2012\"');\n\n    // Navigation: -1 week, up arrow key\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 38\n    });\n    // view and focus updated on keyboard navigation, not selected\n    datesEqual(this.dp.viewDate, UTCDate(2012, 2, 24));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n    datesEqual(this.dp.focusDate, UTCDate(2012, 2, 24));\n    // Month not changed\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2012', 'Title is \"March 2012\"');\n\n    // Navigation: +1 week, down arrow key\n    for (var i=0; i<2; i++)\n        this.input.trigger({\n            type: 'keydown',\n            keyCode: 40\n        });\n    datesEqual(this.dp.viewDate, UTCDate(2012, 3, 7));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n    datesEqual(this.dp.focusDate, UTCDate(2012, 3, 7));\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'April 2012', 'Title is \"April 2012\"');\n});\n\ntest('by month, v1 (shift + left/right arrows)', function(){\n    var target;\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2012', 'Title is \"March 2012\"');\n\n    // Navigation: -1 month, shift + left arrow key\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 37,\n        shiftKey: true\n    });\n    // view and focus updated on keyboard navigation w/ graceful date ends, not selected\n    datesEqual(this.dp.viewDate, UTCDate(2012, 1, 29));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n    datesEqual(this.dp.focusDate, UTCDate(2012, 1, 29));\n    // Month not changed\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'February 2012', 'Title is \"February 2012\"');\n\n    // Navigation: +1 month, shift + right arrow key\n    for (var i=0; i<2; i++)\n        this.input.trigger({\n            type: 'keydown',\n            keyCode: 39,\n            shiftKey: true\n        });\n    datesEqual(this.dp.viewDate, UTCDate(2012, 3, 29));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n    datesEqual(this.dp.focusDate, UTCDate(2012, 3, 29));\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'April 2012', 'Title is \"April 2012\"');\n});\n\ntest('by month, v2 (shift + up/down arrows)', function(){\n    var target;\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2012', 'Title is \"March 2012\"');\n\n    // Navigation: -1 month, shift + up arrow key\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 38,\n        shiftKey: true\n    });\n    // view and focus updated on keyboard navigation w/ graceful date ends, not selected\n    datesEqual(this.dp.viewDate, UTCDate(2012, 1, 29));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n    datesEqual(this.dp.focusDate, UTCDate(2012, 1, 29));\n    // Month not changed\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'February 2012', 'Title is \"February 2012\"');\n\n    // Navigation: +1 month, shift + down arrow key\n    for (var i=0; i<2; i++)\n        this.input.trigger({\n            type: 'keydown',\n            keyCode: 40,\n            shiftKey: true\n        });\n    datesEqual(this.dp.viewDate, UTCDate(2012, 3, 29));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n    datesEqual(this.dp.focusDate, UTCDate(2012, 3, 29));\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'April 2012', 'Title is \"April 2012\"');\n});\n\ntest('by year, v1 (ctrl + left/right arrows)', function(){\n    var target;\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2012', 'Title is \"March 2012\"');\n\n    // Navigation: -1 year, ctrl + left arrow key\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 37,\n        ctrlKey: true\n    });\n    // view and focus updated on keyboard navigation, not selected\n    datesEqual(this.dp.viewDate, UTCDate(2011, 2, 31));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n    datesEqual(this.dp.focusDate, UTCDate(2011, 2, 31));\n    // Month not changed\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2011', 'Title is \"March 2011\"');\n\n    // Navigation: +1 year, ctrl + right arrow key\n    for (var i=0; i<2; i++)\n        this.input.trigger({\n            type: 'keydown',\n            keyCode: 39,\n            ctrlKey: true\n        });\n    datesEqual(this.dp.viewDate, UTCDate(2013, 2, 31));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n    datesEqual(this.dp.focusDate, UTCDate(2013, 2, 31));\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2013', 'Title is \"March 2013\"');\n});\n\ntest('by year, v2 (ctrl + up/down arrows)', function(){\n    var target;\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2012', 'Title is \"March 2012\"');\n\n    // Navigation: -1 year, ctrl + up arrow key\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 38,\n        ctrlKey: true\n    });\n    // view and focus updated on keyboard navigation, not selected\n    datesEqual(this.dp.viewDate, UTCDate(2011, 2, 31));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n    datesEqual(this.dp.focusDate, UTCDate(2011, 2, 31));\n    // Month not changed\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2011', 'Title is \"March 2011\"');\n\n    // Navigation: +1 year, ctrl + down arrow key\n    for (var i=0; i<2; i++)\n        this.input.trigger({\n            type: 'keydown',\n            keyCode: 40,\n            ctrlKey: true\n        });\n    datesEqual(this.dp.viewDate, UTCDate(2013, 2, 31));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n    datesEqual(this.dp.focusDate, UTCDate(2013, 2, 31));\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2013', 'Title is \"March 2013\"');\n});\n\ntest('by year, v3 (ctrl + shift + left/right arrows)', function(){\n    var target;\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2012', 'Title is \"March 2012\"');\n\n    // Navigation: -1 year, ctrl + left arrow key\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 37,\n        ctrlKey: true,\n        shiftKey: true\n    });\n    // view and focus updated on keyboard navigation, not selected\n    datesEqual(this.dp.viewDate, UTCDate(2011, 2, 31));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n    datesEqual(this.dp.focusDate, UTCDate(2011, 2, 31));\n    // Month not changed\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2011', 'Title is \"March 2011\"');\n\n    // Navigation: +1 year, ctrl + right arrow key\n    for (var i=0; i<2; i++)\n        this.input.trigger({\n            type: 'keydown',\n            keyCode: 39,\n            ctrlKey: true,\n            shiftKey: true\n        });\n    datesEqual(this.dp.viewDate, UTCDate(2013, 2, 31));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n    datesEqual(this.dp.focusDate, UTCDate(2013, 2, 31));\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2013', 'Title is \"March 2013\"');\n});\n\ntest('by year, v4 (ctrl + shift + up/down arrows)', function(){\n    var target;\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2012', 'Title is \"March 2012\"');\n\n    // Navigation: -1 year, ctrl + up arrow key\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 38,\n        ctrlKey: true,\n        shiftKey: true\n    });\n    // view and focus updated on keyboard navigation, not selected\n    datesEqual(this.dp.viewDate, UTCDate(2011, 2, 31));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n    datesEqual(this.dp.focusDate, UTCDate(2011, 2, 31));\n    // Month not changed\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2011', 'Title is \"March 2011\"');\n\n    // Navigation: +1 year, ctrl + down arrow key\n    for (var i=0; i<2; i++)\n        this.input.trigger({\n            type: 'keydown',\n            keyCode: 40,\n            ctrlKey: true,\n            shiftKey: true\n        });\n    datesEqual(this.dp.viewDate, UTCDate(2013, 2, 31));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n    datesEqual(this.dp.focusDate, UTCDate(2013, 2, 31));\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2013', 'Title is \"March 2013\"');\n});\n\ntest('by year, from leap day', function(){\n    var target;\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n\n    this.input.val('29-02-2012').datepicker('update');\n    datesEqual(this.dp.viewDate, UTCDate(2012, 1, 29));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 1, 29));\n    equal(this.dp.focusDate, null);\n    equal(target.text(), 'February 2012', 'Title is \"February 2012\"');\n\n    // Navigation: -1 year\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 37,\n        ctrlKey: true\n    });\n    // view and focus updated on keyboard navigation w/ graceful month ends, not selected\n    datesEqual(this.dp.viewDate, UTCDate(2011, 1, 28));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 1, 29));\n    datesEqual(this.dp.focusDate, UTCDate(2011, 1, 28));\n    // Month not changed\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'February 2011', 'Title is \"February 2011\"');\n\n    // Navigation: +1 year, back to leap year\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 39,\n        ctrlKey: true\n    });\n    // view and focus updated on keyboard navigation w/ graceful month ends, not selected\n    datesEqual(this.dp.viewDate, UTCDate(2012, 1, 28));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 1, 29));\n    datesEqual(this.dp.focusDate, UTCDate(2012, 1, 28));\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'February 2012', 'Title is \"February 2012\"');\n\n    // Navigation: +1 year\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 39,\n        ctrlKey: true\n    });\n    // view and focus updated on keyboard navigation w/ graceful month ends, not selected\n    datesEqual(this.dp.viewDate, UTCDate(2013, 1, 28));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 1, 29));\n    datesEqual(this.dp.focusDate, UTCDate(2013, 1, 28));\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'February 2013', 'Title is \"February 2013\"');\n});\n\ntest('Selection (enter)', function(){\n    var target;\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2012', 'Title is \"March 2012\"');\n\n    // Navigation: -1 day, left arrow key\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 37\n    });\n    // view and focus updated on keyboard navigation, not selected\n    datesEqual(this.dp.viewDate, UTCDate(2012, 2, 30));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n    datesEqual(this.dp.focusDate, UTCDate(2012, 2, 30));\n    // Month not changed\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2012', 'Title is \"March 2012\"');\n\n    // Selection: Enter\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 13\n    });\n    // view and selection updated, focus cleared\n    datesEqual(this.dp.viewDate, UTCDate(2012, 2, 30));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 30));\n    equal(this.dp.focusDate, null);\n    // Month not changed\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2012', 'Title is \"March 2012\"');\n\n    ok(this.picker.is(':visible'), 'Picker is not hidden');\n});\n\ntest('Selection + hide (enter)', function(){\n    var target;\n\n    this.dp._process_options({autoclose: true});\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2012', 'Title is \"March 2012\"');\n\n    // Navigation: -1 day, left arrow key\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 37\n    });\n    // view and focus updated on keyboard navigation, not selected\n    datesEqual(this.dp.viewDate, UTCDate(2012, 2, 30));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n    datesEqual(this.dp.focusDate, UTCDate(2012, 2, 30));\n    // Month not changed\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2012', 'Title is \"March 2012\"');\n\n    // Selection: Enter\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 13\n    });\n    // view and selection updatedfocus cleared\n    datesEqual(this.dp.viewDate, UTCDate(2012, 2, 30));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 30));\n    equal(this.dp.focusDate, null);\n    // Month not changed\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2012', 'Title is \"March 2012\"');\n\n    ok(this.picker.is(':not(:visible)'), 'Picker is hidden');\n});\n\ntest('Toggle hide/show (escape); navigation while hidden is suppressed', function(){\n    var target;\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    equal(target.text(), 'March 2012', 'Title is \"March 2012\"');\n\n    ok(this.picker.is(':visible'), 'Picker is visible');\n\n    // Hide\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 27\n    });\n\n    ok(this.picker.is(':not(:visible)'), 'Picker is hidden');\n    datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n\n    // left arrow key, *doesn't* navigate\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 37\n    });\n\n    datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n\n    // Show - with escape key\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 27\n    });\n\n    ok(this.picker.is(':visible'), 'Picker is visible');\n    datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n\n    // Hide\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 27\n    });\n\n    // Show - with down key\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 40\n    });\n\n    ok(this.picker.is(':visible'), 'Picker is visible');\n});\n\n"
  },
  {
    "path": "tests/suites/keyboard_navigation/all.js",
    "content": "module('Keyboard Navigation (All)', {\n    setup: function(){\n        this.input = $('<input type=\"text\">')\n                        .appendTo('#qunit-fixture')\n                        .datepicker({format: \"dd-mm-yyyy\"})\n                        .focus(); // Activate for visibility checks\n        this.dp = this.input.data('datepicker');\n        this.picker = this.dp.picker;\n    },\n    teardown: function(){\n        this.picker.remove();\n    }\n});\n\ntest('TAB hides picker', function(){\n    var target;\n\n    ok(this.picker.is(':visible'), 'Picker is visible');\n\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 9\n    });\n\n    ok(this.picker.is(':not(:visible)'), 'Picker is hidden');\n});\n\ntest('by day (right/left arrows) with daysOfWeekDisabled', function(){\n    var target;\n\n    this.input.val('04-03-2013');\n    this.dp.setDaysOfWeekDisabled('0,6');\n    this.dp.update();\n\n    this.input.focus();\n\n    // Navigation: -1 day left arrow key\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 37\n    });\n\n    datesEqual(this.dp.viewDate, UTCDate(2013, 2, 1));\n});\n\ntest('by day (right/left arrows) with datesDisabled', function(){\n    var target;\n\n    this.input.val('04-03-2013');\n    this.dp.setDatesDisabled(['05-03-2013']);\n    this.dp.update();\n\n    this.input.focus();\n\n    // Navigation: +1 day right arrow key\n    this.input.trigger({\n        type: 'keydown',\n        keyCode: 39\n    });\n\n    datesEqual(this.dp.viewDate, UTCDate(2013, 2, 6));\n});\n"
  },
  {
    "path": "tests/suites/methods.js",
    "content": "module('Methods', {\n    setup: function(){\n        this.input = $('<input type=\"text\" value=\"31-03-2011\">')\n                        .appendTo('#qunit-fixture')\n                        .datepicker({format: \"dd-mm-yyyy\"});\n        this.dp = this.input.data('datepicker');\n        this.picker = this.dp.picker;\n    },\n    teardown: function(){\n        this.dp.remove();\n    }\n});\n\ntest('remove', function(){\n    var returnedObject = this.dp.remove();\n    // ...\n    strictEqual(returnedObject, this.dp, \"is chainable\");\n});\n\ntest('show', function(){\n    var returnedObject = this.dp.show();\n    // ...\n    strictEqual(returnedObject, this.dp, \"is chainable\");\n});\n\ntest('hide', function(){\n    var returnedObject = this.dp.hide();\n    // ...\n    strictEqual(returnedObject, this.dp, \"is chainable\");\n});\n\ntest('update - String', function(){\n    var returnedObject = this.dp.update('13-03-2012');\n    datesEqual(this.dp.dates[0], UTCDate(2012, 2, 13));\n    var date = this.dp.picker.find('.datepicker-days td:contains(13)');\n    ok(date.hasClass('active'), 'Date is selected');\n    strictEqual(returnedObject, this.dp, \"is chainable\");\n});\n\ntest('update - Date', function(){\n    var returnedObject = this.dp.update(new Date(2012, 2, 13));\n    datesEqual(this.dp.dates[0], UTCDate(2012, 2, 13));\n    var date = this.dp.picker.find('.datepicker-days td:contains(13)');\n    ok(date.hasClass('active'), 'Date is selected');\n    strictEqual(returnedObject, this.dp, \"is chainable\");\n});\n\ntest('update - Date with time', function(){\n    var returnedObject = this.dp.update(new Date(2012, 2, 13, 23, 59, 59, 999));\n    datesEqual(this.dp.dates[0], UTCDate(2012, 2, 13, 23, 59, 59, 999));\n    var date = this.dp.picker.find('.datepicker-days td:contains(13)');\n    ok(date.hasClass('active'), 'Date is selected');\n    strictEqual(returnedObject, this.dp, \"is chainable\");\n});\n\ntest('update - null', function(){\n    var returnedObject = this.dp.update(null);\n    equal(this.dp.dates[0], undefined);\n    var selected = this.dp.picker.find('.datepicker-days td.active');\n    equal(selected.length, 0, 'No date is selected');\n    strictEqual(returnedObject, this.dp, \"is chainable\");\n});\n\ntest('setDate', function(){\n    var date_in = new Date(2013, 1, 1),\n        expected_date = new Date(Date.UTC(2013, 1, 1)),\n        returnedObject;\n\n    notEqual(this.dp.dates[0], date_in);\n    returnedObject = this.dp.setDate(date_in);\n    strictEqual(returnedObject, this.dp, \"is chainable\");\n    datesEqual(this.dp.dates[0], expected_date);\n});\n\ntest('setUTCDate', function(){\n    var date_in = new Date(Date.UTC(2012, 3, 5)),\n        expected_date = date_in,\n        returnedObject;\n\n    notEqual(this.dp.dates[0], date_in);\n    returnedObject = this.dp.setUTCDate(date_in);\n    strictEqual(returnedObject, this.dp, \"is chainable\");\n    datesEqual(this.dp.dates[0], expected_date);\n});\n\ntest('setStartDate', function(){\n    var date_in = new Date(2012, 3, 5),\n        expected_date = new Date(Date.UTC(2012, 3, 5)),\n        returnedObject = this.dp.setStartDate(date_in);\n    // ...\n    datesEqual(this.dp.o.startDate, expected_date);\n    strictEqual(returnedObject, this.dp, \"is chainable\");\n});\n\ntest('setEndDate', function(){\n    var date_in = new Date(2012, 3, 5),\n        expected_date = new Date(Date.UTC(2012, 3, 5)),\n        returnedObject = this.dp.setEndDate(date_in);\n    // ...\n    datesEqual(this.dp.o.endDate, expected_date);\n    strictEqual(returnedObject, this.dp, \"is chainable\");\n});\n\ntest('getStartDate', function(){\n    var date_in = new Date(2012, 3, 5),\n        expected_date = new Date(Date.UTC(2012, 3, 5)),\n        returnedObject = this.dp.setStartDate(date_in);\n    // ...\n    datesEqual(returnedObject.getStartDate(), expected_date);\n    strictEqual(returnedObject, this.dp, \"is chainable\");\n});\n\ntest('getEndDate', function(){\n    var date_in = new Date(2012, 3, 5),\n        expected_date = new Date(Date.UTC(2012, 3, 5)),\n        returnedObject = this.dp.setEndDate(date_in);\n    // ...\n    datesEqual(returnedObject.getEndDate(), expected_date);\n    strictEqual(returnedObject, this.dp, \"is chainable\");\n});\n\ntest('setDaysOfWeekDisabled - String', function(){\n    var days_in = \"0,6\",\n        expected_days = [0,6],\n        returnedObject = this.dp.setDaysOfWeekDisabled(days_in);\n    // ...\n    deepEqual(this.dp.o.daysOfWeekDisabled, expected_days);\n    strictEqual(returnedObject, this.dp, \"is chainable\");\n});\n\ntest('setDaysOfWeekDisabled - Array', function(){\n    var days_in = [0,6],\n        expected_days = days_in,\n        returnedObject = this.dp.setDaysOfWeekDisabled(days_in);\n    // ...\n    deepEqual(this.dp.o.daysOfWeekDisabled, expected_days);\n    strictEqual(returnedObject, this.dp, \"is chainable\");\n});\n\ntest('setDatesDisabled', function(){\n    var monthShown = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    var returnedObject = this.dp.setDatesDisabled(['01-03-2011']);\n    ok(this.picker.find('.datepicker-days tbody td.day:not(.old):first').hasClass('disabled'), 'day is disabled');\n    this.dp.setDatesDisabled(['01-01-2011']);\n    equal(monthShown.text(), 'March 2011', 'should not change viewDate');\n    strictEqual(returnedObject, this.dp, \"is chainable\");\n});\n\ntest('setValue', function(){\n    var returnedObject = this.dp.setValue();\n    // ...\n    strictEqual(returnedObject, this.dp, \"is chainable\");\n});\n\ntest('place', function(){\n    var returnedObject = this.dp.place();\n    // ...\n    strictEqual(returnedObject, this.dp, \"is chainable\");\n});\n\ntest('moveMonth - can handle invalid date', function(){\n    // any input which results in an invalid date, f.e. an incorrectly formatted.\n    var invalidDate = new Date(\"invalid\"),\n        returnedObject = this.dp.moveMonth(invalidDate, 1);\n    // ...\n    equal(this.input.val(), \"31-03-2011\", \"date is reset\");\n});\n\ntest('parseDate - outputs correct value', function(){\n    var parsedDate = $.fn.datepicker.DPGlobal.parseDate('11/13/2015', $.fn.datepicker.DPGlobal.parseFormat('mm/dd/yyyy'), 'en');\n    equal(parsedDate.getUTCDate(), \"13\", \"date is correct\");\n    equal(parsedDate.getUTCMonth(), \"10\", \"month is correct\");\n    equal(parsedDate.getUTCFullYear(), \"2015\", \"fullyear is correct\");\n});\n\ntest('parseDate - outputs correct value for yyyy\\u5E74mm\\u6708dd\\u65E5 format', function(){\n    var parsedDate = $.fn.datepicker.DPGlobal.parseDate('2015\\u5E7411\\u670813', $.fn.datepicker.DPGlobal.parseFormat('yyyy\\u5E74mm\\u6708dd\\u65E5'), 'ja');\n    equal(parsedDate.getUTCDate(), \"13\", \"date is correct\");\n    equal(parsedDate.getUTCMonth(), \"10\", \"month is correct\");\n    equal(parsedDate.getUTCFullYear(), \"2015\", \"fullyear is correct\");\n});\n\ntest('parseDate - outputs correct value for dates containing unicodes', function(){\n    var parsedDate = $.fn.datepicker.DPGlobal.parseDate('\\u5341\\u4E00\\u6708 13 2015', $.fn.datepicker.DPGlobal.parseFormat('MM dd yyyy'), 'zh-CN');\n    equal(parsedDate.getUTCDate(), \"13\", \"date is correct\");\n    equal(parsedDate.getUTCMonth(), \"10\", \"month is correct\");\n    equal(parsedDate.getUTCFullYear(), \"2015\", \"fullyear is correct\");\n});\n\ntest('setDates - does not replace empty values', function () {\n\tvar html, comp;\n\n    html = '<div class=\"input-daterange\" data-provide=\"datepicker\">'+\n                '<input class=\"datepicker\">'+\n                '<span class=\"add-on\">to</span>'+\n                '<input class=\"datepicker\">'+\n            '</div>';\n\n    comp = $(html).appendTo('#qunit-fixture');\n\t\n\tcomp.datepicker({ format: 'yyyy-mm-dd', keepEmptyValues: true });\n\t\n\tvar picker = comp.data('datepicker');\n\t\n\tpicker.pickers[1].setDates('2019-03-31');\n\tpicker.pickers[1].setDates('2019-03-30');\n\tequal(picker.pickers[0].element.val(), \"\");\n\t\n\tpicker.clearDates();\n\t\n\tpicker.pickers[0].setDates('2019-03-30');\n\tpicker.pickers[0].setDates('2019-03-31');\n\tequal(picker.pickers[1].element.val(), \"\");\n});\n\ntest('clearDates - updates state to allow correct range enforcement', function () {\n\t\n\tvar html, comp;\n\n    html = '<div class=\"input-daterange\" data-provide=\"datepicker\">'+\n                '<input class=\"datepicker\">'+\n                '<span class=\"add-on\">to</span>'+\n                '<input class=\"datepicker\">'+\n            '</div>';\n\n    comp = $(html).appendTo('#qunit-fixture');\n\t\n\tcomp.datepicker({ format: 'yyyy-mm-dd', keepEmptyValues: true });\n\t\n\tvar picker = comp.data('datepicker');\n\t\n\tpicker.pickers[0].setDates(\"2019-03-31\");\n\tpicker.pickers[1].setDates(\"2019-03-31\");\n\tpicker.pickers[0].clearDates();\n\tequal(picker.pickers[0].element.val(), \"\");\n\tequal(picker.pickers[1].element.val(), \"2019-03-31\")\n\t\n\tpicker.pickers[0].setDates(\"2019-04-01\");\n\t\n\tequal(picker.pickers[0].element.val(), \"2019-04-01\");\n\tequal(picker.pickers[1].element.val(), \"2019-04-01\");\n\t\n\tpicker.clearDates();\n\t\n\tpicker.pickers[0].setDates(\"2019-03-31\");\n\tpicker.pickers[1].setDates(\"2019-03-31\");\n\tpicker.pickers[1].clearDates();\n\tequal(picker.pickers[0].element.val(), \"2019-03-31\");\n\tequal(picker.pickers[1].element.val(), \"\");\n\t\n\tpicker.pickers[1].setDates(\"2019-03-30\");\n\t\n\tequal(picker.pickers[0].element.val(), \"2019-03-30\");\n\tequal(picker.pickers[1].element.val(), \"2019-03-30\");\n});\n"
  },
  {
    "path": "tests/suites/methods_jquery.js",
    "content": "module('Methods (jQuery)', {\n    setup: function(){\n        this.$inputs = $('<input><input>')\n            .datepicker()\n            .appendTo('#qunit-fixture');\n    },\n    teardown: function(){\n        this.$inputs.each(function(){\n            $.data(this, 'datepicker').picker.remove();\n        });\n    }\n});\n\ntest('Methods', function(){\n    [\n        'show',\n        'hide',\n        'setValue',\n        'place'\n    ].forEach($.proxy(function(index, value){\n        var returnedObject = this.$inputs.datepicker(value);\n\n        strictEqual(returnedObject, this.$inputs, \"is jQuery element\");\n        strictEqual(returnedObject.length, 2, \"correct length of jQuery elements\");\n    }, this));\n});\n"
  },
  {
    "path": "tests/suites/mouse_navigation/2011.js",
    "content": "module('Mouse Navigation 2011', {\n    setup: function(){\n        /*\n            Tests start with picker on March 31, 2011.\n        */\n        this.input = $('<input type=\"text\" value=\"31-03-2011\">')\n                        .appendTo('#qunit-fixture')\n                        .datepicker({format: \"dd-mm-yyyy\"})\n                        .focus(); // Activate for visibility checks\n        this.dp = this.input.data('datepicker');\n        this.picker = this.dp.picker;\n    },\n    teardown: function(){\n        this.picker.remove();\n    }\n});\n\ntest('Selecting date from previous month while in January changes month and year displayed', function(){\n    var target;\n\n    this.input.val('01-01-2011');\n    this.dp.update();\n    datesEqual(this.dp.viewDate, UTCDate(2011, 0, 1));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2011, 0, 1));\n\n    // Rendered correctly\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days tbody td:first');\n    equal(target.text(), '26'); // Should be Dec 26\n    equal(this.picker.find('.datepicker-days thead th.datepicker-switch').text(), 'January 2011');\n\n    // Updated internally on click\n    target.click();\n    equal(this.picker.find('.datepicker-days thead th.datepicker-switch').text(), 'December 2010');\n    datesEqual(this.dp.viewDate, UTCDate(2010, 11, 26));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2010, 11, 26));\n\n    // Re-rendered on click\n    target = this.picker.find('.datepicker-days tbody td:first');\n    equal(target.text(), '28'); // Should be Nov 28\n});\n\ntest('Selecting date from next month while in December changes month and year displayed', function(){\n    var target;\n\n    this.input.val('01-12-2010');\n    this.dp.update();\n    datesEqual(this.dp.viewDate, UTCDate(2010, 11, 1));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2010, 11, 1));\n\n    // Rendered correctly\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days tbody td:last');\n    equal(target.text(), '8'); // Should be Jan 8\n    equal(this.picker.find('.datepicker-days thead th.datepicker-switch').text(), 'December 2010');\n\n    // Updated internally on click\n    target.click();\n    equal(this.picker.find('.datepicker-days thead th.datepicker-switch').text(), 'January 2011');\n    datesEqual(this.dp.viewDate, UTCDate(2011, 0, 8));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2011, 0, 8));\n\n    // Re-rendered on click\n    target = this.picker.find('.datepicker-days tbody td:first');\n    equal(target.text(), '26'); // Should be Dec 26\n});\n"
  },
  {
    "path": "tests/suites/mouse_navigation/2012.js",
    "content": "module('Mouse Navigation 2012', {\n    setup: function(){\n        /*\n            Tests start with picker on March 31, 2012.  Fun facts:\n\n            * February 1, 2012 was on a Wednesday\n            * February 29, 2012 was on a Wednesday\n            * March 1, 2012 was on a Thursday\n            * March 31, 2012 was on a Saturday\n        */\n        this.input = $('<input type=\"text\" value=\"31-03-2012\">')\n                        .appendTo('#qunit-fixture')\n                        .datepicker({format: \"dd-mm-yyyy\"})\n                        .focus(); // Activate for visibility checks\n        this.dp = this.input.data('datepicker');\n        this.picker = this.dp.picker;\n    },\n    teardown: function(){\n        this.picker.remove();\n    }\n});\n\ntest('Selecting date resets viewDate and date', function(){\n    var target;\n\n    // Rendered correctly\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days tbody td:nth(7)');\n    equal(target.text(), '4'); // Should be Mar 4\n\n    // Updated internally on click\n    target.click();\n    datesEqual(this.dp.viewDate, UTCDate(2012, 2, 4));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 4));\n\n    // Re-rendered on click\n    target = this.picker.find('.datepicker-days tbody td:first');\n    equal(target.text(), '26'); // Should be Feb 29\n});\n\ntest('Navigating next/prev by month', function(){\n    var target;\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.prev');\n    ok(target.is(':visible'), 'Month:prev nav is visible');\n\n    // Updated internally on click\n    target.click();\n    // Should handle month-length changes gracefully\n    datesEqual(this.dp.viewDate, UTCDate(2012, 1, 29));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n\n    // Re-rendered on click\n    target = this.picker.find('.datepicker-days tbody td:first');\n    equal(target.text(), '29'); // Should be Jan 29\n\n    target = this.picker.find('.datepicker-days thead th.next');\n    ok(target.is(':visible'), 'Month:next nav is visible');\n\n    // Updated internally on click\n    target.click().click();\n    // Graceful moonth-end handling carries over\n    datesEqual(this.dp.viewDate, UTCDate(2012, 3, 29));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n\n    // Re-rendered on click\n    target = this.picker.find('.datepicker-days tbody td:first');\n    equal(target.text(), '25'); // Should be Mar 25\n    // (includes \"old\" days at start of month, even if that's all the first week-row consists of)\n});\n\ntest('Navigating to/from year view', function(){\n    var target;\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    ok(target.is(':visible'), 'View switcher is visible');\n\n    target.click();\n    ok(this.picker.find('.datepicker-months').is(':visible'), 'Month picker is visible');\n    equal(this.dp.viewMode, 1);\n    // Not modified when switching modes\n    datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n\n    // Change months to test internal state\n    target = this.picker.find('.datepicker-months tbody span:contains(Apr)');\n    target.click();\n    equal(this.dp.viewMode, 0);\n    // Only viewDate modified\n    datesEqual(this.dp.viewDate, UTCDate(2012, 3, 1)); // Apr 30\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n});\n\ntest('Navigating to/from decade view', function(){\n    var target;\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    ok(target.is(':visible'), 'View switcher is visible');\n\n    target.click();\n    ok(this.picker.find('.datepicker-months').is(':visible'), 'Month picker is visible');\n    equal(this.dp.viewMode, 1);\n    // Not modified when switching modes\n    datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n\n    target = this.picker.find('.datepicker-months thead th.datepicker-switch');\n    ok(target.is(':visible'), 'View switcher is visible');\n\n    target.click();\n    ok(this.picker.find('.datepicker-years').is(':visible'), 'Year picker is visible');\n    equal(this.dp.viewMode, 2);\n    // Not modified when switching modes\n    datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n\n    // Change years to test internal state changes\n    target = this.picker.find('.datepicker-years tbody span:contains(2011)');\n    target.click();\n    equal(this.dp.viewMode, 1);\n    // Only viewDate modified\n    datesEqual(this.dp.viewDate, UTCDate(2011, 2, 1));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n\n    target = this.picker.find('.datepicker-months tbody span:contains(Apr)');\n    target.click();\n    equal(this.dp.viewMode, 0);\n    // Only viewDate modified\n    datesEqual(this.dp.viewDate, UTCDate(2011, 3, 1));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n});\n\ntest('Navigating prev/next in year view', function(){\n    var target;\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    ok(target.is(':visible'), 'View switcher is visible');\n\n    target.click();\n    ok(this.picker.find('.datepicker-months').is(':visible'), 'Month picker is visible');\n    equal(this.dp.viewMode, 1);\n    equal(this.picker.find('.datepicker-months thead th.datepicker-switch').text(), '2012');\n    // Not modified when switching modes\n    datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n\n    // Go to next year (2013)\n    target = this.picker.find('.datepicker-months thead th.next');\n    target.click();\n    equal(this.picker.find('.datepicker-months thead th.datepicker-switch').text(), '2013');\n    // Only viewDate modified\n    datesEqual(this.dp.viewDate, UTCDate(2013, 2, 31));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n\n    // Go to prev year (x2 == 2011)\n    target = this.picker.find('.datepicker-months thead th.prev');\n    target.click().click();\n    equal(this.picker.find('.datepicker-months thead th.datepicker-switch').text(), '2011');\n    // Only viewDate modified\n    datesEqual(this.dp.viewDate, UTCDate(2011, 2, 31));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n});\n\ntest('Navigating prev/next in decade view', function(){\n    var target;\n\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days thead th.datepicker-switch');\n    ok(target.is(':visible'), 'View switcher is visible');\n\n    target.click();\n    ok(this.picker.find('.datepicker-months').is(':visible'), 'Month picker is visible');\n    equal(this.dp.viewMode, 1);\n    // Not modified when switching modes\n    datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n\n    target = this.picker.find('.datepicker-months thead th.datepicker-switch');\n    ok(target.is(':visible'), 'View switcher is visible');\n\n    target.click();\n    ok(this.picker.find('.datepicker-years').is(':visible'), 'Year picker is visible');\n    equal(this.dp.viewMode, 2);\n    equal(this.picker.find('.datepicker-years thead th.datepicker-switch').text(), '2010-2019');\n    // Not modified when switching modes\n    datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n\n    // Go to next decade (2020-29)\n    target = this.picker.find('.datepicker-years thead th.next');\n    target.click();\n    equal(this.picker.find('.datepicker-years thead th.datepicker-switch').text(), '2020-2029');\n    // Only viewDate modified\n    datesEqual(this.dp.viewDate, UTCDate(2022, 2, 31));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n\n    // Go to prev year (x2 == 2000-09)\n    target = this.picker.find('.datepicker-years thead th.prev');\n    target.click().click();\n    equal(this.picker.find('.datepicker-years thead th.datepicker-switch').text(), '2000-2009');\n    // Only viewDate modified\n    datesEqual(this.dp.viewDate, UTCDate(2002, 2, 31));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31));\n});\n\ntest('Selecting date from previous month resets viewDate and date, changing month displayed', function(){\n    var target;\n\n    // Rendered correctly\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days tbody td:first');\n    equal(target.text(), '26'); // Should be Feb 26\n    equal(this.picker.find('.datepicker-days thead th.datepicker-switch').text(), 'March 2012');\n\n    // Updated internally on click\n    target.click();\n    equal(this.picker.find('.datepicker-days thead th.datepicker-switch').text(), 'February 2012');\n    datesEqual(this.dp.viewDate, UTCDate(2012, 1, 26));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 1, 26));\n\n    // Re-rendered on click\n    target = this.picker.find('.datepicker-days tbody td:first');\n    equal(target.text(), '29'); // Should be Jan 29\n});\n\ntest('Selecting date from next month resets viewDate and date, changing month displayed', function(){\n    var target;\n\n    this.input.val('01-04-2012');\n    this.dp.update();\n\n    // Rendered correctly\n    equal(this.dp.viewMode, 0);\n    target = this.picker.find('.datepicker-days tbody td:last');\n    equal(target.text(), '5'); // Should be May 5\n    equal(this.picker.find('.datepicker-days thead th.datepicker-switch').text(), 'April 2012');\n\n    // Updated internally on click\n    target.click();\n    equal(this.picker.find('.datepicker-days thead th.datepicker-switch').text(), 'May 2012');\n    datesEqual(this.dp.viewDate, UTCDate(2012, 4, 5));\n    datesEqual(this.dp.dates.get(-1), UTCDate(2012, 4, 5));\n\n    // Re-rendered on click\n    target = this.picker.find('.datepicker-days tbody td:first');\n    equal(target.text(), '29'); // Should be Apr 29\n});\n\ntest('Selecting today from next month', patch_date(function(Date){\n    Date.now = function(){\n        return new Date(2012, 2, 3).getTime(); // Mar 3\n    };\n    var target;\n    this.dp.o.todayHighlight = true;\n    this.input.val('01-02-2012');    // Feb 1\n    this.dp.update();\n\n    // Click the today button\n    target = this.picker.find('.datepicker-days tbody td.today');\n    equal(target.text(), '3'); // Should be Mar 3\n    target.click();\n\n    datesEqual(this.dp.viewDate, UTCDate(2012, 2, 3));\n}));\n"
  },
  {
    "path": "tests/suites/mouse_navigation/all.js",
    "content": "module('Mouse Navigation (All)', {\n    setup: function(){\n        this.input = $('<input type=\"text\">')\n                        .appendTo('#qunit-fixture')\n                        .datepicker({format: \"dd-mm-yyyy\"})\n                        .focus(); // Activate for visibility checks\n        this.dp = this.input.data('datepicker');\n        this.picker = this.dp.picker;\n    },\n    teardown: function(){\n        this.picker.remove();\n    }\n});\n\ntest('Clicking datepicker does not hide datepicker', function(){\n    ok(this.picker.is(':visible'), 'Picker is visible');\n    this.picker.trigger('mousedown');\n    ok(this.picker.is(':visible'), 'Picker is still visible');\n});\n\ntest('Clicking outside datepicker hides datepicker', function(){\n    var $otherelement = $('<div />');\n    $('body').append($otherelement);\n\n    ok(this.picker.is(':visible'), 'Picker is visible');\n    this.input.trigger('click');\n    ok(this.picker.is(':visible'), 'Picker is still visible');\n\n    $otherelement.trigger('mousedown');\n    ok(this.picker.is(':not(:visible)'), 'Picker is hidden');\n\n    $otherelement.remove();\n});\n"
  },
  {
    "path": "tests/suites/noconflict.js",
    "content": "module('NoConflict', {\n    setup: function(){\n        var datepicker = $.fn.datepicker.noConflict();\n        $.fn.bootstrapDP = datepicker;\n    },\n    teardown: function(){\n        $.fn.datepicker = $.fn.bootstrapDP;\n        delete $.fn.bootstrapDP;\n    }\n});\n\ntest('Datepicker starts after calling noConflict() (no undefined defaults or locale_opts)', function(){\n    $('<div class=\"input-append date\" id=\"datepicker\">'+\n        '<input size=\"16\" type=\"text\" value=\"12-02-2012\" readonly>'+\n        '<span class=\"add-on\"><i class=\"icon-th\"></i></span>'+\n        '</div>')\n        .appendTo('#qunit-fixture')\n        .bootstrapDP();\n    expect(0);\n});\n"
  },
  {
    "path": "tests/suites/options.js",
    "content": "module('Options', {\n    setup: function(){},\n    teardown: function(){\n        $('#qunit-fixture *').each(function(){\n            var t = $(this);\n            if ('datepicker' in t.data())\n                t.datepicker('remove');\n        });\n    }\n});\n\ntest('Autoclose', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    autoclose: true\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n\n    input.focus();\n    ok(picker.is(':visible'), 'Picker is visible');\n    target = picker.find('.datepicker-days tbody td:nth(7)');\n    equal(target.text(), '4'); // Mar 4\n\n    target.click();\n    ok(picker.is(':not(:visible)'), 'Picker is hidden');\n    datesEqual(dp.dates[0], UTCDate(2012, 2, 4));\n    datesEqual(dp.viewDate, UTCDate(2012, 2, 4));\n});\n\ntest('Custom date formatter functions', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2015-09-18T00:00:00.000Z')\n                .datepicker({\n                    format: {\n                        /*\n                        Say our UI should display a week ahead,\n                        but textbox should store the actual date.\n                        This is useful if we need UI to select local dates,\n                        but store in UTC\n                        */\n                        toDisplay: function (date, format, language) {\n                            var d = new Date(date);\n                            d.setDate(d.getDate() - 7);\n                            return d.toISOString();\n                        },\n                        toValue: function (date, format, language) {\n                            var d = new Date(date);\n                            d.setDate(d.getDate() + 7);\n                            return new Date(d);\n                        }\n                    },\n                    autoclose: true\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n    //Value is ISO format and is 7 days older than UI\n    equal(input.val(), '2015-09-18T00:00:00.000Z');\n    datesEqual(dp.dates[0], UTCDate(2015, 8, 25));\n    datesEqual(dp.viewDate, UTCDate(2015, 8, 25));\n\n    input.focus();\n    ok(picker.is(':visible'), 'Picker is visible');\n    target = picker.find('.datepicker-days tbody td:nth(5)');\n    equal(target.text(), '4'); // Sep 4\n\n    target.click();\n    ok(picker.is(':not(:visible)'), 'Picker is hidden');\n    //Value is now 28th Aug 2015 in ISO format\n    //and is 7 days older than UI\n    equal(input.val(), '2015-08-28T00:00:00.000Z');\n    datesEqual(dp.dates[0], UTCDate(2015, 8, 4));\n    datesEqual(dp.viewDate, UTCDate(2015, 8, 4));\n});\n\ntest('Startview: year view (integer)', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    startView: 1\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    ok(picker.find('.datepicker-days').is(':not(:visible)'), 'Days view hidden');\n    ok(picker.find('.datepicker-months').is(':visible'), 'Months view visible');\n    ok(picker.find('.datepicker-years').is(':not(:visible)'), 'Years view hidden');\n    ok(picker.find('.datepicker-decades').is(':not(:visible)'), 'Decades view hidden');\n    ok(picker.find('.datepicker-centuries').is(':not(:visible)'), 'Centuries view hidden');\n});\n\ntest('Startview: year view (string)', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    startView: 'year'\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    ok(picker.find('.datepicker-days').is(':not(:visible)'), 'Days view hidden');\n    ok(picker.find('.datepicker-months').is(':visible'), 'Months view visible');\n    ok(picker.find('.datepicker-years').is(':not(:visible)'), 'Years view hidden');\n    ok(picker.find('.datepicker-decades').is(':not(:visible)'), 'Decades view hidden');\n    ok(picker.find('.datepicker-centuries').is(':not(:visible)'), 'Centuries view hidden');\n});\n\ntest('Startview: decade view (integer)', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    startView: 2\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    ok(picker.find('.datepicker-days').is(':not(:visible)'), 'Days view hidden');\n    ok(picker.find('.datepicker-months').is(':not(:visible)'), 'Months view hidden');\n    ok(picker.find('.datepicker-years').is(':visible'), 'Years view visible');\n    ok(picker.find('.datepicker-decades').is(':not(:visible)'), 'Decades view hidden');\n    ok(picker.find('.datepicker-centuries').is(':not(:visible)'), 'Centuries view hidden');\n});\n\ntest('Startview: decade view (string)', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    startView: 'decade'\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    ok(picker.find('.datepicker-days').is(':not(:visible)'), 'Days view hidden');\n    ok(picker.find('.datepicker-months').is(':not(:visible)'), 'Months view hidden');\n    ok(picker.find('.datepicker-years').is(':visible'), 'Years view visible');\n    ok(picker.find('.datepicker-decades').is(':not(:visible)'), 'Decades view hidden');\n    ok(picker.find('.datepicker-centuries').is(':not(:visible)'), 'Centuries view hidden');\n});\n\ntest('Startview: century view (integer)', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    startView: 3\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    ok(picker.find('.datepicker-days').is(':not(:visible)'), 'Days view hidden');\n    ok(picker.find('.datepicker-months').is(':not(:visible)'), 'Months view hidden');\n    ok(picker.find('.datepicker-years').is(':not(:visible)'), 'Years view hidden');\n    ok(picker.find('.datepicker-decades').is(':visible'), 'Decades view visible');\n    ok(picker.find('.datepicker-centuries').is(':not(:visible)'), 'Centuries view hidden');\n});\n\ntest('Startview: century view (string)', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    startView: 'century'\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    ok(picker.find('.datepicker-days').is(':not(:visible)'), 'Days view hidden');\n    ok(picker.find('.datepicker-months').is(':not(:visible)'), 'Months view hidden');\n    ok(picker.find('.datepicker-years').is(':not(:visible)'), 'Years view hidden');\n    ok(picker.find('.datepicker-decades').is(':visible'), 'Decades view visible');\n    ok(picker.find('.datepicker-centuries').is(':not(:visible)'), 'Centuries view hidden');\n});\n\ntest('Startview: millennium view (integer)', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    startView: 4\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    ok(picker.find('.datepicker-days').is(':not(:visible)'), 'Days view hidden');\n    ok(picker.find('.datepicker-months').is(':not(:visible)'), 'Months view hidden');\n    ok(picker.find('.datepicker-years').is(':not(:visible)'), 'Years view hidden');\n    ok(picker.find('.datepicker-decades').is(':not(:visible)'), 'Decades view hidden');\n    ok(picker.find('.datepicker-centuries').is(':visible'), 'Centuries view visible');\n});\n\ntest('Startview: millennium view (string)', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    startView: 'millennium'\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    ok(picker.find('.datepicker-days').is(':not(:visible)'), 'Days view hidden');\n    ok(picker.find('.datepicker-months').is(':not(:visible)'), 'Months view hidden');\n    ok(picker.find('.datepicker-years').is(':not(:visible)'), 'Years view hidden');\n    ok(picker.find('.datepicker-decades').is(':not(:visible)'), 'Decades view hidden');\n    ok(picker.find('.datepicker-centuries').is(':visible'), 'Centuries view visible');\n});\n\ntest('Today Button: today button not default', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd'\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n    ok(picker.find('.datepicker-days tfoot .today').is(':not(:visible)'), 'Today button not visible');\n});\n\ntest('Today Button: today visibility when enabled', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    todayBtn: true\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n    ok(picker.find('.datepicker-days tfoot .today').is(':visible'), 'Today button visible');\n\n    picker.find('.datepicker-days thead th.datepicker-switch').click();\n    ok(picker.find('.datepicker-months').is(':visible'), 'Months view visible');\n    ok(picker.find('.datepicker-months tfoot .today').is(':visible'), 'Today button visible');\n\n    picker.find('.datepicker-months thead th.datepicker-switch').click();\n    ok(picker.find('.datepicker-years').is(':visible'), 'Years view visible');\n    ok(picker.find('.datepicker-years tfoot .today').is(':visible'), 'Today button visible');\n});\n\ntest('Today Button: today invisible when enabled and startDate is after today', function () {\n  var startDate = new Date();\n  startDate.setDate(startDate.getDate() + 1);\n  var input = $('<input />')\n    .appendTo('#qunit-fixture')\n    .val('2012-03-05')\n    .datepicker({\n      format: 'yyyy-mm-dd',\n      startDate: startDate,\n      todayBtn: true\n    }),\n    dp = input.data('datepicker'),\n    picker = dp.picker,\n    target;\n\n  input.focus();\n  ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n  ok(picker.find('.datepicker-days tfoot .today').is(':not(:visible)'), 'Today button not visible');\n\n  picker.find('.datepicker-days thead th.datepicker-switch').click();\n  ok(picker.find('.datepicker-months').is(':visible'), 'Months view visible');\n  ok(picker.find('.datepicker-months tfoot .today').is(':not(:visible)'), 'Today button not visible');\n\n  picker.find('.datepicker-months thead th.datepicker-switch').click();\n  ok(picker.find('.datepicker-years').is(':visible'), 'Years view visible');\n  ok(picker.find('.datepicker-years tfoot .today').is(':not(:visible)'), 'Today button not visible');\n});\n\ntest('Today Button: today invisible when enabled and endDate is before today', function () {\n  var endDate = new Date();\n  endDate.setDate(endDate.getDate() - 1);\n  var input = $('<input />')\n    .appendTo('#qunit-fixture')\n    .val('2012-03-05')\n    .datepicker({\n      format: 'yyyy-mm-dd',\n      endDate: endDate,\n      todayBtn: true\n    }),\n    dp = input.data('datepicker'),\n    picker = dp.picker,\n    target;\n\n  input.focus();\n  ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n  ok(picker.find('.datepicker-days tfoot .today').is(':not(:visible)'), 'Today button not visible');\n\n  picker.find('.datepicker-days thead th.datepicker-switch').click();\n  ok(picker.find('.datepicker-months').is(':visible'), 'Months view visible');\n  ok(picker.find('.datepicker-months tfoot .today').is(':not(:visible)'), 'Today button not visible');\n\n  picker.find('.datepicker-months thead th.datepicker-switch').click();\n  ok(picker.find('.datepicker-years').is(':visible'), 'Years view visible');\n  ok(picker.find('.datepicker-years tfoot .today').is(':not(:visible)'), 'Today button not visible');\n});\n\ntest('Today Button: today visible when enabled and today is between startDate and enDate', function () {\n  var startDate = new Date();\n  startDate.setDate(startDate.getDate() - 1);\n  var endDate = new Date();\n  endDate.setDate(endDate.getDate() + 1);\n  var input = $('<input />')\n    .appendTo('#qunit-fixture')\n    .val('2012-03-05')\n    .datepicker({\n      format: 'yyyy-mm-dd',\n      startDate: startDate,\n      endDate: endDate,\n      todayBtn: true\n    }),\n    dp = input.data('datepicker'),\n    picker = dp.picker,\n    target;\n\n  input.focus();\n  ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n  ok(picker.find('.datepicker-days tfoot .today').is(':visible'), 'Today button visible');\n\n  picker.find('.datepicker-days thead th.datepicker-switch').click();\n  ok(picker.find('.datepicker-months').is(':visible'), 'Months view visible');\n  ok(picker.find('.datepicker-months tfoot .today').is(':visible'), 'Today button visible');\n\n  picker.find('.datepicker-months thead th.datepicker-switch').click();\n  ok(picker.find('.datepicker-years').is(':visible'), 'Years view visible');\n  ok(picker.find('.datepicker-years tfoot .today').is(':visible'), 'Today button visible');\n});\n\ntest('Today Button: today visible when enabled and daysOfWeekDisabled does not include current day', function () {\n  var input = $('<input />')\n    .appendTo('#qunit-fixture')\n    .val('2012-03-05')\n    .datepicker({\n      format: 'yyyy-mm-dd',\n      daysOfWeekDisabled: [(new Date().getDay() + 1) % 7],\n      todayBtn: true\n    }),\n    dp = input.data('datepicker'),\n    picker = dp.picker,\n    target;\n\n  input.focus();\n  ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n  ok(picker.find('.datepicker-days tfoot .today').is(':visible'), 'Today button visible');\n\n  picker.find('.datepicker-days thead th.datepicker-switch').click();\n  ok(picker.find('.datepicker-months').is(':visible'), 'Months view visible');\n  ok(picker.find('.datepicker-months tfoot .today').is(':visible'), 'Today button visible');\n\n  picker.find('.datepicker-months thead th.datepicker-switch').click();\n  ok(picker.find('.datepicker-years').is(':visible'), 'Years view visible');\n  ok(picker.find('.datepicker-years tfoot .today').is(':visible'), 'Today button visible');\n});\n\ntest('Today Button: today invisible when enabled and daysOfWeekDisabled includes current day', function () {\n  var input = $('<input />')\n    .appendTo('#qunit-fixture')\n    .val('2012-03-05')\n    .datepicker({\n      format: 'yyyy-mm-dd',\n      daysOfWeekDisabled: [new Date().getDay()],\n      todayBtn: true\n    }),\n    dp = input.data('datepicker'),\n    picker = dp.picker,\n    target;\n\n  input.focus();\n  ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n  ok(picker.find('.datepicker-days tfoot .today').is(':not(:visible)'), 'Today button not visible');\n\n  picker.find('.datepicker-days thead th.datepicker-switch').click();\n  ok(picker.find('.datepicker-months').is(':visible'), 'Months view visible');\n  ok(picker.find('.datepicker-months tfoot .today').is(':not(:visible)'), 'Today button not visible');\n\n  picker.find('.datepicker-months thead th.datepicker-switch').click();\n  ok(picker.find('.datepicker-years').is(':visible'), 'Years view visible');\n  ok(picker.find('.datepicker-years tfoot .today').is(':not(:visible)'), 'Today button not visible');\n});\n\ntest('Today Button: today visibility when linked', function () {\n  var input = $('<input />')\n    .appendTo('#qunit-fixture')\n    .val('2012-03-05')\n    .datepicker({\n      format: 'yyyy-mm-dd',\n      todayBtn: 'linked'\n    }),\n    dp = input.data('datepicker'),\n    picker = dp.picker,\n    target;\n\n  input.focus();\n  ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n  ok(picker.find('.datepicker-days tfoot .today').is(':visible'), 'Today button visible');\n\n  picker.find('.datepicker-days thead th.datepicker-switch').click();\n  ok(picker.find('.datepicker-months').is(':visible'), 'Months view visible');\n  ok(picker.find('.datepicker-months tfoot .today').is(':visible'), 'Today button visible');\n\n  picker.find('.datepicker-months thead th.datepicker-switch').click();\n  ok(picker.find('.datepicker-years').is(':visible'), 'Years view visible');\n  ok(picker.find('.datepicker-years tfoot .today').is(':visible'), 'Today button visible');\n});\n\ntest('Today Button: today invisible when linked and startDate is after today', function () {\n  var startDate = new Date();\n  startDate.setDate(startDate.getDate() + 1);\n  var input = $('<input />')\n    .appendTo('#qunit-fixture')\n    .val('2012-03-05')\n    .datepicker({\n      format: 'yyyy-mm-dd',\n      startDate: startDate,\n      todayBtn: 'linked'\n    }),\n    dp = input.data('datepicker'),\n    picker = dp.picker,\n    target;\n\n  input.focus();\n  ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n  ok(picker.find('.datepicker-days tfoot .today').is(':not(:visible)'), 'Today button not visible');\n\n  picker.find('.datepicker-days thead th.datepicker-switch').click();\n  ok(picker.find('.datepicker-months').is(':visible'), 'Months view visible');\n  ok(picker.find('.datepicker-months tfoot .today').is(':not(:visible)'), 'Today button not visible');\n\n  picker.find('.datepicker-months thead th.datepicker-switch').click();\n  ok(picker.find('.datepicker-years').is(':visible'), 'Years view visible');\n  ok(picker.find('.datepicker-years tfoot .today').is(':not(:visible)'), 'Today button not visible');\n});\n\ntest('Today Button: today invisible when linked and endDate is before today', function () {\n  var endDate = new Date();\n  endDate.setDate(endDate.getDate() - 1);\n  var input = $('<input />')\n    .appendTo('#qunit-fixture')\n    .val('2012-03-05')\n    .datepicker({\n      format: 'yyyy-mm-dd',\n      endDate: endDate,\n      todayBtn: 'linked'\n    }),\n    dp = input.data('datepicker'),\n    picker = dp.picker,\n    target;\n\n  input.focus();\n  ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n  ok(picker.find('.datepicker-days tfoot .today').is(':not(:visible)'), 'Today button not visible');\n\n  picker.find('.datepicker-days thead th.datepicker-switch').click();\n  ok(picker.find('.datepicker-months').is(':visible'), 'Months view visible');\n  ok(picker.find('.datepicker-months tfoot .today').is(':not(:visible)'), 'Today button not visible');\n\n  picker.find('.datepicker-months thead th.datepicker-switch').click();\n  ok(picker.find('.datepicker-years').is(':visible'), 'Years view visible');\n  ok(picker.find('.datepicker-years tfoot .today').is(':not(:visible)'), 'Today button not visible');\n});\n\ntest('Today Button: today visible when linked and today is between startDate and enDate', function () {\n  var startDate = new Date();\n  startDate.setDate(startDate.getDate() - 1);\n  var endDate = new Date();\n  endDate.setDate(endDate.getDate() + 1);\n  var input = $('<input />')\n    .appendTo('#qunit-fixture')\n    .val('2012-03-05')\n    .datepicker({\n      format: 'yyyy-mm-dd',\n      startDate: startDate,\n      endDate: endDate,\n      todayBtn: 'linked'\n    }),\n    dp = input.data('datepicker'),\n    picker = dp.picker,\n    target;\n\n  input.focus();\n  ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n  ok(picker.find('.datepicker-days tfoot .today').is(':visible'), 'Today button visible');\n\n  picker.find('.datepicker-days thead th.datepicker-switch').click();\n  ok(picker.find('.datepicker-months').is(':visible'), 'Months view visible');\n  ok(picker.find('.datepicker-months tfoot .today').is(':visible'), 'Today button visible');\n\n  picker.find('.datepicker-months thead th.datepicker-switch').click();\n  ok(picker.find('.datepicker-years').is(':visible'), 'Years view visible');\n  ok(picker.find('.datepicker-years tfoot .today').is(':visible'), 'Today button visible');\n});\n\ntest('Today Button: today visible when linked and daysOfWeekDisabled does not include current day', function () {\n  var input = $('<input />')\n    .appendTo('#qunit-fixture')\n    .val('2012-03-05')\n    .datepicker({\n      format: 'yyyy-mm-dd',\n      daysOfWeekDisabled: [(new Date().getDay + 1) % 7],\n      todayBtn: 'linked'\n    }),\n    dp = input.data('datepicker'),\n    picker = dp.picker,\n    target;\n\n  input.focus();\n  ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n  ok(picker.find('.datepicker-days tfoot .today').is(':visible'), 'Today button visible');\n\n  picker.find('.datepicker-days thead th.datepicker-switch').click();\n  ok(picker.find('.datepicker-months').is(':visible'), 'Months view visible');\n  ok(picker.find('.datepicker-months tfoot .today').is(':visible'), 'Today button visible');\n\n  picker.find('.datepicker-months thead th.datepicker-switch').click();\n  ok(picker.find('.datepicker-years').is(':visible'), 'Years view visible');\n  ok(picker.find('.datepicker-years tfoot .today').is(':visible'), 'Today button visible');\n});\n\ntest('Today Button: today invisible when linked and daysOfWeekDisabled includes current day', function () {\n  var input = $('<input />')\n    .appendTo('#qunit-fixture')\n    .val('2012-03-05')\n    .datepicker({\n      format: 'yyyy-mm-dd',\n      daysOfWeekDisabled: [new Date().getDay()],\n      todayBtn: 'linked'\n    }),\n    dp = input.data('datepicker'),\n    picker = dp.picker,\n    target;\n\n  input.focus();\n  ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n  ok(picker.find('.datepicker-days tfoot .today').is(':not(:visible)'), 'Today button not visible');\n\n  picker.find('.datepicker-days thead th.datepicker-switch').click();\n  ok(picker.find('.datepicker-months').is(':visible'), 'Months view visible');\n  ok(picker.find('.datepicker-months tfoot .today').is(':not(:visible)'), 'Today button not visible');\n\n  picker.find('.datepicker-months thead th.datepicker-switch').click();\n  ok(picker.find('.datepicker-years').is(':visible'), 'Years view visible');\n  ok(picker.find('.datepicker-years tfoot .today').is(':not(:visible)'), 'Today button not visible');\n});\n\ntest('Today Button: data-api', function(){\n    var input = $('<input data-date-today-btn=\"true\" />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd'\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n    ok(picker.find('.datepicker-days tfoot .today').is(':visible'), 'Today button visible');\n});\n\ntest('Today Button: moves to today\\'s date', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    todayBtn: true\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n    ok(picker.find('.datepicker-days tfoot .today').is(':visible'), 'Today button visible');\n\n    target = picker.find('.datepicker-days tfoot .today');\n    target.click();\n\n    var d = new Date(),\n        today = UTCDate(d.getFullYear(), d.getMonth(), d.getDate());\n    datesEqual(dp.viewDate, today);\n    datesEqual(dp.dates[0], UTCDate(2012, 2, 5));\n});\n\ntest('Today Button: moves to days view', function(){\n    var viewModes = $.fn.datepicker.DPGlobal.viewModes;\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    startView: viewModes.length - 1,\n                    todayBtn: true\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    target = picker.find('tfoot .today').filter(':visible');\n\n    target.click();\n    ok(picker.find('.datepicker-days tfoot .today').is(':visible'), 'Today button visible');\n});\n\ntest('Today Button: \"linked\" selects today\\'s date', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    todayBtn: \"linked\"\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n    ok(picker.find('.datepicker-days tfoot .today').is(':visible'), 'Today button visible');\n\n    target = picker.find('.datepicker-days tfoot .today');\n    target.click();\n\n    var d = new Date(),\n        today = UTCDate(d.getFullYear(), d.getMonth(), d.getDate());\n    datesEqual(dp.viewDate, today);\n    datesEqual(dp.dates[0], today);\n});\n\ntest('Today Highlight: today\\'s date is not highlighted by default', patch_date(function(Date){\n    Date.now = function(){\n        return UTCDate(2012, 2, 15).getTime();\n    };\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd'\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n    equal(picker.find('.datepicker-days thead .datepicker-switch').text(), 'March 2012', 'Title is \"March 2012\"');\n\n    target = picker.find('.datepicker-days tbody td:contains(15)');\n    ok(!target.hasClass('today'), 'Today is not marked with \"today\" class');\n    target = picker.find('.datepicker-days tbody td:contains(14)');\n    ok(!target.hasClass('today'), 'Yesterday is not marked with \"today\" class');\n    target = picker.find('.datepicker-days tbody td:contains(16)');\n    ok(!target.hasClass('today'), 'Tomorrow is not marked with \"today\" class');\n}));\n\ntest('Today Highlight: today\\'s date is highlighted when not active', patch_date(function(Date){\n    Date.now = function(){\n        return UTCDate(2012, 2, 15).getTime();\n    };\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    todayHighlight: true\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n    equal(picker.find('.datepicker-days thead .datepicker-switch').text(), 'March 2012', 'Title is \"March 2012\"');\n\n    target = picker.find('.datepicker-days tbody td:contains(15)');\n    ok(target.hasClass('today'), 'Today is marked with \"today\" class');\n    target = picker.find('.datepicker-days tbody td:contains(14)');\n    ok(!target.hasClass('today'), 'Yesterday is not marked with \"today\" class');\n    target = picker.find('.datepicker-days tbody td:contains(16)');\n    ok(!target.hasClass('today'), 'Tomorrow is not marked with \"today\" class');\n}));\n\ntest('Clear Button: clear visibility when enabled', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    clearBtn: true\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n    ok(picker.find('.datepicker-days tfoot .clear').is(':visible'), 'Clear button visible');\n\n    picker.find('.datepicker-days thead th.datepicker-switch').click();\n    ok(picker.find('.datepicker-months').is(':visible'), 'Months view visible');\n    ok(picker.find('.datepicker-months tfoot .clear').is(':visible'), 'Clear button visible');\n\n    picker.find('.datepicker-months thead th.datepicker-switch').click();\n    ok(picker.find('.datepicker-years').is(':visible'), 'Years view visible');\n    ok(picker.find('.datepicker-years tfoot .clear').is(':visible'), 'Clear button visible');\n});\n\ntest('Clear Button: clears input value', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    clearBtn: true\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n    ok(picker.find('.datepicker-days tfoot .clear').is(':visible'), 'Today button visible');\n\n    target = picker.find('.datepicker-days tfoot .clear');\n    target.click();\n\n    equal(input.val(),'',\"Input value has been cleared.\");\n    ok(picker.is(':visible'), 'Picker is visible');\n});\n\ntest('Clear Button: hides datepicker if autoclose is on', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    clearBtn: true,\n                    autoclose: true\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n    ok(picker.find('.datepicker-days tfoot .clear').is(':visible'), 'Today button visible');\n\n    target = picker.find('.datepicker-days tfoot .clear');\n    target.click();\n\n    equal(input.val(),'',\"Input value has been cleared.\");\n    ok(picker.is(':not(:visible)'), 'Picker is hidden');\n});\n\ntest('Active Toggle Default: when active date is selected it is not unset', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd'\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    // open our datepicker\n    input.focus();\n\n    // Initial value is selected\n    ok(dp.dates.contains(UTCDate(2012, 2, 5)) !== -1, '2012-03-05 selected');\n\n    // click on our active date\n    target = picker.find('.datepicker-days .day.active');\n    target.click();\n\n    // make sure it's still set\n    equal(input.val(), '2012-03-05', \"Input value has not been cleared.\");\n});\n\ntest('Active Toggle Enabled (single date): when active date is selected it is unset', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    toggleActive: true\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    // open our datepicker\n    input.focus();\n\n    // Initial value is selected\n    ok(dp.dates.contains(UTCDate(2012, 2, 5)) !== -1, '2012-03-05 selected');\n\n    // click on our active date\n    target = picker.find('.datepicker-days .day.active');\n    target.click();\n\n    // make sure it's no longer set\n    equal(input.val(), '', \"Input value has been cleared.\");\n});\n\ntest('Active Toggle Multidate Default: when one of the active dates is selected it is unset', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    multidate: true\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    // open our datepicker\n    input.focus();\n\n    // Initial value is selected\n    ok(dp.dates.contains(UTCDate(2012, 2, 5)) !== -1, '2012-03-05 in dates');\n\n    // Select additional date\n    target = picker.find('.datepicker-days tbody td:nth(7)');\n    target.click();\n    datesEqual(dp.dates.get(-1), UTCDate(2012, 2, 4), '2012-03-04 in dates');\n    datesEqual(dp.viewDate, UTCDate(2012, 2, 4));\n    equal(input.val(), '2012-03-05,2012-03-04');\n\n    // Unselect additional date\n    target = picker.find('.datepicker-days tbody td:nth(7)');\n    target.click();\n    ok(dp.dates.contains(UTCDate(2012, 2, 4)) === -1, '2012-03-04 no longer in dates');\n    datesEqual(dp.viewDate, UTCDate(2012, 2, 4));\n    equal(input.val(), '2012-03-05');\n});\n\ntest('Active Toggle Disabled: when active date is selected it remains', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    toggleActive: false\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    // open our datepicker\n    input.focus();\n\n    // Initial value is selected\n    ok(dp.dates.contains(UTCDate(2012, 2, 5)) !== -1, '2012-03-05 selected');\n\n    // click on our active date\n    target = picker.find('.datepicker-days .day.active');\n    target.click();\n\n    // make sure it's still set\n    ok(dp.dates.contains(UTCDate(2012, 2, 5)) !== -1, '2012-03-05 still selected');\n    datesEqual(dp.viewDate, UTCDate(2012, 2, 5));\n    equal(input.val(), '2012-03-05');\n});\n\ntest('Active Toggle Multidate Disabled: when activeToggle is set to false, but multidate is set, the option is ignored and selecting an active date it is unset', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    multidate: true,\n                    toggleActive: false\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    // open our datepicker\n    input.focus();\n\n    // Initial value is selected\n    ok(dp.dates.contains(UTCDate(2012, 2, 5)) !== -1, '2012-03-05 in dates');\n\n    // Select additional date\n    target = picker.find('.datepicker-days tbody td:nth(7)');\n    target.click();\n    datesEqual(dp.dates.get(-1), UTCDate(2012, 2, 4), '2012-03-04 in dates');\n    datesEqual(dp.viewDate, UTCDate(2012, 2, 4));\n    equal(input.val(), '2012-03-05,2012-03-04');\n\n    // Unselect additional date\n    target = picker.find('.datepicker-days tbody td:nth(7)');\n    target.click();\n    ok(dp.dates.contains(UTCDate(2012, 2, 4)) === -1, '2012-03-04 no longer in dates');\n    datesEqual(dp.viewDate, UTCDate(2012, 2, 4));\n    equal(input.val(), '2012-03-05');\n});\n\ntest('DaysOfWeekDisabled', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-10-26')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    daysOfWeekDisabled: '1,5'\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    target = picker.find('.datepicker-days tbody td:nth(22)');\n    ok(target.hasClass('disabled'), 'Day of week is disabled');\n    target = picker.find('.datepicker-days tbody td:nth(24)');\n    ok(!target.hasClass('disabled'), 'Day of week is enabled');\n    target = picker.find('.datepicker-days tbody td:nth(26)');\n    ok(target.hasClass('disabled'), 'Day of week is disabled');\n});\n\ntest('DaysOfWeekHighlighted', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-10-26')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    startDate: '2012-10-02',\n                    daysOfWeekHighlighted: '1,5'\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    target = picker.find('.datepicker-days tbody td:nth(0)');\n    ok(!target.hasClass('highlighted'), 'Day of week is not highlighted');\n    target = picker.find('.datepicker-days tbody td:nth(22)');\n    ok(target.hasClass('highlighted'), 'Day of week is highlighted');\n    target = picker.find('.datepicker-days tbody td:nth(24)');\n    ok(!target.hasClass('highlighted'), 'Day of week is not highlighted');\n    target = picker.find('.datepicker-days tbody td:nth(26)');\n    ok(target.hasClass('highlighted'), 'Day of week is highlighted');\n});\n\ntest('DatesDisabled', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-10-26')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    datesDisabled: ['2012-10-1', '2012-10-10', '2012-10-20']\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    target = picker.find('.datepicker-days tbody td:nth(1)');\n    ok(target.hasClass('disabled'), 'Day of week is disabled');\n    ok(target.hasClass('disabled-date'), 'Date is disabled');\n    target = picker.find('.datepicker-days tbody td:nth(2)');\n    ok(!target.hasClass('disabled'), 'Day of week is enabled');\n    target = picker.find('.datepicker-days tbody td:nth(10)');\n    ok(target.hasClass('disabled'), 'Day of week is disabled');\n    ok(target.hasClass('disabled-date'), 'Date is disabled');\n    target = picker.find('.datepicker-days tbody td:nth(11)');\n    ok(!target.hasClass('disabled'), 'Day of week is enabled');\n    target = picker.find('.datepicker-days tbody td:nth(20)');\n    ok(target.hasClass('disabled'), 'Day of week is disabled');\n    ok(target.hasClass('disabled-date'), 'Date is disabled');\n    target = picker.find('.datepicker-days tbody td:nth(21)');\n    ok(!target.hasClass('disabled'), 'Day of week is enabled');\n});\n\ntest('DatesDisabled as attribute', function(){\n    var input = $('<input data-date-dates-disabled=\"2012-10-1,2012-10-10,2012-10-20\" />')\n                .appendTo('#qunit-fixture')\n                .val('2012-10-26')\n                .datepicker({\n                    format: 'yyyy-mm-dd'\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    target = picker.find('.datepicker-days tbody td:nth(1)');\n    ok(target.hasClass('disabled'), 'Day of week is disabled');\n    ok(target.hasClass('disabled-date'), 'Date is disabled');\n    target = picker.find('.datepicker-days tbody td:nth(2)');\n    ok(!target.hasClass('disabled'), 'Day of week is enabled');\n    target = picker.find('.datepicker-days tbody td:nth(10)');\n    ok(target.hasClass('disabled'), 'Day of week is disabled');\n    ok(target.hasClass('disabled-date'), 'Date is disabled');\n    target = picker.find('.datepicker-days tbody td:nth(11)');\n    ok(!target.hasClass('disabled'), 'Day of week is enabled');\n    target = picker.find('.datepicker-days tbody td:nth(20)');\n    ok(target.hasClass('disabled'), 'Day of week is disabled');\n    ok(target.hasClass('disabled-date'), 'Date is disabled');\n    target = picker.find('.datepicker-days tbody td:nth(21)');\n    ok(!target.hasClass('disabled'), 'Day of week is enabled');\n});\n\ntest('BeforeShowDay', function(){\n\n    var beforeShowDay = function(date) {\n        switch (date.getDate()){\n            case 25:\n                return {\n                    tooltip: 'Example tooltip',\n                    classes: 'active'\n                };\n            case 26:\n                return \"test26\";\n            case 27:\n                return {enabled: false, classes: 'test27'};\n            case 28:\n                return false;\n            case 30:\n                return { content: \"foo\" + date.getDate() }\n        }\n    };\n\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-10-26')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    beforeShowDay: beforeShowDay\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    target = picker.find('.datepicker-days tbody td:nth(25)');\n    equal(target.attr('title'), 'Example tooltip', '25th has tooltip');\n    ok(!target.hasClass('disabled'), '25th is enabled');\n    target = picker.find('.datepicker-days tbody td:nth(26)');\n    ok(target.hasClass('test26'), '26th has test26 class');\n    ok(!target.hasClass('disabled'), '26th is enabled');\n    target = picker.find('.datepicker-days tbody td:nth(27)');\n    ok(target.hasClass('test27'), '27th has test27 class');\n    ok(target.hasClass('disabled'), '27th is disabled');\n    target = picker.find('.datepicker-days tbody td:nth(28)');\n    ok(target.hasClass('disabled'), '28th is disabled');\n    target = picker.find('.datepicker-days tbody td:nth(29)');\n    ok(!target.hasClass('disabled'), '29th is enabled');\n    target = picker.find('.datepicker-days tbody td:nth(30)');\n    ok(target.text() == \"foo30\", '30th has custom content');\n});\n\ntest('BeforeShowMonth regress .day content', function() {\n    var input = $('<input />')\n        .appendTo('#qunit-fixture')\n        .val('2012-10-26')\n        .datepicker({\n            format: 'yyyy-mm-dd',\n            beforeShowDay: function(date) {\n                return {\n                    content: '<strong>foo123</strong>'\n                };\n            }\n        }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    target = picker.find('.datepicker-days tbody td:nth(30)');\n    target.trigger('click');\n    datesEqual(dp.viewDate, UTCDate(2012, 9, 30));\n});\n\ntest('BeforeShowMonth', function () {\n\n    var beforeShowMonth = function (date) {\n        switch (date.getMonth()) {\n            case 0:\n                return {\n                    tooltip: 'Example tooltip',\n                    classes: 'active'\n                };\n            case 2:\n                return \"testMarch\";\n            case 4:\n                return {enabled: false, classes: 'testMay'};\n            case 5:\n                return false;\n        }\n    };\n\n    var input = $('<input />')\n            .appendTo('#qunit-fixture')\n            .val('2012-10-26')\n            .datepicker({\n                format: 'yyyy-mm-dd',\n                beforeShowMonth: beforeShowMonth\n            }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    target = picker.find('.datepicker-months tbody span:nth(0)');\n    equal(target.attr('title'), 'Example tooltip', '1st has tooltip');\n    ok(!target.hasClass('disabled'), 'January is enabled');\n    target = picker.find('.datepicker-months tbody span:nth(2)');\n    ok(target.hasClass('testMarch'), 'March has testMarch class');\n    ok(!target.hasClass('disabled'), 'March enabled');\n    target = picker.find('.datepicker-months tbody span:nth(4)');\n    ok(target.hasClass('testMay'), 'May has testMay class');\n    ok(target.hasClass('disabled'), 'May is disabled');\n    target = picker.find('.datepicker-months tbody span:nth(5)');\n    ok(target.hasClass('disabled'), 'June is disabled');\n    target = picker.find('.datepicker-months tbody span:nth(6)');\n    ok(!target.hasClass('disabled'), 'July is enabled');\n});\n\n\ntest('BeforeShowYear', function () {\n\n    var beforeShowYear = function (date) {\n        switch (date.getFullYear()) {\n            case 2013:\n                return {\n                    tooltip: 'Example tooltip',\n                    classes: 'active'\n                };\n            case 2014:\n                return \"test2014\";\n            case 2015:\n                return {enabled: false, classes: 'test2015'};\n            case 2016:\n                return false;\n        }\n    };\n\n    var input = $('<input />')\n            .appendTo('#qunit-fixture')\n            .val('2012-10-26')\n            .datepicker({\n                format: 'yyyy-mm-dd',\n                beforeShowYear: beforeShowYear\n            }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    target = picker.find('.datepicker-years tbody span:nth(4)');\n    equal(target.attr('title'), 'Example tooltip', '5th has tooltip');\n    ok(!target.hasClass('disabled'), '2013, 5th is enabled');\n    target = picker.find('.datepicker-years tbody span:nth(5)');\n    ok(target.hasClass('test2014'), '6th has test2014 class');\n    ok(!target.hasClass('disabled'), '2014, 6th is enabled');\n    target = picker.find('.datepicker-years tbody span:nth(6)');\n    ok(target.hasClass('test2015'), '2015, 7th has test2015 class');\n    ok(target.hasClass('disabled'), '2015, 7th is disabled');\n    target = picker.find('.datepicker-years tbody span:nth(7)');\n    ok(target.hasClass('disabled'), '2016, 8th is disabled');\n    target = picker.find('.datepicker-years tbody span:nth(8)');\n    ok(!target.hasClass('disabled'), '2017, 9th is enabled');\n});\n\ntest('beforeShowDecade', function () {\n    var beforeShowDecade = function (date) {\n        switch (date.getFullYear()) {\n            case 2030:\n                return {\n                    tooltip: 'Example tooltip',\n                    classes: 'active'\n                };\n            case 2040:\n                return \"test2040\";\n            case 2050:\n                return {enabled: false, classes: 'test2050'};\n            case 2060:\n                return false;\n        }\n    };\n\n    var input = $('<input />')\n            .appendTo('#qunit-fixture')\n            .val('03/05/2012')\n            .datepicker({ beforeShowDecade: beforeShowDecade }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    target = picker.find('.datepicker-decades tbody span:nth(4)');\n    equal(target.attr('title'), 'Example tooltip', '5th has tooltip');\n    ok(!target.hasClass('disabled'), '2030, 5th is enabled');\n\n    target = picker.find('.datepicker-decades tbody span:nth(5)');\n    ok(target.hasClass('test2040'), '6th has test2040 class');\n    ok(!target.hasClass('disabled'), '2040, 6th is enabled');\n\n    target = picker.find('.datepicker-decades tbody span:nth(6)');\n    ok(target.hasClass('test2050'), '2050, 7th has test2050 class');\n    ok(target.hasClass('disabled'), '2050, 7th is disabled');\n\n    target = picker.find('.datepicker-decades tbody span:nth(7)');\n    ok(target.hasClass('disabled'), '2060, 8th is disabled');\n\n    target = picker.find('.datepicker-decades tbody span:nth(8)');\n    ok(!target.hasClass('disabled'), '2070, 9th is enabled');\n});\n\ntest('beforeShowCentury', function () {\n    var beforeShowCentury = function (date) {\n        switch (date.getFullYear()) {\n            case 2300:\n                return {\n                    tooltip: 'Example tooltip',\n                    classes: 'active'\n                };\n            case 2400:\n                return \"test2400\";\n            case 2500:\n                return {enabled: false, classes: 'test2500'};\n            case 2600:\n                return false;\n        }\n    };\n\n    var input = $('<input />')\n            .appendTo('#qunit-fixture')\n            .val('03/05/2012')\n            .datepicker({ beforeShowCentury: beforeShowCentury }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    target = picker.find('.datepicker-centuries tbody span:nth(4)');\n    equal(target.attr('title'), 'Example tooltip', '5th has tooltip');\n    ok(!target.hasClass('disabled'), '2300, 5th is enabled');\n\n    target = picker.find('.datepicker-centuries tbody span:nth(5)');\n    ok(target.hasClass('test2400'), '6th has test2400 class');\n    ok(!target.hasClass('disabled'), '2400, 6th is enabled');\n\n    target = picker.find('.datepicker-centuries tbody span:nth(6)');\n    ok(target.hasClass('test2500'), '2500, 7th has test2500 class');\n    ok(target.hasClass('disabled'), '2500, 7th is disabled');\n\n    target = picker.find('.datepicker-centuries tbody span:nth(7)');\n    ok(target.hasClass('disabled'), '2600, 8th is disabled');\n\n    target = picker.find('.datepicker-centuries tbody span:nth(8)');\n    ok(!target.hasClass('disabled'), '2700, 9th is enabled');\n});\n\ntest('Orientation: values are parsed correctly', function(){\n\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-10-26')\n                .datepicker({\n                    format: 'yyyy-mm-dd'\n                }),\n        dp = input.data('datepicker');\n\n    equal(dp.o.orientation.x, 'auto');\n    equal(dp.o.orientation.y, 'auto');\n\n    dp._process_options({orientation: ''});\n    equal(dp.o.orientation.x, 'auto', 'Empty value');\n    equal(dp.o.orientation.y, 'auto', 'Empty value');\n\n    dp._process_options({orientation: 'left'});\n    equal(dp.o.orientation.x, 'left', '\"left\"');\n    equal(dp.o.orientation.y, 'auto', '\"left\"');\n\n    dp._process_options({orientation: 'right'});\n    equal(dp.o.orientation.x, 'right', '\"right\"');\n    equal(dp.o.orientation.y, 'auto', '\"right\"');\n\n    dp._process_options({orientation: 'top'});\n    equal(dp.o.orientation.x, 'auto', '\"top\"');\n    equal(dp.o.orientation.y, 'top', '\"top\"');\n\n    dp._process_options({orientation: 'bottom'});\n    equal(dp.o.orientation.x, 'auto', '\"bottom\"');\n    equal(dp.o.orientation.y, 'bottom', '\"bottom\"');\n\n    dp._process_options({orientation: 'left top'});\n    equal(dp.o.orientation.x, 'left', '\"left top\"');\n    equal(dp.o.orientation.y, 'top', '\"left top\"');\n\n    dp._process_options({orientation: 'left bottom'});\n    equal(dp.o.orientation.x, 'left', '\"left bottom\"');\n    equal(dp.o.orientation.y, 'bottom', '\"left bottom\"');\n\n    dp._process_options({orientation: 'right top'});\n    equal(dp.o.orientation.x, 'right', '\"right top\"');\n    equal(dp.o.orientation.y, 'top', '\"right top\"');\n\n    dp._process_options({orientation: 'right bottom'});\n    equal(dp.o.orientation.x, 'right', '\"right bottom\"');\n    equal(dp.o.orientation.y, 'bottom', '\"right bottom\"');\n\n    dp._process_options({orientation: 'left right'});\n    equal(dp.o.orientation.x, 'left', '\"left right\"');\n    equal(dp.o.orientation.y, 'auto', '\"left right\"');\n\n    dp._process_options({orientation: 'right left'});\n    equal(dp.o.orientation.x, 'right', '\"right left\"');\n    equal(dp.o.orientation.y, 'auto', '\"right left\"');\n\n    dp._process_options({orientation: 'top bottom'});\n    equal(dp.o.orientation.x, 'auto', '\"top bottom\"');\n    equal(dp.o.orientation.y, 'top', '\"top bottom\"');\n\n    dp._process_options({orientation: 'bottom top'});\n    equal(dp.o.orientation.x, 'auto', '\"bottom top\"');\n    equal(dp.o.orientation.y, 'bottom', '\"bottom top\"');\n\n    dp._process_options({orientation: 'foo bar'});\n    equal(dp.o.orientation.x, 'auto', '\"foo bar\"');\n    equal(dp.o.orientation.y, 'auto', '\"foo bar\"');\n\n    dp._process_options({orientation: 'foo left'});\n    equal(dp.o.orientation.x, 'left', '\"foo left\"');\n    equal(dp.o.orientation.y, 'auto', '\"foo left\"');\n\n    dp._process_options({orientation: 'top bar'});\n    equal(dp.o.orientation.x, 'auto', '\"top bar\"');\n    equal(dp.o.orientation.y, 'top', '\"top bar\"');\n});\n\ntest('startDate', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-10-26')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    startDate: new Date(2012, 9, 26)\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    target = picker.find('.datepicker-days tbody td:nth(25)');\n    ok(target.hasClass('disabled'), 'Previous day is disabled');\n    target = picker.find('.datepicker-days tbody td:nth(26)');\n    ok(!target.hasClass('disabled'), 'Specified date is enabled');\n    target = picker.find('.datepicker-days tbody td:nth(27)');\n    ok(!target.hasClass('disabled'), 'Next day is enabled');\n});\n\ntest('endDate', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-10-26')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    endDate: new Date(2012, 9, 26)\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    target = picker.find('.datepicker-days tbody td:nth(25)');\n    ok(!target.hasClass('disabled'), 'Previous day is enabled');\n    target = picker.find('.datepicker-days tbody td:nth(26)');\n    ok(!target.hasClass('disabled'), 'Specified date is enabled');\n    target = picker.find('.datepicker-days tbody td:nth(27)');\n    ok(target.hasClass('disabled'), 'Next day is disabled');\n});\n\ntest('Multidate', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    multidate: true\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n\n    // Initial value is selected\n    ok(dp.dates.contains(UTCDate(2012, 2, 5)) !== -1, '2012-03-05 (initial date) in dates');\n\n    // Select first\n    target = picker.find('.datepicker-days tbody td:nth(7)');\n    equal(target.text(), '4'); // Mar 4\n\n    target.click();\n    datesEqual(dp.dates.get(-1), UTCDate(2012, 2, 4), '2012-03-04 in dates');\n    datesEqual(dp.viewDate, UTCDate(2012, 2, 4));\n    equal(input.val(), '2012-03-05,2012-03-04');\n\n    // Select second\n    target = picker.find('.datepicker-days tbody td:nth(15)');\n    equal(target.text(), '12'); // Mar 12\n\n    target.click();\n    datesEqual(dp.dates.get(-1), UTCDate(2012, 2, 12), '2012-03-12 in dates');\n    datesEqual(dp.viewDate, UTCDate(2012, 2, 12));\n    equal(input.val(), '2012-03-05,2012-03-04,2012-03-12');\n\n    // Deselect first\n    target = picker.find('.datepicker-days tbody td:nth(7)');\n    equal(target.text(), '4'); // Mar 4\n\n    target.click();\n    ok(dp.dates.contains(UTCDate(2012, 2, 4)) === -1, '2012-03-04 no longer in dates');\n    datesEqual(dp.viewDate, UTCDate(2012, 2, 4));\n    equal(input.val(), '2012-03-05,2012-03-12');\n});\n\ntest('Multidate with limit', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    multidate: 2\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n\n    // Initial value is selected\n    ok(dp.dates.contains(UTCDate(2012, 2, 5)) !== -1, '2012-03-05 (initial date) in dates');\n\n    // Select first\n    target = picker.find('.datepicker-days tbody td:nth(7)');\n    equal(target.text(), '4'); // Mar 4\n\n    target.click();\n    datesEqual(dp.dates.get(-1), UTCDate(2012, 2, 4), '2012-03-04 in dates');\n    datesEqual(dp.viewDate, UTCDate(2012, 2, 4));\n    equal(input.val(), '2012-03-05,2012-03-04');\n\n    // Select second\n    target = picker.find('.datepicker-days tbody td:nth(15)');\n    equal(target.text(), '12'); // Mar 12\n\n    target.click();\n    datesEqual(dp.dates.get(-1), UTCDate(2012, 2, 12), '2012-03-12 in dates');\n    datesEqual(dp.viewDate, UTCDate(2012, 2, 12));\n    equal(input.val(), '2012-03-04,2012-03-12');\n\n    // Select third\n    target = picker.find('.datepicker-days tbody td:nth(20)');\n    equal(target.text(), '17'); // Mar 17\n\n    target.click();\n    datesEqual(dp.dates.get(-1), UTCDate(2012, 2, 17), '2012-03-17 in dates');\n    ok(dp.dates.contains(UTCDate(2012, 2, 4)) === -1, '2012-03-04 no longer in dates');\n    datesEqual(dp.viewDate, UTCDate(2012, 2, 17));\n    equal(input.val(), '2012-03-12,2012-03-17');\n});\n\ntest('Multidate Separator', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    multidate: true,\n                    multidateSeparator: ' '\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n\n    // Select first\n    target = picker.find('.datepicker-days tbody td:nth(7)');\n    equal(target.text(), '4'); // Mar 4\n\n    target.click();\n    equal(input.val(), '2012-03-05 2012-03-04');\n\n    // Select second\n    target = picker.find('.datepicker-days tbody td:nth(15)');\n    equal(target.text(), '12'); // Mar 12\n\n    target.click();\n    equal(input.val(), '2012-03-05 2012-03-04 2012-03-12');\n});\n\n\ntest(\"Picker is shown on input focus when showOnFocus is not defined\", function () {\n\n    var input = $('<input />')\n            .appendTo('#qunit-fixture')\n            .val('2014-01-01')\n            .datepicker({\n            }),\n        dp = input.data('datepicker'),\n        picker = dp.picker;\n\n    input.focus();\n\n    ok(picker.is(\":visible\"), \"Datepicker is visible\");\n\n});\n\ntest(\"Picker is shown on input focus when showOnFocus is true\", function () {\n\n    var input = $('<input />')\n            .appendTo('#qunit-fixture')\n            .val('2014-01-01')\n            .datepicker({\n                showOnFocus: true\n            }),\n        dp = input.data('datepicker'),\n        picker = dp.picker;\n\n    input.focus();\n\n    ok(picker.is(\":visible\"), \"Datepicker is visible\");\n\n});\n\ntest(\"Picker is hidden on input focus when showOnFocus is false\", function () {\n\n    var input = $('<input />')\n            .appendTo('#qunit-fixture')\n            .val('2014-01-01')\n            .datepicker({\n                showOnFocus: false\n            }),\n        dp = input.data('datepicker'),\n        picker = dp.picker;\n\n    input.focus();\n\n    ok(picker.is(\":hidden\"), \"Datepicker is hidden\");\n\n});\n\ntest('Container', function(){\n    var testContainer = $('<div class=\"date-picker-container\"/>')\n            .appendTo('#qunit-fixture'),\n        input = $('<input />')\n            .appendTo('#qunit-fixture')\n                .val('2012-10-26')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    container: '.date-picker-container',\n                    startDate: new Date(2012, 9, 26)\n                }),\n        dp = input.data('datepicker'),\n        target = dp.picker;\n    input.focus();\n    equal(target.parent()[0], testContainer[0], 'Container is not the testContainer that was specificed');\n});\n\ntest('Default View Date (Object)', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    defaultViewDate: { year: 1977, month: 04, day: 25 }\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n\n    equal(picker.find('.datepicker-days thead .datepicker-switch').text(), 'May 1977');\n});\n\ntest('Default View Date (Date)', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    defaultViewDate: new Date(1977, 4, 25)\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n\n    equal(picker.find('.datepicker-days thead .datepicker-switch').text(), 'May 1977');\n});\n\ntest('Default View Date (String)', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    defaultViewDate: \"1977-05-24\"\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n\n    equal(picker.find('.datepicker-days thead .datepicker-switch').text(), 'May 1977');\n});\n\ntest('Immediate Updates', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2014-01-01')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    immediateUpdates: true\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker;\n\n    // Change month\n    input.focus();\n    picker.find('.datepicker-days .next').click();\n    equal(input.val(), '2014-02-01');\n\n    // Change year\n    picker.find('.datepicker-days .datepicker-switch').click();\n    picker.find('.datepicker-months .next').click();\n    equal(input.val(), '2015-02-01');\n\n    // Change decade set (doesn't update input)\n    picker.find('.datepicker-months .datepicker-switch').click();\n    picker.find('.datepicker-years .next').click();\n    equal(input.val(), '2015-02-01');\n\n    // Change century set (doesn't update input)\n    picker.find('.datepicker-years .datepicker-switch').click();\n    picker.find('.datepicker-decades .next').click();\n    equal(input.val(), '2015-02-01');\n\n    // Change millennium set (doesn't update input)\n    picker.find('.datepicker-decades .datepicker-switch').click();\n    picker.find('.datepicker-centuries .next').click();\n    equal(input.val(), '2015-02-01');\n});\n\ntest('forceParse: false on enter on invalid date', function () {\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('123456789')\n                .datepicker({forceParse: false})\n                .focus();\n\n    input.trigger({\n        type: 'keydown',\n        keyCode: 13,\n        shiftKey: false\n    });\n\n    equal(input.val(), '123456789', 'date not parsed');\n});\n\ntest('forceParse: false on mousedown on invalid date', function () {\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('123456789')\n                .datepicker({forceParse: false})\n                .focus();\n\n    $(document).trigger({\n        type: 'mousedown'\n    });\n\n    equal(input.val(), '123456789', 'date not parsed');\n});\n\n//datepicker-dropdown\n\ntest('Enable on readonly options (default)', function(){\n    var input = $('<input readonly=\"readonly\" />')\n            .appendTo('#qunit-fixture')\n            .datepicker({format: \"dd-mm-yyyy\"}),\n        dp = input.data('datepicker'),\n        picker = dp.picker;\n\n    ok(!picker.is(':visible'));\n    input.focus();\n    ok(picker.is(':visible'));\n});\n\ntest('Enable on readonly options (false)', function(){\n    var input = $('<input readonly=\"readonly\" />')\n            .appendTo('#qunit-fixture')\n            .datepicker({\n                format: \"dd-mm-yyyy\",\n                enableOnReadonly: false\n            }),\n        dp = input.data('datepicker'),\n        picker = dp.picker;\n\n    ok(!picker.is(':visible'));\n    input.focus();\n    ok(!picker.is(':visible'));\n});\n\ntest('Startview: year view visible after date pick', function(){\n    var input = $('<input />')\n            .appendTo('#qunit-fixture')\n            .datepicker({\n                startView: 2,\n                minViewMode: 1,\n                autoclose: true\n            }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    ok(picker.find('.datepicker-days').is(':not(:visible)'), 'Days view hidden');\n    ok(picker.find('.datepicker-months').is(':not(:visible)'), 'Months view hidden');\n    ok(picker.find('.datepicker-years').is(':visible'), 'Years view visible');\n\n    target = picker.find('.datepicker-years tbody td:nth(7)');\n    target.click();\n    target = picker.find('.datepicker-years tbody td:nth(4)');\n    target.click();\n    target = picker.find('.datepicker-years tbody td:nth(20)');\n    target.click();\n\n    input.focus();\n    ok(picker.find('.datepicker-days').is(':not(:visible)'), 'Days view hidden');\n    ok(picker.find('.datepicker-months').is(':not(:visible)'), 'Months view hidden');\n    ok(picker.find('.datepicker-years').is(':visible'), 'Years view visible');\n});\n\ntest('Title: none', function(){\n    var input = $('<input />')\n            .appendTo('#qunit-fixture')\n            .datepicker({\n                format: 'yyyy-mm-dd'\n            }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    ok(picker.is(':visible'), 'Picker is visible');\n\n    target = picker.find('.datepicker-days thead .datepicker-title');\n    ok(target.is(':not(:visible)'), 'Title is hidden');\n});\n\ntest('Title: with value', function(){\n    var input = $('<input />')\n            .appendTo('#qunit-fixture')\n            .datepicker({\n                format: 'yyyy-mm-dd',\n                title: 'Some Title'\n            }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    ok(picker.is(':visible'), 'Picker is visible');\n\n    target = picker.find('.datepicker-days thead .datepicker-title');\n    ok(target.is(':visible'), 'Title is visible');\n    equal(target.text(), 'Some Title');\n});\n\ntest('i18n: Leverage i18n titleFormat when available.', patch_date(function(Date){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2015年04月21日')\n                .datepicker({\n                    language: 'zh-CN'\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker;\n\n    input.focus();\n    equal(picker.find('.datepicker-days thead .datepicker-switch').text(), '2015年04月', 'Title is in Chinese: 2015年04月');\n}));\n\ntest('i18n: Leverage English (default) i18n titleFormat when translation key for specified language is not available.', patch_date(function(Date){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('04/21/2015')\n                .datepicker({\n                    language: 'aa-BB'\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker;\n\n    input.focus();\n    equal(picker.find('.datepicker-days thead .datepicker-switch').text(), 'April 2015', 'Title is in default format: April 2015');\n}));\n\ntest('Z-index Offset: none', function(){\n    var input = $('<input />')\n            .appendTo('#qunit-fixture')\n            .datepicker(),\n        dp = input.data('datepicker'),\n        picker = dp.picker;\n\n    input.parent().css('z-index', 234);\n    input.focus();\n\n    equal(dp.o.zIndexOffset, 10, 'Z-index offset option defaults to 10.');\n    equal(picker.css('z-index'), 244, 'Picker Z-index offset is respected.');\n});\n\ntest('Z-index Offset: with value', function(){\n    var input = $('<input />')\n            .appendTo('#qunit-fixture')\n            .datepicker({\n                zIndexOffset: 1000\n            }),\n        dp = input.data('datepicker'),\n        picker = dp.picker;\n\n    input.parent().css('z-index', 234);\n    input.focus();\n\n    equal(dp.o.zIndexOffset, 1000, 'Z-index offset option is accepted.');\n    equal(picker.css('z-index'), 1234, 'Picker Z-index offset is respected.');\n});\n\ntest('templates', function(){\n    var input = $('<input />')\n            .appendTo('#qunit-fixture')\n            .datepicker({\n                templates: {\n                    leftArrow: '<span class=\"glyphicon glyphicon-arrow-left\"></span>',\n                    rightArrow: '</table>'\n                }\n            }),\n        dp = input.data('datepicker'),\n        picker = dp.picker;\n\n    input.focus();\n    equal(picker.find('.datepicker-days .prev').prop('innerHTML'), '<span class=\"glyphicon glyphicon-arrow-left\"></span>');\n    equal(picker.find('.datepicker-days .next').prop('innerHTML'), $('<div>').html('&raquo;').text());\n});\n\ntest('Nav arrow html templates with span tag', function () {\n    var input = $('<input />')\n            .appendTo('#qunit-fixture')\n            .val('2012-10-26')\n            .datepicker({\n                format: 'yyyy-mm-dd',\n                templates: {\n                    leftArrow: '<span></span>',\n                    rightArrow: '<span></span>'\n                }\n            }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    target = picker.find('.datepicker-months tbody span:nth(9)');\n    ok(target.hasClass('active'), 'Month is selected');\n});\n\ntest('Nav arrow html templates .prev click', function () {\n    var input = $('<input />')\n        .appendTo('#qunit-fixture')\n        .val('2012-10-26')\n        .datepicker({\n            format: 'yyyy-mm-dd',\n            startView: 1,\n            templates: {\n                leftArrow: '<i></i>'\n            }\n        }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    picker.find('.datepicker-months thead .prev i').trigger('click');\n    target = picker.find('.datepicker-months thead .datepicker-switch');\n    equal(target.text(), '2011');\n});\n\ntest('Visibility of the prev and next arrows for year/decade/century/millennium views with startDate and endDate', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('01/01/2015')\n                .datepicker({\n                    format: 'dd/mm/yyyy',\n                    startView: 1,\n                    startDate: '01/12/2014',\n                    endDate: '01/12/2016'\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n\n    target = picker.find('.datepicker-months thead th.prev');\n    ok(!target.hasClass('disabled'), 'Prev switcher is not hidden');\n    target = picker.find('.datepicker-months thead th.next');\n    ok(!target.hasClass('disabled'), 'Next switcher is not hidden');\n\n    picker.find('.datepicker-months thead th.datepicker-switch').trigger('click');\n    target = picker.find('.datepicker-years thead th.prev');\n    ok(target.hasClass('disabled'), 'Prev switcher is hidden');\n    target = picker.find('.datepicker-years thead th.next');\n    ok(target.hasClass('disabled'), 'Next switcher is hidden');\n\n    picker.find('.datepicker-years thead th.datepicker-switch').trigger('click');\n    target = picker.find('.datepicker-decades thead th.prev');\n    ok(target.hasClass('disabled'), 'Prev switcher is hidden');\n    target = picker.find('.datepicker-decades thead th.next');\n    ok(target.hasClass('disabled'), 'Next switcher is hidden');\n\n    picker.find('.datepicker-decades thead th.datepicker-switch').trigger('click');\n    target = picker.find('.datepicker-centuries thead th.prev');\n    ok(target.hasClass('disabled'), 'Prev switcher is hidden');\n    target = picker.find('.datepicker-centuries thead th.next');\n    ok(target.hasClass('disabled'), 'Next switcher is hidden');\n});\n\ntest('Visibility of the prev arrow for month/year/decade/century/millennium views with startDate eq value', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('01/01/2014')\n                .datepicker({\n                    format: 'dd/mm/yyyy',\n                    startView: 0,\n                    startDate: '01/01/2014'\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n\n    target = picker.find('.datepicker-days thead th.prev');\n    ok(target.hasClass('disabled'), 'Prev switcher is not hidden');\n\n    picker.find('.datepicker-days thead th.datepicker-switch').trigger('click');\n\n    target = picker.find('.datepicker-months thead th.prev');\n    ok(target.hasClass('disabled'), 'Prev switcher is not hidden');\n\n    picker.find('.datepicker-months thead th.datepicker-switch').trigger('click');\n    target = picker.find('.datepicker-years thead th.prev');\n    ok(target.hasClass('disabled'), 'Prev switcher is hidden');\n\n    picker.find('.datepicker-years thead th.datepicker-switch').trigger('click');\n    target = picker.find('.datepicker-decades thead th.prev');\n    ok(target.hasClass('disabled'), 'Prev switcher is hidden');\n\n    picker.find('.datepicker-decades thead th.datepicker-switch').trigger('click');\n    target = picker.find('.datepicker-centuries thead th.prev');\n    ok(target.hasClass('disabled'), 'Prev switcher is hidden');\n});\n\ntest('Visibility of the next arrow for month/year/decade/century/millennium views with endDate eq value', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('31/12/1999')\n                .datepicker({\n                    format: 'dd/mm/yyyy',\n                    startView: 0,\n                    endDate: '31/12/1999'\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n\n    target = picker.find('.datepicker-days thead th.next');\n    ok(target.hasClass('disabled'), 'Next switcher is not hidden');\n\n    picker.find('.datepicker-days thead th.datepicker-switch').trigger('click');\n\n    target = picker.find('.datepicker-months thead th.next');\n    ok(target.hasClass('disabled'), 'Next switcher is not hidden');\n\n    picker.find('.datepicker-months thead th.datepicker-switch').trigger('click');\n    target = picker.find('.datepicker-years thead th.next');\n    ok(target.hasClass('disabled'), 'Next switcher is hidden');\n\n    picker.find('.datepicker-years thead th.datepicker-switch').trigger('click');\n    target = picker.find('.datepicker-decades thead th.next');\n    ok(target.hasClass('disabled'), 'Next switcher is hidden');\n\n    picker.find('.datepicker-decades thead th.datepicker-switch').trigger('click');\n    target = picker.find('.datepicker-centuries thead th.next');\n    ok(target.hasClass('disabled'), 'Next switcher is hidden');\n});\n\ntest('date cells (outdated)', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .datepicker(),\n        dp = input.data('datepicker'),\n        picker = dp.picker;\n\n    input.focus();\n    picker.find('.datepicker-days .day').each(function(){\n        ok(this.hasAttribute('data-date'));\n    });\n});\n\ntest('keepEmptyValues: none (default is false)', function() {\n    var proxy_element = $('<div />').appendTo('#qunit-fixture'),\n        input_from = $('<input />').val('2016-04-01').appendTo('#qunit-fixture'),\n        input_to = $('<input />').appendTo('#qunit-fixture'),\n        dp = proxy_element.datepicker({\n            format: 'yyyy-mm-dd',\n            inputs: [input_from, input_to]\n        }),\n        input_from_dp = input_from.data('datepicker');\n\n    input_from.focus();\n    input_from_dp.picker.find('.old.day').eq(0).click();\n\n    equal(input_from.val(), '2016-03-27');\n    equal(input_to.val(), '2016-03-27', 'Input_from value should be distributed.');\n});\n\ntest('keepEmptyValues: true', function() {\n    var proxy_element = $('<div />').appendTo('#qunit-fixture'),\n        input_from = $('<input />').val('2016-04-01').appendTo('#qunit-fixture'),\n        input_to = $('<input />').appendTo('#qunit-fixture'),\n        dp = proxy_element.datepicker({\n            format: 'yyyy-mm-dd',\n            inputs: [input_from, input_to],\n            keepEmptyValues: true\n        }),\n        input_from_dp = input_from.data('datepicker');\n\n    input_from.focus();\n    input_from_dp.picker.find('.old.day').eq(0).click();\n\n    equal(input_from.val(), '2016-03-27');\n    equal(input_to.val(), '', 'Input_from value should not be distributed.');\n});\n\ntest('maxViewMode and navigation switch', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .datepicker({\n                    maxViewMode: 0\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker;\n\n    input.focus();\n\n    picker.find('.datepicker-days thead th.datepicker-switch').click();\n    ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');\n});\n\ntest('updateViewDate', function() {\n    expect(8);\n\n    var input = $('<input value=\"08/03/1990\"/>')\n                .appendTo('#qunit-fixture')\n                .datepicker({\n                  defaultViewDate: {\n                    year: 1945,\n                    month: 4,\n                    day: 8\n                  },\n                  updateViewDate: false\n                })\n                .on('changeMonth', function() {\n                  var msg = shouldTriggerChangeMonth ? 'changeMonth must be triggered' : 'changeMonth must not be triggered';\n                  ok(shouldTriggerChangeMonth, msg);\n                })\n                .on('changeYear', function() {\n                  var msg = shouldTriggerChangeYear ? 'changeYear must be triggered' : 'changeYear must not be triggered';\n                  ok(shouldTriggerChangeYear, msg);\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        shouldTriggerChangeMonth = false,\n        shouldTriggerChangeYear = false,\n        monthShown = picker.find('.datepicker-days thead th.datepicker-switch');\n\n    equal(monthShown.text(), \"May 1945\", 'uses defaultViewDate on initialization');\n    input.datepicker('setDate', new Date(1945, 8, 2));\n    equal(monthShown.text(), \"May 1945\", 'does not change viewDate on `setDate` method');\n    input.focus();\n    picker.find('.datepicker-days tbody tr td.day.new:first').click();\n    equal(monthShown.text(), \"May 1945\", 'does not change viewDate if a day in next month is selected');\n    shouldTriggerChangeMonth = true;\n    picker.find('.datepicker-days thead th.next').click();\n    equal(monthShown.text(), 'June 1945', 'changing month must still be possible'); // and must trigger `changeMonth` event\n    shouldTriggerChangeYear = true;\n    picker.find('.datepicker-days thead th.datepicker-switch').click();\n    picker.find('.datepicker-months thead th.next').click();\n    picker.find('.datepicker-months tbody .month:first').click();\n    equal(monthShown.text(), 'January 1946', 'changing year must still be possible'); // and must trigger `changeYear` and `changeMonth` events\n});\ntest('Week Days: Week days default visibility (or enabled)', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd'\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    ok(picker.find('.dow').length > 0, 'Week days added to view');\n});\ntest('Week Days: Week days visibility when disabled', function(){\n    var input = $('<input />')\n                .appendTo('#qunit-fixture')\n                .val('2012-03-05')\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    showWeekDays: false\n                }),\n        dp = input.data('datepicker'),\n        picker = dp.picker,\n        target;\n\n    input.focus();\n    ok(picker.find('.dow').length === 0, 'Week days not added to view');\n});\n"
  },
  {
    "path": "tests/suites/timezone.js",
    "content": "module('Component', {\n    setup: function(){\n        this.component = $('<div class=\"input-append date\" id=\"datepicker\">'+\n                               '<input type=\"text\">'+\n                           '</div>')\n                        .appendTo('#qunit-fixture')\n                        .datepicker();\n        this.dp = this.component.data('datepicker');\n        this.picker = this.dp.picker;\n    },\n    teardown: function(){\n        this.picker.remove();\n    }\n});\n\ntest('Check title with timezone', function(){\n    var target;\n\n    this.dp.viewDate = UTCDate(2015, 7, 1);\n    this.dp.fill();\n\n    target = this.picker.find('.datepicker-days .datepicker-switch');\n    equal(target.text(), 'August 2015', 'Title is \"August 2015\"');\n});\n"
  },
  {
    "path": "tests/suites/touch_navigation/all.js",
    "content": "module('Touch Navigation (All)', {\n    setup: function(){\n        this.input = $('<input type=\"text\">')\n                        .appendTo('#qunit-fixture')\n                        .datepicker({format: \"dd-mm-yyyy\"})\n                        .focus(); // Activate for visibility checks\n        this.dp = this.input.data('datepicker');\n        this.picker = this.dp.picker;\n    },\n    teardown: function(){\n        this.picker.remove();\n    }\n});\n\ntest('Tapping outside datepicker hides datepicker', function(){\n    var $otherelement = $('<div />');\n    $('body').append($otherelement);\n\n    ok(this.picker.is(':visible'), 'Picker is visible');\n    this.input.trigger('click');\n    ok(this.picker.is(':visible'), 'Picker is still visible');\n\n    $otherelement.trigger('touchstart');\n    ok(this.picker.is(':not(:visible)'), 'Picker is hidden');\n\n    $otherelement.remove();\n});\n"
  },
  {
    "path": "tests/tests.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <meta charset=\"utf-8\">\n        <link rel=\"stylesheet\" href=\"assets/qunit.css\">\n        <script src=\"assets/qunit.js\"></script>\n        <!-- console.log for test failures: enable locally if you need extra debug info-->\n        <!--<script src=\"assets/qunit-logging.js\"></script>-->\n        <script src=\"../node_modules/jquery/dist/jquery.slim.js\"></script>\n        <script src=\"../js/bootstrap-datepicker.js\"></script>\n        <!-- This locale is included to test usage of titleFormat when available: see tests/suites/options.js -->\n        <script src=\"../js/locales/bootstrap-datepicker.zh-CN.js\"></script>\n\n        <style>\n            .datepicker {\n                /* Appended to body, abs-pos off the page */\n                position: absolute;\n                display: none;\n                top: -9999em;\n                left: -9999em;\n            }\n        </style>\n\n        <!-- Utilities -->\n        <script src=\"assets/utils.js\"></script>\n        <script src=\"assets/mock.js\"></script>\n\n        <!-- Test suites -->\n        <script src=\"suites/formats.js\"></script>\n        <script src=\"suites/mouse_navigation/all.js\"></script>\n        <script src=\"suites/mouse_navigation/2012.js\"></script>\n        <script src=\"suites/mouse_navigation/2011.js\"></script>\n        <script src=\"suites/keyboard_navigation/all.js\"></script>\n        <script src=\"suites/keyboard_navigation/2012.js\"></script>\n        <script src=\"suites/keyboard_navigation/2011.js\"></script>\n        <script src=\"suites/touch_navigation/all.js\"></script>\n        <script src=\"suites/component.js\"></script>\n        <script src=\"suites/events.js\"></script>\n        <script src=\"suites/options.js\"></script>\n        <script src=\"suites/inline.js\"></script>\n        <script src=\"suites/calendar-weeks.js\"></script>\n        <script src=\"suites/data-api.js\"></script>\n        <script src=\"suites/noconflict.js\"></script>\n        <script src=\"suites/methods.js\"></script>\n        <script src=\"suites/methods_jquery.js\"></script>\n    </head>\n    <body>\n        <h1 id=\"qunit-header\">bootstrap-datepicker</h1>\n        <h2 id=\"qunit-banner\"></h2>\n        <div id=\"qunit-testrunner-toolbar\"></div>\n        <h2 id=\"qunit-userAgent\"></h2>\n        <ol id=\"qunit-tests\"></ol>\n        <div id=\"qunit-fixture\"></div>\n    </body>\n</html>\n"
  },
  {
    "path": "tests/timezone.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <meta charset=\"utf-8\">\n        <link rel=\"stylesheet\" href=\"assets/qunit.css\">\n        <script src=\"assets/qunit.js\"></script>\n        <!-- console.log for test failures: enable locally if you need extra debug info-->\n        <!--<script src=\"assets/qunit-logging.js\"></script>-->\n        <script src=\"../node_modules/jquery/dist/jquery.slim.js\"></script>\n        <script src=\"../js/bootstrap-datepicker.js\"></script>\n\n        <style>\n            .datepicker {\n                /* Appended to body, abs-pos off the page */\n                position: absolute;\n                display: none;\n                top: -9999em;\n                left: -9999em;\n            }\n        </style>\n\n        <!-- Utilities -->\n        <script src=\"assets/utils.js\"></script>\n\n        <!-- Test suites -->\n        <script src=\"suites/timezone.js\"></script>\n    </head>\n    <body>\n        <h1 id=\"qunit-header\">bootstrap-datepicker</h1>\n        <h2 id=\"qunit-banner\"></h2>\n        <div id=\"qunit-testrunner-toolbar\"></div>\n        <h2 id=\"qunit-userAgent\"></h2>\n        <ol id=\"qunit-tests\"></ol>\n        <div id=\"qunit-fixture\"></div>\n    </body>\n</html>\n"
  }
]