From 9102ab8a9e3e5903bcc92f49c01c43854358e244 Mon Sep 17 00:00:00 2001 From: Joannes I Sandagerdi Date: Mon, 3 Mar 2014 21:28:11 +0100 Subject: [PATCH] Initial Commit --- .idea/.name | 1 + .idea/Translator.iml | 33 + .idea/dataSources.ids | 177 + .idea/dataSources.xml | 21 + .idea/encodings.xml | 5 + .idea/misc.xml | 5 + .idea/modules.xml | 9 + .idea/scopes/scope_settings.xml | 5 + .idea/vcs.xml | 7 + .idea/workspace.xml | 996 +++ Translator/__init__.py | 0 Translator/__init__.pyc | Bin 0 -> 152 bytes Translator/settings.py | 126 + Translator/settings.pyc | Bin 0 -> 3066 bytes Translator/urls.py | 21 + Translator/urls.pyc | Bin 0 -> 767 bytes Translator/wsgi.py | 14 + Translator/wsgi.pyc | Bin 0 -> 615 bytes TranslatorManager/__init__.py | 0 TranslatorManager/__init__.pyc | Bin 0 -> 159 bytes TranslatorManager/admin.py | 8 + TranslatorManager/admin.pyc | Bin 0 -> 408 bytes TranslatorManager/forms.py | 62 + TranslatorManager/forms.pyc | Bin 0 -> 2476 bytes TranslatorManager/models.py | 103 + TranslatorManager/models.pyc | Bin 0 -> 3366 bytes TranslatorManager/tests.py | 3 + TranslatorManager/views.py | 114 + TranslatorManager/views.pyc | Bin 0 -> 4138 bytes manage.py | 10 + mysite.log | 12 + .../.gitignore | 0 .../.gitmodules | 7 + .../bootstrap-datetimepicker-master/.lvimrc | 8 + .../.npmignore | 12 + .../CONTRIBUTING.md | 6 + .../bootstrap-datetimepicker-master/LICENSE | 201 + .../bootstrap-datetimepicker-master/Makefile | 22 + .../bootstrap-datetimepicker-master/README.md | 168 + .../bower.json | 35 + .../build/css/bootstrap-datetimepicker.css | 174 + .../component.json | 10 + .../moment-develop.zip | Bin 0 -> 550103 bytes .../moment-develop/.gitignore | 7 + .../moment-develop/.npmignore | 1 + .../moment-develop/.travis.yml | 13 + .../moment-develop/CONTRIBUTING.md | 46 + .../moment-develop/Gruntfile.js | 216 + .../moment-develop/LICENSE | 22 + .../moment-develop/bower.json | 20 + .../moment-develop/component.json | 80 + .../moment-develop/composer.json | 18 + .../moment-develop/ender.js | 1 + .../moment-develop/lang/ar-ma.js | 56 + .../moment-develop/lang/ar.js | 56 + .../moment-develop/lang/bg.js | 86 + .../moment-develop/lang/br.js | 107 + .../moment-develop/lang/bs.js | 139 + .../moment-develop/lang/ca.js | 66 + .../moment-develop/lang/cs.js | 155 + .../moment-develop/lang/cv.js | 59 + .../moment-develop/lang/cy.js | 77 + .../moment-develop/lang/da.js | 56 + .../moment-develop/lang/de.js | 71 + .../moment-develop/lang/el.js | 79 + .../moment-develop/lang/en-au.js | 62 + .../moment-develop/lang/en-ca.js | 59 + .../moment-develop/lang/en-gb.js | 63 + .../moment-develop/lang/eo.js | 65 + .../moment-develop/lang/es.js | 75 + .../moment-develop/lang/et.js | 76 + .../moment-develop/lang/eu.js | 60 + .../moment-develop/lang/fa.js | 97 + .../moment-develop/lang/fi.js | 103 + .../moment-develop/lang/fo.js | 56 + .../moment-develop/lang/fr-ca.js | 54 + .../moment-develop/lang/fr.js | 58 + .../moment-develop/lang/gl.js | 71 + .../moment-develop/lang/he.js | 77 + .../moment-develop/lang/hi.js | 105 + .../moment-develop/lang/hr.js | 140 + .../moment-develop/lang/hu.js | 98 + .../moment-develop/lang/hy-am.js | 113 + .../moment-develop/lang/id.js | 67 + .../moment-develop/lang/is.js | 124 + .../moment-develop/lang/it.js | 59 + .../moment-develop/lang/ja.js | 58 + .../moment-develop/lang/ka.js | 108 + .../moment-develop/lang/ko.js | 63 + .../moment-develop/lang/lb.js | 160 + .../moment-develop/lang/lt.js | 118 + .../moment-develop/lang/lv.js | 77 + .../moment-develop/lang/mk.js | 86 + .../moment-develop/lang/ml.js | 64 + .../moment-develop/lang/mr.js | 104 + .../moment-develop/lang/ms-my.js | 66 + .../moment-develop/lang/nb.js | 57 + .../moment-develop/lang/ne.js | 105 + .../moment-develop/lang/nl.js | 67 + .../moment-develop/lang/nn.js | 56 + .../moment-develop/lang/pl.js | 98 + .../moment-develop/lang/pt-br.js | 56 + .../moment-develop/lang/pt.js | 60 + .../moment-develop/lang/ro.js | 72 + .../moment-develop/lang/rs.js | 139 + .../moment-develop/lang/ru.js | 163 + .../moment-develop/lang/sk.js | 156 + .../moment-develop/lang/sl.js | 144 + .../moment-develop/lang/sq.js | 60 + .../moment-develop/lang/sv.js | 63 + .../moment-develop/lang/ta.js | 112 + .../moment-develop/lang/th.js | 58 + .../moment-develop/lang/tl-ph.js | 58 + .../moment-develop/lang/tr.js | 93 + .../moment-develop/lang/tzm-la.js | 55 + .../moment-develop/lang/tzm.js | 55 + .../moment-develop/lang/uk.js | 157 + .../moment-develop/lang/uz.js | 55 + .../moment-develop/lang/vn.js | 62 + .../moment-develop/lang/zh-cn.js | 108 + .../moment-develop/lang/zh-tw.js | 84 + .../moment-develop/min/langs.js | 5841 +++++++++++++ .../moment-develop/min/langs.min.js | 3 + .../moment-develop/min/moment-with-langs.js | 7768 +++++++++++++++++ .../min/moment-with-langs.min.js | 9 + .../moment-develop/min/moment.min.js | 6 + .../moment-develop/package.js | 11 + .../moment-develop/package.json | 72 + .../moment-develop/readme.md | 349 + .../moment-develop/tasks/check_sauce_creds.js | 14 + .../moment-develop/tasks/component.js | 10 + .../moment-develop/tasks/embed_languages.js | 49 + .../moment-develop/tasks/history.js | 123 + .../moment-develop/tasks/size.js | 60 + .../moment-develop/tasks/zones.js | 60 + .../moment-develop/test/browser-prefix.js | 4 + .../moment-develop/test/browser-suffix.js | 1 + .../moment-develop/test/browser.js | 3 + .../moment-develop/test/lang/ar-ma.js | 352 + .../moment-develop/test/lang/ar.js | 361 + .../moment-develop/test/lang/bg.js | 372 + .../moment-develop/test/lang/br.js | 279 + .../moment-develop/test/lang/bs.js | 393 + .../moment-develop/test/lang/ca.js | 326 + .../moment-develop/test/lang/cs.js | 449 + .../moment-develop/test/lang/cv.js | 365 + .../moment-develop/test/lang/cy.js | 362 + .../moment-develop/test/lang/da.js | 297 + .../moment-develop/test/lang/de.js | 358 + .../moment-develop/test/lang/el.js | 389 + .../moment-develop/test/lang/en-au.js | 360 + .../moment-develop/test/lang/en-ca.js | 386 + .../moment-develop/test/lang/en-gb.js | 360 + .../moment-develop/test/lang/en.js | 379 + .../moment-develop/test/lang/eo.js | 367 + .../moment-develop/test/lang/es.js | 363 + .../moment-develop/test/lang/et.js | 392 + .../moment-develop/test/lang/eu.js | 364 + .../moment-develop/test/lang/fa.js | 346 + .../moment-develop/test/lang/fi.js | 359 + .../moment-develop/test/lang/fo.js | 297 + .../moment-develop/test/lang/fr-ca.js | 379 + .../moment-develop/test/lang/fr.js | 362 + .../moment-develop/test/lang/gl.js | 343 + .../moment-develop/test/lang/he.js | 322 + .../moment-develop/test/lang/hi.js | 385 + .../moment-develop/test/lang/hr.js | 393 + .../moment-develop/test/lang/hu.js | 364 + .../moment-develop/test/lang/hy-am.js | 450 + .../moment-develop/test/lang/id.js | 319 + .../moment-develop/test/lang/is.js | 373 + .../moment-develop/test/lang/it.js | 360 + .../moment-develop/test/lang/ja.js | 324 + .../moment-develop/test/lang/ka.js | 385 + .../moment-develop/test/lang/ko.js | 411 + .../moment-develop/test/lang/lb.js | 184 + .../moment-develop/test/lang/lt.js | 370 + .../moment-develop/test/lang/lv.js | 363 + .../moment-develop/test/lang/mk.js | 372 + .../moment-develop/test/lang/ml.js | 385 + .../moment-develop/test/lang/mr.js | 385 + .../moment-develop/test/lang/ms-my.js | 385 + .../moment-develop/test/lang/nb.js | 364 + .../moment-develop/test/lang/ne.js | 383 + .../moment-develop/test/lang/nl.js | 374 + .../moment-develop/test/lang/nn.js | 363 + .../moment-develop/test/lang/pl.js | 386 + .../moment-develop/test/lang/pt-br.js | 365 + .../moment-develop/test/lang/pt.js | 355 + .../moment-develop/test/lang/ro.js | 372 + .../moment-develop/test/lang/rs.js | 393 + .../moment-develop/test/lang/ru.js | 460 + .../moment-develop/test/lang/sk.js | 449 + .../moment-develop/test/lang/sl.js | 392 + .../moment-develop/test/lang/sq.js | 395 + .../moment-develop/test/lang/sv.js | 357 + .../moment-develop/test/lang/ta.js | 363 + .../moment-develop/test/lang/th.js | 324 + .../moment-develop/test/lang/tl-ph.js | 362 + .../moment-develop/test/lang/tr.js | 375 + .../moment-develop/test/lang/tzm-la.js | 363 + .../moment-develop/test/lang/tzm.js | 354 + .../moment-develop/test/lang/uk.js | 394 + .../moment-develop/test/lang/uz.js | 361 + .../moment-develop/test/lang/vn.js | 387 + .../moment-develop/test/lang/zh-cn.js | 357 + .../moment-develop/test/lang/zh-tw.js | 359 + .../test/moment/add_subtract.js | 251 + .../moment-develop/test/moment/create.js | 815 ++ .../test/moment/days_in_month.js | 28 + .../moment-develop/test/moment/diff.js | 238 + .../moment-develop/test/moment/duration.js | 539 ++ .../moment-develop/test/moment/format.js | 409 + .../test/moment/getters_setters.js | 244 + .../moment-develop/test/moment/invalid.js | 29 + .../moment-develop/test/moment/is_after.js | 188 + .../moment-develop/test/moment/is_before.js | 187 + .../moment-develop/test/moment/is_moment.js | 36 + .../moment-develop/test/moment/is_same.js | 172 + .../moment-develop/test/moment/is_valid.js | 263 + .../moment-develop/test/moment/lang.js | 310 + .../moment-develop/test/moment/leapyear.js | 13 + .../moment-develop/test/moment/listers.js | 97 + .../moment-develop/test/moment/min_max.js | 56 + .../moment-develop/test/moment/mutable.js | 55 + .../test/moment/normalizeUnits.js | 34 + .../test/moment/parsing_flags.js | 184 + .../test/moment/preparse_postformat.js | 91 + .../moment-develop/test/moment/quarter.js | 17 + .../moment-develop/test/moment/sod_eod.js | 305 + .../test/moment/string_prototype.js | 18 + .../moment-develop/test/moment/utc.js | 111 + .../moment-develop/test/moment/week_year.js | 72 + .../moment-develop/test/moment/weekday.js | 159 + .../moment-develop/test/moment/weeks.js | 301 + .../test/moment/weeks_in_year.js | 96 + .../moment-develop/test/moment/zones.js | 527 ++ .../package.json | 25 + .../src/js/bootstrap-datetimepicker.js | 1096 +++ .../less/bootstrap-datetimepicker-build.less | 5 + .../src/less/bootstrap-datetimepicker.less | 246 + static/bootstrap/alerts.less | 67 + static/bootstrap/badges.less | 55 + static/bootstrap/bootstrap.css | 1 + static/bootstrap/bootstrap.less | 49 + static/bootstrap/bootstrap.min.css | 1 + static/bootstrap/breadcrumbs.less | 26 + static/bootstrap/button-groups.less | 226 + static/bootstrap/buttons.less | 159 + static/bootstrap/carousel.less | 232 + static/bootstrap/close.less | 33 + static/bootstrap/code.less | 63 + static/bootstrap/component-animations.less | 29 + static/bootstrap/dropdowns.less | 213 + static/bootstrap/forms.less | 438 + static/bootstrap/glyphicons.less | 233 + static/bootstrap/grid.less | 84 + static/bootstrap/input-groups.less | 162 + static/bootstrap/jumbotron.less | 44 + static/bootstrap/labels.less | 64 + static/bootstrap/list-group.less | 110 + static/bootstrap/media.less | 56 + static/bootstrap/mixins.less | 929 ++ static/bootstrap/modals.less | 139 + static/bootstrap/navbar.less | 616 ++ static/bootstrap/navs.less | 242 + static/bootstrap/normalize.less | 423 + static/bootstrap/pager.less | 55 + static/bootstrap/pagination.less | 88 + static/bootstrap/panels.less | 241 + static/bootstrap/popovers.less | 133 + static/bootstrap/print.less | 101 + static/bootstrap/progress-bars.less | 80 + static/bootstrap/responsive-utilities.less | 92 + static/bootstrap/scaffolding.less | 134 + static/bootstrap/tables.less | 233 + static/bootstrap/theme.less | 247 + static/bootstrap/thumbnails.less | 36 + static/bootstrap/tooltip.less | 95 + static/bootstrap/type.less | 293 + static/bootstrap/utilities.less | 56 + static/bootstrap/variables.less | 829 ++ static/bootstrap/wells.less | 29 + static/fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20335 bytes static/fonts/glyphicons-halflings-regular.svg | 229 + static/fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 41280 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23320 bytes .../bootstrap-datetimepicker.min.js | 28 + static/javascripts/collapse.js | 170 + static/javascripts/jquery.js | 4 + .../locales/bootstrap-datetimepicker.ar-ma.js | 56 + .../locales/bootstrap-datetimepicker.ar.js | 56 + .../locales/bootstrap-datetimepicker.bg.js | 86 + .../locales/bootstrap-datetimepicker.br.js | 107 + .../locales/bootstrap-datetimepicker.bs.js | 139 + .../locales/bootstrap-datetimepicker.ca.js | 66 + .../locales/bootstrap-datetimepicker.cs.js | 155 + .../locales/bootstrap-datetimepicker.cv.js | 59 + .../locales/bootstrap-datetimepicker.da.js | 56 + .../locales/bootstrap-datetimepicker.de.js | 71 + .../locales/bootstrap-datetimepicker.el.js | 79 + .../locales/bootstrap-datetimepicker.en-au.js | 62 + .../locales/bootstrap-datetimepicker.en-ca.js | 59 + .../locales/bootstrap-datetimepicker.en-gb.js | 63 + .../locales/bootstrap-datetimepicker.eo.js | 65 + .../locales/bootstrap-datetimepicker.es.js | 66 + .../locales/bootstrap-datetimepicker.et.js | 60 + .../locales/bootstrap-datetimepicker.eu.js | 60 + .../locales/bootstrap-datetimepicker.fa.js | 97 + .../locales/bootstrap-datetimepicker.fi.js | 103 + .../locales/bootstrap-datetimepicker.fr-ca.js | 54 + .../locales/bootstrap-datetimepicker.fr.js | 58 + .../locales/bootstrap-datetimepicker.gl.js | 71 + .../locales/bootstrap-datetimepicker.he.js | 77 + .../locales/bootstrap-datetimepicker.hi.js | 105 + .../locales/bootstrap-datetimepicker.hr.js | 140 + .../locales/bootstrap-datetimepicker.hu.js | 98 + .../locales/bootstrap-datetimepicker.id.js | 67 + .../locales/bootstrap-datetimepicker.is.js | 124 + .../locales/bootstrap-datetimepicker.it.js | 59 + .../locales/bootstrap-datetimepicker.ja.js | 58 + .../locales/bootstrap-datetimepicker.ka.js | 108 + .../locales/bootstrap-datetimepicker.ko.js | 56 + .../locales/bootstrap-datetimepicker.lt.js | 118 + .../locales/bootstrap-datetimepicker.lv.js | 77 + .../locales/bootstrap-datetimepicker.ml.js | 64 + .../locales/bootstrap-datetimepicker.mr.js | 104 + .../locales/bootstrap-datetimepicker.ms-my.js | 66 + .../locales/bootstrap-datetimepicker.nb.js | 57 + .../locales/bootstrap-datetimepicker.ne.js | 105 + .../locales/bootstrap-datetimepicker.nl.js | 67 + .../locales/bootstrap-datetimepicker.nn.js | 56 + .../locales/bootstrap-datetimepicker.pl.js | 98 + .../locales/bootstrap-datetimepicker.pt-BR.js | 56 + .../locales/bootstrap-datetimepicker.pt.js | 60 + .../locales/bootstrap-datetimepicker.ro.js | 56 + .../locales/bootstrap-datetimepicker.ru.js | 163 + .../locales/bootstrap-datetimepicker.sk.js | 156 + .../locales/bootstrap-datetimepicker.sl.js | 144 + .../locales/bootstrap-datetimepicker.sq.js | 57 + .../locales/bootstrap-datetimepicker.sv.js | 63 + .../locales/bootstrap-datetimepicker.th.js | 58 + .../locales/bootstrap-datetimepicker.tr.js | 93 + .../bootstrap-datetimepicker.tzm-la.js | 55 + .../locales/bootstrap-datetimepicker.tzm.js | 55 + .../locales/bootstrap-datetimepicker.uk.js | 157 + .../locales/bootstrap-datetimepicker.uz.js | 55 + .../locales/bootstrap-datetimepicker.vn.js | 62 + .../locales/bootstrap-datetimepicker.zh-CN.js | 108 + .../locales/bootstrap-datetimepicker.zh-TW.js | 84 + static/javascripts/moment.js | 2420 +++++ static/javascripts/transition.js | 48 + .../bootstrap-datetimepicker.min.css | 8 + static/stylesheets/main kopi 2.css | 26 + static/stylesheets/main.css | 1 + static/stylesheets/main.less | 32 + templates/base.html | 20 + templates/clients.html | 90 + templates/completed.html | 32 + templates/index.html | 34 + templates/jobs.html | 197 + 361 files changed, 71191 insertions(+) create mode 100644 .idea/.name create mode 100644 .idea/Translator.iml create mode 100644 .idea/dataSources.ids create mode 100644 .idea/dataSources.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/scopes/scope_settings.xml create mode 100644 .idea/vcs.xml create mode 100644 .idea/workspace.xml create mode 100644 Translator/__init__.py create mode 100644 Translator/__init__.pyc create mode 100644 Translator/settings.py create mode 100644 Translator/settings.pyc create mode 100644 Translator/urls.py create mode 100644 Translator/urls.pyc create mode 100644 Translator/wsgi.py create mode 100644 Translator/wsgi.pyc create mode 100644 TranslatorManager/__init__.py create mode 100644 TranslatorManager/__init__.pyc create mode 100644 TranslatorManager/admin.py create mode 100644 TranslatorManager/admin.pyc create mode 100644 TranslatorManager/forms.py create mode 100644 TranslatorManager/forms.pyc create mode 100644 TranslatorManager/models.py create mode 100644 TranslatorManager/models.pyc create mode 100644 TranslatorManager/tests.py create mode 100644 TranslatorManager/views.py create mode 100644 TranslatorManager/views.pyc create mode 100644 manage.py create mode 100644 mysite.log create mode 100755 static/bootstrap-datetimepicker-master/.gitignore create mode 100755 static/bootstrap-datetimepicker-master/.gitmodules create mode 100755 static/bootstrap-datetimepicker-master/.lvimrc create mode 100755 static/bootstrap-datetimepicker-master/.npmignore create mode 100755 static/bootstrap-datetimepicker-master/CONTRIBUTING.md create mode 100755 static/bootstrap-datetimepicker-master/LICENSE create mode 100755 static/bootstrap-datetimepicker-master/Makefile create mode 100755 static/bootstrap-datetimepicker-master/README.md create mode 100755 static/bootstrap-datetimepicker-master/bower.json create mode 100755 static/bootstrap-datetimepicker-master/build/css/bootstrap-datetimepicker.css create mode 100755 static/bootstrap-datetimepicker-master/component.json create mode 100644 static/bootstrap-datetimepicker-master/moment-develop.zip create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/.gitignore create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/.npmignore create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/.travis.yml create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/CONTRIBUTING.md create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/Gruntfile.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/LICENSE create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/bower.json create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/component.json create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/composer.json create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/ender.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/ar-ma.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/ar.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/bg.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/br.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/bs.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/ca.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/cs.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/cv.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/cy.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/da.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/de.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/el.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/en-au.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/en-ca.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/en-gb.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/eo.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/es.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/et.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/eu.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/fa.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/fi.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/fo.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/fr-ca.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/fr.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/gl.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/he.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/hi.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/hr.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/hu.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/hy-am.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/id.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/is.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/it.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/ja.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/ka.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/ko.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/lb.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/lt.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/lv.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/mk.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/ml.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/mr.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/ms-my.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/nb.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/ne.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/nl.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/nn.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/pl.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/pt-br.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/pt.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/ro.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/rs.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/ru.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/sk.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/sl.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/sq.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/sv.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/ta.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/th.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/tl-ph.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/tr.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/tzm-la.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/tzm.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/uk.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/uz.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/vn.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/zh-cn.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/lang/zh-tw.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/min/langs.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/min/langs.min.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/min/moment-with-langs.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/min/moment-with-langs.min.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/min/moment.min.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/package.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/package.json create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/readme.md create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/tasks/check_sauce_creds.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/tasks/component.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/tasks/embed_languages.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/tasks/history.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/tasks/size.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/tasks/zones.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/browser-prefix.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/browser-suffix.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/browser.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/ar-ma.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/ar.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/bg.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/br.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/bs.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/ca.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/cs.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/cv.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/cy.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/da.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/de.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/el.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/en-au.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/en-ca.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/en-gb.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/en.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/eo.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/es.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/et.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/eu.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/fa.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/fi.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/fo.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/fr-ca.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/fr.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/gl.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/he.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/hi.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/hr.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/hu.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/hy-am.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/id.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/is.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/it.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/ja.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/ka.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/ko.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/lb.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/lt.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/lv.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/mk.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/ml.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/mr.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/ms-my.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/nb.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/ne.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/nl.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/nn.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/pl.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/pt-br.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/pt.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/ro.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/rs.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/ru.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/sk.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/sl.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/sq.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/sv.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/ta.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/th.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/tl-ph.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/tr.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/tzm-la.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/tzm.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/uk.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/uz.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/vn.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/zh-cn.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/lang/zh-tw.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/add_subtract.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/create.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/days_in_month.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/diff.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/duration.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/format.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/getters_setters.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/invalid.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/is_after.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/is_before.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/is_moment.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/is_same.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/is_valid.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/lang.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/leapyear.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/listers.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/min_max.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/mutable.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/normalizeUnits.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/parsing_flags.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/preparse_postformat.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/quarter.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/sod_eod.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/string_prototype.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/utc.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/week_year.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/weekday.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/weeks.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/weeks_in_year.js create mode 100755 static/bootstrap-datetimepicker-master/moment-develop/test/moment/zones.js create mode 100755 static/bootstrap-datetimepicker-master/package.json create mode 100755 static/bootstrap-datetimepicker-master/src/js/bootstrap-datetimepicker.js create mode 100755 static/bootstrap-datetimepicker-master/src/less/bootstrap-datetimepicker-build.less create mode 100755 static/bootstrap-datetimepicker-master/src/less/bootstrap-datetimepicker.less create mode 100755 static/bootstrap/alerts.less create mode 100755 static/bootstrap/badges.less create mode 100644 static/bootstrap/bootstrap.css create mode 100755 static/bootstrap/bootstrap.less create mode 100755 static/bootstrap/bootstrap.min.css create mode 100755 static/bootstrap/breadcrumbs.less create mode 100755 static/bootstrap/button-groups.less create mode 100755 static/bootstrap/buttons.less create mode 100755 static/bootstrap/carousel.less create mode 100755 static/bootstrap/close.less create mode 100755 static/bootstrap/code.less create mode 100755 static/bootstrap/component-animations.less create mode 100755 static/bootstrap/dropdowns.less create mode 100755 static/bootstrap/forms.less create mode 100755 static/bootstrap/glyphicons.less create mode 100755 static/bootstrap/grid.less create mode 100755 static/bootstrap/input-groups.less create mode 100755 static/bootstrap/jumbotron.less create mode 100755 static/bootstrap/labels.less create mode 100755 static/bootstrap/list-group.less create mode 100755 static/bootstrap/media.less create mode 100755 static/bootstrap/mixins.less create mode 100755 static/bootstrap/modals.less create mode 100755 static/bootstrap/navbar.less create mode 100755 static/bootstrap/navs.less create mode 100755 static/bootstrap/normalize.less create mode 100755 static/bootstrap/pager.less create mode 100755 static/bootstrap/pagination.less create mode 100755 static/bootstrap/panels.less create mode 100755 static/bootstrap/popovers.less create mode 100755 static/bootstrap/print.less create mode 100755 static/bootstrap/progress-bars.less create mode 100755 static/bootstrap/responsive-utilities.less create mode 100755 static/bootstrap/scaffolding.less create mode 100755 static/bootstrap/tables.less create mode 100755 static/bootstrap/theme.less create mode 100755 static/bootstrap/thumbnails.less create mode 100755 static/bootstrap/tooltip.less create mode 100755 static/bootstrap/type.less create mode 100755 static/bootstrap/utilities.less create mode 100755 static/bootstrap/variables.less create mode 100755 static/bootstrap/wells.less create mode 100755 static/fonts/glyphicons-halflings-regular.eot create mode 100755 static/fonts/glyphicons-halflings-regular.svg create mode 100755 static/fonts/glyphicons-halflings-regular.ttf create mode 100755 static/fonts/glyphicons-halflings-regular.woff create mode 100755 static/javascripts/bootstrap-datetimepicker.min.js create mode 100755 static/javascripts/collapse.js create mode 100644 static/javascripts/jquery.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.ar-ma.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.ar.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.bg.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.br.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.bs.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.ca.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.cs.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.cv.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.da.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.de.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.el.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.en-au.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.en-ca.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.en-gb.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.eo.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.es.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.et.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.eu.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.fa.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.fi.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.fr-ca.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.fr.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.gl.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.he.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.hi.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.hr.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.hu.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.id.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.is.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.it.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.ja.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.ka.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.ko.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.lt.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.lv.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.ml.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.mr.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.ms-my.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.nb.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.ne.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.nl.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.nn.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.pl.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.pt-BR.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.pt.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.ro.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.ru.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.sk.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.sl.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.sq.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.sv.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.th.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.tr.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.tzm-la.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.tzm.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.uk.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.uz.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.vn.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.zh-CN.js create mode 100755 static/javascripts/locales/bootstrap-datetimepicker.zh-TW.js create mode 100755 static/javascripts/moment.js create mode 100755 static/javascripts/transition.js create mode 100755 static/stylesheets/bootstrap-datetimepicker.min.css create mode 100644 static/stylesheets/main kopi 2.css create mode 100644 static/stylesheets/main.css create mode 100644 static/stylesheets/main.less create mode 100644 templates/base.html create mode 100644 templates/clients.html create mode 100644 templates/completed.html create mode 100644 templates/index.html create mode 100644 templates/jobs.html diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..feb13c7 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +Translator \ No newline at end of file diff --git a/.idea/Translator.iml b/.idea/Translator.iml new file mode 100644 index 0000000..7ac9cfe --- /dev/null +++ b/.idea/Translator.iml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/.idea/dataSources.ids b/.idea/dataSources.ids new file mode 100644 index 0000000..7729132 --- /dev/null +++ b/.idea/dataSources.ids @@ -0,0 +1,177 @@ + + + + + #@ + ` + com.mysql.jdbc.Driver + jdbc:mysql://127.0.0.1/TranslatorDB + root + dfd8dfc5dfc5dfde + TranslatorDB.* + + + file://$USER_HOME$/Library/Preferences/PyCharm30/jdbc-drivers/mysql-connector-license.txt + + + file://$USER_HOME$/Library/Preferences/PyCharm30/jdbc-drivers/mysql-connector-java-5.1.26-bin.jar + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + + + + +
+ + + + + + + + + +
+ + + + + + +
+
+
\ No newline at end of file diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml new file mode 100644 index 0000000..ac5d76c --- /dev/null +++ b/.idea/dataSources.xml @@ -0,0 +1,21 @@ + + + + + com.mysql.jdbc.Driver + jdbc:mysql://127.0.0.1/TranslatorDB + root + dfd8dfc5dfc5dfde + TranslatorDB.* + + + file://$USER_HOME$/Library/Preferences/PyCharm30/jdbc-drivers/mysql-connector-license.txt + + + file://$USER_HOME$/Library/Preferences/PyCharm30/jdbc-drivers/mysql-connector-java-5.1.26-bin.jar + + + + + + diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..e206d70 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..2f3e8b3 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..a73f6cd --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/.idea/scopes/scope_settings.xml b/.idea/scopes/scope_settings.xml new file mode 100644 index 0000000..922003b --- /dev/null +++ b/.idea/scopes/scope_settings.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..c80f219 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..b567e58 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,996 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1393756754794 + 1393756754794 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DATABASE + 509a6c35-2bc1-483b-96d8-1d1e036af69a.table:TranslatorDB.TranslatorManager_jobtype + + 509a6c35-2bc1-483b-96d8-1d1e036af69a.table:TranslatorDB.TranslatorManager_client + 509a6c35-2bc1-483b-96d8-1d1e036af69a.table:TranslatorDB.TranslatorManager_jobtype + + + + + + + Columns + Key columns + + All + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Translator/__init__.py b/Translator/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Translator/__init__.pyc b/Translator/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ac9632db73323b59da0a8564b13bfe9a6a881064 GIT binary patch literal 152 zcmZSn%*z$XB^;d000oRd+5w1*S%5?e14FO|NW@PANHCxg#g0HR{m|mnqGJ85{KUMx z)M9;?{N&Qy)Vz{nefP`~kJ2RlkfOxA;+({i{32v#e0*kJW=VX!UO{CE2hbFo-29Z% NoK!oIUBy7m001(_A~gU2 literal 0 HcmV?d00001 diff --git a/Translator/settings.py b/Translator/settings.py new file mode 100644 index 0000000..c28bb0f --- /dev/null +++ b/Translator/settings.py @@ -0,0 +1,126 @@ +""" +Django settings for Translator project. + +For more information on this file, see +https://docs.djangoproject.com/en/1.6/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/1.6/ref/settings/ +""" + +# Build paths inside the project like this: os.path.join(BASE_DIR, ...) +import os,sys + +BASE_DIR = os.path.dirname(os.path.dirname(__file__)) +SETTINGS_DIR = os.path.dirname(__file__) +PROJECT_PATH = os.path.join(SETTINGS_DIR, os.pardir) +PROJECT_PATH = os.path.abspath(PROJECT_PATH) + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'l89(v-#vgokfn4c4qe+^+h0jwe%rt0lzxz_oa_=ob=$*02*e2z' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +TEMPLATE_DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = ( + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'TranslatorManager', + 'django.contrib.admin', + 'Translator' +) + +MIDDLEWARE_CLASSES = ( + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +) + +ROOT_URLCONF = 'Translator.urls' + +WSGI_APPLICATION = 'Translator.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/1.6/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.mysql', + 'NAME': 'TranslatorDB', + 'USER':'root', + 'PASSWORD':'root' + #os.path.join(BASE_DIR, 'db.sqlite3'), + } +} + +# Internationalization +# https://docs.djangoproject.com/en/1.6/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/1.6/howto/static-files/ + +STATIC_PATH = os.path.join(PROJECT_PATH, 'static') + +STATIC_URL = '/static/' # You may find this is already defined as such. + +STATICFILES_DIRS = ( + STATIC_PATH, +) + +TEMPLATE_PATH = os.path.join(PROJECT_PATH, 'templates') +TEMPLATE_DIRS = ( + # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". + # Always use forward slashes, even on Windows. + # Don't forget to use absolute paths, not relative paths. + TEMPLATE_PATH, +) + +LOGGING = { + 'version': 1, + 'disable_existing_loggers': False, + 'formatters': { + 'verbose': { + 'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s", + 'datefmt' : "%d/%b/%Y %H:%M:%S" + }, + 'simple': { + 'format': '%(levelname)s %(message)s' + }, + }, + 'handlers': { + 'console':{ + 'level':'DEBUG', + 'class':'logging.StreamHandler', + 'formatter': 'simple' + }, + }, +} \ No newline at end of file diff --git a/Translator/settings.pyc b/Translator/settings.pyc new file mode 100644 index 0000000000000000000000000000000000000000..874dd16086c2a32669eab8a722417c2125f6b011 GIT binary patch literal 3066 zcmeHJTXWk)6h5|7w{h=DL(`^BOKo0#z#B7I_U_s5+|TYFIrH1)+|!>I4Hw>j=5hWSf9#hO00FRY zOaV!Qp8^YsgieE%2AYC?2KsYT#5s7E5??F(XV5x7LM{MJ=y`aDc5);9BG8=F%>l`P zbqVNYu&&7QDs(ZDYe1fYbsfkySPMWFz*+>d2-XeoQsB)2xdCJecF0FSZsN2I z#%Tq1tR*0Kz(V$2ux?7j%W}LW$J?VoFhC4pRYtc0|B@clVFo;ipe2P;MajfH70bWOzh9EIONKGC+tRfMmhJwF3WeKIB&*I$b5$*If$b^b-9wu?cpkj zVw(3tlnET}MPVMlyyu~o=hMe%gywpj57@4%lE`HWk;X?h+$d0KsBS7dDvt)9%hZuq zH8Ib7G~XHee%|*O&qtj}R8C0H5%uEyvEvUZ`zO9)+L?0X{f?go+rr%aXI~VLpFBA3 zMz1>Iw!8hBKKkiVZ=-)g3o+mD-@bWkM~?kGYCnItzOl7Vx8AZFsFoz9xKYSsudO&F z@ItnD24l#3Y~@2-DAJJg(*b4d=7)TSFxK`=UVuEOi^J_R^f>N`D|UkM>&Tw$V%-T* zDdxEulx?43;##T})D!*?D%nUel| zVtZU+EaY@R8m_T`o-5DbltOLz3j+(79KaUGSJI>JO>>ScGd@^J_gVdo} zk{*~mEKF#r39WL`xH%05c=IX4_JS*6=$OXhJaQSe$DFoLZTbdpD3-=k;6Y^(IuOc7)^C;fOO3D*t+xWh;ZJtITN^UAUW%70p9NtULz88xtBu|-bi$0GE;>f+w z4BakQTe4pmx@lG$6+;4|U-Tm{l$UGZ#KeoG&_S#Djb1YC1I^r*ww*SUe#A~2da0$G z_P6>=>EDcpv?X3|{0a`HUO%X5Ci;^%=Q2WCt=2r!%l3ZLFbyeGZ5Sq^h-n80246s- zdbM1x=|@^iw@Wo_Q@SAoX*HXseb}m%nvFev4dsrEN>ympswK^=HXHJ`l{HfnNg7=E zt7(nOp;kdd&9W}}X0@){Ruem>C0;$No7*!<#XkN)RB5i>1<{`vvh7glW-HMi|I`2Dk2H?2iV?S A9RL6T literal 0 HcmV?d00001 diff --git a/Translator/urls.py b/Translator/urls.py new file mode 100644 index 0000000..8e64258 --- /dev/null +++ b/Translator/urls.py @@ -0,0 +1,21 @@ +from django.conf.urls import patterns, include, url +from TranslatorManager import views + +from django.contrib import admin +admin.autodiscover() + +urlpatterns = patterns('', + # Examples: + # url(r'^$', 'Translator.views.home', name='home'), + # url(r'^blog/', include('blog.urls')), + + url(r'^admin/', include(admin.site.urls)), + url(r'^$', views.index, name='index'), + url(r'^clients/', views.clients, name='clients'), + url(r'^jobs/', views.jobs, name='jobs'), + url(r'^completed/', views.completed, name='completed'), + #url(r'^jobs/(?P[-\w]+)/all_clients/$', 'all_clients'), + url(r'^add_client/$', views.add_client, name='add_client'), # NEW MAPPING! + + +) diff --git a/Translator/urls.pyc b/Translator/urls.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8900ac2c990aa26e4a2e38e9e8299851ca9bc394 GIT binary patch literal 767 zcmYk4&63kF49Df9X||u6UpLGO^u>l?Bdy3?6JB zga-i0-A+hTMgO0qSW=t**(|^PetO%$c- z=x1OvsI!w!p`U}zq0T{=9J&iQ0(k=T3``0-1Csy;7SJu>DBwtv_#8|I-3oLLnrafk za1r4;LP|ctRfL-e*Jrqia2w(F3@;=4V)Nr0HAZ zFjVoVM-k>6>HMBB*RdB?G27ciZ_wxpxw<*au;HlE`s?Wx)io}OOyFaAMH&k-x>N4X z?;7vE?`WPNiGk#)B=?G(_-Rls^a}m(K{<721{rs=rO;H4L%WyUAM*c1jp%h78h>ww z*mY>pL?<4?E0Mfg$&E|yPVz{|hBD48FG<2=!fTS%=U|3VbzV7VLiNr!qm4_uY4QEI pucmJQclp@e;aB`YUsS{aZk1##YE4&W6R4hRsSl#r^V0;fXC#o5{uXRYx(+!kzxzufIO`*wnw_LK{ z7j|!a2hup6+3W=A9h)1JD`VlMM1W*X)Z$yEN?%}F*4kD6-%f>Z6gc%deWTX?hP*1F zwf?RFN9qPEqZ0Fn&x~Gh$np87+2k_M&gS#!Y?9^QF2`3FXEZ=LWL$-#i0ky6 zp#sW-S$?qp=s2hW@|^d|bBdXJ+?Bv>P3IjYTw=QtR(fNJPWifDKP@eAT&u?fhct{x+dDd8hj;s*^C55yFo>T< I!}v6M06G}0-T(jq literal 0 HcmV?d00001 diff --git a/TranslatorManager/__init__.py b/TranslatorManager/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/TranslatorManager/__init__.pyc b/TranslatorManager/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3a778411eb8e27fd5e4b6acbc100b8f088bc0d5b GIT binary patch literal 159 zcmZSn%*z$XB^;d000oRd+5w1*S%5?e14FO|NW@PANHCxg#U4O0{m|mnqGJ85{KUMx z)M9;?{N&Qy)Vz{nefP`~kJ2RlkfOxA;+({i{30Z#Z(?3zdTNn=e0*kJW=VX!UO{CE V2hcE^-29Z%oK!oImBm2J002>cB=-OS literal 0 HcmV?d00001 diff --git a/TranslatorManager/admin.py b/TranslatorManager/admin.py new file mode 100644 index 0000000..fc02c64 --- /dev/null +++ b/TranslatorManager/admin.py @@ -0,0 +1,8 @@ +from django.contrib import admin +from TranslatorManager.models import Client,JobType,ClientJob +# Register your models here. + + +admin.site.register(Client) +admin.site.register(JobType) +admin.site.register(ClientJob) \ No newline at end of file diff --git a/TranslatorManager/admin.pyc b/TranslatorManager/admin.pyc new file mode 100644 index 0000000000000000000000000000000000000000..00b21acc9825146c20a589ced222e6912369ef56 GIT binary patch literal 408 zcmZ8c%}T^D5S}#ct_n)Qiw7T|r}hOz1QkWlLwCLOWZDiTB|l4&9`@`b`A9y351^B> zSaC?ceBUtS`-Xp=o_v0sZ#p$6W&tX%fWFo(*3Pvns1fti{6gLLRb@hvh8-i!*KlD zrp`-o6i3ep`cas{mYp@h$+o5rgbRYL6UHkMta}zl4CqR2dsM!To^@Qfp6y~7F9U}7 zqr*Y^fUY183;27I)vHJ6tI-N$&{uc1n>2;=)q@O=Q(G;Df9S!xn)fSr``P7+l1vJ( OV-g>2b9R~LEN4IGGg{~X literal 0 HcmV?d00001 diff --git a/TranslatorManager/forms.py b/TranslatorManager/forms.py new file mode 100644 index 0000000..ecb470f --- /dev/null +++ b/TranslatorManager/forms.py @@ -0,0 +1,62 @@ +__author__ = 'joannes' + +from django import forms +from TranslatorManager.models import Client,ClientJob + +class ClientForm(forms.ModelForm): + clientName = forms.CharField(max_length=200, help_text="Please enter the client name.") + clientContact = forms.CharField(max_length=200, help_text="Please enter the client contact.") + + # An inline class to provide additional information on the form. + class Meta: + # Provide an association between the ModelForm and a model + model = Client + fields = ["clientName", "clientContact"] + + +class AddJobForm(forms.ModelForm): + clientName = forms.CharField(max_length=200, help_text="Please enter the client name.") + clientContact = forms.CharField(max_length=200, help_text="Please enter the client contact.") + + ENGLISH = 'EN' + FRENCH = 'FR' + SPANISH = 'ES' + LANGUAGES = ( + (ENGLISH, 'English'), + (FRENCH, 'French'), + (SPANISH, 'Spanish'), + ) + TRANSLATION = 'Translation' + REVIEW = 'Review' + DTP = 'DTP' + + SERVICES = ( + (TRANSLATION, 'Translation'), + (REVIEW, 'Review'), + (DTP, 'DTP'), + ) + #client = models.ForeignKey(Client) + clientContact = forms.CharField(max_length=100) + languageFrom = forms.CharField(max_length=2) + languageTarget = forms.CharField(max_length=2) + description = forms.CharField(max_length=300) + service = forms.CharField(max_length=20) + deadLine = forms.DateTimeField() + #currency = models. + hours_Spent = forms.FloatField() + words_new = forms.FloatField() + words_fuzzy50 = forms.FloatField() + words_fuzzy75 = forms.FloatField() + words_fuzzy85 = forms.FloatField() + words_fuzzy95 = forms.FloatField() + words_match = forms.FloatField() + words_rep = forms.FloatField() + words_ice = forms.FloatField() + #multiply total with this percentage value e.g. 100 * 1.50 (50% rush charge) + pay_rush = forms.FloatField() + + # An inline class to provide additional information on the form. + class Meta: + # Provide an association between the ModelForm and a model + model = ClientJob + fields = ["clientName", "clientContact"] \ No newline at end of file diff --git a/TranslatorManager/forms.pyc b/TranslatorManager/forms.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ffa6ce2e222da58e55cb446ff805c3a3ac107f00 GIT binary patch literal 2476 zcmcImOK;mo5FV0}ELrk1PU@shqoWRm)r-*<4T31PWV^LhW2K}hFT`5Al4$TDa92s3 zYjSS?R{u|bKsz(EWY#H)qKHLsIrDM3JFjn6-XCkLo4@W1MsWS}@cA5XbAf{b@NslN zxez%JyWqRvknTa`L0kgA1aTSsGNL8WE?ib%jIYb^0pLBrFa8RsO5w%I@WXI z95j03upJ(GmAiyqyayLuAj6AziSaV|q1b_iHx&?rRu$LdO=I~sh;%Zs)9`n~$gHW3 zW`Wgjt$B>vd8DP$O|)5OO*_@i5j)UKWUTj0^Iv9+(!|P<-LoZ}bf!_pC;uoI?AId{ zmVWsQ`zM&B5}CEA~hC}POBu0J@9Lw>fo<} zYJgt{wFZ6zG^%x;iAaNm2EDreWUat~b*z2|DSg9=4Mx^KLN*G>CePU{AX|)VF|v&^ z`1e@eVflVReo&AIL^Z z!!Xv|o_Kksr8*50&HbVmrPAi_$h2uX&rC3wEsnT1X{Jn&VCpFYxi+4^dv~?}^=;&v z{oBa5A0glEv%UE`v9wru6rNnq^sJzf{S@b!yb7|pnci_f-N3E3@HWqI;C_ltA1}A& z)SQi6_E`3|oyFB~8_uoEZFv3s9|au~K_KULnr3*W5sTC%CNs^C4a)X{WodSO0PXP! sXZXYuRQ()~GdlLDr3>o%f=sc%3;+NC literal 0 HcmV?d00001 diff --git a/TranslatorManager/models.py b/TranslatorManager/models.py new file mode 100644 index 0000000..987a5dd --- /dev/null +++ b/TranslatorManager/models.py @@ -0,0 +1,103 @@ +from django.db import models + +# Create your models here. +class Client(models.Model): + clientName = models.CharField(max_length=200) + clientContact = models.CharField(max_length=200) + + def __unicode__(self): # Python 3: def __str__(self): + return self.clientName + +class JobType(models.Model): + client = models.ForeignKey(Client) + ENGLISH = 'EN' + FRENCH = 'FR' + SPANISH = 'ES' + LANGUAGES = ( + (ENGLISH, 'English'), + (FRENCH, 'French'), + (SPANISH, 'Spanish'), + ) + + TRANSLATION = 'Translation' + REVIEW = 'Review' + DTP = 'DTP' + + SERVICES = ( + (TRANSLATION, 'Translation'), + (REVIEW, 'Review'), + (DTP, 'DTP'), + ) + languageFrom = models.CharField(max_length=2, choices=LANGUAGES, default=ENGLISH) + languageTarget = models.CharField(max_length=2, choices=LANGUAGES, default=SPANISH) + + service = models.CharField(max_length=20, choices=SERVICES, default=TRANSLATION) + #currency = models. + pay_hourly = models.FloatField(default=0) + pay_minimum = models.FloatField(default=0) + + #multiply total with this percentage value e.g. 100 * 1.50 (50% rush charge) + pay_rush = models.FloatField(default=0) + + words_new = models.FloatField(default=0) + words_fuzzy50 = models.FloatField(default=0) + words_fuzzy75 = models.FloatField(default=0) + words_fuzzy85 = models.FloatField(default=0) + words_fuzzy95 = models.FloatField(default=0) + words_match = models.FloatField(default=0) + words_rep = models.FloatField(default=0) + words_ice = models.FloatField(default=0) + + + + def __unicode__(self): # Python 3: def __str__(self): + if self.service == "DTP": + return self.service + else: + return self.service + "-" + self.languageFrom+"-" + self.languageTarget + + +class ClientJob(models.Model): + ENGLISH = 'EN' + FRENCH = 'FR' + SPANISH = 'ES' + LANGUAGES = ( + (ENGLISH, 'English'), + (FRENCH, 'French'), + (SPANISH, 'Spanish'), + ) + TRANSLATION = 'Translation' + REVIEW = 'Review' + DTP = 'DTP' + + SERVICES = ( + (TRANSLATION, 'Translation'), + (REVIEW, 'Review'), + (DTP, 'DTP'), + ) + client = models.ForeignKey(Client) + clientContact = models.CharField(max_length=100) + languageFrom = models.CharField(max_length=2, choices=LANGUAGES, default=ENGLISH) + languageTarget = models.CharField(max_length=2, choices=LANGUAGES, default=SPANISH) + description = models.CharField(max_length=300) + service = models.CharField(max_length=20, choices=SERVICES, default=TRANSLATION) + deadLine = models.DateTimeField() + #currency = models. + hours_Spent = models.FloatField(default=0) + words_new = models.FloatField(default=0) + words_fuzzy50 = models.FloatField(default=0) + words_fuzzy75 = models.FloatField(default=0) + words_fuzzy85 = models.FloatField(default=0) + words_fuzzy95 = models.FloatField(default=0) + words_match = models.FloatField(default=0) + words_rep = models.FloatField(default=0) + words_ice = models.FloatField(default=0) + #multiply total with this percentage value e.g. 100 * 1.50 (50% rush charge) + pay_rush = models.FloatField(default=0) + + + def __unicode__(self): + if self.service == "DTP": + return self.service + else: + return self.service + "-" + self.languageFrom+"-" + self.languageTarget \ No newline at end of file diff --git a/TranslatorManager/models.pyc b/TranslatorManager/models.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1bd11c63617f87bc34600df994ba636e8abef2c5 GIT binary patch literal 3366 zcmcha-*VeT6vkI_Vkd1~EdYU(4sZzpZxq>hx8@_t*Gj z9!!8gM@32v9MyA_6S&Ga>ey8WjtWZZSEb%4^<%H3g1M=R`EkXZ3d&Ozm2t(q3KmqS zzKAixzwxR&@bWUuAPG#AiMtbpCeHsgvv1HM+k!EQ6Edzk#^5r`H_GW@7BdP4aye?R ztaPW&#pUNXivP10nfNe23jaj0&*9HLJMgm#%r8nEE6kD=Z97Bu?aQ><{=ismj_pl! zP{+3tleOSAo@FM@8pnwr$0ln$O8TP#mXkGh!~F5+MWdVgaTfV`l1{l#{MbJDn< zk(}pNYU2Kp$ep1dQ)YIb9fT0M$o$aeWoTaI%+yESr<#urX{2NSC<*%}6F)Eq{wT`B zRkpxqa*Wwrj`4js_822&esWd1c6O>yRadRkbJRMrNnCt&kYyGYZG8z($eF))Ej^f` zIM^>Si+l-wBvndWU$BgG(M}+&Se`or+t(2~W#T zagjfyGC8up-QIn+z1!^A z!0GLFXMel9_kG(2uK9eg`GegtVyV;A&-Zqk9nFHiLbE}$4kM^)MTwsam!vrKPrRdK zltz|%EDpjr9E=7+IhNBAl7=&Rm83!D#mE!F%$5#DuV0^ReLkz)-Fja2RQ>Mz*PPpPKA2Ssg22;UZFcr`RQ!R!qQ=wR<0>fjb zE)u%OK5KxD&L}|Xi~^L-C_w3qa-*PZ7L=O><(3LA3V?4D zz%?X^X1ZwdNb@{sf=E|sh-ZC~M%oc)7O9B3<*Ft>^<@_CASd2GPW2kb5}FDMCS>?O zV9A3p4a*O>_z5hpvv`AMlSWW_i{5P-**)ojlG0accsJ;4G=e!|W3nQlN?@{n8V++@ zaF%@x(IY=M-Ed$m{@67zey|_LMt_KcbR-NjuQSBYM*T6LTc`Pi=2M!_XztM5rMXA* z5zTx4IoH4#5An%pghyv|a;NE31&=@|u}iaj!cV|jsa@yJ3#o!*T%^gp;Dx=fxPmAA kSHSKsiKsa&cVNoA!>d&8n1}Ya^H&V2WXVctqq6bEKV+eNFaQ7m literal 0 HcmV?d00001 diff --git a/TranslatorManager/tests.py b/TranslatorManager/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/TranslatorManager/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/TranslatorManager/views.py b/TranslatorManager/views.py new file mode 100644 index 0000000..2076e86 --- /dev/null +++ b/TranslatorManager/views.py @@ -0,0 +1,114 @@ +from django.contrib.sessions import serializers +from django.http import HttpResponse +from django.template import RequestContext +from django.shortcuts import render_to_response +from TranslatorManager.models import Client,JobType,ClientJob +import logging,sys +from TranslatorManager.forms import ClientForm + + +logger = logging.getLogger(__name__) + +# Create your views here. +def index(request): + # Request the context of the request. + # The context contains information such as the client's machine details, for example. + context = RequestContext(request) + + # Construct a dictionary to pass to the template engine as its context. + # Note the key boldmessage is the same as {{ boldmessage }} in the template! + context_dict = {'clients': Client.objects.all()} + + # Return a rendered response to send to the client. + # We make use of the shortcut function to make our lives easier. + # Note that the first parameter is the template we wish to use. + return render_to_response('index.html', context_dict, context) + +def jobs(request): + context = RequestContext(request) + context_dict = Client.objects.all() + jobs = ClientJob.objects.all() + paymentInfo = JobType.objects.all() + + #totalPrice = 0.0 + #if jobs[0].service == "Translation": + # totalPrice += paymentInfo[0].words_new * jobs[0].words_new + paymentInfo[0].words_fuzzy85 * jobs[0].words_fuzzy85 + paymentInfo[0].words_match * jobs[0].words_match + paymentInfo[0].words_rep * jobs[0].words_rep + paymentInfo[0].words_ice * jobs[0].words_ice + totalPrice = calc_DTP(1, 'Localeyes') + return render_to_response('jobs.html', {'clients': context_dict, 'price':totalPrice}, context) + +def add_job(request): + context = RequestContext(request) + context_dict = Client.objects.all() + + if request.method == 'POST': + form = ClientForm(request.POST) + + if form.is_valid(): + form.save(commit=True) + + return clients(request) + else: + print form.errors + else: + form = ClientForm() + + return render_to_response('clients.html', {'form': form, 'clients': context_dict}, context) + +def completed(request): + context = RequestContext(request) + context_dict = {'boldmessage': "I am bold font from the context"} + return render_to_response('completed.html', context_dict, context) + +def clients(request): + context = RequestContext(request) + context_dict = {'clients': Client.objects.all()} + + return render_to_response('clients.html',context_dict , context) + +def add_client(request): + context = RequestContext(request) + context_dict = Client.objects.all() + + if request.method == 'POST': + form = ClientForm(request.POST) + + if form.is_valid(): + form.save(commit=True) + + return clients(request) + else: + print form.errors + else: + form = ClientForm() + + return render_to_response('clients.html', {'form': form, 'clients': context_dict}, context) + +def all_clients(request, client): + print >> sys.stderr, "PENIS" + logger.debug("MURT") + logger.info("INFO") + current_client = Client.objects.get(clientName=client) + logger.debug(current_client) + allClients = Client.objects.all().filter(clientName=current_client) + logger.debug(allClients) + json_models = serializers.serialize("json", allClients) + return HttpResponse(json_models, mimetype="application/javascript") + + +def calc_DTP(jobID, clientInput): + TRANSLATION = 'Translation' + REVIEW = 'Review' + DTP = 'DTP' + + client = Client.objects.get(clientName=clientInput) #Get only the relevant client + clientJob = ClientJob.objects.get(client=client, id=jobID) #Get all the jobs for this client + clientJobTypes = JobType.objects.get(client=client, service=DTP) #Get the clientJobTypes for this client + + totalPrice = 0.0 + #for job in clientJobTypes: + totalPrice += clientJob.hours_Spent*clientJobTypes.pay_hourly + + if clientJob.pay_rush > 0: + totalPrice = totalPrice*(1+(clientJob/100)) + + return totalPrice \ No newline at end of file diff --git a/TranslatorManager/views.pyc b/TranslatorManager/views.pyc new file mode 100644 index 0000000000000000000000000000000000000000..355f7f7df80c2fa2e1503acf1dd785d007a8809a GIT binary patch literal 4138 zcmdT{U2hvj6urCtNSruLC`nr=A9+B+NGOp&DnddCloo2#y455F$uHK%J4x2;dd$^jlePaB7 zg3JAiCdDt3T%?GkA4x<#mOPfCCjDB_Ym(QcXh^>i^t$9tDHf!^5cG!Ri&C_t-;!cU z`b$zQOMf}sYf9dhep}apydwP-l@}zxBE_ooS0%D-8Lf$ZNzSo{tCB9t4`vad&1j#S++_uV+Jp0~O zE_AlhdDr`iv2Ie1oejNL&}-~BQ|tUrIrjEDANsGNzp~@hRs&xSs>jdN(CwROcJj=Q zyd>rA$P|q>g>kl-b3R>PK8!EizJK0M>2|KRFiWB z?bcZ=zD~GK@r&fVhVycco-RJreK^O3GHmy|ts`ILod#4x7cg8(N0$2|JM_-;*(A>m z|8*k0TLl}0IfEfQEjA4DAkBup16{OncOY#)f{oqws7%IV>$Y!~!)XDVxb4p~e|NgS zy;mh;mnXigE{XS(adK#@?c>aT>$WB*o;%fzuRw4#t<>7}YYnv(RSwv}VnXoH6DhJe-oGEb|h*?tNb=rBL##zn*;JAlz#yPPCbI- zM)Gwm)rf{-Pg6a;CZ{zSEzrlSfy#>n2i889D8e~IMC@|ZvV4Ab+~V^XO=Q6{0lS(g zcJb5LsR2AUibu-@&I-6xJV=sbRdE4W64wW^Ql{ zj!AVQmmFIa_Nu83u0d>VRh5+sSkrpuNvzFv^mTAOYalg}lQbQ`UEjv^Zk>w|&lq^d z?Px7tikIV7{4^=OgMpWEMIeOOQ7(c4^e(uFhw8aE(RMeJVspRD)6E00#^ym)7MuRa zZq7JFy_vTQ1QJNVk$VBnB)8tCfwz>hw3*Y>UkvtKY{gKW@8m-$frwzOmEiZ>4G+4* zd;f*B)iIv(#J}+MCF*#QX3)KTeEIa(f_MC1qFy7@T;mBecZJ*-xSDbH?{RK!aL7Eu z%_~%2WkWvHXU%Jr6q6Sk%jA8=a$v99(Ed4`89k)vxx4-Z1>ro3q>eC-yI*)MFPIBa z3Q_?}*Mfqi*(5K6SD6bXVq(?dh8i9BkmrY3TU&zh`ip18F@cR0r_c-x|!Ey^i=a6UY^KrdYXfPKLmTk>^X zs-HOoZwctcE5gS0bqpAzcwR(B%y{pqB_Efa@CAjzSk{_~C5x`NFwktHfx9AurF;zSZu@{lBFlxrlVwhSZ*= + + + + + + + + +``` + +## [Nuget (LESS)](https://www.nuget.org/packages/Bootstrap.v3.Datetimepicker/): ![NuGet version](https://badge.fury.io/nu/Bootstrap.v3.Datetimepicker.png) +``` +PM> Install-Package Bootstrap.v3.Datetimepicker +``` + +## [Nuget (CSS)](https://www.nuget.org/packages/Bootstrap.v3.Datetimepicker.CSS/): ![NuGet version](https://badge.fury.io/nu/Bootstrap.v3.Datetimepicker.CSS.png) +``` +PM> Install-Package Bootstrap.v3.Datetimepicker.CSS +``` + +```html + + + + + + + + +``` + +## [Rails](http://rubygems.org/gems/bootstrap3-datetimepicker-rails) ![Gem Version](https://badge.fury.io/rb/bootstrap3-datetimepicker-rails.png) + +Add the following to your `Gemfile`: +``` +gem 'momentjs-rails', '~> 2.5.0' +gem 'bootstrap3-datetimepicker-rails', '~> 2.1.30' +``` +Read the rest of the install instructions @ +[TrevorS/bootstrap3-datetimepicker-rails](https://github.com/TrevorS/bootstrap3-datetimepicker-rails) + +Done! [Now take a look at the manual](http://eonasdan.github.io/bootstrap-datetimepicker/) for examples and available options. + + +## Manual installation + +### [Moment.js](https://github.com/moment/moment) +Datetimepicker requires moment.js. This allows for better support for various date formats and locales. See [documentation](http://eonasdan.github.io/bootstrap-datetimepicker/) for examples. Check [Momentjs' homepage](http://momentjs.com/) for documentation on date formats. If you can't use moment.js there's still older version of datetimewidget [available here](https://github.com/Eonasdan/bootstrap-datetimepicker/tree/version1). + +```html + +``` + +### Bootstrap 3 collapse and transition plugins +Make sure to include *.JS files for plugins [collapse](http://getbootstrap.com/javascript/#collapse) and [transitions](http://getbootstrap.com/javascript/#transitions). They are included with [bootstrap in js/ directory](https://github.com/twbs/bootstrap/tree/master/js) + +```html + + +``` + +Alternatively you could include the whole bundle of bootstrap plugins from [bootstrap.js](https://github.com/twbs/bootstrap/tree/master/dist/js) + +```html + +``` + + +### CSS styles + +#### Using LESS +```css +@import "/path/to/bootstrap/less/variables"; +@import "/path/to/bootstrap-datetimepicker/src/less/bootstrap-datetimepicker"; + +// [...] your custom styles and variables +``` + +#### Using CSS (default color palette) +```html + +``` + +### Main JS file + +Finally include the main javascript file. +```html + +``` + +# Change Log + +## 2.1.32 (Hotfix) + +* Fix for #151: When a bad date value or the picker is cleared, the plugin will not longer attempt to reset it back to the previous date +* Fix for #140: `setDate` can be given `null` to force clear the picker + +## 2.1.30 +#### Important! `build.less` file name has been been changed to `bootstrap-datetimepicker-build.less` to prevent collisions + +* Fix for #135: `setStartDate` and `setEndDate` should now properly set. +* Fix for #133: Typed in date now respects en/disabled dates +* Fix for #132: En/disable picker function works again +* Fix for #117, #119, #128, #121: double event `change` event issues should be fixed +* Fix for #112: `change` function no longer sets the input to a blank value if the passed in date is invalid + +* Enhancement for #103: Increated the `z-index` of the widget + +## 2.1.20 +* Fix for #83: Changes to the picker should fire native `change` event for knockout and the like as well as `change.dp` which contains the old date and the new date +* Fix for #78: Script has been update for breaking changes in Moment 2.4.0 +* Fix for #73: IE8 should be working now + +* Enhancement for #79: `minuteStepping` option takes a number (default is 1). Changing the minutes in the time picker will step by this number. +* Enhancement for #74 and #65: `useMinutes` and `useSeconds` are now options. Disabling seconds will hide the seconds spinner. Disabling minutes will display `00` and hide the arrows +* Enhancement for #67: Picker will now attempt to convert all `data-OPTION` into its appropriate option + +## 2.1.11 +* Fix for #51, #60 +* Fix for #52: Picker has its own `moment` object since moment 2.4.0 has removed global reference +* Fix for #57: New option for `useStrict`. When validating dates in `update` and `change`, the picker can use a stricter formatting validation +* Fix for #61: Picker should now properly take formatted date. Should also have correct start of the week for locales. +* Fix for #62: Default format will properly validate time picker only. + +## 2.1.5 +* Custom icons, such as Font Awesome, are now supported. (#49) See [Example#9](http://eonasdan.github.io/bootstrap-datetimepicker/#example9) +* If more then one `input-group-addon` is present use `datepickerbutton` to identify where the picker should popup from. (#48) +* New Event: `error.dp`. Fires when Moment cannot parse the date or when the timepicker cannot change because of a `disabledDates` setting. Returns a Moment date object. The specific error can be found be using `invalidAt()`. For more information see [Moment's docs](http://momentjs.com/docs/#/parsing/is-valid/) +* Fix for #42, plugin will now check for `A` or `a` in the format string to determine if the AM/PM selector should display. +* Fix for #45, fixed null/empty and invalid dates +* Fix for #46, fixed active date highlighting +* Fix for #47, `change.dp` event to also include the previous date. + +####2.0.1 +* New event `error.dp` fires when plugin cannot parse date or when increase/descreasing hours/minutes to a disabled date. See [Example#7](http://eonasdan.github.io/bootstrap-datetimepicker/#example7) +* Minor fixes + +####2.0.0 +* `disabledDates` is now an option to set the disabled dates. It accepts date objects like `new Date("November 12, 2013 00:00:00")` and `12/25/2013' and `moment` date objects. See [Example#7](http://eonasdan.github.io/bootstrap-datetimepicker/#example7) for usage. +* Events are easier to use; see [Example#8](http://eonasdan.github.io/bootstrap-datetimepicker/#example8) + diff --git a/static/bootstrap-datetimepicker-master/bower.json b/static/bootstrap-datetimepicker-master/bower.json new file mode 100755 index 0000000..bd8d69d --- /dev/null +++ b/static/bootstrap-datetimepicker-master/bower.json @@ -0,0 +1,35 @@ +{ + "name": "eonasdan-bootstrap-datetimepicker", + "version": "2.2.22", + "main": [ + "build/css/bootstrap-datetimepicker.min.css", + "build/js/bootstrap-datetimepicker.min.js" + ], + "dependencies": { + "jquery": ">=1.8.3", + "bootstrap": ">= 3.0", + "moment": ">=2.3.1" + }, + "homepage": "https://github.com/Eonasdan/bootstrap-datetimepicker", + "authors": [ + "Eonasdan" + ], + "description": "bootstrap3 datetimepicker", + "keywords": [ + "twitter-bootstrap", + "bootstrap", + "datepicker", + "datetimepicker", + "timepicker", + "moment" + ], + "license": "MIT", + "private": false, + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ] +} diff --git a/static/bootstrap-datetimepicker-master/build/css/bootstrap-datetimepicker.css b/static/bootstrap-datetimepicker-master/build/css/bootstrap-datetimepicker.css new file mode 100755 index 0000000..c242d73 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/build/css/bootstrap-datetimepicker.css @@ -0,0 +1,174 @@ +/** + * Build file for the dist version of datetimepicker.css + */ +/*! + * Datetimepicker for Bootstrap v3 + * https://github.com/Eonasdan/bootstrap-datetimepicker/ + * Copyright 2012 Stefan Petre + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + */ +.bootstrap-datetimepicker-widget { + top: 0; + left: 0; + width: 250px; + padding: 4px; + margin-top: 1px; + z-index: 99999; + border-radius: 4px; + /*.dow { + border-top: 1px solid #ddd !important; + }*/ +} +.bootstrap-datetimepicker-widget .btn { + padding: 6px; +} +.bootstrap-datetimepicker-widget:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; + top: -7px; + left: 6px; +} +.bootstrap-datetimepicker-widget:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid white; + position: absolute; + top: -6px; + left: 7px; +} +.bootstrap-datetimepicker-widget.pull-right:before { + left: auto; + right: 6px; +} +.bootstrap-datetimepicker-widget.pull-right:after { + left: auto; + right: 7px; +} +.bootstrap-datetimepicker-widget > ul { + list-style-type: none; + margin: 0; +} +.bootstrap-datetimepicker-widget .timepicker-hour, +.bootstrap-datetimepicker-widget .timepicker-minute, +.bootstrap-datetimepicker-widget .timepicker-second { + width: 100%; + font-weight: bold; + font-size: 1.2em; +} +.bootstrap-datetimepicker-widget table[data-hour-format="12"] .separator { + width: 4px; + padding: 0; + margin: 0; +} +.bootstrap-datetimepicker-widget .datepicker > div { + display: none; +} +.bootstrap-datetimepicker-widget .picker-switch { + text-align: center; +} +.bootstrap-datetimepicker-widget table { + width: 100%; + margin: 0; +} +.bootstrap-datetimepicker-widget td, +.bootstrap-datetimepicker-widget th { + text-align: center; + width: 20px; + height: 20px; + border-radius: 4px; +} +.bootstrap-datetimepicker-widget td.day:hover, +.bootstrap-datetimepicker-widget td.hour:hover, +.bootstrap-datetimepicker-widget td.minute:hover, +.bootstrap-datetimepicker-widget td.second:hover { + background: #eeeeee; + cursor: pointer; +} +.bootstrap-datetimepicker-widget td.old, +.bootstrap-datetimepicker-widget td.new { + color: #999999; +} +.bootstrap-datetimepicker-widget td.active, +.bootstrap-datetimepicker-widget td.active:hover { + background-color: #428bca; + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.bootstrap-datetimepicker-widget td.disabled, +.bootstrap-datetimepicker-widget td.disabled:hover { + background: none; + color: #999999; + cursor: not-allowed; +} +.bootstrap-datetimepicker-widget td span { + display: block; + width: 47px; + height: 54px; + line-height: 54px; + float: left; + margin: 2px; + cursor: pointer; + border-radius: 4px; +} +.bootstrap-datetimepicker-widget td span:hover { + background: #eeeeee; +} +.bootstrap-datetimepicker-widget td span.active { + background-color: #428bca; + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.bootstrap-datetimepicker-widget td span.old { + color: #999999; +} +.bootstrap-datetimepicker-widget td span.disabled, +.bootstrap-datetimepicker-widget td span.disabled:hover { + background: none; + color: #999999; + cursor: not-allowed; +} +.bootstrap-datetimepicker-widget th.switch { + width: 145px; +} +.bootstrap-datetimepicker-widget th.next, +.bootstrap-datetimepicker-widget th.prev { + font-size: 21px; +} +.bootstrap-datetimepicker-widget th.disabled, +.bootstrap-datetimepicker-widget th.disabled:hover { + background: none; + color: #999999; + cursor: not-allowed; +} +.bootstrap-datetimepicker-widget thead tr:first-child th { + cursor: pointer; +} +.bootstrap-datetimepicker-widget thead tr:first-child th:hover { + background: #eeeeee; +} +.input-group.date .input-group-addon span { + display: block; + cursor: pointer; + width: 16px; + height: 16px; +} +.bootstrap-datetimepicker-widget.left-oriented:before { + left: auto; + right: 6px; +} +.bootstrap-datetimepicker-widget.left-oriented:after { + left: auto; + right: 7px; +} +.bootstrap-datetimepicker-widget ul.list-unstyled li.in div.timepicker div.timepicker-picker table.table-condensed tbody > tr > td { + padding: 0px !important; +} diff --git a/static/bootstrap-datetimepicker-master/component.json b/static/bootstrap-datetimepicker-master/component.json new file mode 100755 index 0000000..46df8bc --- /dev/null +++ b/static/bootstrap-datetimepicker-master/component.json @@ -0,0 +1,10 @@ +{ + "name": "bootstrap-datetimepicker", + "version": "2.1.32", + "main": ["build/css/bootstrap-datetimepicker.min.css","build/js/bootstrap-datetimepicker.min.js"], + "dependencies": { + "jquery" : ">=1.8.3", + "bootstrap" : ">=3.0", + "moment": ">=2.4.0" + } +} diff --git a/static/bootstrap-datetimepicker-master/moment-develop.zip b/static/bootstrap-datetimepicker-master/moment-develop.zip new file mode 100644 index 0000000000000000000000000000000000000000..62578eeb891c6dc9bf0e4577349ddc8ca3889c7d GIT binary patch literal 550103 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 z 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

cm!O$5|j5qIC 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

uLM1k=VkHf04l)64`ipcRp#A>S#q$IEMnFo_z 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

TS|jaJD>E- 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%0D(l`VofA99iOeE9K;k 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%0AuDEE2v^ki5OPvjGEFItq*Xpt6lHH+^^hn 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', + tasks: ['jshint'] + } + }, + embed_languages: { + moment: 'moment.js', + dest: embedLanguageDest, + targetLangs: embedLanguageLangs + } + }); + + grunt.loadTasks("tasks"); + + // These plugins provide necessary tasks. + grunt.loadNpmTasks('grunt-contrib-nodeunit'); + grunt.loadNpmTasks('grunt-contrib-jshint'); + grunt.loadNpmTasks('grunt-contrib-concat'); + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.loadNpmTasks('grunt-env'); + grunt.loadNpmTasks('grunt-karma'); + + // Default task. + grunt.registerTask('default', ['jshint', 'nodeunit']); + + //test tasks + grunt.registerTask('test', ['test:node', 'test:browser']); + grunt.registerTask('test:node', ['nodeunit']); + grunt.registerTask('test:server', ['concat', 'embed_languages', 'karma:server']); + grunt.registerTask('test:browser', ['concat', 'embed_languages', 'karma:chrome', 'karma:firefox']); + grunt.registerTask('test:sauce-browser', ['concat', 'embed_languages', 'env:sauceLabs', 'karma:sauce']); + grunt.registerTask('test:travis-sauce-browser', ['concat', 'embed_languages', 'karma:sauce']); + + // travis build task + grunt.registerTask('build:travis', [ + 'jshint', 'test:node', 'check-sauce-creds', + 'test:travis-sauce-browser' + ]); + + // Task to be run when releasing a new version + grunt.registerTask('release', [ + 'jshint', 'nodeunit', 'concat', 'embed_languages', + 'component', 'uglify' + ]); +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/LICENSE b/static/bootstrap-datetimepicker-master/moment-develop/LICENSE new file mode 100755 index 0000000..bd17246 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/LICENSE @@ -0,0 +1,22 @@ +Copyright (c) 2011-2014 Tim Wood, Iskren Chernev, Moment.js contributors + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/static/bootstrap-datetimepicker-master/moment-develop/bower.json b/static/bootstrap-datetimepicker-master/moment-develop/bower.json new file mode 100755 index 0000000..a53026b --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/bower.json @@ -0,0 +1,20 @@ +{ + "name": "moment", + "version": "2.5.1", + "main": "moment.js", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests", + "tasks", + "component.json", + "composer.json", + "CONTRIBUTING.md", + "ender.js", + "Gruntfile.js", + "package.js", + "package.json" + ] +} diff --git a/static/bootstrap-datetimepicker-master/moment-develop/component.json b/static/bootstrap-datetimepicker-master/moment-develop/component.json new file mode 100755 index 0000000..8dbdfd3 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/component.json @@ -0,0 +1,80 @@ +{ + "name": "moment", + "version": "2.5.1", + "main": "moment.js", + "description": "Parse, validate, manipulate, and display dates in javascript.", + "files": [ + "moment.js", + "lang/ar-ma.js", + "lang/ar.js", + "lang/bg.js", + "lang/br.js", + "lang/bs.js", + "lang/ca.js", + "lang/cs.js", + "lang/cv.js", + "lang/cy.js", + "lang/da.js", + "lang/de.js", + "lang/el.js", + "lang/en-au.js", + "lang/en-ca.js", + "lang/en-gb.js", + "lang/eo.js", + "lang/es.js", + "lang/et.js", + "lang/eu.js", + "lang/fa.js", + "lang/fi.js", + "lang/fo.js", + "lang/fr-ca.js", + "lang/fr.js", + "lang/gl.js", + "lang/he.js", + "lang/hi.js", + "lang/hr.js", + "lang/hu.js", + "lang/hy-am.js", + "lang/id.js", + "lang/is.js", + "lang/it.js", + "lang/ja.js", + "lang/ka.js", + "lang/ko.js", + "lang/lb.js", + "lang/lt.js", + "lang/lv.js", + "lang/mk.js", + "lang/ml.js", + "lang/mr.js", + "lang/ms-my.js", + "lang/nb.js", + "lang/ne.js", + "lang/nl.js", + "lang/nn.js", + "lang/pl.js", + "lang/pt-br.js", + "lang/pt.js", + "lang/ro.js", + "lang/rs.js", + "lang/ru.js", + "lang/sk.js", + "lang/sl.js", + "lang/sq.js", + "lang/sv.js", + "lang/ta.js", + "lang/th.js", + "lang/tl-ph.js", + "lang/tr.js", + "lang/tzm-la.js", + "lang/tzm.js", + "lang/uk.js", + "lang/uz.js", + "lang/vn.js", + "lang/zh-cn.js", + "lang/zh-tw.js" + ], + "scripts": [ + "moment.js" + ] +} \ No newline at end of file diff --git a/static/bootstrap-datetimepicker-master/moment-develop/composer.json b/static/bootstrap-datetimepicker-master/moment-develop/composer.json new file mode 100755 index 0000000..10be060 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/composer.json @@ -0,0 +1,18 @@ +{ + "name": "moment/moment", + "description": "Parse, validate, manipulate, and display dates in javascript.", + "keywords": [ + "moment", + "date", + "time", + "parse", + "format", + "validate", + "i18n", + "l10n", + "ender" + ], + "homepage": "http://github.com/moment/moment/", + "author": "Tim Wood (http://timwoodcreates.com/)", + "license": "MIT" +} diff --git a/static/bootstrap-datetimepicker-master/moment-develop/ender.js b/static/bootstrap-datetimepicker-master/moment-develop/ender.js new file mode 100755 index 0000000..71462a7 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/ender.js @@ -0,0 +1 @@ +$.ender({ moment: require('moment') }) diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/ar-ma.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/ar-ma.js new file mode 100755 index 0000000..1c159f1 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/ar-ma.js @@ -0,0 +1,56 @@ +// moment.js language configuration +// language : Moroccan Arabic (ar-ma) +// author : ElFadili Yassine : https://github.com/ElFadiliY +// author : Abdel Said : https://github.com/abdelsaid + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('ar-ma', { + months : "يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"), + monthsShort : "يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"), + weekdays : "الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"), + weekdaysShort : "احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"), + weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: "[اليوم على الساعة] LT", + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : "في %s", + past : "منذ %s", + s : "ثوان", + m : "دقيقة", + mm : "%d دقائق", + h : "ساعة", + hh : "%d ساعات", + d : "يوم", + dd : "%d أيام", + M : "شهر", + MM : "%d أشهر", + y : "سنة", + yy : "%d سنوات" + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/ar.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/ar.js new file mode 100755 index 0000000..6e27d29 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/ar.js @@ -0,0 +1,56 @@ +// moment.js language configuration +// language : Arabic (ar) +// author : Abdel Said : https://github.com/abdelsaid +// changes in months, weekdays : Ahmed Elkhatib + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('ar', { + months : "يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"), + monthsShort : "يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"), + weekdays : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"), + weekdaysShort : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"), + weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: "[اليوم على الساعة] LT", + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : "في %s", + past : "منذ %s", + s : "ثوان", + m : "دقيقة", + mm : "%d دقائق", + h : "ساعة", + hh : "%d ساعات", + d : "يوم", + dd : "%d أيام", + M : "شهر", + MM : "%d أشهر", + y : "سنة", + yy : "%d سنوات" + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/bg.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/bg.js new file mode 100755 index 0000000..f47ed65 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/bg.js @@ -0,0 +1,86 @@ +// moment.js language configuration +// language : bulgarian (bg) +// author : Krasen Borisov : https://github.com/kraz + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('bg', { + months : "януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"), + monthsShort : "янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"), + weekdays : "неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"), + weekdaysShort : "нед_пон_вто_сря_чет_пет_съб".split("_"), + weekdaysMin : "нд_пн_вт_ср_чт_пт_сб".split("_"), + longDateFormat : { + LT : "H:mm", + L : "D.MM.YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay : '[Днес в] LT', + nextDay : '[Утре в] LT', + nextWeek : 'dddd [в] LT', + lastDay : '[Вчера в] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + case 6: + return '[В изминалата] dddd [в] LT'; + case 1: + case 2: + case 4: + case 5: + return '[В изминалия] dddd [в] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : "след %s", + past : "преди %s", + s : "няколко секунди", + m : "минута", + mm : "%d минути", + h : "час", + hh : "%d часа", + d : "ден", + dd : "%d дни", + M : "месец", + MM : "%d месеца", + y : "година", + yy : "%d години" + }, + ordinal : function (number) { + var lastDigit = number % 10, + last2Digits = number % 100; + if (number === 0) { + return number + '-ев'; + } else if (last2Digits === 0) { + return number + '-ен'; + } else if (last2Digits > 10 && last2Digits < 20) { + return number + '-ти'; + } else if (lastDigit === 1) { + return number + '-ви'; + } else if (lastDigit === 2) { + return number + '-ри'; + } else if (lastDigit === 7 || lastDigit === 8) { + return number + '-ми'; + } else { + return number + '-ти'; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/br.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/br.js new file mode 100755 index 0000000..39c60df --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/br.js @@ -0,0 +1,107 @@ +// moment.js language configuration +// language : breton (br) +// author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + function relativeTimeWithMutation(number, withoutSuffix, key) { + var format = { + 'mm': "munutenn", + 'MM': "miz", + 'dd': "devezh" + }; + return number + ' ' + mutation(format[key], number); + } + + function specialMutationForYears(number) { + switch (lastNumber(number)) { + case 1: + case 3: + case 4: + case 5: + case 9: + return number + ' bloaz'; + default: + return number + ' vloaz'; + } + } + + function lastNumber(number) { + if (number > 9) { + return lastNumber(number % 10); + } + return number; + } + + function mutation(text, number) { + if (number === 2) { + return softMutation(text); + } + return text; + } + + function softMutation(text) { + var mutationTable = { + 'm': 'v', + 'b': 'v', + 'd': 'z' + }; + if (mutationTable[text.charAt(0)] === undefined) { + return text; + } + return mutationTable[text.charAt(0)] + text.substring(1); + } + + return moment.lang('br', { + months : "Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"), + monthsShort : "Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"), + weekdays : "Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"), + weekdaysShort : "Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"), + weekdaysMin : "Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"), + longDateFormat : { + LT : "h[e]mm A", + L : "DD/MM/YYYY", + LL : "D [a viz] MMMM YYYY", + LLL : "D [a viz] MMMM YYYY LT", + LLLL : "dddd, D [a viz] MMMM YYYY LT" + }, + calendar : { + sameDay : '[Hiziv da] LT', + nextDay : '[Warc\'hoazh da] LT', + nextWeek : 'dddd [da] LT', + lastDay : '[Dec\'h da] LT', + lastWeek : 'dddd [paset da] LT', + sameElse : 'L' + }, + relativeTime : { + future : "a-benn %s", + past : "%s 'zo", + s : "un nebeud segondennoù", + m : "ur vunutenn", + mm : relativeTimeWithMutation, + h : "un eur", + hh : "%d eur", + d : "un devezh", + dd : relativeTimeWithMutation, + M : "ur miz", + MM : relativeTimeWithMutation, + y : "ur bloaz", + yy : specialMutationForYears + }, + ordinal : function (number) { + var output = (number === 1) ? 'añ' : 'vet'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/bs.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/bs.js new file mode 100755 index 0000000..83a9b4c --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/bs.js @@ -0,0 +1,139 @@ +// moment.js language configuration +// language : bosnian (bs) +// author : Nedim Cholich : https://github.com/frontyard +// based on (hr) translation by Bojan Marković + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + + function translate(number, withoutSuffix, key) { + var result = number + " "; + switch (key) { + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mjesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'mjeseca'; + } else { + result += 'mjeseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; + } + } + + return moment.lang('bs', { + months : "januar_februar_mart_april_maj_juni_juli_avgust_septembar_oktobar_novembar_decembar".split("_"), + monthsShort : "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"), + weekdays : "nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"), + weekdaysShort : "ned._pon._uto._sri._čet._pet._sub.".split("_"), + weekdaysMin : "ne_po_ut_sr_če_pe_su".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD. MM. YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd, D. MMMM YYYY LT" + }, + calendar : { + sameDay : '[danas u] LT', + nextDay : '[sutra u] LT', + + nextWeek : function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[jučer u] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : "za %s", + past : "prije %s", + s : "par sekundi", + m : translate, + mm : translate, + h : translate, + hh : translate, + d : "dan", + dd : translate, + M : "mjesec", + MM : translate, + y : "godinu", + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/ca.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/ca.js new file mode 100755 index 0000000..cf47113 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/ca.js @@ -0,0 +1,66 @@ +// moment.js language configuration +// language : catalan (ca) +// author : Juan G. Hurtado : https://github.com/juanghurtado + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('ca', { + months : "gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"), + monthsShort : "gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"), + weekdays : "diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"), + weekdaysShort : "dg._dl._dt._dc._dj._dv._ds.".split("_"), + weekdaysMin : "Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay : function () { + return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + nextDay : function () { + return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + lastDay : function () { + return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : "en %s", + past : "fa %s", + s : "uns segons", + m : "un minut", + mm : "%d minuts", + h : "una hora", + hh : "%d hores", + d : "un dia", + dd : "%d dies", + M : "un mes", + MM : "%d mesos", + y : "un any", + yy : "%d anys" + }, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/cs.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/cs.js new file mode 100755 index 0000000..c1396cf --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/cs.js @@ -0,0 +1,155 @@ +// moment.js language configuration +// language : czech (cs) +// author : petrbela : https://github.com/petrbela + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var months = "leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"), + monthsShort = "led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"); + + function plural(n) { + return (n > 1) && (n < 5) && (~~(n / 10) !== 1); + } + + function translate(number, withoutSuffix, key, isFuture) { + var result = number + " "; + switch (key) { + case 's': // a few seconds / in a few seconds / a few seconds ago + return (withoutSuffix || isFuture) ? 'pár vteřin' : 'pár vteřinami'; + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou'); + case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'minuty' : 'minut'); + } else { + return result + 'minutami'; + } + break; + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'hh': // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'hodiny' : 'hodin'); + } else { + return result + 'hodinami'; + } + break; + case 'd': // a day / in a day / a day ago + return (withoutSuffix || isFuture) ? 'den' : 'dnem'; + case 'dd': // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'dny' : 'dní'); + } else { + return result + 'dny'; + } + break; + case 'M': // a month / in a month / a month ago + return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem'; + case 'MM': // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'měsíce' : 'měsíců'); + } else { + return result + 'měsíci'; + } + break; + case 'y': // a year / in a year / a year ago + return (withoutSuffix || isFuture) ? 'rok' : 'rokem'; + case 'yy': // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'roky' : 'let'); + } else { + return result + 'lety'; + } + break; + } + } + + return moment.lang('cs', { + months : months, + monthsShort : monthsShort, + monthsParse : (function (months, monthsShort) { + var i, _monthsParse = []; + for (i = 0; i < 12; i++) { + // use custom parser to solve problem with July (červenec) + _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); + } + return _monthsParse; + }(months, monthsShort)), + weekdays : "neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"), + weekdaysShort : "ne_po_út_st_čt_pá_so".split("_"), + weekdaysMin : "ne_po_út_st_čt_pá_so".split("_"), + longDateFormat : { + LT: "H:mm", + L : "DD.MM.YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd D. MMMM YYYY LT" + }, + calendar : { + sameDay: "[dnes v] LT", + nextDay: '[zítra v] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[v neděli v] LT'; + case 1: + case 2: + return '[v] dddd [v] LT'; + case 3: + return '[ve středu v] LT'; + case 4: + return '[ve čtvrtek v] LT'; + case 5: + return '[v pátek v] LT'; + case 6: + return '[v sobotu v] LT'; + } + }, + lastDay: '[včera v] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[minulou neděli v] LT'; + case 1: + case 2: + return '[minulé] dddd [v] LT'; + case 3: + return '[minulou středu v] LT'; + case 4: + case 5: + return '[minulý] dddd [v] LT'; + case 6: + return '[minulou sobotu v] LT'; + } + }, + sameElse: "L" + }, + relativeTime : { + future : "za %s", + past : "před %s", + s : translate, + m : translate, + mm : translate, + h : translate, + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/cv.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/cv.js new file mode 100755 index 0000000..a5812de --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/cv.js @@ -0,0 +1,59 @@ +// moment.js language configuration +// language : chuvash (cv) +// author : Anatoly Mironov : https://github.com/mirontoli + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('cv', { + months : "кăрлач_нарăс_пуш_ака_май_çĕртме_утă_çурла_авăн_юпа_чӳк_раштав".split("_"), + monthsShort : "кăр_нар_пуш_ака_май_çĕр_утă_çур_ав_юпа_чӳк_раш".split("_"), + weekdays : "вырсарникун_тунтикун_ытларикун_юнкун_кĕçнерникун_эрнекун_шăматкун".split("_"), + weekdaysShort : "выр_тун_ытл_юн_кĕç_эрн_шăм".split("_"), + weekdaysMin : "вр_тн_ыт_юн_кç_эр_шм".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD-MM-YYYY", + LL : "YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ]", + LLL : "YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT", + LLLL : "dddd, YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT" + }, + calendar : { + sameDay: '[Паян] LT [сехетре]', + nextDay: '[Ыран] LT [сехетре]', + lastDay: '[Ĕнер] LT [сехетре]', + nextWeek: '[Çитес] dddd LT [сехетре]', + lastWeek: '[Иртнĕ] dddd LT [сехетре]', + sameElse: 'L' + }, + relativeTime : { + future : function (output) { + var affix = /сехет$/i.exec(output) ? "рен" : /çул$/i.exec(output) ? "тан" : "ран"; + return output + affix; + }, + past : "%s каялла", + s : "пĕр-ик çеккунт", + m : "пĕр минут", + mm : "%d минут", + h : "пĕр сехет", + hh : "%d сехет", + d : "пĕр кун", + dd : "%d кун", + M : "пĕр уйăх", + MM : "%d уйăх", + y : "пĕр çул", + yy : "%d çул" + }, + ordinal : '%d-мĕш', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/cy.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/cy.js new file mode 100755 index 0000000..b47d7c2 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/cy.js @@ -0,0 +1,77 @@ +// moment.js language configuration +// language : Welsh (cy) +// author : Robert Allen + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang("cy", { + months: "Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"), + monthsShort: "Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"), + weekdays: "Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"), + weekdaysShort: "Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"), + weekdaysMin: "Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"), + // time formats are the same as en-gb + longDateFormat: { + LT: "HH:mm", + L: "DD/MM/YYYY", + LL: "D MMMM YYYY", + LLL: "D MMMM YYYY LT", + LLLL: "dddd, D MMMM YYYY LT" + }, + calendar: { + sameDay: '[Heddiw am] LT', + nextDay: '[Yfory am] LT', + nextWeek: 'dddd [am] LT', + lastDay: '[Ddoe am] LT', + lastWeek: 'dddd [diwethaf am] LT', + sameElse: 'L' + }, + relativeTime: { + future: "mewn %s", + past: "%s yn àl", + s: "ychydig eiliadau", + m: "munud", + mm: "%d munud", + h: "awr", + hh: "%d awr", + d: "diwrnod", + dd: "%d diwrnod", + M: "mis", + MM: "%d mis", + y: "blwyddyn", + yy: "%d flynedd" + }, + // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh + ordinal: function (number) { + var b = number, + output = '', + lookup = [ + '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed + 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed + ]; + + if (b > 20) { + if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { + output = 'fed'; // not 30ain, 70ain or 90ain + } else { + output = 'ain'; + } + } else if (b > 0) { + output = lookup[b]; + } + + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/da.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/da.js new file mode 100755 index 0000000..2fa8244 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/da.js @@ -0,0 +1,56 @@ +// moment.js language configuration +// language : danish (da) +// author : Ulrik Nielsen : https://github.com/mrbase + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('da', { + months : "januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"), + monthsShort : "jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"), + weekdays : "søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"), + weekdaysShort : "søn_man_tir_ons_tor_fre_lør".split("_"), + weekdaysMin : "sø_ma_ti_on_to_fr_lø".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D. MMMM, YYYY LT" + }, + calendar : { + sameDay : '[I dag kl.] LT', + nextDay : '[I morgen kl.] LT', + nextWeek : 'dddd [kl.] LT', + lastDay : '[I går kl.] LT', + lastWeek : '[sidste] dddd [kl] LT', + sameElse : 'L' + }, + relativeTime : { + future : "om %s", + past : "%s siden", + s : "få sekunder", + m : "et minut", + mm : "%d minutter", + h : "en time", + hh : "%d timer", + d : "en dag", + dd : "%d dage", + M : "en måned", + MM : "%d måneder", + y : "et år", + yy : "%d år" + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/de.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/de.js new file mode 100755 index 0000000..988f328 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/de.js @@ -0,0 +1,71 @@ +// moment.js language configuration +// language : german (de) +// author : lluchs : https://github.com/lluchs +// author: Menelion Elensúle: https://github.com/Oire + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eine Minute', 'einer Minute'], + 'h': ['eine Stunde', 'einer Stunde'], + 'd': ['ein Tag', 'einem Tag'], + 'dd': [number + ' Tage', number + ' Tagen'], + 'M': ['ein Monat', 'einem Monat'], + 'MM': [number + ' Monate', number + ' Monaten'], + 'y': ['ein Jahr', 'einem Jahr'], + 'yy': [number + ' Jahre', number + ' Jahren'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; + } + + return moment.lang('de', { + months : "Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"), + monthsShort : "Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"), + weekdays : "Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"), + weekdaysShort : "So._Mo._Di._Mi._Do._Fr._Sa.".split("_"), + weekdaysMin : "So_Mo_Di_Mi_Do_Fr_Sa".split("_"), + longDateFormat : { + LT: "H:mm [Uhr]", + L : "DD.MM.YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd, D. MMMM YYYY LT" + }, + calendar : { + sameDay: "[Heute um] LT", + sameElse: "L", + nextDay: '[Morgen um] LT', + nextWeek: 'dddd [um] LT', + lastDay: '[Gestern um] LT', + lastWeek: '[letzten] dddd [um] LT' + }, + relativeTime : { + future : "in %s", + past : "vor %s", + s : "ein paar Sekunden", + m : processRelativeTime, + mm : "%d Minuten", + h : processRelativeTime, + hh : "%d Stunden", + d : processRelativeTime, + dd : processRelativeTime, + M : processRelativeTime, + MM : processRelativeTime, + y : processRelativeTime, + yy : processRelativeTime + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/el.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/el.js new file mode 100755 index 0000000..9dfea23 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/el.js @@ -0,0 +1,79 @@ +// moment.js language configuration +// language : modern greek (el) +// author : Aggelos Karalias : https://github.com/mehiel + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('el', { + monthsNominativeEl : "Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"), + monthsGenitiveEl : "Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"), + months : function (momentToFormat, format) { + if (/D/.test(format.substring(0, format.indexOf("MMMM")))) { // if there is a day number before 'MMMM' + return this._monthsGenitiveEl[momentToFormat.month()]; + } else { + return this._monthsNominativeEl[momentToFormat.month()]; + } + }, + monthsShort : "Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"), + weekdays : "Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"), + weekdaysShort : "Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"), + weekdaysMin : "Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"), + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'μμ' : 'ΜΜ'; + } else { + return isLower ? 'πμ' : 'ΠΜ'; + } + }, + longDateFormat : { + LT : "h:mm A", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendarEl : { + sameDay : '[Σήμερα {}] LT', + nextDay : '[Αύριο {}] LT', + nextWeek : 'dddd [{}] LT', + lastDay : '[Χθες {}] LT', + lastWeek : '[την προηγούμενη] dddd [{}] LT', + sameElse : 'L' + }, + calendar : function (key, mom) { + var output = this._calendarEl[key], + hours = mom && mom.hours(); + + return output.replace("{}", (hours % 12 === 1 ? "στη" : "στις")); + }, + relativeTime : { + future : "σε %s", + past : "%s πριν", + s : "δευτερόλεπτα", + m : "ένα λεπτό", + mm : "%d λεπτά", + h : "μία ώρα", + hh : "%d ώρες", + d : "μία μέρα", + dd : "%d μέρες", + M : "ένας μήνας", + MM : "%d μήνες", + y : "ένας χρόνος", + yy : "%d χρόνια" + }, + ordinal : function (number) { + return number + 'η'; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/en-au.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/en-au.js new file mode 100755 index 0000000..4d91e25 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/en-au.js @@ -0,0 +1,62 @@ +// moment.js language configuration +// language : australian english (en-au) + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('en-au', { + months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), + monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), + weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), + weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), + weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), + longDateFormat : { + LT : "h:mm A", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : "in %s", + past : "%s ago", + s : "a few seconds", + m : "a minute", + mm : "%d minutes", + h : "an hour", + hh : "%d hours", + d : "a day", + dd : "%d days", + M : "a month", + MM : "%d months", + y : "a year", + yy : "%d years" + }, + ordinal : function (number) { + var b = number % 10, + output = (~~ (number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/en-ca.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/en-ca.js new file mode 100755 index 0000000..a97e9f3 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/en-ca.js @@ -0,0 +1,59 @@ +// moment.js language configuration +// language : canadian english (en-ca) +// author : Jonathan Abourbih : https://github.com/jonbca + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('en-ca', { + months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), + monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), + weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), + weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), + weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), + longDateFormat : { + LT : "h:mm A", + L : "YYYY-MM-DD", + LL : "D MMMM, YYYY", + LLL : "D MMMM, YYYY LT", + LLLL : "dddd, D MMMM, YYYY LT" + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : "in %s", + past : "%s ago", + s : "a few seconds", + m : "a minute", + mm : "%d minutes", + h : "an hour", + hh : "%d hours", + d : "a day", + dd : "%d days", + M : "a month", + MM : "%d months", + y : "a year", + yy : "%d years" + }, + ordinal : function (number) { + var b = number % 10, + output = (~~ (number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/en-gb.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/en-gb.js new file mode 100755 index 0000000..3a7907b --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/en-gb.js @@ -0,0 +1,63 @@ +// moment.js language configuration +// language : great britain english (en-gb) +// author : Chris Gedrim : https://github.com/chrisgedrim + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('en-gb', { + months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), + monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), + weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), + weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), + weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : "in %s", + past : "%s ago", + s : "a few seconds", + m : "a minute", + mm : "%d minutes", + h : "an hour", + hh : "%d hours", + d : "a day", + dd : "%d days", + M : "a month", + MM : "%d months", + y : "a year", + yy : "%d years" + }, + ordinal : function (number) { + var b = number % 10, + output = (~~ (number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/eo.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/eo.js new file mode 100755 index 0000000..03b1abf --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/eo.js @@ -0,0 +1,65 @@ +// moment.js language configuration +// language : esperanto (eo) +// author : Colin Dean : https://github.com/colindean +// komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko. +// Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni! + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('eo', { + months : "januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"), + monthsShort : "jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"), + weekdays : "Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"), + weekdaysShort : "Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab".split("_"), + weekdaysMin : "Di_Lu_Ma_Me_Ĵa_Ve_Sa".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "YYYY-MM-DD", + LL : "D[-an de] MMMM, YYYY", + LLL : "D[-an de] MMMM, YYYY LT", + LLLL : "dddd, [la] D[-an de] MMMM, YYYY LT" + }, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'p.t.m.' : 'P.T.M.'; + } else { + return isLower ? 'a.t.m.' : 'A.T.M.'; + } + }, + calendar : { + sameDay : '[Hodiaŭ je] LT', + nextDay : '[Morgaŭ je] LT', + nextWeek : 'dddd [je] LT', + lastDay : '[Hieraŭ je] LT', + lastWeek : '[pasinta] dddd [je] LT', + sameElse : 'L' + }, + relativeTime : { + future : "je %s", + past : "antaŭ %s", + s : "sekundoj", + m : "minuto", + mm : "%d minutoj", + h : "horo", + hh : "%d horoj", + d : "tago",//ne 'diurno', ĉar estas uzita por proksimumo + dd : "%d tagoj", + M : "monato", + MM : "%d monatoj", + y : "jaro", + yy : "%d jaroj" + }, + ordinal : "%da", + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/es.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/es.js new file mode 100755 index 0000000..082e9f1 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/es.js @@ -0,0 +1,75 @@ +// moment.js language configuration +// language : spanish (es) +// author : Julio Napurí : https://github.com/julionc + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var monthsShortDot = "ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"), + monthsShort = "ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"); + + return moment.lang('es', { + months : "enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"), + monthsShort : function (m, format) { + if (/-MMM-/.test(format)) { + return monthsShort[m.month()]; + } else { + return monthsShortDot[m.month()]; + } + }, + weekdays : "domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"), + weekdaysShort : "dom._lun._mar._mié._jue._vie._sáb.".split("_"), + weekdaysMin : "Do_Lu_Ma_Mi_Ju_Vi_Sá".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD/MM/YYYY", + LL : "D [de] MMMM [de] YYYY", + LLL : "D [de] MMMM [de] YYYY LT", + LLLL : "dddd, D [de] MMMM [de] YYYY LT" + }, + calendar : { + sameDay : function () { + return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextDay : function () { + return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastDay : function () { + return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : "en %s", + past : "hace %s", + s : "unos segundos", + m : "un minuto", + mm : "%d minutos", + h : "una hora", + hh : "%d horas", + d : "un día", + dd : "%d días", + M : "un mes", + MM : "%d meses", + y : "un año", + yy : "%d años" + }, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/et.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/et.js new file mode 100755 index 0000000..fb410ef --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/et.js @@ -0,0 +1,76 @@ +// moment.js language configuration +// language : estonian (et) +// author : Henry Kehlmann : https://github.com/madhenry +// improvements : Illimar Tambek : https://github.com/ragulka + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'], + 'm' : ['ühe minuti', 'üks minut'], + 'mm': [number + ' minuti', number + ' minutit'], + 'h' : ['ühe tunni', 'tund aega', 'üks tund'], + 'hh': [number + ' tunni', number + ' tundi'], + 'd' : ['ühe päeva', 'üks päev'], + 'M' : ['kuu aja', 'kuu aega', 'üks kuu'], + 'MM': [number + ' kuu', number + ' kuud'], + 'y' : ['ühe aasta', 'aasta', 'üks aasta'], + 'yy': [number + ' aasta', number + ' aastat'] + }; + if (withoutSuffix) { + return format[key][2] ? format[key][2] : format[key][1]; + } + return isFuture ? format[key][0] : format[key][1]; + } + + return moment.lang('et', { + months : "jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"), + monthsShort : "jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"), + weekdays : "pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"), + weekdaysShort : "P_E_T_K_N_R_L".split("_"), + weekdaysMin : "P_E_T_K_N_R_L".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD.MM.YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd, D. MMMM YYYY LT" + }, + calendar : { + sameDay : '[Täna,] LT', + nextDay : '[Homme,] LT', + nextWeek : '[Järgmine] dddd LT', + lastDay : '[Eile,] LT', + lastWeek : '[Eelmine] dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s pärast", + past : "%s tagasi", + s : processRelativeTime, + m : processRelativeTime, + mm : processRelativeTime, + h : processRelativeTime, + hh : processRelativeTime, + d : processRelativeTime, + dd : '%d päeva', + M : processRelativeTime, + MM : processRelativeTime, + y : processRelativeTime, + yy : processRelativeTime + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/eu.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/eu.js new file mode 100755 index 0000000..659b739 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/eu.js @@ -0,0 +1,60 @@ +// moment.js language configuration +// language : euskara (eu) +// author : Eneko Illarramendi : https://github.com/eillarra + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('eu', { + months : "urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"), + monthsShort : "urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"), + weekdays : "igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"), + weekdaysShort : "ig._al._ar._az._og._ol._lr.".split("_"), + weekdaysMin : "ig_al_ar_az_og_ol_lr".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "YYYY-MM-DD", + LL : "YYYY[ko] MMMM[ren] D[a]", + LLL : "YYYY[ko] MMMM[ren] D[a] LT", + LLLL : "dddd, YYYY[ko] MMMM[ren] D[a] LT", + l : "YYYY-M-D", + ll : "YYYY[ko] MMM D[a]", + lll : "YYYY[ko] MMM D[a] LT", + llll : "ddd, YYYY[ko] MMM D[a] LT" + }, + calendar : { + sameDay : '[gaur] LT[etan]', + nextDay : '[bihar] LT[etan]', + nextWeek : 'dddd LT[etan]', + lastDay : '[atzo] LT[etan]', + lastWeek : '[aurreko] dddd LT[etan]', + sameElse : 'L' + }, + relativeTime : { + future : "%s barru", + past : "duela %s", + s : "segundo batzuk", + m : "minutu bat", + mm : "%d minutu", + h : "ordu bat", + hh : "%d ordu", + d : "egun bat", + dd : "%d egun", + M : "hilabete bat", + MM : "%d hilabete", + y : "urte bat", + yy : "%d urte" + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/fa.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/fa.js new file mode 100755 index 0000000..4a690c4 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/fa.js @@ -0,0 +1,97 @@ +// moment.js language configuration +// language : Persian Language +// author : Ebrahim Byagowi : https://github.com/ebraminio + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var symbolMap = { + '1': '۱', + '2': '۲', + '3': '۳', + '4': '۴', + '5': '۵', + '6': '۶', + '7': '۷', + '8': '۸', + '9': '۹', + '0': '۰' + }, numberMap = { + '۱': '1', + '۲': '2', + '۳': '3', + '۴': '4', + '۵': '5', + '۶': '6', + '۷': '7', + '۸': '8', + '۹': '9', + '۰': '0' + }; + + return moment.lang('fa', { + months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), + monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), + weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), + weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), + weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'), + longDateFormat : { + LT : 'HH:mm', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY LT', + LLLL : 'dddd, D MMMM YYYY LT' + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return "قبل از ظهر"; + } else { + return "بعد از ظهر"; + } + }, + calendar : { + sameDay : '[امروز ساعت] LT', + nextDay : '[فردا ساعت] LT', + nextWeek : 'dddd [ساعت] LT', + lastDay : '[دیروز ساعت] LT', + lastWeek : 'dddd [پیش] [ساعت] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'در %s', + past : '%s پیش', + s : 'چندین ثانیه', + m : 'یک دقیقه', + mm : '%d دقیقه', + h : 'یک ساعت', + hh : '%d ساعت', + d : 'یک روز', + dd : '%d روز', + M : 'یک ماه', + MM : '%d ماه', + y : 'یک سال', + yy : '%d سال' + }, + preparse: function (string) { + return string.replace(/[۰-۹]/g, function (match) { + return numberMap[match]; + }).replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }).replace(/,/g, '،'); + }, + ordinal : '%dم', + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/fi.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/fi.js new file mode 100755 index 0000000..18529c1 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/fi.js @@ -0,0 +1,103 @@ +// moment.js language configuration +// language : finnish (fi) +// author : Tarmo Aidantausta : https://github.com/bleadof + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var numbers_past = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '), + numbers_future = ['nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', + numbers_past[7], numbers_past[8], numbers_past[9]]; + + function translate(number, withoutSuffix, key, isFuture) { + var result = ""; + switch (key) { + case 's': + return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; + case 'm': + return isFuture ? 'minuutin' : 'minuutti'; + case 'mm': + result = isFuture ? 'minuutin' : 'minuuttia'; + break; + case 'h': + return isFuture ? 'tunnin' : 'tunti'; + case 'hh': + result = isFuture ? 'tunnin' : 'tuntia'; + break; + case 'd': + return isFuture ? 'päivän' : 'päivä'; + case 'dd': + result = isFuture ? 'päivän' : 'päivää'; + break; + case 'M': + return isFuture ? 'kuukauden' : 'kuukausi'; + case 'MM': + result = isFuture ? 'kuukauden' : 'kuukautta'; + break; + case 'y': + return isFuture ? 'vuoden' : 'vuosi'; + case 'yy': + result = isFuture ? 'vuoden' : 'vuotta'; + break; + } + result = verbal_number(number, isFuture) + " " + result; + return result; + } + + function verbal_number(number, isFuture) { + return number < 10 ? (isFuture ? numbers_future[number] : numbers_past[number]) : number; + } + + return moment.lang('fi', { + months : "tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"), + monthsShort : "tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"), + weekdays : "sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"), + weekdaysShort : "su_ma_ti_ke_to_pe_la".split("_"), + weekdaysMin : "su_ma_ti_ke_to_pe_la".split("_"), + longDateFormat : { + LT : "HH.mm", + L : "DD.MM.YYYY", + LL : "Do MMMM[ta] YYYY", + LLL : "Do MMMM[ta] YYYY, [klo] LT", + LLLL : "dddd, Do MMMM[ta] YYYY, [klo] LT", + l : "D.M.YYYY", + ll : "Do MMM YYYY", + lll : "Do MMM YYYY, [klo] LT", + llll : "ddd, Do MMM YYYY, [klo] LT" + }, + calendar : { + sameDay : '[tänään] [klo] LT', + nextDay : '[huomenna] [klo] LT', + nextWeek : 'dddd [klo] LT', + lastDay : '[eilen] [klo] LT', + lastWeek : '[viime] dddd[na] [klo] LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s päästä", + past : "%s sitten", + s : translate, + m : translate, + mm : translate, + h : translate, + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + ordinal : "%d.", + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/fo.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/fo.js new file mode 100755 index 0000000..2f1cbb8 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/fo.js @@ -0,0 +1,56 @@ +// moment.js language configuration +// language : faroese (fo) +// author : Ragnar Johannesen : https://github.com/ragnar123 + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('fo', { + months : "januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"), + monthsShort : "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"), + weekdays : "sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"), + weekdaysShort : "sun_mán_týs_mik_hós_frí_ley".split("_"), + weekdaysMin : "su_má_tý_mi_hó_fr_le".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D. MMMM, YYYY LT" + }, + calendar : { + sameDay : '[Í dag kl.] LT', + nextDay : '[Í morgin kl.] LT', + nextWeek : 'dddd [kl.] LT', + lastDay : '[Í gjár kl.] LT', + lastWeek : '[síðstu] dddd [kl] LT', + sameElse : 'L' + }, + relativeTime : { + future : "um %s", + past : "%s síðani", + s : "fá sekund", + m : "ein minutt", + mm : "%d minuttir", + h : "ein tími", + hh : "%d tímar", + d : "ein dagur", + dd : "%d dagar", + M : "ein mánaði", + MM : "%d mánaðir", + y : "eitt ár", + yy : "%d ár" + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/fr-ca.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/fr-ca.js new file mode 100755 index 0000000..3280d79 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/fr-ca.js @@ -0,0 +1,54 @@ +// moment.js language configuration +// language : canadian french (fr-ca) +// author : Jonathan Abourbih : https://github.com/jonbca + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('fr-ca', { + months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"), + monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"), + weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"), + weekdaysShort : "dim._lun._mar._mer._jeu._ven._sam.".split("_"), + weekdaysMin : "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "YYYY-MM-DD", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: "[Aujourd'hui à] LT", + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L' + }, + relativeTime : { + future : "dans %s", + past : "il y a %s", + s : "quelques secondes", + m : "une minute", + mm : "%d minutes", + h : "une heure", + hh : "%d heures", + d : "un jour", + dd : "%d jours", + M : "un mois", + MM : "%d mois", + y : "un an", + yy : "%d ans" + }, + ordinal : function (number) { + return number + (number === 1 ? 'er' : ''); + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/fr.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/fr.js new file mode 100755 index 0000000..6b3dc52 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/fr.js @@ -0,0 +1,58 @@ +// moment.js language configuration +// language : french (fr) +// author : John Fischer : https://github.com/jfroffice + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('fr', { + months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"), + monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"), + weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"), + weekdaysShort : "dim._lun._mar._mer._jeu._ven._sam.".split("_"), + weekdaysMin : "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: "[Aujourd'hui à] LT", + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L' + }, + relativeTime : { + future : "dans %s", + past : "il y a %s", + s : "quelques secondes", + m : "une minute", + mm : "%d minutes", + h : "une heure", + hh : "%d heures", + d : "un jour", + dd : "%d jours", + M : "un mois", + MM : "%d mois", + y : "un an", + yy : "%d ans" + }, + ordinal : function (number) { + return number + (number === 1 ? 'er' : ''); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/gl.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/gl.js new file mode 100755 index 0000000..8b14127 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/gl.js @@ -0,0 +1,71 @@ +// moment.js language configuration +// language : galician (gl) +// author : Juan G. Hurtado : https://github.com/juanghurtado + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('gl', { + months : "Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"), + monthsShort : "Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.".split("_"), + weekdays : "Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado".split("_"), + weekdaysShort : "Dom._Lun._Mar._Mér._Xov._Ven._Sáb.".split("_"), + weekdaysMin : "Do_Lu_Ma_Mé_Xo_Ve_Sá".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay : function () { + return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + }, + nextDay : function () { + return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + }, + nextWeek : function () { + return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + }, + lastDay : function () { + return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT'; + }, + lastWeek : function () { + return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : function (str) { + if (str === "uns segundos") { + return "nuns segundos"; + } + return "en " + str; + }, + past : "hai %s", + s : "uns segundos", + m : "un minuto", + mm : "%d minutos", + h : "unha hora", + hh : "%d horas", + d : "un día", + dd : "%d días", + M : "un mes", + MM : "%d meses", + y : "un ano", + yy : "%d anos" + }, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/he.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/he.js new file mode 100755 index 0000000..b85dbe8 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/he.js @@ -0,0 +1,77 @@ +// moment.js language configuration +// language : Hebrew (he) +// author : Tomer Cohen : https://github.com/tomer +// author : Moshe Simantov : https://github.com/DevelopmentIL +// author : Tal Ater : https://github.com/TalAter + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('he', { + months : "ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"), + monthsShort : "ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"), + weekdays : "ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"), + weekdaysShort : "א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"), + weekdaysMin : "א_ב_ג_ד_ה_ו_ש".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D [ב]MMMM YYYY", + LLL : "D [ב]MMMM YYYY LT", + LLLL : "dddd, D [ב]MMMM YYYY LT", + l : "D/M/YYYY", + ll : "D MMM YYYY", + lll : "D MMM YYYY LT", + llll : "ddd, D MMM YYYY LT" + }, + calendar : { + sameDay : '[היום ב־]LT', + nextDay : '[מחר ב־]LT', + nextWeek : 'dddd [בשעה] LT', + lastDay : '[אתמול ב־]LT', + lastWeek : '[ביום] dddd [האחרון בשעה] LT', + sameElse : 'L' + }, + relativeTime : { + future : "בעוד %s", + past : "לפני %s", + s : "מספר שניות", + m : "דקה", + mm : "%d דקות", + h : "שעה", + hh : function (number) { + if (number === 2) { + return "שעתיים"; + } + return number + " שעות"; + }, + d : "יום", + dd : function (number) { + if (number === 2) { + return "יומיים"; + } + return number + " ימים"; + }, + M : "חודש", + MM : function (number) { + if (number === 2) { + return "חודשיים"; + } + return number + " חודשים"; + }, + y : "שנה", + yy : function (number) { + if (number === 2) { + return "שנתיים"; + } + return number + " שנים"; + } + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/hi.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/hi.js new file mode 100755 index 0000000..8e6e99c --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/hi.js @@ -0,0 +1,105 @@ +// moment.js language configuration +// language : hindi (hi) +// author : Mayank Singhal : https://github.com/mayanksinghal + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' + }, + numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' + }; + + return moment.lang('hi', { + months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split("_"), + monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split("_"), + weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split("_"), + weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split("_"), + weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split("_"), + longDateFormat : { + LT : "A h:mm बजे", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY, LT", + LLLL : "dddd, D MMMM YYYY, LT" + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[कल] LT', + nextWeek : 'dddd, LT', + lastDay : '[कल] LT', + lastWeek : '[पिछले] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s में", + past : "%s पहले", + s : "कुछ ही क्षण", + m : "एक मिनट", + mm : "%d मिनट", + h : "एक घंटा", + hh : "%d घंटे", + d : "एक दिन", + dd : "%d दिन", + M : "एक महीने", + MM : "%d महीने", + y : "एक वर्ष", + yy : "%d वर्ष" + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + // Hindi notation for meridiems are quite fuzzy in practice. While there exists + // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return "रात"; + } else if (hour < 10) { + return "सुबह"; + } else if (hour < 17) { + return "दोपहर"; + } else if (hour < 20) { + return "शाम"; + } else { + return "रात"; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/hr.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/hr.js new file mode 100755 index 0000000..2e3bf11 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/hr.js @@ -0,0 +1,140 @@ +// moment.js language configuration +// language : hrvatski (hr) +// author : Bojan Marković : https://github.com/bmarkovic + +// based on (sl) translation by Robert Sedovšek + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + + function translate(number, withoutSuffix, key) { + var result = number + " "; + switch (key) { + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mjesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'mjeseca'; + } else { + result += 'mjeseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; + } + } + + return moment.lang('hr', { + months : "sječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_"), + monthsShort : "sje._vel._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"), + weekdays : "nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"), + weekdaysShort : "ned._pon._uto._sri._čet._pet._sub.".split("_"), + weekdaysMin : "ne_po_ut_sr_če_pe_su".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD. MM. YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd, D. MMMM YYYY LT" + }, + calendar : { + sameDay : '[danas u] LT', + nextDay : '[sutra u] LT', + + nextWeek : function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[jučer u] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : "za %s", + past : "prije %s", + s : "par sekundi", + m : translate, + mm : translate, + h : translate, + hh : translate, + d : "dan", + dd : translate, + M : "mjesec", + MM : translate, + y : "godinu", + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/hu.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/hu.js new file mode 100755 index 0000000..4d84ebd --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/hu.js @@ -0,0 +1,98 @@ +// moment.js language configuration +// language : hungarian (hu) +// author : Adam Brunner : https://github.com/adambrunner + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); + + function translate(number, withoutSuffix, key, isFuture) { + var num = number, + suffix; + + switch (key) { + case 's': + return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce'; + case 'm': + return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); + case 'mm': + return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); + case 'h': + return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); + case 'hh': + return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); + case 'd': + return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); + case 'dd': + return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); + case 'M': + return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); + case 'MM': + return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); + case 'y': + return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); + case 'yy': + return num + (isFuture || withoutSuffix ? ' év' : ' éve'); + } + + return ''; + } + + function week(isFuture) { + return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]'; + } + + return moment.lang('hu', { + months : "január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"), + monthsShort : "jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"), + weekdays : "vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"), + weekdaysShort : "vas_hét_kedd_sze_csüt_pén_szo".split("_"), + weekdaysMin : "v_h_k_sze_cs_p_szo".split("_"), + longDateFormat : { + LT : "H:mm", + L : "YYYY.MM.DD.", + LL : "YYYY. MMMM D.", + LLL : "YYYY. MMMM D., LT", + LLLL : "YYYY. MMMM D., dddd LT" + }, + calendar : { + sameDay : '[ma] LT[-kor]', + nextDay : '[holnap] LT[-kor]', + nextWeek : function () { + return week.call(this, true); + }, + lastDay : '[tegnap] LT[-kor]', + lastWeek : function () { + return week.call(this, false); + }, + sameElse : 'L' + }, + relativeTime : { + future : "%s múlva", + past : "%s", + s : translate, + m : translate, + mm : translate, + h : translate, + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/hy-am.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/hy-am.js new file mode 100755 index 0000000..951655b --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/hy-am.js @@ -0,0 +1,113 @@ +// moment.js language configuration +// language : Armenian (hy-am) +// author : Armendarabyan : https://github.com/armendarabyan + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + + function monthsCaseReplace(m, format) { + var months = { + 'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'), + 'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_') + }, + + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + + return months[nounCase][m.month()]; + } + + function monthsShortCaseReplace(m, format) { + var monthsShort = 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'); + + return monthsShort[m.month()]; + } + + function weekdaysCaseReplace(m, format) { + var weekdays = 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'); + + return weekdays[m.day()]; + } + + return moment.lang('hy-am', { + months : monthsCaseReplace, + monthsShort : monthsShortCaseReplace, + weekdays : weekdaysCaseReplace, + weekdaysShort : "կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"), + weekdaysMin : "կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD.MM.YYYY", + LL : "D MMMM YYYY թ.", + LLL : "D MMMM YYYY թ., LT", + LLLL : "dddd, D MMMM YYYY թ., LT" + }, + calendar : { + sameDay: '[այսօր] LT', + nextDay: '[վաղը] LT', + lastDay: '[երեկ] LT', + nextWeek: function () { + return 'dddd [օրը ժամը] LT'; + }, + lastWeek: function () { + return '[անցած] dddd [օրը ժամը] LT'; + }, + sameElse: 'L' + }, + relativeTime : { + future : "%s հետո", + past : "%s առաջ", + s : "մի քանի վայրկյան", + m : "րոպե", + mm : "%d րոպե", + h : "ժամ", + hh : "%d ժամ", + d : "օր", + dd : "%d օր", + M : "ամիս", + MM : "%d ամիս", + y : "տարի", + yy : "%d տարի" + }, + + meridiem : function (hour) { + if (hour < 4) { + return "գիշերվա"; + } else if (hour < 12) { + return "առավոտվա"; + } else if (hour < 17) { + return "ցերեկվա"; + } else { + return "երեկոյան"; + } + }, + + ordinal: function (number, period) { + switch (period) { + case 'DDD': + case 'w': + case 'W': + case 'DDDo': + if (number === 1) { + return number + '-ին'; + } + return number + '-րդ'; + default: + return number; + } + }, + + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/id.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/id.js new file mode 100755 index 0000000..f186280 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/id.js @@ -0,0 +1,67 @@ +// moment.js language configuration +// language : Bahasa Indonesia (id) +// author : Mohammad Satrio Utomo : https://github.com/tyok +// reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('id', { + months : "Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"), + monthsShort : "Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"), + weekdays : "Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"), + weekdaysShort : "Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"), + weekdaysMin : "Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"), + longDateFormat : { + LT : "HH.mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY [pukul] LT", + LLLL : "dddd, D MMMM YYYY [pukul] LT" + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'siang'; + } else if (hours < 19) { + return 'sore'; + } else { + return 'malam'; + } + }, + calendar : { + sameDay : '[Hari ini pukul] LT', + nextDay : '[Besok pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kemarin pukul] LT', + lastWeek : 'dddd [lalu pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : "dalam %s", + past : "%s yang lalu", + s : "beberapa detik", + m : "semenit", + mm : "%d menit", + h : "sejam", + hh : "%d jam", + d : "sehari", + dd : "%d hari", + M : "sebulan", + MM : "%d bulan", + y : "setahun", + yy : "%d tahun" + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/is.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/is.js new file mode 100755 index 0000000..5b6b2a8 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/is.js @@ -0,0 +1,124 @@ +// moment.js language configuration +// language : icelandic (is) +// author : Hinrik Örn Sigurðsson : https://github.com/hinrik + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + function plural(n) { + if (n % 100 === 11) { + return true; + } else if (n % 10 === 1) { + return false; + } + return true; + } + + function translate(number, withoutSuffix, key, isFuture) { + var result = number + " "; + switch (key) { + case 's': + return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; + case 'm': + return withoutSuffix ? 'mínúta' : 'mínútu'; + case 'mm': + if (plural(number)) { + return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum'); + } else if (withoutSuffix) { + return result + 'mínúta'; + } + return result + 'mínútu'; + case 'hh': + if (plural(number)) { + return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum'); + } + return result + 'klukkustund'; + case 'd': + if (withoutSuffix) { + return 'dagur'; + } + return isFuture ? 'dag' : 'degi'; + case 'dd': + if (plural(number)) { + if (withoutSuffix) { + return result + 'dagar'; + } + return result + (isFuture ? 'daga' : 'dögum'); + } else if (withoutSuffix) { + return result + 'dagur'; + } + return result + (isFuture ? 'dag' : 'degi'); + case 'M': + if (withoutSuffix) { + return 'mánuður'; + } + return isFuture ? 'mánuð' : 'mánuði'; + case 'MM': + if (plural(number)) { + if (withoutSuffix) { + return result + 'mánuðir'; + } + return result + (isFuture ? 'mánuði' : 'mánuðum'); + } else if (withoutSuffix) { + return result + 'mánuður'; + } + return result + (isFuture ? 'mánuð' : 'mánuði'); + case 'y': + return withoutSuffix || isFuture ? 'ár' : 'ári'; + case 'yy': + if (plural(number)) { + return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); + } + return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); + } + } + + return moment.lang('is', { + months : "janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"), + monthsShort : "jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"), + weekdays : "sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"), + weekdaysShort : "sun_mán_þri_mið_fim_fös_lau".split("_"), + weekdaysMin : "Su_Má_Þr_Mi_Fi_Fö_La".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD/MM/YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY [kl.] LT", + LLLL : "dddd, D. MMMM YYYY [kl.] LT" + }, + calendar : { + sameDay : '[í dag kl.] LT', + nextDay : '[á morgun kl.] LT', + nextWeek : 'dddd [kl.] LT', + lastDay : '[í gær kl.] LT', + lastWeek : '[síðasta] dddd [kl.] LT', + sameElse : 'L' + }, + relativeTime : { + future : "eftir %s", + past : "fyrir %s síðan", + s : translate, + m : translate, + mm : translate, + h : "klukkustund", + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/it.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/it.js new file mode 100755 index 0000000..84b7698 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/it.js @@ -0,0 +1,59 @@ +// moment.js language configuration +// language : italian (it) +// author : Lorenzo : https://github.com/aliem +// author: Mattia Larentis: https://github.com/nostalgiaz + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('it', { + months : "Gennaio_Febbraio_Marzo_Aprile_Maggio_Giugno_Luglio_Agosto_Settembre_Ottobre_Novembre_Dicembre".split("_"), + monthsShort : "Gen_Feb_Mar_Apr_Mag_Giu_Lug_Ago_Set_Ott_Nov_Dic".split("_"), + weekdays : "Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"), + weekdaysShort : "Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"), + weekdaysMin : "D_L_Ma_Me_G_V_S".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay: '[Oggi alle] LT', + nextDay: '[Domani alle] LT', + nextWeek: 'dddd [alle] LT', + lastDay: '[Ieri alle] LT', + lastWeek: '[lo scorso] dddd [alle] LT', + sameElse: 'L' + }, + relativeTime : { + future : function (s) { + return ((/^[0-9].+$/).test(s) ? "tra" : "in") + " " + s; + }, + past : "%s fa", + s : "alcuni secondi", + m : "un minuto", + mm : "%d minuti", + h : "un'ora", + hh : "%d ore", + d : "un giorno", + dd : "%d giorni", + M : "un mese", + MM : "%d mesi", + y : "un anno", + yy : "%d anni" + }, + ordinal: '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/ja.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/ja.js new file mode 100755 index 0000000..9cd7e9e --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/ja.js @@ -0,0 +1,58 @@ +// moment.js language configuration +// language : japanese (ja) +// author : LI Long : https://github.com/baryon + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('ja', { + months : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), + monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), + weekdays : "日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"), + weekdaysShort : "日_月_火_水_木_金_土".split("_"), + weekdaysMin : "日_月_火_水_木_金_土".split("_"), + longDateFormat : { + LT : "Ah時m分", + L : "YYYY/MM/DD", + LL : "YYYY年M月D日", + LLL : "YYYY年M月D日LT", + LLLL : "YYYY年M月D日LT dddd" + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return "午前"; + } else { + return "午後"; + } + }, + calendar : { + sameDay : '[今日] LT', + nextDay : '[明日] LT', + nextWeek : '[来週]dddd LT', + lastDay : '[昨日] LT', + lastWeek : '[前週]dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s後", + past : "%s前", + s : "数秒", + m : "1分", + mm : "%d分", + h : "1時間", + hh : "%d時間", + d : "1日", + dd : "%d日", + M : "1ヶ月", + MM : "%dヶ月", + y : "1年", + yy : "%d年" + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/ka.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/ka.js new file mode 100755 index 0000000..0cebdaa --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/ka.js @@ -0,0 +1,108 @@ +// moment.js language configuration +// language : Georgian (ka) +// author : Irakli Janiashvili : https://github.com/irakli-janiashvili + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + + function monthsCaseReplace(m, format) { + var months = { + 'nominative': 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), + 'accusative': 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_') + }, + + nounCase = (/D[oD] *MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + + return months[nounCase][m.month()]; + } + + function weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), + 'accusative': 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_') + }, + + nounCase = (/(წინა|შემდეგ)/).test(format) ? + 'accusative' : + 'nominative'; + + return weekdays[nounCase][m.day()]; + } + + return moment.lang('ka', { + months : monthsCaseReplace, + monthsShort : "იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"), + weekdays : weekdaysCaseReplace, + weekdaysShort : "კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"), + weekdaysMin : "კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"), + longDateFormat : { + LT : "h:mm A", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay : '[დღეს] LT[-ზე]', + nextDay : '[ხვალ] LT[-ზე]', + lastDay : '[გუშინ] LT[-ზე]', + nextWeek : '[შემდეგ] dddd LT[-ზე]', + lastWeek : '[წინა] dddd LT-ზე', + sameElse : 'L' + }, + relativeTime : { + future : function (s) { + return (/(წამი|წუთი|საათი|წელი)/).test(s) ? + s.replace(/ი$/, "ში") : + s + "ში"; + }, + past : function (s) { + if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) { + return s.replace(/(ი|ე)$/, "ის წინ"); + } + if ((/წელი/).test(s)) { + return s.replace(/წელი$/, "წლის წინ"); + } + }, + s : "რამდენიმე წამი", + m : "წუთი", + mm : "%d წუთი", + h : "საათი", + hh : "%d საათი", + d : "დღე", + dd : "%d დღე", + M : "თვე", + MM : "%d თვე", + y : "წელი", + yy : "%d წელი" + }, + ordinal : function (number) { + if (number === 0) { + return number; + } + + if (number === 1) { + return number + "-ლი"; + } + + if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) { + return "მე-" + number; + } + + return number + "-ე"; + }, + week : { + dow : 1, + doy : 7 + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/ko.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/ko.js new file mode 100755 index 0000000..3b469df --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/ko.js @@ -0,0 +1,63 @@ +// moment.js language configuration +// language : korean (ko) +// +// authors +// +// - Kyungwook, Park : https://github.com/kyungw00k +// - Jeeeyul Lee +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('ko', { + months : "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"), + monthsShort : "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"), + weekdays : "일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"), + weekdaysShort : "일_월_화_수_목_금_토".split("_"), + weekdaysMin : "일_월_화_수_목_금_토".split("_"), + longDateFormat : { + LT : "A h시 mm분", + L : "YYYY.MM.DD", + LL : "YYYY년 MMMM D일", + LLL : "YYYY년 MMMM D일 LT", + LLLL : "YYYY년 MMMM D일 dddd LT" + }, + meridiem : function (hour, minute, isUpper) { + return hour < 12 ? '오전' : '오후'; + }, + calendar : { + sameDay : '오늘 LT', + nextDay : '내일 LT', + nextWeek : 'dddd LT', + lastDay : '어제 LT', + lastWeek : '지난주 dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s 후", + past : "%s 전", + s : "몇초", + ss : "%d초", + m : "일분", + mm : "%d분", + h : "한시간", + hh : "%d시간", + d : "하루", + dd : "%d일", + M : "한달", + MM : "%d달", + y : "일년", + yy : "%d년" + }, + ordinal : '%d일', + meridiemParse : /(오전|오후)/, + isPM : function (token) { + return token === "오후"; + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/lb.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/lb.js new file mode 100755 index 0000000..946ba13 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/lb.js @@ -0,0 +1,160 @@ +// moment.js language configuration +// language : Luxembourgish (lb) +// author : mweimerskirch : https://github.com/mweimerskirch + +// Note: Luxembourgish has a very particular phonological rule ("Eifeler Regel") that causes the +// deletion of the final "n" in certain contexts. That's what the "eifelerRegelAppliesToWeekday" +// and "eifelerRegelAppliesToNumber" methods are meant for + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eng Minutt', 'enger Minutt'], + 'h': ['eng Stonn', 'enger Stonn'], + 'd': ['een Dag', 'engem Dag'], + 'dd': [number + ' Deeg', number + ' Deeg'], + 'M': ['ee Mount', 'engem Mount'], + 'MM': [number + ' Méint', number + ' Méint'], + 'y': ['ee Joer', 'engem Joer'], + 'yy': [number + ' Joer', number + ' Joer'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; + } + + function processFutureTime(string) { + var number = string.substr(0, string.indexOf(' ')); + if (eifelerRegelAppliesToNumber(number)) { + return "a " + string; + } + return "an " + string; + } + + function processPastTime(string) { + var number = string.substr(0, string.indexOf(' ')); + if (eifelerRegelAppliesToNumber(number)) { + return "viru " + string; + } + return "virun " + string; + } + + function processLastWeek(string1) { + var weekday = this.format('d'); + if (eifelerRegelAppliesToWeekday(weekday)) { + return '[Leschte] dddd [um] LT'; + } + return '[Leschten] dddd [um] LT'; + } + + /** + * Returns true if the word before the given week day loses the "-n" ending. + * e.g. "Leschten Dënschdeg" but "Leschte Méindeg" + * + * @param weekday {integer} + * @returns {boolean} + */ + function eifelerRegelAppliesToWeekday(weekday) { + weekday = parseInt(weekday, 10); + switch (weekday) { + case 0: // Sonndeg + case 1: // Méindeg + case 3: // Mëttwoch + case 5: // Freideg + case 6: // Samschdeg + return true; + default: // 2 Dënschdeg, 4 Donneschdeg + return false; + } + } + + /** + * Returns true if the word before the given number loses the "-n" ending. + * e.g. "an 10 Deeg" but "a 5 Deeg" + * + * @param number {integer} + * @returns {boolean} + */ + function eifelerRegelAppliesToNumber(number) { + number = parseInt(number, 10); + if (isNaN(number)) { + return false; + } + if (number < 0) { + // Negative Number --> always true + return true; + } else if (number < 10) { + // Only 1 digit + if (4 <= number && number <= 7) { + return true; + } + return false; + } else if (number < 100) { + // 2 digits + var lastDigit = number % 10, firstDigit = number / 10; + if (lastDigit === 0) { + return eifelerRegelAppliesToNumber(firstDigit); + } + return eifelerRegelAppliesToNumber(lastDigit); + } else if (number < 10000) { + // 3 or 4 digits --> recursively check first digit + while (number >= 10) { + number = number / 10; + } + return eifelerRegelAppliesToNumber(number); + } else { + // Anything larger than 4 digits: recursively check first n-3 digits + number = number / 1000; + return eifelerRegelAppliesToNumber(number); + } + } + + return moment.lang('lb', { + months: "Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"), + monthsShort: "Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"), + weekdays: "Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"), + weekdaysShort: "So._Mé._Dë._Më._Do._Fr._Sa.".split("_"), + weekdaysMin: "So_Mé_Dë_Më_Do_Fr_Sa".split("_"), + longDateFormat: { + LT: "H:mm [Auer]", + L: "DD.MM.YYYY", + LL: "D. MMMM YYYY", + LLL: "D. MMMM YYYY LT", + LLLL: "dddd, D. MMMM YYYY LT" + }, + calendar: { + sameDay: "[Haut um] LT", + sameElse: "L", + nextDay: '[Muer um] LT', + nextWeek: 'dddd [um] LT', + lastDay: '[Gëschter um] LT', + lastWeek: processLastWeek + }, + relativeTime: { + future: processFutureTime, + past: processPastTime, + s: "e puer Sekonnen", + m: processRelativeTime, + mm: "%d Minutten", + h: processRelativeTime, + hh: "%d Stonnen", + d: processRelativeTime, + dd: processRelativeTime, + M: processRelativeTime, + MM: processRelativeTime, + y: processRelativeTime, + yy: processRelativeTime + }, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/lt.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/lt.js new file mode 100755 index 0000000..3377375 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/lt.js @@ -0,0 +1,118 @@ +// moment.js language configuration +// language : Lithuanian (lt) +// author : Mindaugas Mozūras : https://github.com/mmozuras + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var units = { + "m" : "minutė_minutės_minutę", + "mm": "minutės_minučių_minutes", + "h" : "valanda_valandos_valandą", + "hh": "valandos_valandų_valandas", + "d" : "diena_dienos_dieną", + "dd": "dienos_dienų_dienas", + "M" : "mėnuo_mėnesio_mėnesį", + "MM": "mėnesiai_mėnesių_mėnesius", + "y" : "metai_metų_metus", + "yy": "metai_metų_metus" + }, + weekDays = "pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis_sekmadienis".split("_"); + + function translateSeconds(number, withoutSuffix, key, isFuture) { + if (withoutSuffix) { + return "kelios sekundės"; + } else { + return isFuture ? "kelių sekundžių" : "kelias sekundes"; + } + } + + function translateSingular(number, withoutSuffix, key, isFuture) { + return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]); + } + + function special(number) { + return number % 10 === 0 || (number > 10 && number < 20); + } + + function forms(key) { + return units[key].split("_"); + } + + function translate(number, withoutSuffix, key, isFuture) { + var result = number + " "; + if (number === 1) { + return result + translateSingular(number, withoutSuffix, key[0], isFuture); + } else if (withoutSuffix) { + return result + (special(number) ? forms(key)[1] : forms(key)[0]); + } else { + if (isFuture) { + return result + forms(key)[1]; + } else { + return result + (special(number) ? forms(key)[1] : forms(key)[2]); + } + } + } + + function relativeWeekDay(moment, format) { + var nominative = format.indexOf('dddd HH:mm') === -1, + weekDay = weekDays[moment.weekday()]; + + return nominative ? weekDay : weekDay.substring(0, weekDay.length - 2) + "į"; + } + + return moment.lang("lt", { + months : "sausio_vasario_kovo_balandžio_gegužės_biržėlio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"), + monthsShort : "sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"), + weekdays : relativeWeekDay, + weekdaysShort : "Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"), + weekdaysMin : "S_P_A_T_K_Pn_Š".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "YYYY-MM-DD", + LL : "YYYY [m.] MMMM D [d.]", + LLL : "YYYY [m.] MMMM D [d.], LT [val.]", + LLLL : "YYYY [m.] MMMM D [d.], dddd, LT [val.]", + l : "YYYY-MM-DD", + ll : "YYYY [m.] MMMM D [d.]", + lll : "YYYY [m.] MMMM D [d.], LT [val.]", + llll : "YYYY [m.] MMMM D [d.], ddd, LT [val.]" + }, + calendar : { + sameDay : "[Šiandien] LT", + nextDay : "[Rytoj] LT", + nextWeek : "dddd LT", + lastDay : "[Vakar] LT", + lastWeek : "[Praėjusį] dddd LT", + sameElse : "L" + }, + relativeTime : { + future : "po %s", + past : "prieš %s", + s : translateSeconds, + m : translateSingular, + mm : translate, + h : translateSingular, + hh : translate, + d : translateSingular, + dd : translate, + M : translateSingular, + MM : translate, + y : translateSingular, + yy : translate + }, + ordinal : function (number) { + return number + '-oji'; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/lv.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/lv.js new file mode 100755 index 0000000..ffe25cf --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/lv.js @@ -0,0 +1,77 @@ +// moment.js language configuration +// language : latvian (lv) +// author : Kristaps Karlsons : https://github.com/skakri + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var units = { + 'mm': 'minūti_minūtes_minūte_minūtes', + 'hh': 'stundu_stundas_stunda_stundas', + 'dd': 'dienu_dienas_diena_dienas', + 'MM': 'mēnesi_mēnešus_mēnesis_mēneši', + 'yy': 'gadu_gadus_gads_gadi' + }; + + function format(word, number, withoutSuffix) { + var forms = word.split('_'); + if (withoutSuffix) { + return number % 10 === 1 && number !== 11 ? forms[2] : forms[3]; + } else { + return number % 10 === 1 && number !== 11 ? forms[0] : forms[1]; + } + } + + function relativeTimeWithPlural(number, withoutSuffix, key) { + return number + ' ' + format(units[key], number, withoutSuffix); + } + + return moment.lang('lv', { + months : "janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"), + monthsShort : "jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"), + weekdays : "svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"), + weekdaysShort : "Sv_P_O_T_C_Pk_S".split("_"), + weekdaysMin : "Sv_P_O_T_C_Pk_S".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD.MM.YYYY", + LL : "YYYY. [gada] D. MMMM", + LLL : "YYYY. [gada] D. MMMM, LT", + LLLL : "YYYY. [gada] D. MMMM, dddd, LT" + }, + calendar : { + sameDay : '[Šodien pulksten] LT', + nextDay : '[Rīt pulksten] LT', + nextWeek : 'dddd [pulksten] LT', + lastDay : '[Vakar pulksten] LT', + lastWeek : '[Pagājušā] dddd [pulksten] LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s vēlāk", + past : "%s agrāk", + s : "dažas sekundes", + m : "minūti", + mm : relativeTimeWithPlural, + h : "stundu", + hh : relativeTimeWithPlural, + d : "dienu", + dd : relativeTimeWithPlural, + M : "mēnesi", + MM : relativeTimeWithPlural, + y : "gadu", + yy : relativeTimeWithPlural + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/mk.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/mk.js new file mode 100755 index 0000000..5f272fa --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/mk.js @@ -0,0 +1,86 @@ +// moment.js language configuration +// language : macedonian (mk) +// author : Borislav Mickov : https://github.com/B0k0 + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('mk', { + months : "јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"), + monthsShort : "јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"), + weekdays : "недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"), + weekdaysShort : "нед_пон_вто_сре_чет_пет_саб".split("_"), + weekdaysMin : "нe_пo_вт_ср_че_пе_сa".split("_"), + longDateFormat : { + LT : "H:mm", + L : "D.MM.YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay : '[Денес во] LT', + nextDay : '[Утре во] LT', + nextWeek : 'dddd [во] LT', + lastDay : '[Вчера во] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + case 6: + return '[Во изминатата] dddd [во] LT'; + case 1: + case 2: + case 4: + case 5: + return '[Во изминатиот] dddd [во] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : "после %s", + past : "пред %s", + s : "неколку секунди", + m : "минута", + mm : "%d минути", + h : "час", + hh : "%d часа", + d : "ден", + dd : "%d дена", + M : "месец", + MM : "%d месеци", + y : "година", + yy : "%d години" + }, + ordinal : function (number) { + var lastDigit = number % 10, + last2Digits = number % 100; + if (number === 0) { + return number + '-ев'; + } else if (last2Digits === 0) { + return number + '-ен'; + } else if (last2Digits > 10 && last2Digits < 20) { + return number + '-ти'; + } else if (lastDigit === 1) { + return number + '-ви'; + } else if (lastDigit === 2) { + return number + '-ри'; + } else if (lastDigit === 7 || lastDigit === 8) { + return number + '-ми'; + } else { + return number + '-ти'; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/ml.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/ml.js new file mode 100755 index 0000000..cc7db9a --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/ml.js @@ -0,0 +1,64 @@ +// moment.js language configuration +// language : malayalam (ml) +// author : Floyd Pink : https://github.com/floydpink + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('ml', { + months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split("_"), + monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split("_"), + weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split("_"), + weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split("_"), + weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split("_"), + longDateFormat : { + LT : "A h:mm -നു", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY, LT", + LLLL : "dddd, D MMMM YYYY, LT" + }, + calendar : { + sameDay : '[ഇന്ന്] LT', + nextDay : '[നാളെ] LT', + nextWeek : 'dddd, LT', + lastDay : '[ഇന്നലെ] LT', + lastWeek : '[കഴിഞ്ഞ] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s കഴിഞ്ഞ്", + past : "%s മുൻപ്", + s : "അൽപ നിമിഷങ്ങൾ", + m : "ഒരു മിനിറ്റ്", + mm : "%d മിനിറ്റ്", + h : "ഒരു മണിക്കൂർ", + hh : "%d മണിക്കൂർ", + d : "ഒരു ദിവസം", + dd : "%d ദിവസം", + M : "ഒരു മാസം", + MM : "%d മാസം", + y : "ഒരു വർഷം", + yy : "%d വർഷം" + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return "രാത്രി"; + } else if (hour < 12) { + return "രാവിലെ"; + } else if (hour < 17) { + return "ഉച്ച കഴിഞ്ഞ്"; + } else if (hour < 20) { + return "വൈകുന്നേരം"; + } else { + return "രാത്രി"; + } + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/mr.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/mr.js new file mode 100755 index 0000000..0d1adfd --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/mr.js @@ -0,0 +1,104 @@ +// moment.js language configuration +// language : Marathi (mr) +// author : Harshad Kale : https://github.com/kalehv + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' + }, + numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' + }; + + return moment.lang('mr', { + months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split("_"), + monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split("_"), + weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split("_"), + weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split("_"), + weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split("_"), + longDateFormat : { + LT : "A h:mm वाजता", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY, LT", + LLLL : "dddd, D MMMM YYYY, LT" + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[उद्या] LT', + nextWeek : 'dddd, LT', + lastDay : '[काल] LT', + lastWeek: '[मागील] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s नंतर", + past : "%s पूर्वी", + s : "सेकंद", + m: "एक मिनिट", + mm: "%d मिनिटे", + h : "एक तास", + hh : "%d तास", + d : "एक दिवस", + dd : "%d दिवस", + M : "एक महिना", + MM : "%d महिने", + y : "एक वर्ष", + yy : "%d वर्षे" + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + meridiem: function (hour, minute, isLower) + { + if (hour < 4) { + return "रात्री"; + } else if (hour < 10) { + return "सकाळी"; + } else if (hour < 17) { + return "दुपारी"; + } else if (hour < 20) { + return "सायंकाळी"; + } else { + return "रात्री"; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/ms-my.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/ms-my.js new file mode 100755 index 0000000..501d5aa --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/ms-my.js @@ -0,0 +1,66 @@ +// moment.js language configuration +// language : Bahasa Malaysia (ms-MY) +// author : Weldan Jamili : https://github.com/weldan + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('ms-my', { + months : "Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"), + monthsShort : "Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"), + weekdays : "Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"), + weekdaysShort : "Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"), + weekdaysMin : "Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"), + longDateFormat : { + LT : "HH.mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY [pukul] LT", + LLLL : "dddd, D MMMM YYYY [pukul] LT" + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'tengahari'; + } else if (hours < 19) { + return 'petang'; + } else { + return 'malam'; + } + }, + calendar : { + sameDay : '[Hari ini pukul] LT', + nextDay : '[Esok pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kelmarin pukul] LT', + lastWeek : 'dddd [lepas pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : "dalam %s", + past : "%s yang lepas", + s : "beberapa saat", + m : "seminit", + mm : "%d minit", + h : "sejam", + hh : "%d jam", + d : "sehari", + dd : "%d hari", + M : "sebulan", + MM : "%d bulan", + y : "setahun", + yy : "%d tahun" + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/nb.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/nb.js new file mode 100755 index 0000000..2f652ef --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/nb.js @@ -0,0 +1,57 @@ +// moment.js language configuration +// language : norwegian bokmål (nb) +// authors : Espen Hovlandsdal : https://github.com/rexxars +// Sigurd Gartmann : https://github.com/sigurdga + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('nb', { + months : "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"), + monthsShort : "jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"), + weekdays : "søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"), + weekdaysShort : "sø._ma._ti._on._to._fr._lø.".split("_"), + weekdaysMin : "sø_ma_ti_on_to_fr_lø".split("_"), + longDateFormat : { + LT : "H.mm", + L : "DD.MM.YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY [kl.] LT", + LLLL : "dddd D. MMMM YYYY [kl.] LT" + }, + calendar : { + sameDay: '[i dag kl.] LT', + nextDay: '[i morgen kl.] LT', + nextWeek: 'dddd [kl.] LT', + lastDay: '[i går kl.] LT', + lastWeek: '[forrige] dddd [kl.] LT', + sameElse: 'L' + }, + relativeTime : { + future : "om %s", + past : "for %s siden", + s : "noen sekunder", + m : "ett minutt", + mm : "%d minutter", + h : "en time", + hh : "%d timer", + d : "en dag", + dd : "%d dager", + M : "en måned", + MM : "%d måneder", + y : "ett år", + yy : "%d år" + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/ne.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/ne.js new file mode 100755 index 0000000..1d57b8c --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/ne.js @@ -0,0 +1,105 @@ +// moment.js language configuration +// language : nepali/nepalese +// author : suvash : https://github.com/suvash + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' + }, + numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' + }; + + return moment.lang('ne', { + months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split("_"), + monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split("_"), + weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split("_"), + weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split("_"), + weekdaysMin : 'आइ._सो._मङ्_बु._बि._शु._श.'.split("_"), + longDateFormat : { + LT : "Aको h:mm बजे", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY, LT", + LLLL : "dddd, D MMMM YYYY, LT" + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 3) { + return "राती"; + } else if (hour < 10) { + return "बिहान"; + } else if (hour < 15) { + return "दिउँसो"; + } else if (hour < 18) { + return "बेलुका"; + } else if (hour < 20) { + return "साँझ"; + } else { + return "राती"; + } + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[भोली] LT', + nextWeek : '[आउँदो] dddd[,] LT', + lastDay : '[हिजो] LT', + lastWeek : '[गएको] dddd[,] LT', + sameElse : 'L' + }, + relativeTime : { + future : "%sमा", + past : "%s अगाडी", + s : "केही समय", + m : "एक मिनेट", + mm : "%d मिनेट", + h : "एक घण्टा", + hh : "%d घण्टा", + d : "एक दिन", + dd : "%d दिन", + M : "एक महिना", + MM : "%d महिना", + y : "एक बर्ष", + yy : "%d बर्ष" + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/nl.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/nl.js new file mode 100755 index 0000000..ffd454f --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/nl.js @@ -0,0 +1,67 @@ +// moment.js language configuration +// language : dutch (nl) +// author : Joris Röling : https://github.com/jjupiter + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var monthsShortWithDots = "jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"), + monthsShortWithoutDots = "jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"); + + return moment.lang('nl', { + months : "januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"), + monthsShort : function (m, format) { + if (/-MMM-/.test(format)) { + return monthsShortWithoutDots[m.month()]; + } else { + return monthsShortWithDots[m.month()]; + } + }, + weekdays : "zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"), + weekdaysShort : "zo._ma._di._wo._do._vr._za.".split("_"), + weekdaysMin : "Zo_Ma_Di_Wo_Do_Vr_Za".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD-MM-YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: '[vandaag om] LT', + nextDay: '[morgen om] LT', + nextWeek: 'dddd [om] LT', + lastDay: '[gisteren om] LT', + lastWeek: '[afgelopen] dddd [om] LT', + sameElse: 'L' + }, + relativeTime : { + future : "over %s", + past : "%s geleden", + s : "een paar seconden", + m : "één minuut", + mm : "%d minuten", + h : "één uur", + hh : "%d uur", + d : "één dag", + dd : "%d dagen", + M : "één maand", + MM : "%d maanden", + y : "één jaar", + yy : "%d jaar" + }, + ordinal : function (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/nn.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/nn.js new file mode 100755 index 0000000..f59c415 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/nn.js @@ -0,0 +1,56 @@ +// moment.js language configuration +// language : norwegian nynorsk (nn) +// author : https://github.com/mechuwind + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('nn', { + months : "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"), + monthsShort : "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"), + weekdays : "sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"), + weekdaysShort : "sun_mån_tys_ons_tor_fre_lau".split("_"), + weekdaysMin : "su_må_ty_on_to_fr_lø".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD.MM.YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: '[I dag klokka] LT', + nextDay: '[I morgon klokka] LT', + nextWeek: 'dddd [klokka] LT', + lastDay: '[I går klokka] LT', + lastWeek: '[Føregående] dddd [klokka] LT', + sameElse: 'L' + }, + relativeTime : { + future : "om %s", + past : "for %s siden", + s : "noen sekund", + m : "ett minutt", + mm : "%d minutt", + h : "en time", + hh : "%d timar", + d : "en dag", + dd : "%d dagar", + M : "en månad", + MM : "%d månader", + y : "ett år", + yy : "%d år" + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/pl.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/pl.js new file mode 100755 index 0000000..97770d2 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/pl.js @@ -0,0 +1,98 @@ +// moment.js language configuration +// language : polish (pl) +// author : Rafal Hirsz : https://github.com/evoL + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var monthsNominative = "styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"), + monthsSubjective = "stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"); + + function plural(n) { + return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1); + } + + function translate(number, withoutSuffix, key) { + var result = number + " "; + switch (key) { + case 'm': + return withoutSuffix ? 'minuta' : 'minutę'; + case 'mm': + return result + (plural(number) ? 'minuty' : 'minut'); + case 'h': + return withoutSuffix ? 'godzina' : 'godzinę'; + case 'hh': + return result + (plural(number) ? 'godziny' : 'godzin'); + case 'MM': + return result + (plural(number) ? 'miesiące' : 'miesięcy'); + case 'yy': + return result + (plural(number) ? 'lata' : 'lat'); + } + } + + return moment.lang('pl', { + months : function (momentToFormat, format) { + if (/D MMMM/.test(format)) { + return monthsSubjective[momentToFormat.month()]; + } else { + return monthsNominative[momentToFormat.month()]; + } + }, + monthsShort : "sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"), + weekdays : "niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"), + weekdaysShort : "nie_pon_wt_śr_czw_pt_sb".split("_"), + weekdaysMin : "N_Pn_Wt_Śr_Cz_Pt_So".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD.MM.YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay: '[Dziś o] LT', + nextDay: '[Jutro o] LT', + nextWeek: '[W] dddd [o] LT', + lastDay: '[Wczoraj o] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[W zeszłą niedzielę o] LT'; + case 3: + return '[W zeszłą środę o] LT'; + case 6: + return '[W zeszłą sobotę o] LT'; + default: + return '[W zeszły] dddd [o] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : "za %s", + past : "%s temu", + s : "kilka sekund", + m : translate, + mm : translate, + h : translate, + hh : translate, + d : "1 dzień", + dd : '%d dni', + M : "miesiąc", + MM : translate, + y : "rok", + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/pt-br.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/pt-br.js new file mode 100755 index 0000000..babce09 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/pt-br.js @@ -0,0 +1,56 @@ +// moment.js language configuration +// language : brazilian portuguese (pt-br) +// author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('pt-br', { + months : "Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"), + monthsShort : "Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"), + weekdays : "Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"), + weekdaysShort : "Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"), + weekdaysMin : "Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D [de] MMMM [de] YYYY", + LLL : "D [de] MMMM [de] YYYY [às] LT", + LLLL : "dddd, D [de] MMMM [de] YYYY [às] LT" + }, + calendar : { + sameDay: '[Hoje às] LT', + nextDay: '[Amanhã às] LT', + nextWeek: 'dddd [às] LT', + lastDay: '[Ontem às] LT', + lastWeek: function () { + return (this.day() === 0 || this.day() === 6) ? + '[Último] dddd [às] LT' : // Saturday + Sunday + '[Última] dddd [às] LT'; // Monday - Friday + }, + sameElse: 'L' + }, + relativeTime : { + future : "em %s", + past : "%s atrás", + s : "segundos", + m : "um minuto", + mm : "%d minutos", + h : "uma hora", + hh : "%d horas", + d : "um dia", + dd : "%d dias", + M : "um mês", + MM : "%d meses", + y : "um ano", + yy : "%d anos" + }, + ordinal : '%dº' + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/pt.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/pt.js new file mode 100755 index 0000000..7c1f2b5 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/pt.js @@ -0,0 +1,60 @@ +// moment.js language configuration +// language : portuguese (pt) +// author : Jefferson : https://github.com/jalex79 + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('pt', { + months : "Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"), + monthsShort : "Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"), + weekdays : "Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"), + weekdaysShort : "Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"), + weekdaysMin : "Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D [de] MMMM [de] YYYY", + LLL : "D [de] MMMM [de] YYYY LT", + LLLL : "dddd, D [de] MMMM [de] YYYY LT" + }, + calendar : { + sameDay: '[Hoje às] LT', + nextDay: '[Amanhã às] LT', + nextWeek: 'dddd [às] LT', + lastDay: '[Ontem às] LT', + lastWeek: function () { + return (this.day() === 0 || this.day() === 6) ? + '[Último] dddd [às] LT' : // Saturday + Sunday + '[Última] dddd [às] LT'; // Monday - Friday + }, + sameElse: 'L' + }, + relativeTime : { + future : "em %s", + past : "%s atrás", + s : "segundos", + m : "um minuto", + mm : "%d minutos", + h : "uma hora", + hh : "%d horas", + d : "um dia", + dd : "%d dias", + M : "um mês", + MM : "%d meses", + y : "um ano", + yy : "%d anos" + }, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/ro.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/ro.js new file mode 100755 index 0000000..fc27509 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/ro.js @@ -0,0 +1,72 @@ +// moment.js language configuration +// language : romanian (ro) +// author : Vlad Gurdiga : https://github.com/gurdiga +// author : Valentin Agachi : https://github.com/avaly + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': 'minute', + 'hh': 'ore', + 'dd': 'zile', + 'MM': 'luni', + 'yy': 'ani' + }, + separator = ' '; + if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { + separator = ' de '; + } + + return number + separator + format[key]; + } + + return moment.lang('ro', { + months : "ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"), + monthsShort : "ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"), + weekdays : "duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"), + weekdaysShort : "Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"), + weekdaysMin : "Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD.MM.YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY H:mm", + LLLL : "dddd, D MMMM YYYY H:mm" + }, + calendar : { + sameDay: "[azi la] LT", + nextDay: '[mâine la] LT', + nextWeek: 'dddd [la] LT', + lastDay: '[ieri la] LT', + lastWeek: '[fosta] dddd [la] LT', + sameElse: 'L' + }, + relativeTime : { + future : "peste %s", + past : "%s în urmă", + s : "câteva secunde", + m : "un minut", + mm : relativeTimeWithPlural, + h : "o oră", + hh : relativeTimeWithPlural, + d : "o zi", + dd : relativeTimeWithPlural, + M : "o lună", + MM : relativeTimeWithPlural, + y : "un an", + yy : relativeTimeWithPlural + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/rs.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/rs.js new file mode 100755 index 0000000..8627553 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/rs.js @@ -0,0 +1,139 @@ +// moment.js language configuration +// language : serbian (rs) +// author : Limon Monte : https://github.com/limonte +// based on (bs) translation by Nedim Cholich + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + + function translate(number, withoutSuffix, key) { + var result = number + " "; + switch (key) { + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'meseca'; + } else { + result += 'meseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; + } + } + + return moment.lang('rs', { + months : "januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"), + monthsShort : "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"), + weekdays : "nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"), + weekdaysShort : "ned._pon._uto._sre._čet._pet._sub.".split("_"), + weekdaysMin : "ne_po_ut_sr_če_pe_su".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD. MM. YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd, D. MMMM YYYY LT" + }, + calendar : { + sameDay : '[danas u] LT', + nextDay : '[sutra u] LT', + + nextWeek : function () { + switch (this.day()) { + case 0: + return '[u] [nedelju] [u] LT'; + case 3: + return '[u] [sredu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[juče u] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : "za %s", + past : "pre %s", + s : "par sekundi", + m : translate, + mm : translate, + h : translate, + hh : translate, + d : "dan", + dd : translate, + M : "mesec", + MM : translate, + y : "godinu", + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/ru.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/ru.js new file mode 100755 index 0000000..1d1816c --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/ru.js @@ -0,0 +1,163 @@ +// moment.js language configuration +// language : russian (ru) +// author : Viktorminator : https://github.com/Viktorminator +// Author : Menelion Elensúle : https://github.com/Oire + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + function plural(word, num) { + var forms = word.split('_'); + return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); + } + + function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': 'минута_минуты_минут', + 'hh': 'час_часа_часов', + 'dd': 'день_дня_дней', + 'MM': 'месяц_месяца_месяцев', + 'yy': 'год_года_лет' + }; + if (key === 'm') { + return withoutSuffix ? 'минута' : 'минуту'; + } + else { + return number + ' ' + plural(format[key], +number); + } + } + + function monthsCaseReplace(m, format) { + var months = { + 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), + 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_') + }, + + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + + return months[nounCase][m.month()]; + } + + function monthsShortCaseReplace(m, format) { + var monthsShort = { + 'nominative': 'янв_фев_мар_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), + 'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_') + }, + + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + + return monthsShort[nounCase][m.month()]; + } + + function weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), + 'accusative': 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_') + }, + + nounCase = (/\[ ?[Вв] ?(?:прошлую|следующую)? ?\] ?dddd/).test(format) ? + 'accusative' : + 'nominative'; + + return weekdays[nounCase][m.day()]; + } + + return moment.lang('ru', { + months : monthsCaseReplace, + monthsShort : monthsShortCaseReplace, + weekdays : weekdaysCaseReplace, + weekdaysShort : "вс_пн_вт_ср_чт_пт_сб".split("_"), + weekdaysMin : "вс_пн_вт_ср_чт_пт_сб".split("_"), + monthsParse : [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[й|я]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i], + longDateFormat : { + LT : "HH:mm", + L : "DD.MM.YYYY", + LL : "D MMMM YYYY г.", + LLL : "D MMMM YYYY г., LT", + LLLL : "dddd, D MMMM YYYY г., LT" + }, + calendar : { + sameDay: '[Сегодня в] LT', + nextDay: '[Завтра в] LT', + lastDay: '[Вчера в] LT', + nextWeek: function () { + return this.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT'; + }, + lastWeek: function () { + switch (this.day()) { + case 0: + return '[В прошлое] dddd [в] LT'; + case 1: + case 2: + case 4: + return '[В прошлый] dddd [в] LT'; + case 3: + case 5: + case 6: + return '[В прошлую] dddd [в] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : "через %s", + past : "%s назад", + s : "несколько секунд", + m : relativeTimeWithPlural, + mm : relativeTimeWithPlural, + h : "час", + hh : relativeTimeWithPlural, + d : "день", + dd : relativeTimeWithPlural, + M : "месяц", + MM : relativeTimeWithPlural, + y : "год", + yy : relativeTimeWithPlural + }, + + // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason + + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return "ночи"; + } else if (hour < 12) { + return "утра"; + } else if (hour < 17) { + return "дня"; + } else { + return "вечера"; + } + }, + + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + return number + '-й'; + case 'D': + return number + '-го'; + case 'w': + case 'W': + return number + '-я'; + default: + return number; + } + }, + + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/sk.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/sk.js new file mode 100755 index 0000000..ed8a41d --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/sk.js @@ -0,0 +1,156 @@ +// moment.js language configuration +// language : slovak (sk) +// author : Martin Minka : https://github.com/k2s +// based on work of petrbela : https://github.com/petrbela + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var months = "január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"), + monthsShort = "jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"); + + function plural(n) { + return (n > 1) && (n < 5); + } + + function translate(number, withoutSuffix, key, isFuture) { + var result = number + " "; + switch (key) { + case 's': // a few seconds / in a few seconds / a few seconds ago + return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami'; + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou'); + case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'minúty' : 'minút'); + } else { + return result + 'minútami'; + } + break; + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'hh': // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'hodiny' : 'hodín'); + } else { + return result + 'hodinami'; + } + break; + case 'd': // a day / in a day / a day ago + return (withoutSuffix || isFuture) ? 'deň' : 'dňom'; + case 'dd': // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'dni' : 'dní'); + } else { + return result + 'dňami'; + } + break; + case 'M': // a month / in a month / a month ago + return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom'; + case 'MM': // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'mesiace' : 'mesiacov'); + } else { + return result + 'mesiacmi'; + } + break; + case 'y': // a year / in a year / a year ago + return (withoutSuffix || isFuture) ? 'rok' : 'rokom'; + case 'yy': // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'roky' : 'rokov'); + } else { + return result + 'rokmi'; + } + break; + } + } + + return moment.lang('sk', { + months : months, + monthsShort : monthsShort, + monthsParse : (function (months, monthsShort) { + var i, _monthsParse = []; + for (i = 0; i < 12; i++) { + // use custom parser to solve problem with July (červenec) + _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); + } + return _monthsParse; + }(months, monthsShort)), + weekdays : "nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"), + weekdaysShort : "ne_po_ut_st_št_pi_so".split("_"), + weekdaysMin : "ne_po_ut_st_št_pi_so".split("_"), + longDateFormat : { + LT: "H:mm", + L : "DD.MM.YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd D. MMMM YYYY LT" + }, + calendar : { + sameDay: "[dnes o] LT", + nextDay: '[zajtra o] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[v nedeľu o] LT'; + case 1: + case 2: + return '[v] dddd [o] LT'; + case 3: + return '[v stredu o] LT'; + case 4: + return '[vo štvrtok o] LT'; + case 5: + return '[v piatok o] LT'; + case 6: + return '[v sobotu o] LT'; + } + }, + lastDay: '[včera o] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[minulú nedeľu o] LT'; + case 1: + case 2: + return '[minulý] dddd [o] LT'; + case 3: + return '[minulú stredu o] LT'; + case 4: + case 5: + return '[minulý] dddd [o] LT'; + case 6: + return '[minulú sobotu o] LT'; + } + }, + sameElse: "L" + }, + relativeTime : { + future : "za %s", + past : "pred %s", + s : translate, + m : translate, + mm : translate, + h : translate, + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/sl.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/sl.js new file mode 100755 index 0000000..d260f80 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/sl.js @@ -0,0 +1,144 @@ +// moment.js language configuration +// language : slovenian (sl) +// author : Robert Sedovšek : https://github.com/sedovsek + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + function translate(number, withoutSuffix, key) { + var result = number + " "; + switch (key) { + case 'm': + return withoutSuffix ? 'ena minuta' : 'eno minuto'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2) { + result += 'minuti'; + } else if (number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minut'; + } + return result; + case 'h': + return withoutSuffix ? 'ena ura' : 'eno uro'; + case 'hh': + if (number === 1) { + result += 'ura'; + } else if (number === 2) { + result += 'uri'; + } else if (number === 3 || number === 4) { + result += 'ure'; + } else { + result += 'ur'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dni'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mesec'; + } else if (number === 2) { + result += 'meseca'; + } else if (number === 3 || number === 4) { + result += 'mesece'; + } else { + result += 'mesecev'; + } + return result; + case 'yy': + if (number === 1) { + result += 'leto'; + } else if (number === 2) { + result += 'leti'; + } else if (number === 3 || number === 4) { + result += 'leta'; + } else { + result += 'let'; + } + return result; + } + } + + return moment.lang('sl', { + months : "januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"), + monthsShort : "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"), + weekdays : "nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"), + weekdaysShort : "ned._pon._tor._sre._čet._pet._sob.".split("_"), + weekdaysMin : "ne_po_to_sr_če_pe_so".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD. MM. YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd, D. MMMM YYYY LT" + }, + calendar : { + sameDay : '[danes ob] LT', + nextDay : '[jutri ob] LT', + + nextWeek : function () { + switch (this.day()) { + case 0: + return '[v] [nedeljo] [ob] LT'; + case 3: + return '[v] [sredo] [ob] LT'; + case 6: + return '[v] [soboto] [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[v] dddd [ob] LT'; + } + }, + lastDay : '[včeraj ob] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + case 6: + return '[prejšnja] dddd [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prejšnji] dddd [ob] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : "čez %s", + past : "%s nazaj", + s : "nekaj sekund", + m : translate, + mm : translate, + h : translate, + hh : translate, + d : "en dan", + dd : translate, + M : "en mesec", + MM : translate, + y : "eno leto", + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/sq.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/sq.js new file mode 100755 index 0000000..b77d93a --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/sq.js @@ -0,0 +1,60 @@ +// moment.js language configuration +// language : Albanian (sq) +// author : Flakërim Ismani : https://github.com/flakerimi +// author: Menelion Elensúle: https://github.com/Oire (tests) + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('sq', { + months : "Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"), + monthsShort : "Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"), + weekdays : "E Diel_E Hënë_E Marte_E Mërkure_E Enjte_E Premte_E Shtunë".split("_"), + weekdaysShort : "Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"), + weekdaysMin : "D_H_Ma_Më_E_P_Sh".split("_"), + meridiem : function (hours, minutes, isLower) { + return hours < 12 ? 'PD' : 'MD'; + }, + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay : '[Sot në] LT', + nextDay : '[Neser në] LT', + nextWeek : 'dddd [në] LT', + lastDay : '[Dje në] LT', + lastWeek : 'dddd [e kaluar në] LT', + sameElse : 'L' + }, + relativeTime : { + future : "në %s", + past : "%s me parë", + s : "disa sekonda", + m : "një minut", + mm : "%d minuta", + h : "një orë", + hh : "%d orë", + d : "një ditë", + dd : "%d ditë", + M : "një muaj", + MM : "%d muaj", + y : "një vit", + yy : "%d vite" + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/sv.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/sv.js new file mode 100755 index 0000000..0de8c40 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/sv.js @@ -0,0 +1,63 @@ +// moment.js language configuration +// language : swedish (sv) +// author : Jens Alm : https://github.com/ulmus + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('sv', { + months : "januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"), + monthsShort : "jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"), + weekdays : "söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"), + weekdaysShort : "sön_mån_tis_ons_tor_fre_lör".split("_"), + weekdaysMin : "sö_må_ti_on_to_fr_lö".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "YYYY-MM-DD", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: '[Idag] LT', + nextDay: '[Imorgon] LT', + lastDay: '[Igår] LT', + nextWeek: 'dddd LT', + lastWeek: '[Förra] dddd[en] LT', + sameElse: 'L' + }, + relativeTime : { + future : "om %s", + past : "för %s sedan", + s : "några sekunder", + m : "en minut", + mm : "%d minuter", + h : "en timme", + hh : "%d timmar", + d : "en dag", + dd : "%d dagar", + M : "en månad", + MM : "%d månader", + y : "ett år", + yy : "%d år" + }, + ordinal : function (number) { + var b = number % 10, + output = (~~ (number % 100 / 10) === 1) ? 'e' : + (b === 1) ? 'a' : + (b === 2) ? 'a' : + (b === 3) ? 'e' : 'e'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/ta.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/ta.js new file mode 100755 index 0000000..cc742c9 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/ta.js @@ -0,0 +1,112 @@ +// moment.js language configuration +// language : tamil (ta) +// author : Arjunkumar Krishnamoorthy : https://github.com/tk120404 + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + /*var symbolMap = { + '1': '௧', + '2': '௨', + '3': '௩', + '4': '௪', + '5': '௫', + '6': '௬', + '7': '௭', + '8': '௮', + '9': '௯', + '0': '௦' + }, + numberMap = { + '௧': '1', + '௨': '2', + '௩': '3', + '௪': '4', + '௫': '5', + '௬': '6', + '௭': '7', + '௮': '8', + '௯': '9', + '௦': '0' + }; */ + + return moment.lang('ta', { + months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split("_"), + monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split("_"), + weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split("_"), + weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split("_"), + weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY, LT", + LLLL : "dddd, D MMMM YYYY, LT" + }, + calendar : { + sameDay : '[இன்று] LT', + nextDay : '[நாளை] LT', + nextWeek : 'dddd, LT', + lastDay : '[நேற்று] LT', + lastWeek : '[கடந்த வாரம்] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s இல்", + past : "%s முன்", + s : "ஒரு சில விநாடிகள்", + m : "ஒரு நிமிடம்", + mm : "%d நிமிடங்கள்", + h : "ஒரு மணி நேரம்", + hh : "%d மணி நேரம்", + d : "ஒரு நாள்", + dd : "%d நாட்கள்", + M : "ஒரு மாதம்", + MM : "%d மாதங்கள்", + y : "ஒரு வருடம்", + yy : "%d ஆண்டுகள்" + }, +/* preparse: function (string) { + return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + },*/ + ordinal : function (number) { + return number + 'வது'; + }, + + +// refer http://ta.wikipedia.org/s/1er1 + + meridiem : function (hour, minute, isLower) { + if (hour >= 6 && hour <= 10) { + return " காலை"; + } else if (hour >= 10 && hour <= 14) { + return " நண்பகல்"; + } else if (hour >= 14 && hour <= 18) { + return " எற்பாடு"; + } else if (hour >= 18 && hour <= 20) { + return " மாலை"; + } else if (hour >= 20 && hour <= 24) { + return " இரவு"; + } else if (hour >= 0 && hour <= 6) { + return " வைகறை"; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/th.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/th.js new file mode 100755 index 0000000..70336c8 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/th.js @@ -0,0 +1,58 @@ +// moment.js language configuration +// language : thai (th) +// author : Kridsada Thanabulpong : https://github.com/sirn + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('th', { + months : "มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"), + monthsShort : "มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา".split("_"), + weekdays : "อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"), + weekdaysShort : "อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"), // yes, three characters difference + weekdaysMin : "อา._จ._อ._พ._พฤ._ศ._ส.".split("_"), + longDateFormat : { + LT : "H นาฬิกา m นาที", + L : "YYYY/MM/DD", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY เวลา LT", + LLLL : "วันddddที่ D MMMM YYYY เวลา LT" + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return "ก่อนเที่ยง"; + } else { + return "หลังเที่ยง"; + } + }, + calendar : { + sameDay : '[วันนี้ เวลา] LT', + nextDay : '[พรุ่งนี้ เวลา] LT', + nextWeek : 'dddd[หน้า เวลา] LT', + lastDay : '[เมื่อวานนี้ เวลา] LT', + lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT', + sameElse : 'L' + }, + relativeTime : { + future : "อีก %s", + past : "%sที่แล้ว", + s : "ไม่กี่วินาที", + m : "1 นาที", + mm : "%d นาที", + h : "1 ชั่วโมง", + hh : "%d ชั่วโมง", + d : "1 วัน", + dd : "%d วัน", + M : "1 เดือน", + MM : "%d เดือน", + y : "1 ปี", + yy : "%d ปี" + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/tl-ph.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/tl-ph.js new file mode 100755 index 0000000..8044483 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/tl-ph.js @@ -0,0 +1,58 @@ +// moment.js language configuration +// language : Tagalog/Filipino (tl-ph) +// author : Dan Hagman + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('tl-ph', { + months : "Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"), + monthsShort : "Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"), + weekdays : "Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"), + weekdaysShort : "Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"), + weekdaysMin : "Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "MM/D/YYYY", + LL : "MMMM D, YYYY", + LLL : "MMMM D, YYYY LT", + LLLL : "dddd, MMMM DD, YYYY LT" + }, + calendar : { + sameDay: "[Ngayon sa] LT", + nextDay: '[Bukas sa] LT', + nextWeek: 'dddd [sa] LT', + lastDay: '[Kahapon sa] LT', + lastWeek: 'dddd [huling linggo] LT', + sameElse: 'L' + }, + relativeTime : { + future : "sa loob ng %s", + past : "%s ang nakalipas", + s : "ilang segundo", + m : "isang minuto", + mm : "%d minuto", + h : "isang oras", + hh : "%d oras", + d : "isang araw", + dd : "%d araw", + M : "isang buwan", + MM : "%d buwan", + y : "isang taon", + yy : "%d taon" + }, + ordinal : function (number) { + return number; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/tr.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/tr.js new file mode 100755 index 0000000..e90f250 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/tr.js @@ -0,0 +1,93 @@ +// moment.js language configuration +// language : turkish (tr) +// authors : Erhan Gundogan : https://github.com/erhangundogan, +// Burak Yiğit Kaya: https://github.com/BYK + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + + var suffixes = { + 1: "'inci", + 5: "'inci", + 8: "'inci", + 70: "'inci", + 80: "'inci", + + 2: "'nci", + 7: "'nci", + 20: "'nci", + 50: "'nci", + + 3: "'üncü", + 4: "'üncü", + 100: "'üncü", + + 6: "'ncı", + + 9: "'uncu", + 10: "'uncu", + 30: "'uncu", + + 60: "'ıncı", + 90: "'ıncı" + }; + + return moment.lang('tr', { + months : "Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"), + monthsShort : "Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"), + weekdays : "Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"), + weekdaysShort : "Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"), + weekdaysMin : "Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD.MM.YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay : '[bugün saat] LT', + nextDay : '[yarın saat] LT', + nextWeek : '[haftaya] dddd [saat] LT', + lastDay : '[dün] LT', + lastWeek : '[geçen hafta] dddd [saat] LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s sonra", + past : "%s önce", + s : "birkaç saniye", + m : "bir dakika", + mm : "%d dakika", + h : "bir saat", + hh : "%d saat", + d : "bir gün", + dd : "%d gün", + M : "bir ay", + MM : "%d ay", + y : "bir yıl", + yy : "%d yıl" + }, + ordinal : function (number) { + if (number === 0) { // special case for zero + return number + "'ıncı"; + } + var a = number % 10, + b = number % 100 - a, + c = number >= 100 ? 100 : null; + + return number + (suffixes[a] || suffixes[b] || suffixes[c]); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/tzm-la.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/tzm-la.js new file mode 100755 index 0000000..be1d878 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/tzm-la.js @@ -0,0 +1,55 @@ +// moment.js language configuration +// language : Morocco Central Atlas Tamaziɣt in Latin (tzm-la) +// author : Abdel Said : https://github.com/abdelsaid + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('tzm-la', { + months : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"), + monthsShort : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"), + weekdays : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"), + weekdaysShort : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"), + weekdaysMin : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: "[asdkh g] LT", + nextDay: '[aska g] LT', + nextWeek: 'dddd [g] LT', + lastDay: '[assant g] LT', + lastWeek: 'dddd [g] LT', + sameElse: 'L' + }, + relativeTime : { + future : "dadkh s yan %s", + past : "yan %s", + s : "imik", + m : "minuḍ", + mm : "%d minuḍ", + h : "saɛa", + hh : "%d tassaɛin", + d : "ass", + dd : "%d ossan", + M : "ayowr", + MM : "%d iyyirn", + y : "asgas", + yy : "%d isgasn" + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/tzm.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/tzm.js new file mode 100755 index 0000000..c7c76bd --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/tzm.js @@ -0,0 +1,55 @@ +// moment.js language configuration +// language : Morocco Central Atlas Tamaziɣt (tzm) +// author : Abdel Said : https://github.com/abdelsaid + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('tzm', { + months : "ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"), + monthsShort : "ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"), + weekdays : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"), + weekdaysShort : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"), + weekdaysMin : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: "[ⴰⵙⴷⵅ ⴴ] LT", + nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', + nextWeek: 'dddd [ⴴ] LT', + lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', + lastWeek: 'dddd [ⴴ] LT', + sameElse: 'L' + }, + relativeTime : { + future : "ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s", + past : "ⵢⴰⵏ %s", + s : "ⵉⵎⵉⴽ", + m : "ⵎⵉⵏⵓⴺ", + mm : "%d ⵎⵉⵏⵓⴺ", + h : "ⵙⴰⵄⴰ", + hh : "%d ⵜⴰⵙⵙⴰⵄⵉⵏ", + d : "ⴰⵙⵙ", + dd : "%d oⵙⵙⴰⵏ", + M : "ⴰⵢoⵓⵔ", + MM : "%d ⵉⵢⵢⵉⵔⵏ", + y : "ⴰⵙⴳⴰⵙ", + yy : "%d ⵉⵙⴳⴰⵙⵏ" + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/uk.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/uk.js new file mode 100755 index 0000000..47056cb --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/uk.js @@ -0,0 +1,157 @@ +// moment.js language configuration +// language : ukrainian (uk) +// author : zemlanin : https://github.com/zemlanin +// Author : Menelion Elensúle : https://github.com/Oire + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + function plural(word, num) { + var forms = word.split('_'); + return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); + } + + function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': 'хвилина_хвилини_хвилин', + 'hh': 'година_години_годин', + 'dd': 'день_дні_днів', + 'MM': 'місяць_місяці_місяців', + 'yy': 'рік_роки_років' + }; + if (key === 'm') { + return withoutSuffix ? 'хвилина' : 'хвилину'; + } + else if (key === 'h') { + return withoutSuffix ? 'година' : 'годину'; + } + else { + return number + ' ' + plural(format[key], +number); + } + } + + function monthsCaseReplace(m, format) { + var months = { + 'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'), + 'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_') + }, + + nounCase = (/D[oD]? *MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + + return months[nounCase][m.month()]; + } + + function weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), + 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'), + 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_') + }, + + nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ? + 'accusative' : + ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ? + 'genitive' : + 'nominative'); + + return weekdays[nounCase][m.day()]; + } + + function processHoursFunction(str) { + return function () { + return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; + }; + } + + return moment.lang('uk', { + months : monthsCaseReplace, + monthsShort : "січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"), + weekdays : weekdaysCaseReplace, + weekdaysShort : "нд_пн_вт_ср_чт_пт_сб".split("_"), + weekdaysMin : "нд_пн_вт_ср_чт_пт_сб".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD.MM.YYYY", + LL : "D MMMM YYYY р.", + LLL : "D MMMM YYYY р., LT", + LLLL : "dddd, D MMMM YYYY р., LT" + }, + calendar : { + sameDay: processHoursFunction('[Сьогодні '), + nextDay: processHoursFunction('[Завтра '), + lastDay: processHoursFunction('[Вчора '), + nextWeek: processHoursFunction('[У] dddd ['), + lastWeek: function () { + switch (this.day()) { + case 0: + case 3: + case 5: + case 6: + return processHoursFunction('[Минулої] dddd [').call(this); + case 1: + case 2: + case 4: + return processHoursFunction('[Минулого] dddd [').call(this); + } + }, + sameElse: 'L' + }, + relativeTime : { + future : "за %s", + past : "%s тому", + s : "декілька секунд", + m : relativeTimeWithPlural, + mm : relativeTimeWithPlural, + h : "годину", + hh : relativeTimeWithPlural, + d : "день", + dd : relativeTimeWithPlural, + M : "місяць", + MM : relativeTimeWithPlural, + y : "рік", + yy : relativeTimeWithPlural + }, + + // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason + + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return "ночі"; + } else if (hour < 12) { + return "ранку"; + } else if (hour < 17) { + return "дня"; + } else { + return "вечора"; + } + }, + + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + case 'w': + case 'W': + return number + '-й'; + case 'D': + return number + '-го'; + default: + return number; + } + }, + + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/uz.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/uz.js new file mode 100755 index 0000000..a5b06fa --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/uz.js @@ -0,0 +1,55 @@ +// moment.js language configuration +// language : uzbek +// author : Sardor Muminov : https://github.com/muminoff + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('uz', { + months : "январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"), + monthsShort : "янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"), + weekdays : "Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"), + weekdaysShort : "Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"), + weekdaysMin : "Як_Ду_Се_Чо_Па_Жу_Ша".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "D MMMM YYYY, dddd LT" + }, + calendar : { + sameDay : '[Бугун соат] LT [да]', + nextDay : '[Эртага] LT [да]', + nextWeek : 'dddd [куни соат] LT [да]', + lastDay : '[Кеча соат] LT [да]', + lastWeek : '[Утган] dddd [куни соат] LT [да]', + sameElse : 'L' + }, + relativeTime : { + future : "Якин %s ичида", + past : "Бир неча %s олдин", + s : "фурсат", + m : "бир дакика", + mm : "%d дакика", + h : "бир соат", + hh : "%d соат", + d : "бир кун", + dd : "%d кун", + M : "бир ой", + MM : "%d ой", + y : "бир йил", + yy : "%d йил" + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/vn.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/vn.js new file mode 100755 index 0000000..f28e7c3 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/vn.js @@ -0,0 +1,62 @@ +// moment.js language configuration +// language : vietnamese (vn) +// author : Bang Nguyen : https://github.com/bangnk + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('vn', { + months : "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".split("_"), + monthsShort : "Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"), + weekdays : "chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"), + weekdaysShort : "CN_T2_T3_T4_T5_T6_T7".split("_"), + weekdaysMin : "CN_T2_T3_T4_T5_T6_T7".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM [năm] YYYY", + LLL : "D MMMM [năm] YYYY LT", + LLLL : "dddd, D MMMM [năm] YYYY LT", + l : "DD/M/YYYY", + ll : "D MMM YYYY", + lll : "D MMM YYYY LT", + llll : "ddd, D MMM YYYY LT" + }, + calendar : { + sameDay: "[Hôm nay lúc] LT", + nextDay: '[Ngày mai lúc] LT', + nextWeek: 'dddd [tuần tới lúc] LT', + lastDay: '[Hôm qua lúc] LT', + lastWeek: 'dddd [tuần rồi lúc] LT', + sameElse: 'L' + }, + relativeTime : { + future : "%s tới", + past : "%s trước", + s : "vài giây", + m : "một phút", + mm : "%d phút", + h : "một giờ", + hh : "%d giờ", + d : "một ngày", + dd : "%d ngày", + M : "một tháng", + MM : "%d tháng", + y : "một năm", + yy : "%d năm" + }, + ordinal : function (number) { + return number; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/zh-cn.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/zh-cn.js new file mode 100755 index 0000000..50a3ed9 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/zh-cn.js @@ -0,0 +1,108 @@ +// moment.js language configuration +// language : chinese +// author : suupic : https://github.com/suupic +// author : Zeno Zeng : https://github.com/zenozeng + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('zh-cn', { + months : "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"), + monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), + weekdays : "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"), + weekdaysShort : "周日_周一_周二_周三_周四_周五_周六".split("_"), + weekdaysMin : "日_一_二_三_四_五_六".split("_"), + longDateFormat : { + LT : "Ah点mm", + L : "YYYY-MM-DD", + LL : "YYYY年MMMD日", + LLL : "YYYY年MMMD日LT", + LLLL : "YYYY年MMMD日ddddLT", + l : "YYYY-MM-DD", + ll : "YYYY年MMMD日", + lll : "YYYY年MMMD日LT", + llll : "YYYY年MMMD日ddddLT" + }, + meridiem : function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return "凌晨"; + } else if (hm < 900) { + return "早上"; + } else if (hm < 1130) { + return "上午"; + } else if (hm < 1230) { + return "中午"; + } else if (hm < 1800) { + return "下午"; + } else { + return "晚上"; + } + }, + calendar : { + sameDay : function () { + return this.minutes() === 0 ? "[今天]Ah[点整]" : "[今天]LT"; + }, + nextDay : function () { + return this.minutes() === 0 ? "[明天]Ah[点整]" : "[明天]LT"; + }, + lastDay : function () { + return this.minutes() === 0 ? "[昨天]Ah[点整]" : "[昨天]LT"; + }, + nextWeek : function () { + var startOfWeek, prefix; + startOfWeek = moment().startOf('week'); + prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]'; + return this.minutes() === 0 ? prefix + "dddAh点整" : prefix + "dddAh点mm"; + }, + lastWeek : function () { + var startOfWeek, prefix; + startOfWeek = moment().startOf('week'); + prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]'; + return this.minutes() === 0 ? prefix + "dddAh点整" : prefix + "dddAh点mm"; + }, + sameElse : 'LL' + }, + ordinal : function (number, period) { + switch (period) { + case "d": + case "D": + case "DDD": + return number + "日"; + case "M": + return number + "月"; + case "w": + case "W": + return number + "周"; + default: + return number; + } + }, + relativeTime : { + future : "%s内", + past : "%s前", + s : "几秒", + m : "1分钟", + mm : "%d分钟", + h : "1小时", + hh : "%d小时", + d : "1天", + dd : "%d天", + M : "1个月", + MM : "%d个月", + y : "1年", + yy : "%d年" + }, + week : { + // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/lang/zh-tw.js b/static/bootstrap-datetimepicker-master/moment-develop/lang/zh-tw.js new file mode 100755 index 0000000..bbb0737 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/lang/zh-tw.js @@ -0,0 +1,84 @@ +// moment.js language configuration +// language : traditional chinese (zh-tw) +// author : Ben : https://github.com/ben-lin + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('zh-tw', { + months : "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"), + monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), + weekdays : "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"), + weekdaysShort : "週日_週一_週二_週三_週四_週五_週六".split("_"), + weekdaysMin : "日_一_二_三_四_五_六".split("_"), + longDateFormat : { + LT : "Ah點mm", + L : "YYYY年MMMD日", + LL : "YYYY年MMMD日", + LLL : "YYYY年MMMD日LT", + LLLL : "YYYY年MMMD日ddddLT", + l : "YYYY年MMMD日", + ll : "YYYY年MMMD日", + lll : "YYYY年MMMD日LT", + llll : "YYYY年MMMD日ddddLT" + }, + meridiem : function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 900) { + return "早上"; + } else if (hm < 1130) { + return "上午"; + } else if (hm < 1230) { + return "中午"; + } else if (hm < 1800) { + return "下午"; + } else { + return "晚上"; + } + }, + calendar : { + sameDay : '[今天]LT', + nextDay : '[明天]LT', + nextWeek : '[下]ddddLT', + lastDay : '[昨天]LT', + lastWeek : '[上]ddddLT', + sameElse : 'L' + }, + ordinal : function (number, period) { + switch (period) { + case "d" : + case "D" : + case "DDD" : + return number + "日"; + case "M" : + return number + "月"; + case "w" : + case "W" : + return number + "週"; + default : + return number; + } + }, + relativeTime : { + future : "%s內", + past : "%s前", + s : "幾秒", + m : "一分鐘", + mm : "%d分鐘", + h : "一小時", + hh : "%d小時", + d : "一天", + dd : "%d天", + M : "一個月", + MM : "%d個月", + y : "一年", + yy : "%d年" + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/min/langs.js b/static/bootstrap-datetimepicker-master/moment-develop/min/langs.js new file mode 100755 index 0000000..8296814 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/min/langs.js @@ -0,0 +1,5841 @@ +// moment.js language configuration +// language : Moroccan Arabic (ar-ma) +// author : ElFadili Yassine : https://github.com/ElFadiliY +// author : Abdel Said : https://github.com/abdelsaid + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('ar-ma', { + months : "يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"), + monthsShort : "يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"), + weekdays : "الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"), + weekdaysShort : "احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"), + weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: "[اليوم على الساعة] LT", + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : "في %s", + past : "منذ %s", + s : "ثوان", + m : "دقيقة", + mm : "%d دقائق", + h : "ساعة", + hh : "%d ساعات", + d : "يوم", + dd : "%d أيام", + M : "شهر", + MM : "%d أشهر", + y : "سنة", + yy : "%d سنوات" + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : Arabic (ar) +// author : Abdel Said : https://github.com/abdelsaid +// changes in months, weekdays : Ahmed Elkhatib + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('ar', { + months : "يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"), + monthsShort : "يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"), + weekdays : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"), + weekdaysShort : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"), + weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: "[اليوم على الساعة] LT", + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : "في %s", + past : "منذ %s", + s : "ثوان", + m : "دقيقة", + mm : "%d دقائق", + h : "ساعة", + hh : "%d ساعات", + d : "يوم", + dd : "%d أيام", + M : "شهر", + MM : "%d أشهر", + y : "سنة", + yy : "%d سنوات" + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : bulgarian (bg) +// author : Krasen Borisov : https://github.com/kraz + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('bg', { + months : "януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"), + monthsShort : "янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"), + weekdays : "неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"), + weekdaysShort : "нед_пон_вто_сря_чет_пет_съб".split("_"), + weekdaysMin : "нд_пн_вт_ср_чт_пт_сб".split("_"), + longDateFormat : { + LT : "H:mm", + L : "D.MM.YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay : '[Днес в] LT', + nextDay : '[Утре в] LT', + nextWeek : 'dddd [в] LT', + lastDay : '[Вчера в] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + case 6: + return '[В изминалата] dddd [в] LT'; + case 1: + case 2: + case 4: + case 5: + return '[В изминалия] dddd [в] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : "след %s", + past : "преди %s", + s : "няколко секунди", + m : "минута", + mm : "%d минути", + h : "час", + hh : "%d часа", + d : "ден", + dd : "%d дни", + M : "месец", + MM : "%d месеца", + y : "година", + yy : "%d години" + }, + ordinal : function (number) { + var lastDigit = number % 10, + last2Digits = number % 100; + if (number === 0) { + return number + '-ев'; + } else if (last2Digits === 0) { + return number + '-ен'; + } else if (last2Digits > 10 && last2Digits < 20) { + return number + '-ти'; + } else if (lastDigit === 1) { + return number + '-ви'; + } else if (lastDigit === 2) { + return number + '-ри'; + } else if (lastDigit === 7 || lastDigit === 8) { + return number + '-ми'; + } else { + return number + '-ти'; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : breton (br) +// author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + function relativeTimeWithMutation(number, withoutSuffix, key) { + var format = { + 'mm': "munutenn", + 'MM': "miz", + 'dd': "devezh" + }; + return number + ' ' + mutation(format[key], number); + } + + function specialMutationForYears(number) { + switch (lastNumber(number)) { + case 1: + case 3: + case 4: + case 5: + case 9: + return number + ' bloaz'; + default: + return number + ' vloaz'; + } + } + + function lastNumber(number) { + if (number > 9) { + return lastNumber(number % 10); + } + return number; + } + + function mutation(text, number) { + if (number === 2) { + return softMutation(text); + } + return text; + } + + function softMutation(text) { + var mutationTable = { + 'm': 'v', + 'b': 'v', + 'd': 'z' + }; + if (mutationTable[text.charAt(0)] === undefined) { + return text; + } + return mutationTable[text.charAt(0)] + text.substring(1); + } + + return moment.lang('br', { + months : "Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"), + monthsShort : "Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"), + weekdays : "Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"), + weekdaysShort : "Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"), + weekdaysMin : "Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"), + longDateFormat : { + LT : "h[e]mm A", + L : "DD/MM/YYYY", + LL : "D [a viz] MMMM YYYY", + LLL : "D [a viz] MMMM YYYY LT", + LLLL : "dddd, D [a viz] MMMM YYYY LT" + }, + calendar : { + sameDay : '[Hiziv da] LT', + nextDay : '[Warc\'hoazh da] LT', + nextWeek : 'dddd [da] LT', + lastDay : '[Dec\'h da] LT', + lastWeek : 'dddd [paset da] LT', + sameElse : 'L' + }, + relativeTime : { + future : "a-benn %s", + past : "%s 'zo", + s : "un nebeud segondennoù", + m : "ur vunutenn", + mm : relativeTimeWithMutation, + h : "un eur", + hh : "%d eur", + d : "un devezh", + dd : relativeTimeWithMutation, + M : "ur miz", + MM : relativeTimeWithMutation, + y : "ur bloaz", + yy : specialMutationForYears + }, + ordinal : function (number) { + var output = (number === 1) ? 'añ' : 'vet'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : bosnian (bs) +// author : Nedim Cholich : https://github.com/frontyard +// based on (hr) translation by Bojan Marković + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + + function translate(number, withoutSuffix, key) { + var result = number + " "; + switch (key) { + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mjesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'mjeseca'; + } else { + result += 'mjeseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; + } + } + + return moment.lang('bs', { + months : "januar_februar_mart_april_maj_juni_juli_avgust_septembar_oktobar_novembar_decembar".split("_"), + monthsShort : "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"), + weekdays : "nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"), + weekdaysShort : "ned._pon._uto._sri._čet._pet._sub.".split("_"), + weekdaysMin : "ne_po_ut_sr_če_pe_su".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD. MM. YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd, D. MMMM YYYY LT" + }, + calendar : { + sameDay : '[danas u] LT', + nextDay : '[sutra u] LT', + + nextWeek : function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[jučer u] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : "za %s", + past : "prije %s", + s : "par sekundi", + m : translate, + mm : translate, + h : translate, + hh : translate, + d : "dan", + dd : translate, + M : "mjesec", + MM : translate, + y : "godinu", + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : catalan (ca) +// author : Juan G. Hurtado : https://github.com/juanghurtado + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('ca', { + months : "gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"), + monthsShort : "gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"), + weekdays : "diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"), + weekdaysShort : "dg._dl._dt._dc._dj._dv._ds.".split("_"), + weekdaysMin : "Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay : function () { + return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + nextDay : function () { + return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + lastDay : function () { + return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : "en %s", + past : "fa %s", + s : "uns segons", + m : "un minut", + mm : "%d minuts", + h : "una hora", + hh : "%d hores", + d : "un dia", + dd : "%d dies", + M : "un mes", + MM : "%d mesos", + y : "un any", + yy : "%d anys" + }, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : czech (cs) +// author : petrbela : https://github.com/petrbela + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var months = "leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"), + monthsShort = "led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"); + + function plural(n) { + return (n > 1) && (n < 5) && (~~(n / 10) !== 1); + } + + function translate(number, withoutSuffix, key, isFuture) { + var result = number + " "; + switch (key) { + case 's': // a few seconds / in a few seconds / a few seconds ago + return (withoutSuffix || isFuture) ? 'pár vteřin' : 'pár vteřinami'; + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou'); + case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'minuty' : 'minut'); + } else { + return result + 'minutami'; + } + break; + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'hh': // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'hodiny' : 'hodin'); + } else { + return result + 'hodinami'; + } + break; + case 'd': // a day / in a day / a day ago + return (withoutSuffix || isFuture) ? 'den' : 'dnem'; + case 'dd': // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'dny' : 'dní'); + } else { + return result + 'dny'; + } + break; + case 'M': // a month / in a month / a month ago + return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem'; + case 'MM': // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'měsíce' : 'měsíců'); + } else { + return result + 'měsíci'; + } + break; + case 'y': // a year / in a year / a year ago + return (withoutSuffix || isFuture) ? 'rok' : 'rokem'; + case 'yy': // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'roky' : 'let'); + } else { + return result + 'lety'; + } + break; + } + } + + return moment.lang('cs', { + months : months, + monthsShort : monthsShort, + monthsParse : (function (months, monthsShort) { + var i, _monthsParse = []; + for (i = 0; i < 12; i++) { + // use custom parser to solve problem with July (červenec) + _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); + } + return _monthsParse; + }(months, monthsShort)), + weekdays : "neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"), + weekdaysShort : "ne_po_út_st_čt_pá_so".split("_"), + weekdaysMin : "ne_po_út_st_čt_pá_so".split("_"), + longDateFormat : { + LT: "H:mm", + L : "DD.MM.YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd D. MMMM YYYY LT" + }, + calendar : { + sameDay: "[dnes v] LT", + nextDay: '[zítra v] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[v neděli v] LT'; + case 1: + case 2: + return '[v] dddd [v] LT'; + case 3: + return '[ve středu v] LT'; + case 4: + return '[ve čtvrtek v] LT'; + case 5: + return '[v pátek v] LT'; + case 6: + return '[v sobotu v] LT'; + } + }, + lastDay: '[včera v] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[minulou neděli v] LT'; + case 1: + case 2: + return '[minulé] dddd [v] LT'; + case 3: + return '[minulou středu v] LT'; + case 4: + case 5: + return '[minulý] dddd [v] LT'; + case 6: + return '[minulou sobotu v] LT'; + } + }, + sameElse: "L" + }, + relativeTime : { + future : "za %s", + past : "před %s", + s : translate, + m : translate, + mm : translate, + h : translate, + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : chuvash (cv) +// author : Anatoly Mironov : https://github.com/mirontoli + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('cv', { + months : "кăрлач_нарăс_пуш_ака_май_çĕртме_утă_çурла_авăн_юпа_чӳк_раштав".split("_"), + monthsShort : "кăр_нар_пуш_ака_май_çĕр_утă_çур_ав_юпа_чӳк_раш".split("_"), + weekdays : "вырсарникун_тунтикун_ытларикун_юнкун_кĕçнерникун_эрнекун_шăматкун".split("_"), + weekdaysShort : "выр_тун_ытл_юн_кĕç_эрн_шăм".split("_"), + weekdaysMin : "вр_тн_ыт_юн_кç_эр_шм".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD-MM-YYYY", + LL : "YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ]", + LLL : "YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT", + LLLL : "dddd, YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT" + }, + calendar : { + sameDay: '[Паян] LT [сехетре]', + nextDay: '[Ыран] LT [сехетре]', + lastDay: '[Ĕнер] LT [сехетре]', + nextWeek: '[Çитес] dddd LT [сехетре]', + lastWeek: '[Иртнĕ] dddd LT [сехетре]', + sameElse: 'L' + }, + relativeTime : { + future : function (output) { + var affix = /сехет$/i.exec(output) ? "рен" : /çул$/i.exec(output) ? "тан" : "ран"; + return output + affix; + }, + past : "%s каялла", + s : "пĕр-ик çеккунт", + m : "пĕр минут", + mm : "%d минут", + h : "пĕр сехет", + hh : "%d сехет", + d : "пĕр кун", + dd : "%d кун", + M : "пĕр уйăх", + MM : "%d уйăх", + y : "пĕр çул", + yy : "%d çул" + }, + ordinal : '%d-мĕш', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : Welsh (cy) +// author : Robert Allen + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang("cy", { + months: "Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"), + monthsShort: "Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"), + weekdays: "Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"), + weekdaysShort: "Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"), + weekdaysMin: "Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"), + // time formats are the same as en-gb + longDateFormat: { + LT: "HH:mm", + L: "DD/MM/YYYY", + LL: "D MMMM YYYY", + LLL: "D MMMM YYYY LT", + LLLL: "dddd, D MMMM YYYY LT" + }, + calendar: { + sameDay: '[Heddiw am] LT', + nextDay: '[Yfory am] LT', + nextWeek: 'dddd [am] LT', + lastDay: '[Ddoe am] LT', + lastWeek: 'dddd [diwethaf am] LT', + sameElse: 'L' + }, + relativeTime: { + future: "mewn %s", + past: "%s yn àl", + s: "ychydig eiliadau", + m: "munud", + mm: "%d munud", + h: "awr", + hh: "%d awr", + d: "diwrnod", + dd: "%d diwrnod", + M: "mis", + MM: "%d mis", + y: "blwyddyn", + yy: "%d flynedd" + }, + // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh + ordinal: function (number) { + var b = number, + output = '', + lookup = [ + '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed + 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed + ]; + + if (b > 20) { + if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { + output = 'fed'; // not 30ain, 70ain or 90ain + } else { + output = 'ain'; + } + } else if (b > 0) { + output = lookup[b]; + } + + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : danish (da) +// author : Ulrik Nielsen : https://github.com/mrbase + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('da', { + months : "januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"), + monthsShort : "jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"), + weekdays : "søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"), + weekdaysShort : "søn_man_tir_ons_tor_fre_lør".split("_"), + weekdaysMin : "sø_ma_ti_on_to_fr_lø".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D. MMMM, YYYY LT" + }, + calendar : { + sameDay : '[I dag kl.] LT', + nextDay : '[I morgen kl.] LT', + nextWeek : 'dddd [kl.] LT', + lastDay : '[I går kl.] LT', + lastWeek : '[sidste] dddd [kl] LT', + sameElse : 'L' + }, + relativeTime : { + future : "om %s", + past : "%s siden", + s : "få sekunder", + m : "et minut", + mm : "%d minutter", + h : "en time", + hh : "%d timer", + d : "en dag", + dd : "%d dage", + M : "en måned", + MM : "%d måneder", + y : "et år", + yy : "%d år" + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : german (de) +// author : lluchs : https://github.com/lluchs +// author: Menelion Elensúle: https://github.com/Oire + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eine Minute', 'einer Minute'], + 'h': ['eine Stunde', 'einer Stunde'], + 'd': ['ein Tag', 'einem Tag'], + 'dd': [number + ' Tage', number + ' Tagen'], + 'M': ['ein Monat', 'einem Monat'], + 'MM': [number + ' Monate', number + ' Monaten'], + 'y': ['ein Jahr', 'einem Jahr'], + 'yy': [number + ' Jahre', number + ' Jahren'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; + } + + return moment.lang('de', { + months : "Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"), + monthsShort : "Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"), + weekdays : "Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"), + weekdaysShort : "So._Mo._Di._Mi._Do._Fr._Sa.".split("_"), + weekdaysMin : "So_Mo_Di_Mi_Do_Fr_Sa".split("_"), + longDateFormat : { + LT: "H:mm [Uhr]", + L : "DD.MM.YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd, D. MMMM YYYY LT" + }, + calendar : { + sameDay: "[Heute um] LT", + sameElse: "L", + nextDay: '[Morgen um] LT', + nextWeek: 'dddd [um] LT', + lastDay: '[Gestern um] LT', + lastWeek: '[letzten] dddd [um] LT' + }, + relativeTime : { + future : "in %s", + past : "vor %s", + s : "ein paar Sekunden", + m : processRelativeTime, + mm : "%d Minuten", + h : processRelativeTime, + hh : "%d Stunden", + d : processRelativeTime, + dd : processRelativeTime, + M : processRelativeTime, + MM : processRelativeTime, + y : processRelativeTime, + yy : processRelativeTime + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : modern greek (el) +// author : Aggelos Karalias : https://github.com/mehiel + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('el', { + monthsNominativeEl : "Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"), + monthsGenitiveEl : "Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"), + months : function (momentToFormat, format) { + if (/D/.test(format.substring(0, format.indexOf("MMMM")))) { // if there is a day number before 'MMMM' + return this._monthsGenitiveEl[momentToFormat.month()]; + } else { + return this._monthsNominativeEl[momentToFormat.month()]; + } + }, + monthsShort : "Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"), + weekdays : "Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"), + weekdaysShort : "Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"), + weekdaysMin : "Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"), + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'μμ' : 'ΜΜ'; + } else { + return isLower ? 'πμ' : 'ΠΜ'; + } + }, + longDateFormat : { + LT : "h:mm A", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendarEl : { + sameDay : '[Σήμερα {}] LT', + nextDay : '[Αύριο {}] LT', + nextWeek : 'dddd [{}] LT', + lastDay : '[Χθες {}] LT', + lastWeek : '[την προηγούμενη] dddd [{}] LT', + sameElse : 'L' + }, + calendar : function (key, mom) { + var output = this._calendarEl[key], + hours = mom && mom.hours(); + + return output.replace("{}", (hours % 12 === 1 ? "στη" : "στις")); + }, + relativeTime : { + future : "σε %s", + past : "%s πριν", + s : "δευτερόλεπτα", + m : "ένα λεπτό", + mm : "%d λεπτά", + h : "μία ώρα", + hh : "%d ώρες", + d : "μία μέρα", + dd : "%d μέρες", + M : "ένας μήνας", + MM : "%d μήνες", + y : "ένας χρόνος", + yy : "%d χρόνια" + }, + ordinal : function (number) { + return number + 'η'; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : australian english (en-au) + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('en-au', { + months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), + monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), + weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), + weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), + weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), + longDateFormat : { + LT : "h:mm A", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : "in %s", + past : "%s ago", + s : "a few seconds", + m : "a minute", + mm : "%d minutes", + h : "an hour", + hh : "%d hours", + d : "a day", + dd : "%d days", + M : "a month", + MM : "%d months", + y : "a year", + yy : "%d years" + }, + ordinal : function (number) { + var b = number % 10, + output = (~~ (number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : canadian english (en-ca) +// author : Jonathan Abourbih : https://github.com/jonbca + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('en-ca', { + months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), + monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), + weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), + weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), + weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), + longDateFormat : { + LT : "h:mm A", + L : "YYYY-MM-DD", + LL : "D MMMM, YYYY", + LLL : "D MMMM, YYYY LT", + LLLL : "dddd, D MMMM, YYYY LT" + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : "in %s", + past : "%s ago", + s : "a few seconds", + m : "a minute", + mm : "%d minutes", + h : "an hour", + hh : "%d hours", + d : "a day", + dd : "%d days", + M : "a month", + MM : "%d months", + y : "a year", + yy : "%d years" + }, + ordinal : function (number) { + var b = number % 10, + output = (~~ (number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); +})); + +// moment.js language configuration +// language : great britain english (en-gb) +// author : Chris Gedrim : https://github.com/chrisgedrim + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('en-gb', { + months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), + monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), + weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), + weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), + weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : "in %s", + past : "%s ago", + s : "a few seconds", + m : "a minute", + mm : "%d minutes", + h : "an hour", + hh : "%d hours", + d : "a day", + dd : "%d days", + M : "a month", + MM : "%d months", + y : "a year", + yy : "%d years" + }, + ordinal : function (number) { + var b = number % 10, + output = (~~ (number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : esperanto (eo) +// author : Colin Dean : https://github.com/colindean +// komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko. +// Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni! + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('eo', { + months : "januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"), + monthsShort : "jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"), + weekdays : "Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"), + weekdaysShort : "Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab".split("_"), + weekdaysMin : "Di_Lu_Ma_Me_Ĵa_Ve_Sa".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "YYYY-MM-DD", + LL : "D[-an de] MMMM, YYYY", + LLL : "D[-an de] MMMM, YYYY LT", + LLLL : "dddd, [la] D[-an de] MMMM, YYYY LT" + }, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'p.t.m.' : 'P.T.M.'; + } else { + return isLower ? 'a.t.m.' : 'A.T.M.'; + } + }, + calendar : { + sameDay : '[Hodiaŭ je] LT', + nextDay : '[Morgaŭ je] LT', + nextWeek : 'dddd [je] LT', + lastDay : '[Hieraŭ je] LT', + lastWeek : '[pasinta] dddd [je] LT', + sameElse : 'L' + }, + relativeTime : { + future : "je %s", + past : "antaŭ %s", + s : "sekundoj", + m : "minuto", + mm : "%d minutoj", + h : "horo", + hh : "%d horoj", + d : "tago",//ne 'diurno', ĉar estas uzita por proksimumo + dd : "%d tagoj", + M : "monato", + MM : "%d monatoj", + y : "jaro", + yy : "%d jaroj" + }, + ordinal : "%da", + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : spanish (es) +// author : Julio Napurí : https://github.com/julionc + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('es', { + months : "enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"), + monthsShort : "ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"), + weekdays : "domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"), + weekdaysShort : "dom._lun._mar._mié._jue._vie._sáb.".split("_"), + weekdaysMin : "Do_Lu_Ma_Mi_Ju_Vi_Sá".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD/MM/YYYY", + LL : "D [de] MMMM [de] YYYY", + LLL : "D [de] MMMM [de] YYYY LT", + LLLL : "dddd, D [de] MMMM [de] YYYY LT" + }, + calendar : { + sameDay : function () { + return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextDay : function () { + return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastDay : function () { + return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : "en %s", + past : "hace %s", + s : "unos segundos", + m : "un minuto", + mm : "%d minutos", + h : "una hora", + hh : "%d horas", + d : "un día", + dd : "%d días", + M : "un mes", + MM : "%d meses", + y : "un año", + yy : "%d años" + }, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : estonian (et) +// author : Henry Kehlmann : https://github.com/madhenry +// improvements : Illimar Tambek : https://github.com/ragulka + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'], + 'm' : ['ühe minuti', 'üks minut'], + 'mm': [number + ' minuti', number + ' minutit'], + 'h' : ['ühe tunni', 'tund aega', 'üks tund'], + 'hh': [number + ' tunni', number + ' tundi'], + 'd' : ['ühe päeva', 'üks päev'], + 'M' : ['kuu aja', 'kuu aega', 'üks kuu'], + 'MM': [number + ' kuu', number + ' kuud'], + 'y' : ['ühe aasta', 'aasta', 'üks aasta'], + 'yy': [number + ' aasta', number + ' aastat'] + }; + if (withoutSuffix) { + return format[key][2] ? format[key][2] : format[key][1]; + } + return isFuture ? format[key][0] : format[key][1]; + } + + return moment.lang('et', { + months : "jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"), + monthsShort : "jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"), + weekdays : "pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"), + weekdaysShort : "P_E_T_K_N_R_L".split("_"), + weekdaysMin : "P_E_T_K_N_R_L".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD.MM.YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd, D. MMMM YYYY LT" + }, + calendar : { + sameDay : '[Täna,] LT', + nextDay : '[Homme,] LT', + nextWeek : '[Järgmine] dddd LT', + lastDay : '[Eile,] LT', + lastWeek : '[Eelmine] dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s pärast", + past : "%s tagasi", + s : processRelativeTime, + m : processRelativeTime, + mm : processRelativeTime, + h : processRelativeTime, + hh : processRelativeTime, + d : processRelativeTime, + dd : '%d päeva', + M : processRelativeTime, + MM : processRelativeTime, + y : processRelativeTime, + yy : processRelativeTime + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : euskara (eu) +// author : Eneko Illarramendi : https://github.com/eillarra + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('eu', { + months : "urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"), + monthsShort : "urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"), + weekdays : "igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"), + weekdaysShort : "ig._al._ar._az._og._ol._lr.".split("_"), + weekdaysMin : "ig_al_ar_az_og_ol_lr".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "YYYY-MM-DD", + LL : "YYYY[ko] MMMM[ren] D[a]", + LLL : "YYYY[ko] MMMM[ren] D[a] LT", + LLLL : "dddd, YYYY[ko] MMMM[ren] D[a] LT", + l : "YYYY-M-D", + ll : "YYYY[ko] MMM D[a]", + lll : "YYYY[ko] MMM D[a] LT", + llll : "ddd, YYYY[ko] MMM D[a] LT" + }, + calendar : { + sameDay : '[gaur] LT[etan]', + nextDay : '[bihar] LT[etan]', + nextWeek : 'dddd LT[etan]', + lastDay : '[atzo] LT[etan]', + lastWeek : '[aurreko] dddd LT[etan]', + sameElse : 'L' + }, + relativeTime : { + future : "%s barru", + past : "duela %s", + s : "segundo batzuk", + m : "minutu bat", + mm : "%d minutu", + h : "ordu bat", + hh : "%d ordu", + d : "egun bat", + dd : "%d egun", + M : "hilabete bat", + MM : "%d hilabete", + y : "urte bat", + yy : "%d urte" + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : Persian Language +// author : Ebrahim Byagowi : https://github.com/ebraminio + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var symbolMap = { + '1': '۱', + '2': '۲', + '3': '۳', + '4': '۴', + '5': '۵', + '6': '۶', + '7': '۷', + '8': '۸', + '9': '۹', + '0': '۰' + }, numberMap = { + '۱': '1', + '۲': '2', + '۳': '3', + '۴': '4', + '۵': '5', + '۶': '6', + '۷': '7', + '۸': '8', + '۹': '9', + '۰': '0' + }; + + return moment.lang('fa', { + months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), + monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), + weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), + weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), + weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'), + longDateFormat : { + LT : 'HH:mm', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY LT', + LLLL : 'dddd, D MMMM YYYY LT' + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return "قبل از ظهر"; + } else { + return "بعد از ظهر"; + } + }, + calendar : { + sameDay : '[امروز ساعت] LT', + nextDay : '[فردا ساعت] LT', + nextWeek : 'dddd [ساعت] LT', + lastDay : '[دیروز ساعت] LT', + lastWeek : 'dddd [پیش] [ساعت] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'در %s', + past : '%s پیش', + s : 'چندین ثانیه', + m : 'یک دقیقه', + mm : '%d دقیقه', + h : 'یک ساعت', + hh : '%d ساعت', + d : 'یک روز', + dd : '%d روز', + M : 'یک ماه', + MM : '%d ماه', + y : 'یک سال', + yy : '%d سال' + }, + preparse: function (string) { + return string.replace(/[۰-۹]/g, function (match) { + return numberMap[match]; + }).replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }).replace(/,/g, '،'); + }, + ordinal : '%dم', + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : finnish (fi) +// author : Tarmo Aidantausta : https://github.com/bleadof + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var numbers_past = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '), + numbers_future = ['nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', + numbers_past[7], numbers_past[8], numbers_past[9]]; + + function translate(number, withoutSuffix, key, isFuture) { + var result = ""; + switch (key) { + case 's': + return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; + case 'm': + return isFuture ? 'minuutin' : 'minuutti'; + case 'mm': + result = isFuture ? 'minuutin' : 'minuuttia'; + break; + case 'h': + return isFuture ? 'tunnin' : 'tunti'; + case 'hh': + result = isFuture ? 'tunnin' : 'tuntia'; + break; + case 'd': + return isFuture ? 'päivän' : 'päivä'; + case 'dd': + result = isFuture ? 'päivän' : 'päivää'; + break; + case 'M': + return isFuture ? 'kuukauden' : 'kuukausi'; + case 'MM': + result = isFuture ? 'kuukauden' : 'kuukautta'; + break; + case 'y': + return isFuture ? 'vuoden' : 'vuosi'; + case 'yy': + result = isFuture ? 'vuoden' : 'vuotta'; + break; + } + result = verbal_number(number, isFuture) + " " + result; + return result; + } + + function verbal_number(number, isFuture) { + return number < 10 ? (isFuture ? numbers_future[number] : numbers_past[number]) : number; + } + + return moment.lang('fi', { + months : "tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"), + monthsShort : "tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"), + weekdays : "sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"), + weekdaysShort : "su_ma_ti_ke_to_pe_la".split("_"), + weekdaysMin : "su_ma_ti_ke_to_pe_la".split("_"), + longDateFormat : { + LT : "HH.mm", + L : "DD.MM.YYYY", + LL : "Do MMMM[ta] YYYY", + LLL : "Do MMMM[ta] YYYY, [klo] LT", + LLLL : "dddd, Do MMMM[ta] YYYY, [klo] LT", + l : "D.M.YYYY", + ll : "Do MMM YYYY", + lll : "Do MMM YYYY, [klo] LT", + llll : "ddd, Do MMM YYYY, [klo] LT" + }, + calendar : { + sameDay : '[tänään] [klo] LT', + nextDay : '[huomenna] [klo] LT', + nextWeek : 'dddd [klo] LT', + lastDay : '[eilen] [klo] LT', + lastWeek : '[viime] dddd[na] [klo] LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s päästä", + past : "%s sitten", + s : translate, + m : translate, + mm : translate, + h : translate, + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + ordinal : "%d.", + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : faroese (fo) +// author : Ragnar Johannesen : https://github.com/ragnar123 + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('fo', { + months : "januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"), + monthsShort : "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"), + weekdays : "sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"), + weekdaysShort : "sun_mán_týs_mik_hós_frí_ley".split("_"), + weekdaysMin : "su_má_tý_mi_hó_fr_le".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D. MMMM, YYYY LT" + }, + calendar : { + sameDay : '[Í dag kl.] LT', + nextDay : '[Í morgin kl.] LT', + nextWeek : 'dddd [kl.] LT', + lastDay : '[Í gjár kl.] LT', + lastWeek : '[síðstu] dddd [kl] LT', + sameElse : 'L' + }, + relativeTime : { + future : "um %s", + past : "%s síðani", + s : "fá sekund", + m : "ein minutt", + mm : "%d minuttir", + h : "ein tími", + hh : "%d tímar", + d : "ein dagur", + dd : "%d dagar", + M : "ein mánaði", + MM : "%d mánaðir", + y : "eitt ár", + yy : "%d ár" + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : canadian french (fr-ca) +// author : Jonathan Abourbih : https://github.com/jonbca + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('fr-ca', { + months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"), + monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"), + weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"), + weekdaysShort : "dim._lun._mar._mer._jeu._ven._sam.".split("_"), + weekdaysMin : "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "YYYY-MM-DD", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: "[Aujourd'hui à] LT", + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L' + }, + relativeTime : { + future : "dans %s", + past : "il y a %s", + s : "quelques secondes", + m : "une minute", + mm : "%d minutes", + h : "une heure", + hh : "%d heures", + d : "un jour", + dd : "%d jours", + M : "un mois", + MM : "%d mois", + y : "un an", + yy : "%d ans" + }, + ordinal : function (number) { + return number + (number === 1 ? 'er' : ''); + } + }); +})); + +// moment.js language configuration +// language : french (fr) +// author : John Fischer : https://github.com/jfroffice + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('fr', { + months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"), + monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"), + weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"), + weekdaysShort : "dim._lun._mar._mer._jeu._ven._sam.".split("_"), + weekdaysMin : "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: "[Aujourd'hui à] LT", + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L' + }, + relativeTime : { + future : "dans %s", + past : "il y a %s", + s : "quelques secondes", + m : "une minute", + mm : "%d minutes", + h : "une heure", + hh : "%d heures", + d : "un jour", + dd : "%d jours", + M : "un mois", + MM : "%d mois", + y : "un an", + yy : "%d ans" + }, + ordinal : function (number) { + return number + (number === 1 ? 'er' : ''); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : galician (gl) +// author : Juan G. Hurtado : https://github.com/juanghurtado + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('gl', { + months : "Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"), + monthsShort : "Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.".split("_"), + weekdays : "Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado".split("_"), + weekdaysShort : "Dom._Lun._Mar._Mér._Xov._Ven._Sáb.".split("_"), + weekdaysMin : "Do_Lu_Ma_Mé_Xo_Ve_Sá".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay : function () { + return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + }, + nextDay : function () { + return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + }, + nextWeek : function () { + return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + }, + lastDay : function () { + return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT'; + }, + lastWeek : function () { + return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : function (str) { + if (str === "uns segundos") { + return "nuns segundos"; + } + return "en " + str; + }, + past : "hai %s", + s : "uns segundos", + m : "un minuto", + mm : "%d minutos", + h : "unha hora", + hh : "%d horas", + d : "un día", + dd : "%d días", + M : "un mes", + MM : "%d meses", + y : "un ano", + yy : "%d anos" + }, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : Hebrew (he) +// author : Tomer Cohen : https://github.com/tomer +// author : Moshe Simantov : https://github.com/DevelopmentIL +// author : Tal Ater : https://github.com/TalAter + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('he', { + months : "ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"), + monthsShort : "ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"), + weekdays : "ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"), + weekdaysShort : "א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"), + weekdaysMin : "א_ב_ג_ד_ה_ו_ש".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D [ב]MMMM YYYY", + LLL : "D [ב]MMMM YYYY LT", + LLLL : "dddd, D [ב]MMMM YYYY LT", + l : "D/M/YYYY", + ll : "D MMM YYYY", + lll : "D MMM YYYY LT", + llll : "ddd, D MMM YYYY LT" + }, + calendar : { + sameDay : '[היום ב־]LT', + nextDay : '[מחר ב־]LT', + nextWeek : 'dddd [בשעה] LT', + lastDay : '[אתמול ב־]LT', + lastWeek : '[ביום] dddd [האחרון בשעה] LT', + sameElse : 'L' + }, + relativeTime : { + future : "בעוד %s", + past : "לפני %s", + s : "מספר שניות", + m : "דקה", + mm : "%d דקות", + h : "שעה", + hh : function (number) { + if (number === 2) { + return "שעתיים"; + } + return number + " שעות"; + }, + d : "יום", + dd : function (number) { + if (number === 2) { + return "יומיים"; + } + return number + " ימים"; + }, + M : "חודש", + MM : function (number) { + if (number === 2) { + return "חודשיים"; + } + return number + " חודשים"; + }, + y : "שנה", + yy : function (number) { + if (number === 2) { + return "שנתיים"; + } + return number + " שנים"; + } + } + }); +})); + +// moment.js language configuration +// language : hindi (hi) +// author : Mayank Singhal : https://github.com/mayanksinghal + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' + }, + numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' + }; + + return moment.lang('hi', { + months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split("_"), + monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split("_"), + weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split("_"), + weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split("_"), + weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split("_"), + longDateFormat : { + LT : "A h:mm बजे", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY, LT", + LLLL : "dddd, D MMMM YYYY, LT" + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[कल] LT', + nextWeek : 'dddd, LT', + lastDay : '[कल] LT', + lastWeek : '[पिछले] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s में", + past : "%s पहले", + s : "कुछ ही क्षण", + m : "एक मिनट", + mm : "%d मिनट", + h : "एक घंटा", + hh : "%d घंटे", + d : "एक दिन", + dd : "%d दिन", + M : "एक महीने", + MM : "%d महीने", + y : "एक वर्ष", + yy : "%d वर्ष" + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + // Hindi notation for meridiems are quite fuzzy in practice. While there exists + // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return "रात"; + } else if (hour < 10) { + return "सुबह"; + } else if (hour < 17) { + return "दोपहर"; + } else if (hour < 20) { + return "शाम"; + } else { + return "रात"; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : hrvatski (hr) +// author : Bojan Marković : https://github.com/bmarkovic + +// based on (sl) translation by Robert Sedovšek + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + + function translate(number, withoutSuffix, key) { + var result = number + " "; + switch (key) { + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mjesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'mjeseca'; + } else { + result += 'mjeseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; + } + } + + return moment.lang('hr', { + months : "sječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_"), + monthsShort : "sje._vel._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"), + weekdays : "nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"), + weekdaysShort : "ned._pon._uto._sri._čet._pet._sub.".split("_"), + weekdaysMin : "ne_po_ut_sr_če_pe_su".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD. MM. YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd, D. MMMM YYYY LT" + }, + calendar : { + sameDay : '[danas u] LT', + nextDay : '[sutra u] LT', + + nextWeek : function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[jučer u] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : "za %s", + past : "prije %s", + s : "par sekundi", + m : translate, + mm : translate, + h : translate, + hh : translate, + d : "dan", + dd : translate, + M : "mjesec", + MM : translate, + y : "godinu", + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : hungarian (hu) +// author : Adam Brunner : https://github.com/adambrunner + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); + + function translate(number, withoutSuffix, key, isFuture) { + var num = number, + suffix; + + switch (key) { + case 's': + return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce'; + case 'm': + return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); + case 'mm': + return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); + case 'h': + return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); + case 'hh': + return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); + case 'd': + return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); + case 'dd': + return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); + case 'M': + return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); + case 'MM': + return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); + case 'y': + return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); + case 'yy': + return num + (isFuture || withoutSuffix ? ' év' : ' éve'); + } + + return ''; + } + + function week(isFuture) { + return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]'; + } + + return moment.lang('hu', { + months : "január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"), + monthsShort : "jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"), + weekdays : "vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"), + weekdaysShort : "vas_hét_kedd_sze_csüt_pén_szo".split("_"), + weekdaysMin : "v_h_k_sze_cs_p_szo".split("_"), + longDateFormat : { + LT : "H:mm", + L : "YYYY.MM.DD.", + LL : "YYYY. MMMM D.", + LLL : "YYYY. MMMM D., LT", + LLLL : "YYYY. MMMM D., dddd LT" + }, + calendar : { + sameDay : '[ma] LT[-kor]', + nextDay : '[holnap] LT[-kor]', + nextWeek : function () { + return week.call(this, true); + }, + lastDay : '[tegnap] LT[-kor]', + lastWeek : function () { + return week.call(this, false); + }, + sameElse : 'L' + }, + relativeTime : { + future : "%s múlva", + past : "%s", + s : translate, + m : translate, + mm : translate, + h : translate, + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : Armenian (hy-am) +// author : Armendarabyan : https://github.com/armendarabyan + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + + function monthsCaseReplace(m, format) { + var months = { + 'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'), + 'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_') + }, + + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + + return months[nounCase][m.month()]; + } + + function monthsShortCaseReplace(m, format) { + var monthsShort = 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'); + + return monthsShort[m.month()]; + } + + function weekdaysCaseReplace(m, format) { + var weekdays = 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'); + + return weekdays[m.day()]; + } + + return moment.lang('hy-am', { + months : monthsCaseReplace, + monthsShort : monthsShortCaseReplace, + weekdays : weekdaysCaseReplace, + weekdaysShort : "կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"), + weekdaysMin : "կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD.MM.YYYY", + LL : "D MMMM YYYY թ.", + LLL : "D MMMM YYYY թ., LT", + LLLL : "dddd, D MMMM YYYY թ., LT" + }, + calendar : { + sameDay: '[այսօր] LT', + nextDay: '[վաղը] LT', + lastDay: '[երեկ] LT', + nextWeek: function () { + return 'dddd [օրը ժամը] LT'; + }, + lastWeek: function () { + return '[անցած] dddd [օրը ժամը] LT'; + }, + sameElse: 'L' + }, + relativeTime : { + future : "%s հետո", + past : "%s առաջ", + s : "մի քանի վայրկյան", + m : "րոպե", + mm : "%d րոպե", + h : "ժամ", + hh : "%d ժամ", + d : "օր", + dd : "%d օր", + M : "ամիս", + MM : "%d ամիս", + y : "տարի", + yy : "%d տարի" + }, + + meridiem : function (hour) { + if (hour < 4) { + return "գիշերվա"; + } else if (hour < 12) { + return "առավոտվա"; + } else if (hour < 17) { + return "ցերեկվա"; + } else { + return "երեկոյան"; + } + }, + + ordinal: function (number, period) { + switch (period) { + case 'DDD': + case 'w': + case 'W': + case 'DDDo': + if (number === 1) { + return number + '-ին'; + } + return number + '-րդ'; + default: + return number; + } + }, + + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : Bahasa Indonesia (id) +// author : Mohammad Satrio Utomo : https://github.com/tyok +// reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('id', { + months : "Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"), + monthsShort : "Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"), + weekdays : "Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"), + weekdaysShort : "Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"), + weekdaysMin : "Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"), + longDateFormat : { + LT : "HH.mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY [pukul] LT", + LLLL : "dddd, D MMMM YYYY [pukul] LT" + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'siang'; + } else if (hours < 19) { + return 'sore'; + } else { + return 'malam'; + } + }, + calendar : { + sameDay : '[Hari ini pukul] LT', + nextDay : '[Besok pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kemarin pukul] LT', + lastWeek : 'dddd [lalu pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : "dalam %s", + past : "%s yang lalu", + s : "beberapa detik", + m : "semenit", + mm : "%d menit", + h : "sejam", + hh : "%d jam", + d : "sehari", + dd : "%d hari", + M : "sebulan", + MM : "%d bulan", + y : "setahun", + yy : "%d tahun" + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : icelandic (is) +// author : Hinrik Örn Sigurðsson : https://github.com/hinrik + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + function plural(n) { + if (n % 100 === 11) { + return true; + } else if (n % 10 === 1) { + return false; + } + return true; + } + + function translate(number, withoutSuffix, key, isFuture) { + var result = number + " "; + switch (key) { + case 's': + return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; + case 'm': + return withoutSuffix ? 'mínúta' : 'mínútu'; + case 'mm': + if (plural(number)) { + return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum'); + } else if (withoutSuffix) { + return result + 'mínúta'; + } + return result + 'mínútu'; + case 'hh': + if (plural(number)) { + return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum'); + } + return result + 'klukkustund'; + case 'd': + if (withoutSuffix) { + return 'dagur'; + } + return isFuture ? 'dag' : 'degi'; + case 'dd': + if (plural(number)) { + if (withoutSuffix) { + return result + 'dagar'; + } + return result + (isFuture ? 'daga' : 'dögum'); + } else if (withoutSuffix) { + return result + 'dagur'; + } + return result + (isFuture ? 'dag' : 'degi'); + case 'M': + if (withoutSuffix) { + return 'mánuður'; + } + return isFuture ? 'mánuð' : 'mánuði'; + case 'MM': + if (plural(number)) { + if (withoutSuffix) { + return result + 'mánuðir'; + } + return result + (isFuture ? 'mánuði' : 'mánuðum'); + } else if (withoutSuffix) { + return result + 'mánuður'; + } + return result + (isFuture ? 'mánuð' : 'mánuði'); + case 'y': + return withoutSuffix || isFuture ? 'ár' : 'ári'; + case 'yy': + if (plural(number)) { + return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); + } + return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); + } + } + + return moment.lang('is', { + months : "janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"), + monthsShort : "jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"), + weekdays : "sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"), + weekdaysShort : "sun_mán_þri_mið_fim_fös_lau".split("_"), + weekdaysMin : "Su_Má_Þr_Mi_Fi_Fö_La".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD/MM/YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY [kl.] LT", + LLLL : "dddd, D. MMMM YYYY [kl.] LT" + }, + calendar : { + sameDay : '[í dag kl.] LT', + nextDay : '[á morgun kl.] LT', + nextWeek : 'dddd [kl.] LT', + lastDay : '[í gær kl.] LT', + lastWeek : '[síðasta] dddd [kl.] LT', + sameElse : 'L' + }, + relativeTime : { + future : "eftir %s", + past : "fyrir %s síðan", + s : translate, + m : translate, + mm : translate, + h : "klukkustund", + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : italian (it) +// author : Lorenzo : https://github.com/aliem +// author: Mattia Larentis: https://github.com/nostalgiaz + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('it', { + months : "Gennaio_Febbraio_Marzo_Aprile_Maggio_Giugno_Luglio_Agosto_Settembre_Ottobre_Novembre_Dicembre".split("_"), + monthsShort : "Gen_Feb_Mar_Apr_Mag_Giu_Lug_Ago_Set_Ott_Nov_Dic".split("_"), + weekdays : "Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"), + weekdaysShort : "Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"), + weekdaysMin : "D_L_Ma_Me_G_V_S".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay: '[Oggi alle] LT', + nextDay: '[Domani alle] LT', + nextWeek: 'dddd [alle] LT', + lastDay: '[Ieri alle] LT', + lastWeek: '[lo scorso] dddd [alle] LT', + sameElse: 'L' + }, + relativeTime : { + future : function (s) { + return ((/^[0-9].+$/).test(s) ? "tra" : "in") + " " + s; + }, + past : "%s fa", + s : "alcuni secondi", + m : "un minuto", + mm : "%d minuti", + h : "un'ora", + hh : "%d ore", + d : "un giorno", + dd : "%d giorni", + M : "un mese", + MM : "%d mesi", + y : "un anno", + yy : "%d anni" + }, + ordinal: '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : japanese (ja) +// author : LI Long : https://github.com/baryon + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('ja', { + months : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), + monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), + weekdays : "日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"), + weekdaysShort : "日_月_火_水_木_金_土".split("_"), + weekdaysMin : "日_月_火_水_木_金_土".split("_"), + longDateFormat : { + LT : "Ah時m分", + L : "YYYY/MM/DD", + LL : "YYYY年M月D日", + LLL : "YYYY年M月D日LT", + LLLL : "YYYY年M月D日LT dddd" + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return "午前"; + } else { + return "午後"; + } + }, + calendar : { + sameDay : '[今日] LT', + nextDay : '[明日] LT', + nextWeek : '[来週]dddd LT', + lastDay : '[昨日] LT', + lastWeek : '[前週]dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s後", + past : "%s前", + s : "数秒", + m : "1分", + mm : "%d分", + h : "1時間", + hh : "%d時間", + d : "1日", + dd : "%d日", + M : "1ヶ月", + MM : "%dヶ月", + y : "1年", + yy : "%d年" + } + }); +})); + +// moment.js language configuration +// language : Georgian (ka) +// author : Irakli Janiashvili : https://github.com/irakli-janiashvili + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + + function monthsCaseReplace(m, format) { + var months = { + 'nominative': 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), + 'accusative': 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_') + }, + + nounCase = (/D[oD] *MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + + return months[nounCase][m.month()]; + } + + function weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), + 'accusative': 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_') + }, + + nounCase = (/(წინა|შემდეგ)/).test(format) ? + 'accusative' : + 'nominative'; + + return weekdays[nounCase][m.day()]; + } + + return moment.lang('ka', { + months : monthsCaseReplace, + monthsShort : "იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"), + weekdays : weekdaysCaseReplace, + weekdaysShort : "კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"), + weekdaysMin : "კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"), + longDateFormat : { + LT : "h:mm A", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay : '[დღეს] LT[-ზე]', + nextDay : '[ხვალ] LT[-ზე]', + lastDay : '[გუშინ] LT[-ზე]', + nextWeek : '[შემდეგ] dddd LT[-ზე]', + lastWeek : '[წინა] dddd LT-ზე', + sameElse : 'L' + }, + relativeTime : { + future : function (s) { + return (/(წამი|წუთი|საათი|წელი)/).test(s) ? + s.replace(/ი$/, "ში") : + s + "ში"; + }, + past : function (s) { + if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) { + return s.replace(/(ი|ე)$/, "ის წინ"); + } + if ((/წელი/).test(s)) { + return s.replace(/წელი$/, "წლის წინ"); + } + }, + s : "რამდენიმე წამი", + m : "წუთი", + mm : "%d წუთი", + h : "საათი", + hh : "%d საათი", + d : "დღე", + dd : "%d დღე", + M : "თვე", + MM : "%d თვე", + y : "წელი", + yy : "%d წელი" + }, + ordinal : function (number) { + if (number === 0) { + return number; + } + + if (number === 1) { + return number + "-ლი"; + } + + if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) { + return "მე-" + number; + } + + return number + "-ე"; + }, + week : { + dow : 1, + doy : 7 + } + }); +})); + +// moment.js language configuration +// language : korean (ko) +// +// authors +// +// - Kyungwook, Park : https://github.com/kyungw00k +// - Jeeeyul Lee +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('ko', { + months : "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"), + monthsShort : "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"), + weekdays : "일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"), + weekdaysShort : "일_월_화_수_목_금_토".split("_"), + weekdaysMin : "일_월_화_수_목_금_토".split("_"), + longDateFormat : { + LT : "A h시 mm분", + L : "YYYY.MM.DD", + LL : "YYYY년 MMMM D일", + LLL : "YYYY년 MMMM D일 LT", + LLLL : "YYYY년 MMMM D일 dddd LT" + }, + meridiem : function (hour, minute, isUpper) { + return hour < 12 ? '오전' : '오후'; + }, + calendar : { + sameDay : '오늘 LT', + nextDay : '내일 LT', + nextWeek : 'dddd LT', + lastDay : '어제 LT', + lastWeek : '지난주 dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s 후", + past : "%s 전", + s : "몇초", + ss : "%d초", + m : "일분", + mm : "%d분", + h : "한시간", + hh : "%d시간", + d : "하루", + dd : "%d일", + M : "한달", + MM : "%d달", + y : "일년", + yy : "%d년" + }, + ordinal : '%d일', + meridiemParse : /(오전|오후)/, + isPM : function (token) { + return token === "오후"; + } + }); +})); + +// moment.js language configuration +// language : Luxembourgish (lb) +// author : mweimerskirch : https://github.com/mweimerskirch + +// Note: Luxembourgish has a very particular phonological rule ("Eifeler Regel") that causes the +// deletion of the final "n" in certain contexts. That's what the "eifelerRegelAppliesToWeekday" +// and "eifelerRegelAppliesToNumber" methods are meant for + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eng Minutt', 'enger Minutt'], + 'h': ['eng Stonn', 'enger Stonn'], + 'd': ['een Dag', 'engem Dag'], + 'dd': [number + ' Deeg', number + ' Deeg'], + 'M': ['ee Mount', 'engem Mount'], + 'MM': [number + ' Méint', number + ' Méint'], + 'y': ['ee Joer', 'engem Joer'], + 'yy': [number + ' Joer', number + ' Joer'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; + } + + function processFutureTime(string) { + var number = string.substr(0, string.indexOf(' ')); + if (eifelerRegelAppliesToNumber(number)) { + return "a " + string; + } + return "an " + string; + } + + function processPastTime(string) { + var number = string.substr(0, string.indexOf(' ')); + if (eifelerRegelAppliesToNumber(number)) { + return "viru " + string; + } + return "virun " + string; + } + + function processLastWeek(string1) { + var weekday = this.format('d'); + if (eifelerRegelAppliesToWeekday(weekday)) { + return '[Leschte] dddd [um] LT'; + } + return '[Leschten] dddd [um] LT'; + } + + /** + * Returns true if the word before the given week day loses the "-n" ending. + * e.g. "Leschten Dënschdeg" but "Leschte Méindeg" + * + * @param weekday {integer} + * @returns {boolean} + */ + function eifelerRegelAppliesToWeekday(weekday) { + weekday = parseInt(weekday, 10); + switch (weekday) { + case 0: // Sonndeg + case 1: // Méindeg + case 3: // Mëttwoch + case 5: // Freideg + case 6: // Samschdeg + return true; + default: // 2 Dënschdeg, 4 Donneschdeg + return false; + } + } + + /** + * Returns true if the word before the given number loses the "-n" ending. + * e.g. "an 10 Deeg" but "a 5 Deeg" + * + * @param number {integer} + * @returns {boolean} + */ + function eifelerRegelAppliesToNumber(number) { + number = parseInt(number, 10); + if (isNaN(number)) { + return false; + } + if (number < 0) { + // Negative Number --> always true + return true; + } else if (number < 10) { + // Only 1 digit + if (4 <= number && number <= 7) { + return true; + } + return false; + } else if (number < 100) { + // 2 digits + var lastDigit = number % 10, firstDigit = number / 10; + if (lastDigit === 0) { + return eifelerRegelAppliesToNumber(firstDigit); + } + return eifelerRegelAppliesToNumber(lastDigit); + } else if (number < 10000) { + // 3 or 4 digits --> recursively check first digit + while (number >= 10) { + number = number / 10; + } + return eifelerRegelAppliesToNumber(number); + } else { + // Anything larger than 4 digits: recursively check first n-3 digits + number = number / 1000; + return eifelerRegelAppliesToNumber(number); + } + } + + return moment.lang('lb', { + months: "Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"), + monthsShort: "Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"), + weekdays: "Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"), + weekdaysShort: "So._Mé._Dë._Më._Do._Fr._Sa.".split("_"), + weekdaysMin: "So_Mé_Dë_Më_Do_Fr_Sa".split("_"), + longDateFormat: { + LT: "H:mm [Auer]", + L: "DD.MM.YYYY", + LL: "D. MMMM YYYY", + LLL: "D. MMMM YYYY LT", + LLLL: "dddd, D. MMMM YYYY LT" + }, + calendar: { + sameDay: "[Haut um] LT", + sameElse: "L", + nextDay: '[Muer um] LT', + nextWeek: 'dddd [um] LT', + lastDay: '[Gëschter um] LT', + lastWeek: processLastWeek + }, + relativeTime: { + future: processFutureTime, + past: processPastTime, + s: "e puer Sekonnen", + m: processRelativeTime, + mm: "%d Minutten", + h: processRelativeTime, + hh: "%d Stonnen", + d: processRelativeTime, + dd: processRelativeTime, + M: processRelativeTime, + MM: processRelativeTime, + y: processRelativeTime, + yy: processRelativeTime + }, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : Lithuanian (lt) +// author : Mindaugas Mozūras : https://github.com/mmozuras + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var units = { + "m" : "minutė_minutės_minutę", + "mm": "minutės_minučių_minutes", + "h" : "valanda_valandos_valandą", + "hh": "valandos_valandų_valandas", + "d" : "diena_dienos_dieną", + "dd": "dienos_dienų_dienas", + "M" : "mėnuo_mėnesio_mėnesį", + "MM": "mėnesiai_mėnesių_mėnesius", + "y" : "metai_metų_metus", + "yy": "metai_metų_metus" + }, + weekDays = "pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis_sekmadienis".split("_"); + + function translateSeconds(number, withoutSuffix, key, isFuture) { + if (withoutSuffix) { + return "kelios sekundės"; + } else { + return isFuture ? "kelių sekundžių" : "kelias sekundes"; + } + } + + function translateSingular(number, withoutSuffix, key, isFuture) { + return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]); + } + + function special(number) { + return number % 10 === 0 || (number > 10 && number < 20); + } + + function forms(key) { + return units[key].split("_"); + } + + function translate(number, withoutSuffix, key, isFuture) { + var result = number + " "; + if (number === 1) { + return result + translateSingular(number, withoutSuffix, key[0], isFuture); + } else if (withoutSuffix) { + return result + (special(number) ? forms(key)[1] : forms(key)[0]); + } else { + if (isFuture) { + return result + forms(key)[1]; + } else { + return result + (special(number) ? forms(key)[1] : forms(key)[2]); + } + } + } + + function relativeWeekDay(moment, format) { + var nominative = format.indexOf('dddd LT') === -1, + weekDay = weekDays[moment.weekday()]; + + return nominative ? weekDay : weekDay.substring(0, weekDay.length - 2) + "į"; + } + + return moment.lang("lt", { + months : "sausio_vasario_kovo_balandžio_gegužės_biržėlio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"), + monthsShort : "sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"), + weekdays : relativeWeekDay, + weekdaysShort : "Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"), + weekdaysMin : "S_P_A_T_K_Pn_Š".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "YYYY-MM-DD", + LL : "YYYY [m.] MMMM D [d.]", + LLL : "YYYY [m.] MMMM D [d.], LT [val.]", + LLLL : "YYYY [m.] MMMM D [d.], dddd, LT [val.]", + l : "YYYY-MM-DD", + ll : "YYYY [m.] MMMM D [d.]", + lll : "YYYY [m.] MMMM D [d.], LT [val.]", + llll : "YYYY [m.] MMMM D [d.], ddd, LT [val.]" + }, + calendar : { + sameDay : "[Šiandien] LT", + nextDay : "[Rytoj] LT", + nextWeek : "dddd LT", + lastDay : "[Vakar] LT", + lastWeek : "[Praėjusį] dddd LT", + sameElse : "L" + }, + relativeTime : { + future : "po %s", + past : "prieš %s", + s : translateSeconds, + m : translateSingular, + mm : translate, + h : translateSingular, + hh : translate, + d : translateSingular, + dd : translate, + M : translateSingular, + MM : translate, + y : translateSingular, + yy : translate + }, + ordinal : function (number) { + return number + '-oji'; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : latvian (lv) +// author : Kristaps Karlsons : https://github.com/skakri + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var units = { + 'mm': 'minūti_minūtes_minūte_minūtes', + 'hh': 'stundu_stundas_stunda_stundas', + 'dd': 'dienu_dienas_diena_dienas', + 'MM': 'mēnesi_mēnešus_mēnesis_mēneši', + 'yy': 'gadu_gadus_gads_gadi' + }; + + function format(word, number, withoutSuffix) { + var forms = word.split('_'); + if (withoutSuffix) { + return number % 10 === 1 && number !== 11 ? forms[2] : forms[3]; + } else { + return number % 10 === 1 && number !== 11 ? forms[0] : forms[1]; + } + } + + function relativeTimeWithPlural(number, withoutSuffix, key) { + return number + ' ' + format(units[key], number, withoutSuffix); + } + + return moment.lang('lv', { + months : "janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"), + monthsShort : "jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"), + weekdays : "svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"), + weekdaysShort : "Sv_P_O_T_C_Pk_S".split("_"), + weekdaysMin : "Sv_P_O_T_C_Pk_S".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD.MM.YYYY", + LL : "YYYY. [gada] D. MMMM", + LLL : "YYYY. [gada] D. MMMM, LT", + LLLL : "YYYY. [gada] D. MMMM, dddd, LT" + }, + calendar : { + sameDay : '[Šodien pulksten] LT', + nextDay : '[Rīt pulksten] LT', + nextWeek : 'dddd [pulksten] LT', + lastDay : '[Vakar pulksten] LT', + lastWeek : '[Pagājušā] dddd [pulksten] LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s vēlāk", + past : "%s agrāk", + s : "dažas sekundes", + m : "minūti", + mm : relativeTimeWithPlural, + h : "stundu", + hh : relativeTimeWithPlural, + d : "dienu", + dd : relativeTimeWithPlural, + M : "mēnesi", + MM : relativeTimeWithPlural, + y : "gadu", + yy : relativeTimeWithPlural + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : macedonian (mk) +// author : Borislav Mickov : https://github.com/B0k0 + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('mk', { + months : "јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"), + monthsShort : "јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"), + weekdays : "недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"), + weekdaysShort : "нед_пон_вто_сре_чет_пет_саб".split("_"), + weekdaysMin : "нe_пo_вт_ср_че_пе_сa".split("_"), + longDateFormat : { + LT : "H:mm", + L : "D.MM.YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay : '[Денес во] LT', + nextDay : '[Утре во] LT', + nextWeek : 'dddd [во] LT', + lastDay : '[Вчера во] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + case 6: + return '[Во изминатата] dddd [во] LT'; + case 1: + case 2: + case 4: + case 5: + return '[Во изминатиот] dddd [во] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : "после %s", + past : "пред %s", + s : "неколку секунди", + m : "минута", + mm : "%d минути", + h : "час", + hh : "%d часа", + d : "ден", + dd : "%d дена", + M : "месец", + MM : "%d месеци", + y : "година", + yy : "%d години" + }, + ordinal : function (number) { + var lastDigit = number % 10, + last2Digits = number % 100; + if (number === 0) { + return number + '-ев'; + } else if (last2Digits === 0) { + return number + '-ен'; + } else if (last2Digits > 10 && last2Digits < 20) { + return number + '-ти'; + } else if (lastDigit === 1) { + return number + '-ви'; + } else if (lastDigit === 2) { + return number + '-ри'; + } else if (lastDigit === 7 || lastDigit === 8) { + return number + '-ми'; + } else { + return number + '-ти'; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : malayalam (ml) +// author : Floyd Pink : https://github.com/floydpink + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('ml', { + months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split("_"), + monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split("_"), + weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split("_"), + weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split("_"), + weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split("_"), + longDateFormat : { + LT : "A h:mm -നു", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY, LT", + LLLL : "dddd, D MMMM YYYY, LT" + }, + calendar : { + sameDay : '[ഇന്ന്] LT', + nextDay : '[നാളെ] LT', + nextWeek : 'dddd, LT', + lastDay : '[ഇന്നലെ] LT', + lastWeek : '[കഴിഞ്ഞ] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s കഴിഞ്ഞ്", + past : "%s മുൻപ്", + s : "അൽപ നിമിഷങ്ങൾ", + m : "ഒരു മിനിറ്റ്", + mm : "%d മിനിറ്റ്", + h : "ഒരു മണിക്കൂർ", + hh : "%d മണിക്കൂർ", + d : "ഒരു ദിവസം", + dd : "%d ദിവസം", + M : "ഒരു മാസം", + MM : "%d മാസം", + y : "ഒരു വർഷം", + yy : "%d വർഷം" + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return "രാത്രി"; + } else if (hour < 12) { + return "രാവിലെ"; + } else if (hour < 17) { + return "ഉച്ച കഴിഞ്ഞ്"; + } else if (hour < 20) { + return "വൈകുന്നേരം"; + } else { + return "രാത്രി"; + } + } + }); +})); + +// moment.js language configuration +// language : Marathi (mr) +// author : Harshad Kale : https://github.com/kalehv + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' + }, + numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' + }; + + return moment.lang('mr', { + months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split("_"), + monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split("_"), + weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split("_"), + weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split("_"), + weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split("_"), + longDateFormat : { + LT : "A h:mm वाजता", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY, LT", + LLLL : "dddd, D MMMM YYYY, LT" + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[उद्या] LT', + nextWeek : 'dddd, LT', + lastDay : '[काल] LT', + lastWeek: '[मागील] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s नंतर", + past : "%s पूर्वी", + s : "सेकंद", + m: "एक मिनिट", + mm: "%d मिनिटे", + h : "एक तास", + hh : "%d तास", + d : "एक दिवस", + dd : "%d दिवस", + M : "एक महिना", + MM : "%d महिने", + y : "एक वर्ष", + yy : "%d वर्षे" + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + meridiem: function (hour, minute, isLower) + { + if (hour < 4) { + return "रात्री"; + } else if (hour < 10) { + return "सकाळी"; + } else if (hour < 17) { + return "दुपारी"; + } else if (hour < 20) { + return "सायंकाळी"; + } else { + return "रात्री"; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : Bahasa Malaysia (ms-MY) +// author : Weldan Jamili : https://github.com/weldan + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('ms-my', { + months : "Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"), + monthsShort : "Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"), + weekdays : "Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"), + weekdaysShort : "Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"), + weekdaysMin : "Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"), + longDateFormat : { + LT : "HH.mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY [pukul] LT", + LLLL : "dddd, D MMMM YYYY [pukul] LT" + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'tengahari'; + } else if (hours < 19) { + return 'petang'; + } else { + return 'malam'; + } + }, + calendar : { + sameDay : '[Hari ini pukul] LT', + nextDay : '[Esok pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kelmarin pukul] LT', + lastWeek : 'dddd [lepas pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : "dalam %s", + past : "%s yang lepas", + s : "beberapa saat", + m : "seminit", + mm : "%d minit", + h : "sejam", + hh : "%d jam", + d : "sehari", + dd : "%d hari", + M : "sebulan", + MM : "%d bulan", + y : "setahun", + yy : "%d tahun" + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : norwegian bokmål (nb) +// authors : Espen Hovlandsdal : https://github.com/rexxars +// Sigurd Gartmann : https://github.com/sigurdga + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('nb', { + months : "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"), + monthsShort : "jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"), + weekdays : "søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"), + weekdaysShort : "sø._ma._ti._on._to._fr._lø.".split("_"), + weekdaysMin : "sø_ma_ti_on_to_fr_lø".split("_"), + longDateFormat : { + LT : "H.mm", + L : "DD.MM.YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY [kl.] LT", + LLLL : "dddd D. MMMM YYYY [kl.] LT" + }, + calendar : { + sameDay: '[i dag kl.] LT', + nextDay: '[i morgen kl.] LT', + nextWeek: 'dddd [kl.] LT', + lastDay: '[i går kl.] LT', + lastWeek: '[forrige] dddd [kl.] LT', + sameElse: 'L' + }, + relativeTime : { + future : "om %s", + past : "for %s siden", + s : "noen sekunder", + m : "ett minutt", + mm : "%d minutter", + h : "en time", + hh : "%d timer", + d : "en dag", + dd : "%d dager", + M : "en måned", + MM : "%d måneder", + y : "ett år", + yy : "%d år" + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : nepali/nepalese +// author : suvash : https://github.com/suvash + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' + }, + numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' + }; + + return moment.lang('ne', { + months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split("_"), + monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split("_"), + weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split("_"), + weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split("_"), + weekdaysMin : 'आइ._सो._मङ्_बु._बि._शु._श.'.split("_"), + longDateFormat : { + LT : "Aको h:mm बजे", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY, LT", + LLLL : "dddd, D MMMM YYYY, LT" + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 3) { + return "राती"; + } else if (hour < 10) { + return "बिहान"; + } else if (hour < 15) { + return "दिउँसो"; + } else if (hour < 18) { + return "बेलुका"; + } else if (hour < 20) { + return "साँझ"; + } else { + return "राती"; + } + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[भोली] LT', + nextWeek : '[आउँदो] dddd[,] LT', + lastDay : '[हिजो] LT', + lastWeek : '[गएको] dddd[,] LT', + sameElse : 'L' + }, + relativeTime : { + future : "%sमा", + past : "%s अगाडी", + s : "केही समय", + m : "एक मिनेट", + mm : "%d मिनेट", + h : "एक घण्टा", + hh : "%d घण्टा", + d : "एक दिन", + dd : "%d दिन", + M : "एक महिना", + MM : "%d महिना", + y : "एक बर्ष", + yy : "%d बर्ष" + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : dutch (nl) +// author : Joris Röling : https://github.com/jjupiter + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var monthsShortWithDots = "jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"), + monthsShortWithoutDots = "jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"); + + return moment.lang('nl', { + months : "januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"), + monthsShort : function (m, format) { + if (/-MMM-/.test(format)) { + return monthsShortWithoutDots[m.month()]; + } else { + return monthsShortWithDots[m.month()]; + } + }, + weekdays : "zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"), + weekdaysShort : "zo._ma._di._wo._do._vr._za.".split("_"), + weekdaysMin : "Zo_Ma_Di_Wo_Do_Vr_Za".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD-MM-YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: '[vandaag om] LT', + nextDay: '[morgen om] LT', + nextWeek: 'dddd [om] LT', + lastDay: '[gisteren om] LT', + lastWeek: '[afgelopen] dddd [om] LT', + sameElse: 'L' + }, + relativeTime : { + future : "over %s", + past : "%s geleden", + s : "een paar seconden", + m : "één minuut", + mm : "%d minuten", + h : "één uur", + hh : "%d uur", + d : "één dag", + dd : "%d dagen", + M : "één maand", + MM : "%d maanden", + y : "één jaar", + yy : "%d jaar" + }, + ordinal : function (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : norwegian nynorsk (nn) +// author : https://github.com/mechuwind + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('nn', { + months : "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"), + monthsShort : "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"), + weekdays : "sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"), + weekdaysShort : "sun_mån_tys_ons_tor_fre_lau".split("_"), + weekdaysMin : "su_må_ty_on_to_fr_lø".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD.MM.YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: '[I dag klokka] LT', + nextDay: '[I morgon klokka] LT', + nextWeek: 'dddd [klokka] LT', + lastDay: '[I går klokka] LT', + lastWeek: '[Føregående] dddd [klokka] LT', + sameElse: 'L' + }, + relativeTime : { + future : "om %s", + past : "for %s siden", + s : "noen sekund", + m : "ett minutt", + mm : "%d minutt", + h : "en time", + hh : "%d timar", + d : "en dag", + dd : "%d dagar", + M : "en månad", + MM : "%d månader", + y : "ett år", + yy : "%d år" + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : polish (pl) +// author : Rafal Hirsz : https://github.com/evoL + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var monthsNominative = "styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"), + monthsSubjective = "stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"); + + function plural(n) { + return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1); + } + + function translate(number, withoutSuffix, key) { + var result = number + " "; + switch (key) { + case 'm': + return withoutSuffix ? 'minuta' : 'minutę'; + case 'mm': + return result + (plural(number) ? 'minuty' : 'minut'); + case 'h': + return withoutSuffix ? 'godzina' : 'godzinę'; + case 'hh': + return result + (plural(number) ? 'godziny' : 'godzin'); + case 'MM': + return result + (plural(number) ? 'miesiące' : 'miesięcy'); + case 'yy': + return result + (plural(number) ? 'lata' : 'lat'); + } + } + + return moment.lang('pl', { + months : function (momentToFormat, format) { + if (/D MMMM/.test(format)) { + return monthsSubjective[momentToFormat.month()]; + } else { + return monthsNominative[momentToFormat.month()]; + } + }, + monthsShort : "sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"), + weekdays : "niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"), + weekdaysShort : "nie_pon_wt_śr_czw_pt_sb".split("_"), + weekdaysMin : "N_Pn_Wt_Śr_Cz_Pt_So".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD.MM.YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay: '[Dziś o] LT', + nextDay: '[Jutro o] LT', + nextWeek: '[W] dddd [o] LT', + lastDay: '[Wczoraj o] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[W zeszłą niedzielę o] LT'; + case 3: + return '[W zeszłą środę o] LT'; + case 6: + return '[W zeszłą sobotę o] LT'; + default: + return '[W zeszły] dddd [o] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : "za %s", + past : "%s temu", + s : "kilka sekund", + m : translate, + mm : translate, + h : translate, + hh : translate, + d : "1 dzień", + dd : '%d dni', + M : "miesiąc", + MM : translate, + y : "rok", + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : brazilian portuguese (pt-br) +// author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('pt-br', { + months : "Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"), + monthsShort : "Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"), + weekdays : "Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"), + weekdaysShort : "Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"), + weekdaysMin : "Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D [de] MMMM [de] YYYY", + LLL : "D [de] MMMM [de] YYYY LT", + LLLL : "dddd, D [de] MMMM [de] YYYY LT" + }, + calendar : { + sameDay: '[Hoje às] LT', + nextDay: '[Amanhã às] LT', + nextWeek: 'dddd [às] LT', + lastDay: '[Ontem às] LT', + lastWeek: function () { + return (this.day() === 0 || this.day() === 6) ? + '[Último] dddd [às] LT' : // Saturday + Sunday + '[Última] dddd [às] LT'; // Monday - Friday + }, + sameElse: 'L' + }, + relativeTime : { + future : "em %s", + past : "%s atrás", + s : "segundos", + m : "um minuto", + mm : "%d minutos", + h : "uma hora", + hh : "%d horas", + d : "um dia", + dd : "%d dias", + M : "um mês", + MM : "%d meses", + y : "um ano", + yy : "%d anos" + }, + ordinal : '%dº' + }); +})); + +// moment.js language configuration +// language : portuguese (pt) +// author : Jefferson : https://github.com/jalex79 + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('pt', { + months : "Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"), + monthsShort : "Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"), + weekdays : "Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"), + weekdaysShort : "Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"), + weekdaysMin : "Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D [de] MMMM [de] YYYY", + LLL : "D [de] MMMM [de] YYYY LT", + LLLL : "dddd, D [de] MMMM [de] YYYY LT" + }, + calendar : { + sameDay: '[Hoje às] LT', + nextDay: '[Amanhã às] LT', + nextWeek: 'dddd [às] LT', + lastDay: '[Ontem às] LT', + lastWeek: function () { + return (this.day() === 0 || this.day() === 6) ? + '[Último] dddd [às] LT' : // Saturday + Sunday + '[Última] dddd [às] LT'; // Monday - Friday + }, + sameElse: 'L' + }, + relativeTime : { + future : "em %s", + past : "%s atrás", + s : "segundos", + m : "um minuto", + mm : "%d minutos", + h : "uma hora", + hh : "%d horas", + d : "um dia", + dd : "%d dias", + M : "um mês", + MM : "%d meses", + y : "um ano", + yy : "%d anos" + }, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : romanian (ro) +// author : Vlad Gurdiga : https://github.com/gurdiga +// author : Valentin Agachi : https://github.com/avaly + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': 'minute', + 'hh': 'ore', + 'dd': 'zile', + 'MM': 'luni', + 'yy': 'ani' + }, + separator = ' '; + if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { + separator = ' de '; + } + + return number + separator + format[key]; + } + + return moment.lang('ro', { + months : "ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"), + monthsShort : "ian_feb_mar_apr_mai_iun_iul_aug_sep_oct_noi_dec".split("_"), + weekdays : "duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"), + weekdaysShort : "Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"), + weekdaysMin : "Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD.MM.YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY H:mm", + LLLL : "dddd, D MMMM YYYY H:mm" + }, + calendar : { + sameDay: "[azi la] LT", + nextDay: '[mâine la] LT', + nextWeek: 'dddd [la] LT', + lastDay: '[ieri la] LT', + lastWeek: '[fosta] dddd [la] LT', + sameElse: 'L' + }, + relativeTime : { + future : "peste %s", + past : "%s în urmă", + s : "câteva secunde", + m : "un minut", + mm : relativeTimeWithPlural, + h : "o oră", + hh : relativeTimeWithPlural, + d : "o zi", + dd : relativeTimeWithPlural, + M : "o lună", + MM : relativeTimeWithPlural, + y : "un an", + yy : relativeTimeWithPlural + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : serbian (rs) +// author : Limon Monte : https://github.com/limonte +// based on (bs) translation by Nedim Cholich + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + + function translate(number, withoutSuffix, key) { + var result = number + " "; + switch (key) { + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'meseca'; + } else { + result += 'meseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; + } + } + + return moment.lang('rs', { + months : "januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"), + monthsShort : "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"), + weekdays : "nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"), + weekdaysShort : "ned._pon._uto._sre._čet._pet._sub.".split("_"), + weekdaysMin : "ne_po_ut_sr_če_pe_su".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD. MM. YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd, D. MMMM YYYY LT" + }, + calendar : { + sameDay : '[danas u] LT', + nextDay : '[sutra u] LT', + + nextWeek : function () { + switch (this.day()) { + case 0: + return '[u] [nedelju] [u] LT'; + case 3: + return '[u] [sredu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[juče u] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : "za %s", + past : "pre %s", + s : "par sekundi", + m : translate, + mm : translate, + h : translate, + hh : translate, + d : "dan", + dd : translate, + M : "mesec", + MM : translate, + y : "godinu", + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : russian (ru) +// author : Viktorminator : https://github.com/Viktorminator +// Author : Menelion Elensúle : https://github.com/Oire + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + function plural(word, num) { + var forms = word.split('_'); + return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); + } + + function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': 'минута_минуты_минут', + 'hh': 'час_часа_часов', + 'dd': 'день_дня_дней', + 'MM': 'месяц_месяца_месяцев', + 'yy': 'год_года_лет' + }; + if (key === 'm') { + return withoutSuffix ? 'минута' : 'минуту'; + } + else { + return number + ' ' + plural(format[key], +number); + } + } + + function monthsCaseReplace(m, format) { + var months = { + 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), + 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_') + }, + + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + + return months[nounCase][m.month()]; + } + + function monthsShortCaseReplace(m, format) { + var monthsShort = { + 'nominative': 'янв_фев_мар_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), + 'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_') + }, + + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + + return monthsShort[nounCase][m.month()]; + } + + function weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), + 'accusative': 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_') + }, + + nounCase = (/\[ ?[Вв] ?(?:прошлую|следующую)? ?\] ?dddd/).test(format) ? + 'accusative' : + 'nominative'; + + return weekdays[nounCase][m.day()]; + } + + return moment.lang('ru', { + months : monthsCaseReplace, + monthsShort : monthsShortCaseReplace, + weekdays : weekdaysCaseReplace, + weekdaysShort : "вс_пн_вт_ср_чт_пт_сб".split("_"), + weekdaysMin : "вс_пн_вт_ср_чт_пт_сб".split("_"), + monthsParse : [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[й|я]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i], + longDateFormat : { + LT : "HH:mm", + L : "DD.MM.YYYY", + LL : "D MMMM YYYY г.", + LLL : "D MMMM YYYY г., LT", + LLLL : "dddd, D MMMM YYYY г., LT" + }, + calendar : { + sameDay: '[Сегодня в] LT', + nextDay: '[Завтра в] LT', + lastDay: '[Вчера в] LT', + nextWeek: function () { + return this.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT'; + }, + lastWeek: function () { + switch (this.day()) { + case 0: + return '[В прошлое] dddd [в] LT'; + case 1: + case 2: + case 4: + return '[В прошлый] dddd [в] LT'; + case 3: + case 5: + case 6: + return '[В прошлую] dddd [в] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : "через %s", + past : "%s назад", + s : "несколько секунд", + m : relativeTimeWithPlural, + mm : relativeTimeWithPlural, + h : "час", + hh : relativeTimeWithPlural, + d : "день", + dd : relativeTimeWithPlural, + M : "месяц", + MM : relativeTimeWithPlural, + y : "год", + yy : relativeTimeWithPlural + }, + + // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason + + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return "ночи"; + } else if (hour < 12) { + return "утра"; + } else if (hour < 17) { + return "дня"; + } else { + return "вечера"; + } + }, + + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + return number + '-й'; + case 'D': + return number + '-го'; + case 'w': + case 'W': + return number + '-я'; + default: + return number; + } + }, + + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : slovak (sk) +// author : Martin Minka : https://github.com/k2s +// based on work of petrbela : https://github.com/petrbela + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + var months = "január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"), + monthsShort = "jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"); + + function plural(n) { + return (n > 1) && (n < 5); + } + + function translate(number, withoutSuffix, key, isFuture) { + var result = number + " "; + switch (key) { + case 's': // a few seconds / in a few seconds / a few seconds ago + return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami'; + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou'); + case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'minúty' : 'minút'); + } else { + return result + 'minútami'; + } + break; + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'hh': // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'hodiny' : 'hodín'); + } else { + return result + 'hodinami'; + } + break; + case 'd': // a day / in a day / a day ago + return (withoutSuffix || isFuture) ? 'deň' : 'dňom'; + case 'dd': // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'dni' : 'dní'); + } else { + return result + 'dňami'; + } + break; + case 'M': // a month / in a month / a month ago + return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom'; + case 'MM': // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'mesiace' : 'mesiacov'); + } else { + return result + 'mesiacmi'; + } + break; + case 'y': // a year / in a year / a year ago + return (withoutSuffix || isFuture) ? 'rok' : 'rokom'; + case 'yy': // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'roky' : 'rokov'); + } else { + return result + 'rokmi'; + } + break; + } + } + + return moment.lang('sk', { + months : months, + monthsShort : monthsShort, + monthsParse : (function (months, monthsShort) { + var i, _monthsParse = []; + for (i = 0; i < 12; i++) { + // use custom parser to solve problem with July (červenec) + _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); + } + return _monthsParse; + }(months, monthsShort)), + weekdays : "nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"), + weekdaysShort : "ne_po_ut_st_št_pi_so".split("_"), + weekdaysMin : "ne_po_ut_st_št_pi_so".split("_"), + longDateFormat : { + LT: "H:mm", + L : "DD.MM.YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd D. MMMM YYYY LT" + }, + calendar : { + sameDay: "[dnes o] LT", + nextDay: '[zajtra o] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[v nedeľu o] LT'; + case 1: + case 2: + return '[v] dddd [o] LT'; + case 3: + return '[v stredu o] LT'; + case 4: + return '[vo štvrtok o] LT'; + case 5: + return '[v piatok o] LT'; + case 6: + return '[v sobotu o] LT'; + } + }, + lastDay: '[včera o] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[minulú nedeľu o] LT'; + case 1: + case 2: + return '[minulý] dddd [o] LT'; + case 3: + return '[minulú stredu o] LT'; + case 4: + case 5: + return '[minulý] dddd [o] LT'; + case 6: + return '[minulú sobotu o] LT'; + } + }, + sameElse: "L" + }, + relativeTime : { + future : "za %s", + past : "pred %s", + s : translate, + m : translate, + mm : translate, + h : translate, + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : slovenian (sl) +// author : Robert Sedovšek : https://github.com/sedovsek + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + function translate(number, withoutSuffix, key) { + var result = number + " "; + switch (key) { + case 'm': + return withoutSuffix ? 'ena minuta' : 'eno minuto'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2) { + result += 'minuti'; + } else if (number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minut'; + } + return result; + case 'h': + return withoutSuffix ? 'ena ura' : 'eno uro'; + case 'hh': + if (number === 1) { + result += 'ura'; + } else if (number === 2) { + result += 'uri'; + } else if (number === 3 || number === 4) { + result += 'ure'; + } else { + result += 'ur'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dni'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mesec'; + } else if (number === 2) { + result += 'meseca'; + } else if (number === 3 || number === 4) { + result += 'mesece'; + } else { + result += 'mesecev'; + } + return result; + case 'yy': + if (number === 1) { + result += 'leto'; + } else if (number === 2) { + result += 'leti'; + } else if (number === 3 || number === 4) { + result += 'leta'; + } else { + result += 'let'; + } + return result; + } + } + + return moment.lang('sl', { + months : "januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"), + monthsShort : "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"), + weekdays : "nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"), + weekdaysShort : "ned._pon._tor._sre._čet._pet._sob.".split("_"), + weekdaysMin : "ne_po_to_sr_če_pe_so".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD. MM. YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd, D. MMMM YYYY LT" + }, + calendar : { + sameDay : '[danes ob] LT', + nextDay : '[jutri ob] LT', + + nextWeek : function () { + switch (this.day()) { + case 0: + return '[v] [nedeljo] [ob] LT'; + case 3: + return '[v] [sredo] [ob] LT'; + case 6: + return '[v] [soboto] [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[v] dddd [ob] LT'; + } + }, + lastDay : '[včeraj ob] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + case 6: + return '[prejšnja] dddd [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prejšnji] dddd [ob] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : "čez %s", + past : "%s nazaj", + s : "nekaj sekund", + m : translate, + mm : translate, + h : translate, + hh : translate, + d : "en dan", + dd : translate, + M : "en mesec", + MM : translate, + y : "eno leto", + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : Albanian (sq) +// author : Flakërim Ismani : https://github.com/flakerimi +// author: Menelion Elensúle: https://github.com/Oire (tests) + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('sq', { + months : "Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"), + monthsShort : "Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"), + weekdays : "E Diel_E Hënë_E Marte_E Mërkure_E Enjte_E Premte_E Shtunë".split("_"), + weekdaysShort : "Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"), + weekdaysMin : "D_H_Ma_Më_E_P_Sh".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay : '[Sot në] LT', + nextDay : '[Neser në] LT', + nextWeek : 'dddd [në] LT', + lastDay : '[Dje në] LT', + lastWeek : 'dddd [e kaluar në] LT', + sameElse : 'L' + }, + relativeTime : { + future : "në %s", + past : "%s me parë", + s : "disa sekonda", + m : "një minut", + mm : "%d minuta", + h : "një orë", + hh : "%d orë", + d : "një ditë", + dd : "%d ditë", + M : "një muaj", + MM : "%d muaj", + y : "një vit", + yy : "%d vite" + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : swedish (sv) +// author : Jens Alm : https://github.com/ulmus + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('sv', { + months : "januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"), + monthsShort : "jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"), + weekdays : "söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"), + weekdaysShort : "sön_mån_tis_ons_tor_fre_lör".split("_"), + weekdaysMin : "sö_må_ti_on_to_fr_lö".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "YYYY-MM-DD", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: '[Idag] LT', + nextDay: '[Imorgon] LT', + lastDay: '[Igår] LT', + nextWeek: 'dddd LT', + lastWeek: '[Förra] dddd[en] LT', + sameElse: 'L' + }, + relativeTime : { + future : "om %s", + past : "för %s sedan", + s : "några sekunder", + m : "en minut", + mm : "%d minuter", + h : "en timme", + hh : "%d timmar", + d : "en dag", + dd : "%d dagar", + M : "en månad", + MM : "%d månader", + y : "ett år", + yy : "%d år" + }, + ordinal : function (number) { + var b = number % 10, + output = (~~ (number % 100 / 10) === 1) ? 'e' : + (b === 1) ? 'a' : + (b === 2) ? 'a' : + (b === 3) ? 'e' : 'e'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : tamil (ta) +// author : Arjunkumar Krishnamoorthy : https://github.com/tk120404 + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + /*var symbolMap = { + '1': '௧', + '2': '௨', + '3': '௩', + '4': '௪', + '5': '௫', + '6': '௬', + '7': '௭', + '8': '௮', + '9': '௯', + '0': '௦' + }, + numberMap = { + '௧': '1', + '௨': '2', + '௩': '3', + '௪': '4', + '௫': '5', + '௬': '6', + '௭': '7', + '௮': '8', + '௯': '9', + '௦': '0' + }; */ + + return moment.lang('ta', { + months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split("_"), + monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split("_"), + weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split("_"), + weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split("_"), + weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY, LT", + LLLL : "dddd, D MMMM YYYY, LT" + }, + calendar : { + sameDay : '[இன்று] LT', + nextDay : '[நாளை] LT', + nextWeek : 'dddd, LT', + lastDay : '[நேற்று] LT', + lastWeek : '[கடந்த வாரம்] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s இல்", + past : "%s முன்", + s : "ஒரு சில விநாடிகள்", + m : "ஒரு நிமிடம்", + mm : "%d நிமிடங்கள்", + h : "ஒரு மணி நேரம்", + hh : "%d மணி நேரம்", + d : "ஒரு நாள்", + dd : "%d நாட்கள்", + M : "ஒரு மாதம்", + MM : "%d மாதங்கள்", + y : "ஒரு வருடம்", + yy : "%d ஆண்டுகள்" + }, +/* preparse: function (string) { + return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + },*/ + ordinal : function (number) { + return number + 'வது'; + }, + + +// refer http://ta.wikipedia.org/s/1er1 + + meridiem : function (hour, minute, isLower) { + if (hour >= 6 && hour <= 10) { + return " காலை"; + } else if (hour >= 10 && hour <= 14) { + return " நண்பகல்"; + } else if (hour >= 14 && hour <= 18) { + return " எற்பாடு"; + } else if (hour >= 18 && hour <= 20) { + return " மாலை"; + } else if (hour >= 20 && hour <= 24) { + return " இரவு"; + } else if (hour >= 0 && hour <= 6) { + return " வைகறை"; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : thai (th) +// author : Kridsada Thanabulpong : https://github.com/sirn + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('th', { + months : "มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"), + monthsShort : "มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา".split("_"), + weekdays : "อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"), + weekdaysShort : "อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"), // yes, three characters difference + weekdaysMin : "อา._จ._อ._พ._พฤ._ศ._ส.".split("_"), + longDateFormat : { + LT : "H นาฬิกา m นาที", + L : "YYYY/MM/DD", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY เวลา LT", + LLLL : "วันddddที่ D MMMM YYYY เวลา LT" + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return "ก่อนเที่ยง"; + } else { + return "หลังเที่ยง"; + } + }, + calendar : { + sameDay : '[วันนี้ เวลา] LT', + nextDay : '[พรุ่งนี้ เวลา] LT', + nextWeek : 'dddd[หน้า เวลา] LT', + lastDay : '[เมื่อวานนี้ เวลา] LT', + lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT', + sameElse : 'L' + }, + relativeTime : { + future : "อีก %s", + past : "%sที่แล้ว", + s : "ไม่กี่วินาที", + m : "1 นาที", + mm : "%d นาที", + h : "1 ชั่วโมง", + hh : "%d ชั่วโมง", + d : "1 วัน", + dd : "%d วัน", + M : "1 เดือน", + MM : "%d เดือน", + y : "1 ปี", + yy : "%d ปี" + } + }); +})); + +// moment.js language configuration +// language : Tagalog/Filipino (tl-ph) +// author : Dan Hagman + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('tl-ph', { + months : "Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"), + monthsShort : "Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"), + weekdays : "Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"), + weekdaysShort : "Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"), + weekdaysMin : "Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "MM/D/YYYY", + LL : "MMMM D, YYYY", + LLL : "MMMM D, YYYY LT", + LLLL : "dddd, MMMM DD, YYYY LT" + }, + calendar : { + sameDay: "[Ngayon sa] LT", + nextDay: '[Bukas sa] LT', + nextWeek: 'dddd [sa] LT', + lastDay: '[Kahapon sa] LT', + lastWeek: 'dddd [huling linggo] LT', + sameElse: 'L' + }, + relativeTime : { + future : "sa loob ng %s", + past : "%s ang nakalipas", + s : "ilang segundo", + m : "isang minuto", + mm : "%d minuto", + h : "isang oras", + hh : "%d oras", + d : "isang araw", + dd : "%d araw", + M : "isang buwan", + MM : "%d buwan", + y : "isang taon", + yy : "%d taon" + }, + ordinal : function (number) { + return number; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : turkish (tr) +// authors : Erhan Gundogan : https://github.com/erhangundogan, +// Burak Yiğit Kaya: https://github.com/BYK + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + + var suffixes = { + 1: "'inci", + 5: "'inci", + 8: "'inci", + 70: "'inci", + 80: "'inci", + + 2: "'nci", + 7: "'nci", + 20: "'nci", + 50: "'nci", + + 3: "'üncü", + 4: "'üncü", + 100: "'üncü", + + 6: "'ncı", + + 9: "'uncu", + 10: "'uncu", + 30: "'uncu", + + 60: "'ıncı", + 90: "'ıncı" + }; + + return moment.lang('tr', { + months : "Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"), + monthsShort : "Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"), + weekdays : "Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"), + weekdaysShort : "Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"), + weekdaysMin : "Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD.MM.YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay : '[bugün saat] LT', + nextDay : '[yarın saat] LT', + nextWeek : '[haftaya] dddd [saat] LT', + lastDay : '[dün] LT', + lastWeek : '[geçen hafta] dddd [saat] LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s sonra", + past : "%s önce", + s : "birkaç saniye", + m : "bir dakika", + mm : "%d dakika", + h : "bir saat", + hh : "%d saat", + d : "bir gün", + dd : "%d gün", + M : "bir ay", + MM : "%d ay", + y : "bir yıl", + yy : "%d yıl" + }, + ordinal : function (number) { + if (number === 0) { // special case for zero + return number + "'ıncı"; + } + var a = number % 10, + b = number % 100 - a, + c = number >= 100 ? 100 : null; + + return number + (suffixes[a] || suffixes[b] || suffixes[c]); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : Morocco Central Atlas Tamaziɣt in Latin (tzm-la) +// author : Abdel Said : https://github.com/abdelsaid + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('tzm-la', { + months : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"), + monthsShort : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"), + weekdays : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"), + weekdaysShort : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"), + weekdaysMin : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: "[asdkh g] LT", + nextDay: '[aska g] LT', + nextWeek: 'dddd [g] LT', + lastDay: '[assant g] LT', + lastWeek: 'dddd [g] LT', + sameElse: 'L' + }, + relativeTime : { + future : "dadkh s yan %s", + past : "yan %s", + s : "imik", + m : "minuḍ", + mm : "%d minuḍ", + h : "saɛa", + hh : "%d tassaɛin", + d : "ass", + dd : "%d ossan", + M : "ayowr", + MM : "%d iyyirn", + y : "asgas", + yy : "%d isgasn" + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : Morocco Central Atlas Tamaziɣt (tzm) +// author : Abdel Said : https://github.com/abdelsaid + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('tzm', { + months : "ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"), + monthsShort : "ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"), + weekdays : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"), + weekdaysShort : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"), + weekdaysMin : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: "[ⴰⵙⴷⵅ ⴴ] LT", + nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', + nextWeek: 'dddd [ⴴ] LT', + lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', + lastWeek: 'dddd [ⴴ] LT', + sameElse: 'L' + }, + relativeTime : { + future : "ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s", + past : "ⵢⴰⵏ %s", + s : "ⵉⵎⵉⴽ", + m : "ⵎⵉⵏⵓⴺ", + mm : "%d ⵎⵉⵏⵓⴺ", + h : "ⵙⴰⵄⴰ", + hh : "%d ⵜⴰⵙⵙⴰⵄⵉⵏ", + d : "ⴰⵙⵙ", + dd : "%d oⵙⵙⴰⵏ", + M : "ⴰⵢoⵓⵔ", + MM : "%d ⵉⵢⵢⵉⵔⵏ", + y : "ⴰⵙⴳⴰⵙ", + yy : "%d ⵉⵙⴳⴰⵙⵏ" + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : ukrainian (uk) +// author : zemlanin : https://github.com/zemlanin +// Author : Menelion Elensúle : https://github.com/Oire + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + function plural(word, num) { + var forms = word.split('_'); + return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); + } + + function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': 'хвилина_хвилини_хвилин', + 'hh': 'година_години_годин', + 'dd': 'день_дні_днів', + 'MM': 'місяць_місяці_місяців', + 'yy': 'рік_роки_років' + }; + if (key === 'm') { + return withoutSuffix ? 'хвилина' : 'хвилину'; + } + else if (key === 'h') { + return withoutSuffix ? 'година' : 'годину'; + } + else { + return number + ' ' + plural(format[key], +number); + } + } + + function monthsCaseReplace(m, format) { + var months = { + 'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'), + 'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_') + }, + + nounCase = (/D[oD]? *MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + + return months[nounCase][m.month()]; + } + + function weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), + 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'), + 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_') + }, + + nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ? + 'accusative' : + ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ? + 'genitive' : + 'nominative'); + + return weekdays[nounCase][m.day()]; + } + + function processHoursFunction(str) { + return function () { + return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; + }; + } + + return moment.lang('uk', { + months : monthsCaseReplace, + monthsShort : "січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"), + weekdays : weekdaysCaseReplace, + weekdaysShort : "нд_пн_вт_ср_чт_пт_сб".split("_"), + weekdaysMin : "нд_пн_вт_ср_чт_пт_сб".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD.MM.YYYY", + LL : "D MMMM YYYY р.", + LLL : "D MMMM YYYY р., LT", + LLLL : "dddd, D MMMM YYYY р., LT" + }, + calendar : { + sameDay: processHoursFunction('[Сьогодні '), + nextDay: processHoursFunction('[Завтра '), + lastDay: processHoursFunction('[Вчора '), + nextWeek: processHoursFunction('[У] dddd ['), + lastWeek: function () { + switch (this.day()) { + case 0: + case 3: + case 5: + case 6: + return processHoursFunction('[Минулої] dddd [').call(this); + case 1: + case 2: + case 4: + return processHoursFunction('[Минулого] dddd [').call(this); + } + }, + sameElse: 'L' + }, + relativeTime : { + future : "за %s", + past : "%s тому", + s : "декілька секунд", + m : relativeTimeWithPlural, + mm : relativeTimeWithPlural, + h : "годину", + hh : relativeTimeWithPlural, + d : "день", + dd : relativeTimeWithPlural, + M : "місяць", + MM : relativeTimeWithPlural, + y : "рік", + yy : relativeTimeWithPlural + }, + + // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason + + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return "ночі"; + } else if (hour < 12) { + return "ранку"; + } else if (hour < 17) { + return "дня"; + } else { + return "вечора"; + } + }, + + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + case 'w': + case 'W': + return number + '-й'; + case 'D': + return number + '-го'; + default: + return number; + } + }, + + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : uzbek +// author : Sardor Muminov : https://github.com/muminoff + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('uz', { + months : "январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"), + monthsShort : "янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"), + weekdays : "Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"), + weekdaysShort : "Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"), + weekdaysMin : "Як_Ду_Се_Чо_Па_Жу_Ша".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "D MMMM YYYY, dddd LT" + }, + calendar : { + sameDay : '[Бугун соат] LT [да]', + nextDay : '[Эртага] LT [да]', + nextWeek : 'dddd [куни соат] LT [да]', + lastDay : '[Кеча соат] LT [да]', + lastWeek : '[Утган] dddd [куни соат] LT [да]', + sameElse : 'L' + }, + relativeTime : { + future : "Якин %s ичида", + past : "Бир неча %s олдин", + s : "фурсат", + m : "бир дакика", + mm : "%d дакика", + h : "бир соат", + hh : "%d соат", + d : "бир кун", + dd : "%d кун", + M : "бир ой", + MM : "%d ой", + y : "бир йил", + yy : "%d йил" + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : vietnamese (vn) +// author : Bang Nguyen : https://github.com/bangnk + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('vn', { + months : "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".split("_"), + monthsShort : "Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"), + weekdays : "chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"), + weekdaysShort : "CN_T2_T3_T4_T5_T6_T7".split("_"), + weekdaysMin : "CN_T2_T3_T4_T5_T6_T7".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM [năm] YYYY", + LLL : "D MMMM [năm] YYYY LT", + LLLL : "dddd, D MMMM [năm] YYYY LT", + l : "DD/M/YYYY", + ll : "D MMM YYYY", + lll : "D MMM YYYY LT", + llll : "ddd, D MMM YYYY LT" + }, + calendar : { + sameDay: "[Hôm nay lúc] LT", + nextDay: '[Ngày mai lúc] LT', + nextWeek: 'dddd [tuần tới lúc] LT', + lastDay: '[Hôm qua lúc] LT', + lastWeek: 'dddd [tuần rồi lúc] LT', + sameElse: 'L' + }, + relativeTime : { + future : "%s tới", + past : "%s trước", + s : "vài giây", + m : "một phút", + mm : "%d phút", + h : "một giờ", + hh : "%d giờ", + d : "một ngày", + dd : "%d ngày", + M : "một tháng", + MM : "%d tháng", + y : "một năm", + yy : "%d năm" + }, + ordinal : function (number) { + return number; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : chinese +// author : suupic : https://github.com/suupic +// author : Zeno Zeng : https://github.com/zenozeng + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('zh-cn', { + months : "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"), + monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), + weekdays : "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"), + weekdaysShort : "周日_周一_周二_周三_周四_周五_周六".split("_"), + weekdaysMin : "日_一_二_三_四_五_六".split("_"), + longDateFormat : { + LT : "Ah点mm", + L : "YYYY-MM-DD", + LL : "YYYY年MMMD日", + LLL : "YYYY年MMMD日LT", + LLLL : "YYYY年MMMD日ddddLT", + l : "YYYY-MM-DD", + ll : "YYYY年MMMD日", + lll : "YYYY年MMMD日LT", + llll : "YYYY年MMMD日ddddLT" + }, + meridiem : function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return "凌晨"; + } else if (hm < 900) { + return "早上"; + } else if (hm < 1130) { + return "上午"; + } else if (hm < 1230) { + return "中午"; + } else if (hm < 1800) { + return "下午"; + } else { + return "晚上"; + } + }, + calendar : { + sameDay : function () { + return this.minutes() === 0 ? "[今天]Ah[点整]" : "[今天]LT"; + }, + nextDay : function () { + return this.minutes() === 0 ? "[明天]Ah[点整]" : "[明天]LT"; + }, + lastDay : function () { + return this.minutes() === 0 ? "[昨天]Ah[点整]" : "[昨天]LT"; + }, + nextWeek : function () { + var startOfWeek, prefix; + startOfWeek = moment().startOf('week'); + prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]'; + return this.minutes() === 0 ? prefix + "dddAh点整" : prefix + "dddAh点mm"; + }, + lastWeek : function () { + var startOfWeek, prefix; + startOfWeek = moment().startOf('week'); + prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]'; + return this.minutes() === 0 ? prefix + "dddAh点整" : prefix + "dddAh点mm"; + }, + sameElse : 'LL' + }, + ordinal : function (number, period) { + switch (period) { + case "d": + case "D": + case "DDD": + return number + "日"; + case "M": + return number + "月"; + case "w": + case "W": + return number + "周"; + default: + return number; + } + }, + relativeTime : { + future : "%s内", + past : "%s前", + s : "几秒", + m : "1分钟", + mm : "%d分钟", + h : "1小时", + hh : "%d小时", + d : "1天", + dd : "%d天", + M : "1个月", + MM : "%d个月", + y : "1年", + yy : "%d年" + }, + week : { + // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); + +// moment.js language configuration +// language : traditional chinese (zh-tw) +// author : Ben : https://github.com/ben-lin + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('zh-tw', { + months : "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"), + monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), + weekdays : "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"), + weekdaysShort : "週日_週一_週二_週三_週四_週五_週六".split("_"), + weekdaysMin : "日_一_二_三_四_五_六".split("_"), + longDateFormat : { + LT : "Ah點mm", + L : "YYYY年MMMD日", + LL : "YYYY年MMMD日", + LLL : "YYYY年MMMD日LT", + LLLL : "YYYY年MMMD日ddddLT", + l : "YYYY年MMMD日", + ll : "YYYY年MMMD日", + lll : "YYYY年MMMD日LT", + llll : "YYYY年MMMD日ddddLT" + }, + meridiem : function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 900) { + return "早上"; + } else if (hm < 1130) { + return "上午"; + } else if (hm < 1230) { + return "中午"; + } else if (hm < 1800) { + return "下午"; + } else { + return "晚上"; + } + }, + calendar : { + sameDay : '[今天]LT', + nextDay : '[明天]LT', + nextWeek : '[下]ddddLT', + lastDay : '[昨天]LT', + lastWeek : '[上]ddddLT', + sameElse : 'L' + }, + ordinal : function (number, period) { + switch (period) { + case "d" : + case "D" : + case "DDD" : + return number + "日"; + case "M" : + return number + "月"; + case "w" : + case "W" : + return number + "週"; + default : + return number; + } + }, + relativeTime : { + future : "%s內", + past : "%s前", + s : "幾秒", + m : "一分鐘", + mm : "%d分鐘", + h : "一小時", + hh : "%d小時", + d : "一天", + dd : "%d天", + M : "一個月", + MM : "%d個月", + y : "一年", + yy : "%d年" + } + }); +})); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/min/langs.min.js b/static/bootstrap-datetimepicker-master/moment-develop/min/langs.min.js new file mode 100755 index 0000000..98acb48 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/min/langs.min.js @@ -0,0 +1,3 @@ +!function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("ar",{months:"يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"),monthsShort:"يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){function b(a,b,c){var d={mm:"munutenn",MM:"miz",dd:"devezh"};return a+" "+e(d[c],a)}function c(a){switch(d(a)){case 1:case 3:case 4:case 5:case 9:return a+" bloaz";default:return a+" vloaz"}}function d(a){return a>9?d(a%10):a}function e(a,b){return 2===b?f(a):a}function f(a){var b={m:"v",b:"v",d:"z"};return void 0===b[a.charAt(0)]?a:b[a.charAt(0)]+a.substring(1)}return a.lang("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),longDateFormat:{LT:"h[e]mm A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY LT",LLLL:"dddd, D [a viz] MMMM YYYY LT"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",m:"ur vunutenn",mm:b,h:"un eur",hh:"%d eur",d:"un devezh",dd:b,M:"ur miz",MM:b,y:"ur bloaz",yy:c},ordinal:function(a){var b=1===a?"añ":"vet";return a+b},week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){function b(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}return a.lang("bs",{months:"januar_februar_mart_april_maj_juni_juli_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:b,mm:b,h:b,hh:b,d:"dan",dd:b,M:"mjesec",MM:b,y:"godinu",yy:b},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("ca",{months:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),monthsShort:"gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"),weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinal:"%dº",week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){function b(a){return a>1&&5>a&&1!==~~(a/10)}function c(a,c,d,e){var f=a+" ";switch(d){case"s":return c||e?"pár vteřin":"pár vteřinami";case"m":return c?"minuta":e?"minutu":"minutou";case"mm":return c||e?f+(b(a)?"minuty":"minut"):f+"minutami";break;case"h":return c?"hodina":e?"hodinu":"hodinou";case"hh":return c||e?f+(b(a)?"hodiny":"hodin"):f+"hodinami";break;case"d":return c||e?"den":"dnem";case"dd":return c||e?f+(b(a)?"dny":"dní"):f+"dny";break;case"M":return c||e?"měsíc":"měsícem";case"MM":return c||e?f+(b(a)?"měsíce":"měsíců"):f+"měsíci";break;case"y":return c||e?"rok":"rokem";case"yy":return c||e?f+(b(a)?"roky":"let"):f+"lety"}}var d="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),e="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_");return a.lang("cs",{months:d,monthsShort:e,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(d,e),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd D. MMMM YYYY LT"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:c,m:c,mm:c,h:c,hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("cv",{months:"кăрлач_нарăс_пуш_ака_май_çĕртме_утă_çурла_авăн_юпа_чӳк_раштав".split("_"),monthsShort:"кăр_нар_пуш_ака_май_çĕр_утă_çур_ав_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кĕçнерникун_эрнекун_шăматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кĕç_эрн_шăм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кç_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",L:"DD-MM-YYYY",LL:"YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ]",LLL:"YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT",LLLL:"dddd, YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ĕнер] LT [сехетре]",nextWeek:"[Çитес] dddd LT [сехетре]",lastWeek:"[Иртнĕ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(a){var b=/сехет$/i.exec(a)?"рен":/çул$/i.exec(a)?"тан":"ран";return a+b},past:"%s каялла",s:"пĕр-ик çеккунт",m:"пĕр минут",mm:"%d минут",h:"пĕр сехет",hh:"%d сехет",d:"пĕр кун",dd:"%d кун",M:"пĕр уйăх",MM:"%d уйăх",y:"пĕр çул",yy:"%d çул"},ordinal:"%d-мĕш",week:{dow:1,doy:7}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn àl",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},ordinal:function(a){var b=a,c="",d=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"];return b>20?c=40===b||50===b||60===b||80===b||100===b?"fed":"ain":b>0&&(c=d[b]),a+c},week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D. MMMM, YYYY LT"},calendar:{sameDay:"[I dag kl.] LT",nextDay:"[I morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[I går kl.] LT",lastWeek:"[sidste] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){function b(a,b,c){var d={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?d[c][0]:d[c][1]}return a.lang("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),longDateFormat:{LT:"H:mm [Uhr]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[Heute um] LT",sameElse:"L",nextDay:"[Morgen um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gestern um] LT",lastWeek:"[letzten] dddd [um] LT"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:b,mm:"%d Minuten",h:b,hh:"%d Stunden",d:b,dd:b,M:b,MM:b,y:b,yy:b},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(a,b){return/D/.test(b.substring(0,b.indexOf("MMMM")))?this._monthsGenitiveEl[a.month()]:this._monthsNominativeEl[a.month()]},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(a,b,c){return a>11?c?"μμ":"ΜΜ":c?"πμ":"ΠΜ"},longDateFormat:{LT:"h:mm A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:"[την προηγούμενη] dddd [{}] LT",sameElse:"L"},calendar:function(a,b){var c=this._calendarEl[a],d=b&&b.hours();return c.replace("{}",d%12===1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},ordinal:function(a){return a+"η"},week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",L:"YYYY-MM-DD",LL:"D MMMM, YYYY",LLL:"D MMMM, YYYY LT",LLLL:"dddd, D MMMM, YYYY LT"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"),weekdaysShort:"Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Ĵa_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D[-an de] MMMM, YYYY",LLL:"D[-an de] MMMM, YYYY LT",LLLL:"dddd, [la] D[-an de] MMMM, YYYY LT"},meridiem:function(a,b,c){return a>11?c?"p.t.m.":"P.T.M.":c?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"je %s",past:"antaŭ %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},ordinal:"%da",week:{dow:1,doy:7}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"Do_Lu_Ma_Mi_Ju_Vi_Sá".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY LT",LLLL:"dddd, D [de] MMMM [de] YYYY LT"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinal:"%dº",week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){function b(a,b,c,d){var e={s:["mõne sekundi","mõni sekund","paar sekundit"],m:["ühe minuti","üks minut"],mm:[a+" minuti",a+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[a+" tunni",a+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[a+" kuu",a+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[a+" aasta",a+" aastat"]};return b?e[c][2]?e[c][2]:e[c][1]:d?e[c][0]:e[c][1]}return a.lang("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:b,m:b,mm:b,h:b,hh:b,d:b,dd:"%d päeva",M:b,MM:b,y:b,yy:b},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] LT",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] LT",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] LT",llll:"ddd, YYYY[ko] MMM D[a] LT"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){var b={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},c={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};return a.lang("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},meridiem:function(a){return 12>a?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چندین ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(a){return a.replace(/[۰-۹]/g,function(a){return c[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]}).replace(/,/g,"،")},ordinal:"%dم",week:{dow:6,doy:12}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){function b(a,b,d,e){var f="";switch(d){case"s":return e?"muutaman sekunnin":"muutama sekunti";case"m":return e?"minuutin":"minuutti";case"mm":f=e?"minuutin":"minuuttia";break;case"h":return e?"tunnin":"tunti";case"hh":f=e?"tunnin":"tuntia";break;case"d":return e?"päivän":"päivä";case"dd":f=e?"päivän":"päivää";break;case"M":return e?"kuukauden":"kuukausi";case"MM":f=e?"kuukauden":"kuukautta";break;case"y":return e?"vuoden":"vuosi";case"yy":f=e?"vuoden":"vuotta"}return f=c(a,e)+" "+f}function c(a,b){return 10>a?b?e[a]:d[a]:a}var d="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),e=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",d[7],d[8],d[9]];return a.lang("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] LT",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] LT",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] LT",llll:"ddd, Do MMM YYYY, [klo] LT"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:b,m:b,mm:b,h:b,hh:b,d:b,dd:b,M:b,MM:b,y:b,yy:b},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D. MMMM, YYYY LT"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",m:"ein minutt",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaði",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(a){return a+(1===a?"er":"")}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(a){return a+(1===a?"er":"")},week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("gl",{months:"Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"),monthsShort:"Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.".split("_"),weekdays:"Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado".split("_"),weekdaysShort:"Dom._Lun._Mar._Mér._Xov._Ven._Sáb.".split("_"),weekdaysMin:"Do_Lu_Ma_Mé_Xo_Ve_Sá".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT" +},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(a){return"uns segundos"===a?"nuns segundos":"en "+a},past:"hai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},ordinal:"%dº",week:{dow:1,doy:7}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY LT",LLLL:"dddd, D [ב]MMMM YYYY LT",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY LT",llll:"ddd, D MMM YYYY LT"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(a){return 2===a?"שעתיים":a+" שעות"},d:"יום",dd:function(a){return 2===a?"יומיים":a+" ימים"},M:"חודש",MM:function(a){return 2===a?"חודשיים":a+" חודשים"},y:"שנה",yy:function(a){return 2===a?"שנתיים":a+" שנים"}}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){var b={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},c={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return a.lang("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return c[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]})},meridiem:function(a){return 4>a?"रात":10>a?"सुबह":17>a?"दोपहर":20>a?"शाम":"रात"},week:{dow:0,doy:6}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){function b(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}return a.lang("hr",{months:"sječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_"),monthsShort:"sje._vel._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:b,mm:b,h:b,hh:b,d:"dan",dd:b,M:"mjesec",MM:b,y:"godinu",yy:b},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){function b(a,b,c,d){var e=a;switch(c){case"s":return d||b?"néhány másodperc":"néhány másodperce";case"m":return"egy"+(d||b?" perc":" perce");case"mm":return e+(d||b?" perc":" perce");case"h":return"egy"+(d||b?" óra":" órája");case"hh":return e+(d||b?" óra":" órája");case"d":return"egy"+(d||b?" nap":" napja");case"dd":return e+(d||b?" nap":" napja");case"M":return"egy"+(d||b?" hónap":" hónapja");case"MM":return e+(d||b?" hónap":" hónapja");case"y":return"egy"+(d||b?" év":" éve");case"yy":return e+(d||b?" év":" éve")}return""}function c(a){return(a?"":"[múlt] ")+"["+d[this.day()]+"] LT[-kor]"}var d="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");return a.lang("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D., LT",LLLL:"YYYY. MMMM D., dddd LT"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return c.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return c.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:b,m:b,mm:b,h:b,hh:b,d:b,dd:b,M:b,MM:b,y:b,yy:b},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){function b(a,b){var c={nominative:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_"),accusative:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function c(a){var b="հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_");return b[a.month()]}function d(a){var b="կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_");return b[a.day()]}return a.lang("hy-am",{months:b,monthsShort:c,weekdays:d,weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., LT",LLLL:"dddd, D MMMM YYYY թ., LT"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiem:function(a){return 4>a?"գիշերվա":12>a?"առավոտվա":17>a?"ցերեկվա":"երեկոյան"},ordinal:function(a,b){switch(b){case"DDD":case"w":case"W":case"DDDo":return 1===a?a+"-ին":a+"-րդ";default:return a}},week:{dow:1,doy:7}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] LT",LLLL:"dddd, D MMMM YYYY [pukul] LT"},meridiem:function(a){return 11>a?"pagi":15>a?"siang":19>a?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){function b(a){return a%100===11?!0:a%10===1?!1:!0}function c(a,c,d,e){var f=a+" ";switch(d){case"s":return c||e?"nokkrar sekúndur":"nokkrum sekúndum";case"m":return c?"mínúta":"mínútu";case"mm":return b(a)?f+(c||e?"mínútur":"mínútum"):c?f+"mínúta":f+"mínútu";case"hh":return b(a)?f+(c||e?"klukkustundir":"klukkustundum"):f+"klukkustund";case"d":return c?"dagur":e?"dag":"degi";case"dd":return b(a)?c?f+"dagar":f+(e?"daga":"dögum"):c?f+"dagur":f+(e?"dag":"degi");case"M":return c?"mánuður":e?"mánuð":"mánuði";case"MM":return b(a)?c?f+"mánuðir":f+(e?"mánuði":"mánuðum"):c?f+"mánuður":f+(e?"mánuð":"mánuði");case"y":return c||e?"ár":"ári";case"yy":return b(a)?f+(c||e?"ár":"árum"):f+(c||e?"ár":"ári")}}return a.lang("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] LT",LLLL:"dddd, D. MMMM YYYY [kl.] LT"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:c,m:c,mm:c,h:"klukkustund",hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("it",{months:"Gennaio_Febbraio_Marzo_Aprile_Maggio_Giugno_Luglio_Agosto_Settembre_Ottobre_Novembre_Dicembre".split("_"),monthsShort:"Gen_Feb_Mar_Apr_Mag_Giu_Lug_Ago_Set_Ott_Nov_Dic".split("_"),weekdays:"Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"D_L_Ma_Me_G_V_S".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:"[lo scorso] dddd [alle] LT",sameElse:"L"},relativeTime:{future:function(a){return(/^[0-9].+$/.test(a)?"tra":"in")+" "+a},past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinal:"%dº",week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("ja",{months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"Ah時m分",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日LT",LLLL:"YYYY年M月D日LT dddd"},meridiem:function(a){return 12>a?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},relativeTime:{future:"%s後",past:"%s前",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){function b(a,b){var c={nominative:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),accusative:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},d=/D[oD] *MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function c(a,b){var c={nominative:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),accusative:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_")},d=/(წინა|შემდეგ)/.test(b)?"accusative":"nominative";return c[d][a.day()]}return a.lang("ka",{months:b,monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:c,weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(a){return/(წამი|წუთი|საათი|წელი)/.test(a)?a.replace(/ი$/,"ში"):a+"ში"},past:function(a){return/(წამი|წუთი|საათი|დღე|თვე)/.test(a)?a.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(a)?a.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},ordinal:function(a){return 0===a?a:1===a?a+"-ლი":20>a||100>=a&&a%20===0||a%100===0?"მე-"+a:a+"-ე"},week:{dow:1,doy:7}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h시 mm분",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 LT",LLLL:"YYYY년 MMMM D일 dddd LT"},meridiem:function(a){return 12>a?"오전":"오후"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇초",ss:"%d초",m:"일분",mm:"%d분",h:"한시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한달",MM:"%d달",y:"일년",yy:"%d년"},ordinal:"%d일",meridiemParse:/(오전|오후)/,isPM:function(a){return"오후"===a}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){function b(a,b,c){var d={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],dd:[a+" Deeg",a+" Deeg"],M:["ee Mount","engem Mount"],MM:[a+" Méint",a+" Méint"],y:["ee Joer","engem Joer"],yy:[a+" Joer",a+" Joer"]};return b?d[c][0]:d[c][1]}function c(a){var b=a.substr(0,a.indexOf(" "));return g(b)?"a "+a:"an "+a}function d(a){var b=a.substr(0,a.indexOf(" "));return g(b)?"viru "+a:"virun "+a}function e(){var a=this.format("d");return f(a)?"[Leschte] dddd [um] LT":"[Leschten] dddd [um] LT"}function f(a){switch(a=parseInt(a,10)){case 0:case 1:case 3:case 5:case 6:return!0;default:return!1}}function g(a){if(a=parseInt(a,10),isNaN(a))return!1;if(0>a)return!0;if(10>a)return a>=4&&7>=a?!0:!1;if(100>a){var b=a%10,c=a/10;return 0===b?g(c):g(b)}if(1e4>a){for(;a>=10;)a/=10;return g(a)}return a/=1e3,g(a)}return a.lang("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),longDateFormat:{LT:"H:mm [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:e},relativeTime:{future:c,past:d,s:"e puer Sekonnen",m:b,mm:"%d Minutten",h:b,hh:"%d Stonnen",d:b,dd:b,M:b,MM:b,y:b,yy:b},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){function b(a,b,c,d){return b?"kelios sekundės":d?"kelių sekundžių":"kelias sekundes"}function c(a,b,c,d){return b?e(c)[0]:d?e(c)[1]:e(c)[2]}function d(a){return a%10===0||a>10&&20>a}function e(a){return h[a].split("_")}function f(a,b,f,g){var h=a+" ";return 1===a?h+c(a,b,f[0],g):b?h+(d(a)?e(f)[1]:e(f)[0]):g?h+e(f)[1]:h+(d(a)?e(f)[1]:e(f)[2])}function g(a,b){var c=-1===b.indexOf("dddd LT"),d=i[a.weekday()];return c?d:d.substring(0,d.length-2)+"į"}var h={m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"},i="pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis_sekmadienis".split("_");return a.lang("lt",{months:"sausio_vasario_kovo_balandžio_gegužės_biržėlio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:g,weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], LT [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, LT [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], LT [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, LT [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:b,m:c,mm:f,h:c,hh:f,d:c,dd:f,M:c,MM:f,y:c,yy:f},ordinal:function(a){return a+"-oji"},week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){function b(a,b,c){var d=a.split("_");return c?b%10===1&&11!==b?d[2]:d[3]:b%10===1&&11!==b?d[0]:d[1]}function c(a,c,e){return a+" "+b(d[e],a,c)}var d={mm:"minūti_minūtes_minūte_minūtes",hh:"stundu_stundas_stunda_stundas",dd:"dienu_dienas_diena_dienas",MM:"mēnesi_mēnešus_mēnesis_mēneši",yy:"gadu_gadus_gads_gadi"};return a.lang("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, LT",LLLL:"YYYY. [gada] D. MMMM, dddd, LT"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"%s vēlāk",past:"%s agrāk",s:"dažas sekundes",m:"minūti",mm:c,h:"stundu",hh:c,d:"dienu",dd:c,M:"mēnesi",MM:c,y:"gadu",yy:c},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Во изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Во изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiem:function(a){return 4>a?"രാത്രി":12>a?"രാവിലെ":17>a?"ഉച്ച കഴിഞ്ഞ്":20>a?"വൈകുന്നേരം":"രാത്രി"}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){var b={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},c={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return a.lang("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%s नंतर",past:"%s पूर्वी",s:"सेकंद",m:"एक मिनिट",mm:"%d मिनिटे",h:"एक तास",hh:"%d तास",d:"एक दिवस",dd:"%d दिवस",M:"एक महिना",MM:"%d महिने",y:"एक वर्ष",yy:"%d वर्षे"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return c[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]})},meridiem:function(a){return 4>a?"रात्री":10>a?"सकाळी":17>a?"दुपारी":20>a?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] LT",LLLL:"dddd, D MMMM YYYY [pukul] LT"},meridiem:function(a){return 11>a?"pagi":15>a?"tengahari":19>a?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"H.mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] LT",LLLL:"dddd D. MMMM YYYY [kl.] LT"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){var b={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},c={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return a.lang("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आइ._सो._मङ्_बु._बि._शु._श.".split("_"),longDateFormat:{LT:"Aको h:mm बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return c[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]})},meridiem:function(a){return 3>a?"राती":10>a?"बिहान":15>a?"दिउँसो":18>a?"बेलुका":20>a?"साँझ":"राती"},calendar:{sameDay:"[आज] LT",nextDay:"[भोली] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडी",s:"केही समय",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:1,doy:7}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){var b="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),c="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_");return a.lang("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(a,d){return/-MMM-/.test(d)?c[a.month()]:b[a.month()]},weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),longDateFormat:{LT:"HH:mm",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregående] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s siden",s:"noen sekund",m:"ett minutt",mm:"%d minutt",h:"en time",hh:"%d timar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){function b(a){return 5>a%10&&a%10>1&&~~(a/10)%10!==1}function c(a,c,d){var e=a+" ";switch(d){case"m":return c?"minuta":"minutę";case"mm":return e+(b(a)?"minuty":"minut");case"h":return c?"godzina":"godzinę";case"hh":return e+(b(a)?"godziny":"godzin");case"MM":return e+(b(a)?"miesiące":"miesięcy");case"yy":return e+(b(a)?"lata":"lat")}}var d="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),e="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");return a.lang("pl",{months:function(a,b){return/D MMMM/.test(b)?e[a.month()]:d[a.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"nie_pon_wt_śr_czw_pt_sb".split("_"),weekdaysMin:"N_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:"[W] dddd [o] LT",lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT"; +default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:c,mm:c,h:c,hh:c,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:c,y:"rok",yy:c},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY LT",LLLL:"dddd, D [de] MMMM [de] YYYY LT"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinal:"%dº"})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY LT",LLLL:"dddd, D [de] MMMM [de] YYYY LT"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinal:"%dº",week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){function b(a,b,c){var d={mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},e=" ";return(a%100>=20||a>=100&&a%100===0)&&(e=" de "),a+e+d[c]}return a.lang("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian_feb_mar_apr_mai_iun_iul_aug_sep_oct_noi_dec".split("_"),weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",m:"un minut",mm:b,h:"o oră",hh:b,d:"o zi",dd:b,M:"o lună",MM:b,y:"un an",yy:b},week:{dow:1,doy:7}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){function b(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mesec":2===a||3===a||4===a?"meseca":"meseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}return a.lang("rs",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"par sekundi",m:b,mm:b,h:b,hh:b,d:"dan",dd:b,M:"mesec",MM:b,y:"godinu",yy:b},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){function b(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function c(a,c,d){var e={mm:"минута_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===d?c?"минута":"минуту":a+" "+b(e[d],+a)}function d(a,b){var c={nominative:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),accusative:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function e(a,b){var c={nominative:"янв_фев_мар_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),accusative:"янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function f(a,b){var c={nominative:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),accusative:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_")},d=/\[ ?[Вв] ?(?:прошлую|следующую)? ?\] ?dddd/.test(b)?"accusative":"nominative";return c[d][a.day()]}return a.lang("ru",{months:d,monthsShort:e,weekdays:f,weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[й|я]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i],longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., LT",LLLL:"dddd, D MMMM YYYY г., LT"},calendar:{sameDay:"[Сегодня в] LT",nextDay:"[Завтра в] LT",lastDay:"[Вчера в] LT",nextWeek:function(){return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT"},lastWeek:function(){switch(this.day()){case 0:return"[В прошлое] dddd [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",m:c,mm:c,h:"час",hh:c,d:"день",dd:c,M:"месяц",MM:c,y:"год",yy:c},meridiem:function(a){return 4>a?"ночи":12>a?"утра":17>a?"дня":"вечера"},ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":return a+"-й";case"D":return a+"-го";case"w":case"W":return a+"-я";default:return a}},week:{dow:1,doy:7}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){function b(a){return a>1&&5>a}function c(a,c,d,e){var f=a+" ";switch(d){case"s":return c||e?"pár sekúnd":"pár sekundami";case"m":return c?"minúta":e?"minútu":"minútou";case"mm":return c||e?f+(b(a)?"minúty":"minút"):f+"minútami";break;case"h":return c?"hodina":e?"hodinu":"hodinou";case"hh":return c||e?f+(b(a)?"hodiny":"hodín"):f+"hodinami";break;case"d":return c||e?"deň":"dňom";case"dd":return c||e?f+(b(a)?"dni":"dní"):f+"dňami";break;case"M":return c||e?"mesiac":"mesiacom";case"MM":return c||e?f+(b(a)?"mesiace":"mesiacov"):f+"mesiacmi";break;case"y":return c||e?"rok":"rokom";case"yy":return c||e?f+(b(a)?"roky":"rokov"):f+"rokmi"}}var d="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),e="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");return a.lang("sk",{months:d,monthsShort:e,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(d,e),weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd D. MMMM YYYY LT"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:c,m:c,mm:c,h:c,hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){function b(a,b,c){var d=a+" ";switch(c){case"m":return b?"ena minuta":"eno minuto";case"mm":return d+=1===a?"minuta":2===a?"minuti":3===a||4===a?"minute":"minut";case"h":return b?"ena ura":"eno uro";case"hh":return d+=1===a?"ura":2===a?"uri":3===a||4===a?"ure":"ur";case"dd":return d+=1===a?"dan":"dni";case"MM":return d+=1===a?"mesec":2===a?"meseca":3===a||4===a?"mesece":"mesecev";case"yy":return d+=1===a?"leto":2===a?"leti":3===a||4===a?"leta":"let"}}return a.lang("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[prejšnja] dddd [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"%s nazaj",s:"nekaj sekund",m:b,mm:b,h:b,hh:b,d:"en dan",dd:b,M:"en mesec",MM:b,y:"eno leto",yy:b},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Marte_E Mërkure_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Neser në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s me parë",s:"disa sekonda",m:"një minut",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"dddd LT",lastWeek:"[Förra] dddd[en] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"e":1===b?"a":2===b?"a":3===b?"e":"e";return a+c},week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},ordinal:function(a){return a+"வது"},meridiem:function(a){return a>=6&&10>=a?" காலை":a>=10&&14>=a?" நண்பகல்":a>=14&&18>=a?" எற்பாடு":a>=18&&20>=a?" மாலை":a>=20&&24>=a?" இரவு":a>=0&&6>=a?" வைகறை":void 0},week:{dow:0,doy:6}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา".split("_"),weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),longDateFormat:{LT:"H นาฬิกา m นาที",L:"YYYY/MM/DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา LT",LLLL:"วันddddที่ D MMMM YYYY เวลา LT"},meridiem:function(a){return 12>a?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM DD, YYYY LT"},calendar:{sameDay:"[Ngayon sa] LT",nextDay:"[Bukas sa] LT",nextWeek:"dddd [sa] LT",lastDay:"[Kahapon sa] LT",lastWeek:"dddd [huling linggo] LT",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},ordinal:function(a){return a},week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){var b={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};return a.lang("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(a){if(0===a)return a+"'ıncı";var c=a%10,d=a%100-c,e=a>=100?100:null;return a+(b[c]||b[d]||b[e])},week:{dow:1,doy:7}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("tzm-la",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){function b(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function c(a,c,d){var e={mm:"хвилина_хвилини_хвилин",hh:"година_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===d?c?"хвилина":"хвилину":"h"===d?c?"година":"годину":a+" "+b(e[d],+a)}function d(a,b){var c={nominative:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_"),accusative:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_")},d=/D[oD]? *MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function e(a,b){var c={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")},d=/(\[[ВвУу]\]) ?dddd/.test(b)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(b)?"genitive":"nominative";return c[d][a.day()]}function f(a){return function(){return a+"о"+(11===this.hours()?"б":"")+"] LT"}}return a.lang("uk",{months:d,monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:e,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., LT",LLLL:"dddd, D MMMM YYYY р., LT"},calendar:{sameDay:f("[Сьогодні "),nextDay:f("[Завтра "),lastDay:f("[Вчора "),nextWeek:f("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return f("[Минулої] dddd [").call(this);case 1:case 2:case 4:return f("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:c,mm:c,h:"годину",hh:c,d:"день",dd:c,M:"місяць",MM:c,y:"рік",yy:c},meridiem:function(a){return 4>a?"ночі":12>a?"ранку":17>a?"дня":"вечора"},ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a+"-й";case"D":return a+"-го";default:return a}},week:{dow:1,doy:7}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("uz",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"D MMMM YYYY, dddd LT"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("vn",{months:"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".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY LT",LLLL:"dddd, D MMMM [năm] YYYY LT",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY LT",llll:"ddd, D MMM YYYY LT"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},ordinal:function(a){return a},week:{dow:1,doy:4}})}),function(a){"function"==typeof define&&define.amd?define(["moment"],a):"object"==typeof exports?module.exports=a(require("../moment")):a(window.moment)}(function(a){return a.lang("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah点mm",L:"YYYY-MM-DD",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日LT",LLLL:"YYYY年MMMD日ddddLT",l:"YYYY-MM-DD",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日LT",llll:"YYYY年MMMD日ddddLT"},meridiem:function(a,b){var c=100*a+b;return 600>c?"凌晨":900>c?"早上":1130>c?"上午":1230>c?"中午":1800>c?"下午":"晚上"},calendar:{sameDay:function(){return 0===this.minutes()?"[今天]Ah[点整]":"[今天]LT"},nextDay:function(){return 0===this.minutes()?"[明天]Ah[点整]":"[明天]LT"},lastDay:function(){return 0===this.minutes()?"[昨天]Ah[点整]":"[昨天]LT"},nextWeek:function(){var b,c;return b=a().startOf("week"),c=this.unix()-b.unix()>=604800?"[下]":"[本]",0===this.minutes()?c+"dddAh点整":c+"dddAh点mm"},lastWeek:function(){var b,c;return b=a().startOf("week"),c=this.unix()c?"早上":1130>c?"上午":1230>c?"中午":1800>c?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"一分鐘",mm:"%d分鐘",h:"一小時",hh:"%d小時",d:"一天",dd:"%d天",M:"一個月",MM:"%d個月",y:"一年",yy:"%d年"}})}); \ No newline at end of file diff --git a/static/bootstrap-datetimepicker-master/moment-develop/min/moment-with-langs.js b/static/bootstrap-datetimepicker-master/moment-develop/min/moment-with-langs.js new file mode 100755 index 0000000..0a0d0ee --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/min/moment-with-langs.js @@ -0,0 +1,7768 @@ +//! moment.js +//! version : 2.5.1 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com + +(function (undefined) { + + /************************************ + Constants + ************************************/ + + var moment, + VERSION = "2.5.1", + global = this, + round = Math.round, + i, + + YEAR = 0, + MONTH = 1, + DATE = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECOND = 6, + + // internal storage for language config files + languages = {}, + + // moment internal properties + momentProperties = { + _isAMomentObject: null, + _i : null, + _f : null, + _l : null, + _strict : null, + _isUTC : null, + _offset : null, // optional. Combine with _isUTC + _pf : null, + _lang : null // optional + }, + + // check for nodeJS + hasModule = (typeof module !== 'undefined' && module.exports && typeof require !== 'undefined'), + + // ASP.NET json date format regex + aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, + aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, + + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, + + // format tokens + formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g, + localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g, + + // parsing token regexes + parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 + parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 + parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 + parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 + parseTokenDigits = /\d+/, // nonzero number of digits + parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. + parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z + parseTokenT = /T/i, // T (ISO separator) + parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 + + //strict parsing regexes + parseTokenOneDigit = /\d/, // 0 - 9 + parseTokenTwoDigits = /\d\d/, // 00 - 99 + parseTokenThreeDigits = /\d{3}/, // 000 - 999 + parseTokenFourDigits = /\d{4}/, // 0000 - 9999 + parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 + parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf + + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + + isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', + + isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], + ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], + ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], + ['GGGG-[W]WW', /\d{4}-W\d{2}/], + ['YYYY-DDD', /\d{4}-\d{3}/] + ], + + // iso time formats and regexes + isoTimes = [ + ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d{1,3}/], + ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], + ['HH:mm', /(T| )\d\d:\d\d/], + ['HH', /(T| )\d\d/] + ], + + // timezone chunker "+10:00" > ["10", "00"] or "-1530" > ["-15", "30"] + parseTimezoneChunker = /([\+\-]|\d\d)/gi, + + // getter and setter names + proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), + unitMillisecondFactors = { + 'Milliseconds' : 1, + 'Seconds' : 1e3, + 'Minutes' : 6e4, + 'Hours' : 36e5, + 'Days' : 864e5, + 'Months' : 2592e6, + 'Years' : 31536e6 + }, + + unitAliases = { + ms : 'millisecond', + s : 'second', + m : 'minute', + h : 'hour', + d : 'day', + D : 'date', + w : 'week', + W : 'isoWeek', + M : 'month', + y : 'year', + DDD : 'dayOfYear', + e : 'weekday', + E : 'isoWeekday', + gg: 'weekYear', + GG: 'isoWeekYear' + }, + + camelFunctions = { + dayofyear : 'dayOfYear', + isoweekday : 'isoWeekday', + isoweek : 'isoWeek', + weekyear : 'weekYear', + isoweekyear : 'isoWeekYear' + }, + + // format function strings + formatFunctions = {}, + + // tokens to ordinalize and pad + ordinalizeTokens = 'DDD w W M D d'.split(' '), + paddedTokens = 'M D H h m s w W'.split(' '), + + formatTokenFunctions = { + M : function () { + return this.month() + 1; + }, + MMM : function (format) { + return this.lang().monthsShort(this, format); + }, + MMMM : function (format) { + return this.lang().months(this, format); + }, + D : function () { + return this.date(); + }, + DDD : function () { + return this.dayOfYear(); + }, + d : function () { + return this.day(); + }, + dd : function (format) { + return this.lang().weekdaysMin(this, format); + }, + ddd : function (format) { + return this.lang().weekdaysShort(this, format); + }, + dddd : function (format) { + return this.lang().weekdays(this, format); + }, + w : function () { + return this.week(); + }, + W : function () { + return this.isoWeek(); + }, + YY : function () { + return leftZeroFill(this.year() % 100, 2); + }, + YYYY : function () { + return leftZeroFill(this.year(), 4); + }, + YYYYY : function () { + return leftZeroFill(this.year(), 5); + }, + YYYYYY : function () { + var y = this.year(), sign = y >= 0 ? '+' : '-'; + return sign + leftZeroFill(Math.abs(y), 6); + }, + gg : function () { + return leftZeroFill(this.weekYear() % 100, 2); + }, + gggg : function () { + return leftZeroFill(this.weekYear(), 4); + }, + ggggg : function () { + return leftZeroFill(this.weekYear(), 5); + }, + GG : function () { + return leftZeroFill(this.isoWeekYear() % 100, 2); + }, + GGGG : function () { + return leftZeroFill(this.isoWeekYear(), 4); + }, + GGGGG : function () { + return leftZeroFill(this.isoWeekYear(), 5); + }, + e : function () { + return this.weekday(); + }, + E : function () { + return this.isoWeekday(); + }, + a : function () { + return this.lang().meridiem(this.hours(), this.minutes(), true); + }, + A : function () { + return this.lang().meridiem(this.hours(), this.minutes(), false); + }, + H : function () { + return this.hours(); + }, + h : function () { + return this.hours() % 12 || 12; + }, + m : function () { + return this.minutes(); + }, + s : function () { + return this.seconds(); + }, + S : function () { + return toInt(this.milliseconds() / 100); + }, + SS : function () { + return leftZeroFill(toInt(this.milliseconds() / 10), 2); + }, + SSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + SSSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + Z : function () { + var a = -this.zone(), + b = "+"; + if (a < 0) { + a = -a; + b = "-"; + } + return b + leftZeroFill(toInt(a / 60), 2) + ":" + leftZeroFill(toInt(a) % 60, 2); + }, + ZZ : function () { + var a = -this.zone(), + b = "+"; + if (a < 0) { + a = -a; + b = "-"; + } + return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); + }, + z : function () { + return this.zoneAbbr(); + }, + zz : function () { + return this.zoneName(); + }, + X : function () { + return this.unix(); + }, + Q : function () { + return this.quarter(); + } + }, + + lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin']; + + function defaultParsingFlags() { + // We need to deep clone this object, and es5 standard is not very + // helpful. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso: false + }; + } + + function padToken(func, count) { + return function (a) { + return leftZeroFill(func.call(this, a), count); + }; + } + function ordinalizeToken(func, period) { + return function (a) { + return this.lang().ordinal(func.call(this, a), period); + }; + } + + while (ordinalizeTokens.length) { + i = ordinalizeTokens.pop(); + formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); + } + while (paddedTokens.length) { + i = paddedTokens.pop(); + formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); + } + formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); + + + /************************************ + Constructors + ************************************/ + + function Language() { + + } + + // Moment prototype object + function Moment(config) { + checkOverflow(config); + extend(this, config); + } + + // Duration Constructor + function Duration(duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; + + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 36e5; // 1000 * 60 * 60 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + years * 12; + + this._data = {}; + + this._bubble(); + } + + /************************************ + Helpers + ************************************/ + + + function extend(a, b) { + for (var i in b) { + if (b.hasOwnProperty(i)) { + a[i] = b[i]; + } + } + + if (b.hasOwnProperty("toString")) { + a.toString = b.toString; + } + + if (b.hasOwnProperty("valueOf")) { + a.valueOf = b.valueOf; + } + + return a; + } + + function cloneMoment(m) { + var result = {}, i; + for (i in m) { + if (m.hasOwnProperty(i) && momentProperties.hasOwnProperty(i)) { + result[i] = m[i]; + } + } + + return result; + } + + function absRound(number) { + if (number < 0) { + return Math.ceil(number); + } else { + return Math.floor(number); + } + } + + // left zero fill a number + // see http://jsperf.com/left-zero-filling for performance comparison + function leftZeroFill(number, targetLength, forceSign) { + var output = '' + Math.abs(number), + sign = number >= 0; + + while (output.length < targetLength) { + output = '0' + output; + } + return (sign ? (forceSign ? '+' : '') : '-') + output; + } + + // helper function for _.addTime and _.subtractTime + function addOrSubtractDurationFromMoment(mom, duration, isAdding, ignoreUpdateOffset) { + var milliseconds = duration._milliseconds, + days = duration._days, + months = duration._months, + minutes, + hours; + + if (milliseconds) { + mom._d.setTime(+mom._d + milliseconds * isAdding); + } + // store the minutes and hours so we can restore them + if (days || months) { + minutes = mom.minute(); + hours = mom.hour(); + } + if (days) { + mom.date(mom.date() + days * isAdding); + } + if (months) { + mom.month(mom.month() + months * isAdding); + } + if (milliseconds && !ignoreUpdateOffset) { + moment.updateOffset(mom); + } + // restore the minutes and hours after possibly changing dst + if (days || months) { + mom.minute(minutes); + mom.hour(hours); + } + } + + // check if is an array + function isArray(input) { + return Object.prototype.toString.call(input) === '[object Array]'; + } + + function isDate(input) { + return Object.prototype.toString.call(input) === '[object Date]' || + input instanceof Date; + } + + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; + } + + function normalizeUnits(units) { + if (units) { + var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); + units = unitAliases[units] || camelFunctions[lowered] || lowered; + } + return units; + } + + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; + + for (prop in inputObject) { + if (inputObject.hasOwnProperty(prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } + + return normalizedInput; + } + + function makeList(field) { + var count, setter; + + if (field.indexOf('week') === 0) { + count = 7; + setter = 'day'; + } + else if (field.indexOf('month') === 0) { + count = 12; + setter = 'month'; + } + else { + return; + } + + moment[field] = function (format, index) { + var i, getter, + method = moment.fn._lang[field], + results = []; + + if (typeof format === 'number') { + index = format; + format = undefined; + } + + getter = function (i) { + var m = moment().utc().set(setter, i); + return method.call(moment.fn._lang, m, format || ''); + }; + + if (index != null) { + return getter(index); + } + else { + for (i = 0; i < count; i++) { + results.push(getter(i)); + } + return results; + } + }; + } + + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + if (coercedNumber >= 0) { + value = Math.floor(coercedNumber); + } else { + value = Math.ceil(coercedNumber); + } + } + + return value; + } + + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + } + + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } + + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } + + function checkOverflow(m) { + var overflow; + if (m._a && m._pf.overflow === -2) { + overflow = + m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : + m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : + m._a[HOUR] < 0 || m._a[HOUR] > 23 ? HOUR : + m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : + m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : + m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } + + m._pf.overflow = overflow; + } + } + + function isValid(m) { + if (m._isValid == null) { + m._isValid = !isNaN(m._d.getTime()) && + m._pf.overflow < 0 && + !m._pf.empty && + !m._pf.invalidMonth && + !m._pf.nullInput && + !m._pf.invalidFormat && + !m._pf.userInvalidated; + + if (m._strict) { + m._isValid = m._isValid && + m._pf.charsLeftOver === 0 && + m._pf.unusedTokens.length === 0; + } + } + return m._isValid; + } + + function normalizeLanguage(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } + + // Return a moment from input, that is local/utc/zone equivalent to model. + function makeAs(input, model) { + return model._isUTC ? moment(input).zone(model._offset || 0) : + moment(input).local(); + } + + /************************************ + Languages + ************************************/ + + + extend(Language.prototype, { + + set : function (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + }, + + _months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), + months : function (m) { + return this._months[m.month()]; + }, + + _monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), + monthsShort : function (m) { + return this._monthsShort[m.month()]; + }, + + monthsParse : function (monthName) { + var i, mom, regex; + + if (!this._monthsParse) { + this._monthsParse = []; + } + + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + if (!this._monthsParse[i]) { + mom = moment.utc([2000, i]); + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._monthsParse[i].test(monthName)) { + return i; + } + } + }, + + _weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), + weekdays : function (m) { + return this._weekdays[m.day()]; + }, + + _weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), + weekdaysShort : function (m) { + return this._weekdaysShort[m.day()]; + }, + + _weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), + weekdaysMin : function (m) { + return this._weekdaysMin[m.day()]; + }, + + weekdaysParse : function (weekdayName) { + var i, mom, regex; + + if (!this._weekdaysParse) { + this._weekdaysParse = []; + } + + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + if (!this._weekdaysParse[i]) { + mom = moment([2000, 1]).day(i); + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } + }, + + _longDateFormat : { + LT : "h:mm A", + L : "MM/DD/YYYY", + LL : "MMMM D YYYY", + LLL : "MMMM D YYYY LT", + LLLL : "dddd, MMMM D YYYY LT" + }, + longDateFormat : function (key) { + var output = this._longDateFormat[key]; + if (!output && this._longDateFormat[key.toUpperCase()]) { + output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + this._longDateFormat[key] = output; + } + return output; + }, + + isPM : function (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + }, + + _meridiemParse : /[ap]\.?m?\.?/i, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + }, + + _calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + calendar : function (key, mom) { + var output = this._calendar[key]; + return typeof output === 'function' ? output.apply(mom) : output; + }, + + _relativeTime : { + future : "in %s", + past : "%s ago", + s : "a few seconds", + m : "a minute", + mm : "%d minutes", + h : "an hour", + hh : "%d hours", + d : "a day", + dd : "%d days", + M : "a month", + MM : "%d months", + y : "a year", + yy : "%d years" + }, + relativeTime : function (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (typeof output === 'function') ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + }, + pastFuture : function (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + }, + + ordinal : function (number) { + return this._ordinal.replace("%d", number); + }, + _ordinal : "%d", + + preparse : function (string) { + return string; + }, + + postformat : function (string) { + return string; + }, + + week : function (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + }, + + _week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }, + + _invalidDate: 'Invalid date', + invalidDate: function () { + return this._invalidDate; + } + }); + + // Loads a language definition into the `languages` cache. The function + // takes a key and optionally values. If not in the browser and no values + // are provided, it will load the language file module. As a convenience, + // this function also returns the language values. + function loadLang(key, values) { + values.abbr = key; + if (!languages[key]) { + languages[key] = new Language(); + } + languages[key].set(values); + return languages[key]; + } + + // Remove a language from the `languages` cache. Mostly useful in tests. + function unloadLang(key) { + delete languages[key]; + } + + // Determines which language definition to use and returns it. + // + // With no parameters, it will return the global language. If you + // pass in a language key, such as 'en', it will return the + // definition for 'en', so long as 'en' has already been loaded using + // moment.lang. + function getLangDefinition(key) { + var i = 0, j, lang, next, split, + get = function (k) { + if (!languages[k] && hasModule) { + try { + require('./lang/' + k); + } catch (e) { } + } + return languages[k]; + }; + + if (!key) { + return moment.fn._lang; + } + + if (!isArray(key)) { + //short-circuit everything else + lang = get(key); + if (lang) { + return lang; + } + key = [key]; + } + + //pick the language from the array + //try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + //substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + while (i < key.length) { + split = normalizeLanguage(key[i]).split('-'); + j = split.length; + next = normalizeLanguage(key[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + lang = get(split.slice(0, j).join('-')); + if (lang) { + return lang; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return moment.fn._lang; + } + + /************************************ + Formatting + ************************************/ + + + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ""); + } + return input.replace(/\\/g, ""); + } + + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; + + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } + + return function (mom) { + var output = ""; + for (i = 0; i < length; i++) { + output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; + } + return output; + }; + } + + // format date using native date object + function formatMoment(m, format) { + + if (!m.isValid()) { + return m.lang().invalidDate(); + } + + format = expandFormat(format, m.lang()); + + if (!formatFunctions[format]) { + formatFunctions[format] = makeFormatFunction(format); + } + + return formatFunctions[format](m); + } + + function expandFormat(format, lang) { + var i = 5; + + function replaceLongDateFormatTokens(input) { + return lang.longDateFormat(input) || input; + } + + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } + + return format; + } + + + /************************************ + Parsing + ************************************/ + + + // get the regex to find the next token + function getParseRegexForToken(token, config) { + var a, strict = config._strict; + switch (token) { + case 'DDDD': + return parseTokenThreeDigits; + case 'YYYY': + case 'GGGG': + case 'gggg': + return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; + case 'Y': + case 'G': + case 'g': + return parseTokenSignedNumber; + case 'YYYYYY': + case 'YYYYY': + case 'GGGGG': + case 'ggggg': + return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; + case 'S': + if (strict) { return parseTokenOneDigit; } + /* falls through */ + case 'SS': + if (strict) { return parseTokenTwoDigits; } + /* falls through */ + case 'SSS': + if (strict) { return parseTokenThreeDigits; } + /* falls through */ + case 'DDD': + return parseTokenOneToThreeDigits; + case 'MMM': + case 'MMMM': + case 'dd': + case 'ddd': + case 'dddd': + return parseTokenWord; + case 'a': + case 'A': + return getLangDefinition(config._l)._meridiemParse; + case 'X': + return parseTokenTimestampMs; + case 'Z': + case 'ZZ': + return parseTokenTimezone; + case 'T': + return parseTokenT; + case 'SSSS': + return parseTokenDigits; + case 'MM': + case 'DD': + case 'YY': + case 'GG': + case 'gg': + case 'HH': + case 'hh': + case 'mm': + case 'ss': + case 'ww': + case 'WW': + return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; + case 'M': + case 'D': + case 'd': + case 'H': + case 'h': + case 'm': + case 's': + case 'w': + case 'W': + case 'e': + case 'E': + return parseTokenOneOrTwoDigits; + default : + a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), "i")); + return a; + } + } + + function timezoneMinutesFromString(string) { + string = string || ""; + var possibleTzMatches = (string.match(parseTokenTimezone) || []), + tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], + parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], + minutes = +(parts[1] * 60) + toInt(parts[2]); + + return parts[0] === '+' ? -minutes : minutes; + } + + // function to convert string input to date + function addTimeToArrayFromToken(token, input, config) { + var a, datePartArray = config._a; + + switch (token) { + // MONTH + case 'M' : // fall through to MM + case 'MM' : + if (input != null) { + datePartArray[MONTH] = toInt(input) - 1; + } + break; + case 'MMM' : // fall through to MMMM + case 'MMMM' : + a = getLangDefinition(config._l).monthsParse(input); + // if we didn't find a month name, mark the date as invalid. + if (a != null) { + datePartArray[MONTH] = a; + } else { + config._pf.invalidMonth = input; + } + break; + // DAY OF MONTH + case 'D' : // fall through to DD + case 'DD' : + if (input != null) { + datePartArray[DATE] = toInt(input); + } + break; + // DAY OF YEAR + case 'DDD' : // fall through to DDDD + case 'DDDD' : + if (input != null) { + config._dayOfYear = toInt(input); + } + + break; + // YEAR + case 'YY' : + datePartArray[YEAR] = toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + break; + case 'YYYY' : + case 'YYYYY' : + case 'YYYYYY' : + datePartArray[YEAR] = toInt(input); + break; + // AM / PM + case 'a' : // fall through to A + case 'A' : + config._isPm = getLangDefinition(config._l).isPM(input); + break; + // 24 HOUR + case 'H' : // fall through to hh + case 'HH' : // fall through to hh + case 'h' : // fall through to hh + case 'hh' : + datePartArray[HOUR] = toInt(input); + break; + // MINUTE + case 'm' : // fall through to mm + case 'mm' : + datePartArray[MINUTE] = toInt(input); + break; + // SECOND + case 's' : // fall through to ss + case 'ss' : + datePartArray[SECOND] = toInt(input); + break; + // MILLISECOND + case 'S' : + case 'SS' : + case 'SSS' : + case 'SSSS' : + datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); + break; + // UNIX TIMESTAMP WITH MS + case 'X': + config._d = new Date(parseFloat(input) * 1000); + break; + // TIMEZONE + case 'Z' : // fall through to ZZ + case 'ZZ' : + config._useUTC = true; + config._tzm = timezoneMinutesFromString(input); + break; + case 'w': + case 'ww': + case 'W': + case 'WW': + case 'd': + case 'dd': + case 'ddd': + case 'dddd': + case 'e': + case 'E': + token = token.substr(0, 1); + /* falls through */ + case 'gg': + case 'gggg': + case 'GG': + case 'GGGG': + case 'GGGGG': + token = token.substr(0, 2); + if (input) { + config._w = config._w || {}; + config._w[token] = input; + } + break; + } + } + + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function dateFromConfig(config) { + var i, date, input = [], currentDate, + yearToUse, fixYear, w, temp, lang, weekday, week; + + if (config._d) { + return; + } + + currentDate = currentDateArray(config); + + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + fixYear = function (val) { + var int_val = parseInt(val, 10); + return val ? + (val.length < 3 ? (int_val > 68 ? 1900 + int_val : 2000 + int_val) : int_val) : + (config._a[YEAR] == null ? moment().weekYear() : config._a[YEAR]); + }; + + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + temp = dayOfYearFromWeeks(fixYear(w.GG), w.W || 1, w.E, 4, 1); + } + else { + lang = getLangDefinition(config._l); + weekday = w.d != null ? parseWeekday(w.d, lang) : + (w.e != null ? parseInt(w.e, 10) + lang._week.dow : 0); + + week = parseInt(w.w, 10) || 1; + + //if we're parsing 'd', then the low day numbers may be next week + if (w.d != null && weekday < lang._week.dow) { + week++; + } + + temp = dayOfYearFromWeeks(fixYear(w.gg), week, weekday, lang._week.doy, lang._week.dow); + } + + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } + + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = config._a[YEAR] == null ? currentDate[YEAR] : config._a[YEAR]; + + if (config._dayOfYear > daysInYear(yearToUse)) { + config._pf._overflowDayOfYear = true; + } + + date = makeUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } + + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } + + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } + + // add the offsets to the time to be parsed so that we can have a clean array for checking isValid + input[HOUR] += toInt((config._tzm || 0) / 60); + input[MINUTE] += toInt((config._tzm || 0) % 60); + + config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); + } + + function dateFromObject(config) { + var normalizedInput; + + if (config._d) { + return; + } + + normalizedInput = normalizeObjectUnits(config._i); + config._a = [ + normalizedInput.year, + normalizedInput.month, + normalizedInput.day, + normalizedInput.hour, + normalizedInput.minute, + normalizedInput.second, + normalizedInput.millisecond + ]; + + dateFromConfig(config); + } + + function currentDateArray(config) { + var now = new Date(); + if (config._useUTC) { + return [ + now.getUTCFullYear(), + now.getUTCMonth(), + now.getUTCDate() + ]; + } else { + return [now.getFullYear(), now.getMonth(), now.getDate()]; + } + } + + // date from string and format string + function makeDateFromStringAndFormat(config) { + + config._a = []; + config._pf.empty = true; + + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var lang = getLangDefinition(config._l), + string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; + + tokens = expandFormat(config._f, lang).match(formattingTokens) || []; + + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + config._pf.unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + config._pf.empty = false; + } + else { + config._pf.unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + config._pf.unusedTokens.push(token); + } + } + + // add remaining unparsed input length to the string + config._pf.charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + config._pf.unusedInput.push(string); + } + + // handle am pm + if (config._isPm && config._a[HOUR] < 12) { + config._a[HOUR] += 12; + } + // if is 12 am, change hours to 0 + if (config._isPm === false && config._a[HOUR] === 12) { + config._a[HOUR] = 0; + } + + dateFromConfig(config); + checkOverflow(config); + } + + function unescapeFormat(s) { + return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + }); + } + + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function regexpEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } + + // date from string and array of format strings + function makeDateFromStringAndArray(config) { + var tempConfig, + bestMoment, + + scoreToBeat, + i, + currentScore; + + if (config._f.length === 0) { + config._pf.invalidFormat = true; + config._d = new Date(NaN); + return; + } + + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = extend({}, config); + tempConfig._pf = defaultParsingFlags(); + tempConfig._f = config._f[i]; + makeDateFromStringAndFormat(tempConfig); + + if (!isValid(tempConfig)) { + continue; + } + + // if there is any input that was not parsed add a penalty for that format + currentScore += tempConfig._pf.charsLeftOver; + + //or tokens + currentScore += tempConfig._pf.unusedTokens.length * 10; + + tempConfig._pf.score = currentScore; + + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } + + extend(config, bestMoment || tempConfig); + } + + // date from iso format + function makeDateFromString(config) { + var i, l, + string = config._i, + match = isoRegex.exec(string); + + if (match) { + config._pf.iso = true; + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(string)) { + // match[5] should be "T" or undefined + config._f = isoDates[i][0] + (match[6] || " "); + break; + } + } + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(string)) { + config._f += isoTimes[i][0]; + break; + } + } + if (string.match(parseTokenTimezone)) { + config._f += "Z"; + } + makeDateFromStringAndFormat(config); + } + else { + config._d = new Date(string); + } + } + + function makeDateFromInput(config) { + var input = config._i, + matched = aspNetJsonRegex.exec(input); + + if (input === undefined) { + config._d = new Date(); + } else if (matched) { + config._d = new Date(+matched[1]); + } else if (typeof input === 'string') { + makeDateFromString(config); + } else if (isArray(input)) { + config._a = input.slice(0); + dateFromConfig(config); + } else if (isDate(input)) { + config._d = new Date(+input); + } else if (typeof(input) === 'object') { + dateFromObject(config); + } else { + config._d = new Date(input); + } + } + + function makeDate(y, m, d, h, M, s, ms) { + //can't just apply() to create a date: + //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply + var date = new Date(y, m, d, h, M, s, ms); + + //the date constructor doesn't accept years < 1970 + if (y < 1970) { + date.setFullYear(y); + } + return date; + } + + function makeUTCDate(y) { + var date = new Date(Date.UTC.apply(null, arguments)); + if (y < 1970) { + date.setUTCFullYear(y); + } + return date; + } + + function parseWeekday(input, language) { + if (typeof input === 'string') { + if (!isNaN(input)) { + input = parseInt(input, 10); + } + else { + input = language.weekdaysParse(input); + if (typeof input !== 'number') { + return null; + } + } + } + return input; + } + + /************************************ + Relative Time + ************************************/ + + + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, lang) { + return lang.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } + + function relativeTime(milliseconds, withoutSuffix, lang) { + var seconds = round(Math.abs(milliseconds) / 1000), + minutes = round(seconds / 60), + hours = round(minutes / 60), + days = round(hours / 24), + years = round(days / 365), + args = seconds < 45 && ['s', seconds] || + minutes === 1 && ['m'] || + minutes < 45 && ['mm', minutes] || + hours === 1 && ['h'] || + hours < 22 && ['hh', hours] || + days === 1 && ['d'] || + days <= 25 && ['dd', days] || + days <= 45 && ['M'] || + days < 345 && ['MM', round(days / 30)] || + years === 1 && ['y'] || ['yy', years]; + args[2] = withoutSuffix; + args[3] = milliseconds > 0; + args[4] = lang; + return substituteTimeAgo.apply({}, args); + } + + + /************************************ + Week of Year + ************************************/ + + + // firstDayOfWeek 0 = sun, 6 = sat + // the day of the week that starts the week + // (usually sunday or monday) + // firstDayOfWeekOfYear 0 = sun, 6 = sat + // the first week is the week that contains the first + // of this day of the week + // (eg. ISO weeks use thursday (4)) + function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { + var end = firstDayOfWeekOfYear - firstDayOfWeek, + daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), + adjustedMoment; + + + if (daysToDayOfWeek > end) { + daysToDayOfWeek -= 7; + } + + if (daysToDayOfWeek < end - 7) { + daysToDayOfWeek += 7; + } + + adjustedMoment = moment(mom).add('d', daysToDayOfWeek); + return { + week: Math.ceil(adjustedMoment.dayOfYear() / 7), + year: adjustedMoment.year() + }; + } + + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { + var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; + + weekday = weekday != null ? weekday : firstDayOfWeek; + daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); + dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; + + return { + year: dayOfYear > 0 ? year : year - 1, + dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + }; + } + + /************************************ + Top Level Functions + ************************************/ + + function makeMoment(config) { + var input = config._i, + format = config._f; + + if (input === null) { + return moment.invalid({nullInput: true}); + } + + if (typeof input === 'string') { + config._i = input = getLangDefinition().preparse(input); + } + + if (moment.isMoment(input)) { + config = cloneMoment(input); + + config._d = new Date(+input._d); + } else if (format) { + if (isArray(format)) { + makeDateFromStringAndArray(config); + } else { + makeDateFromStringAndFormat(config); + } + } else { + makeDateFromInput(config); + } + + return new Moment(config); + } + + moment = function (input, format, lang, strict) { + var c; + + if (typeof(lang) === "boolean") { + strict = lang; + lang = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._i = input; + c._f = format; + c._l = lang; + c._strict = strict; + c._isUTC = false; + c._pf = defaultParsingFlags(); + + return makeMoment(c); + }; + + // creating with utc + moment.utc = function (input, format, lang, strict) { + var c; + + if (typeof(lang) === "boolean") { + strict = lang; + lang = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._useUTC = true; + c._isUTC = true; + c._l = lang; + c._i = input; + c._f = format; + c._strict = strict; + c._pf = defaultParsingFlags(); + + return makeMoment(c).utc(); + }; + + // creating with unix timestamp (in seconds) + moment.unix = function (input) { + return moment(input * 1000); + }; + + // duration + moment.duration = function (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + parseIso; + + if (moment.isDuration(input)) { + duration = { + ms: input._milliseconds, + d: input._days, + M: input._months + }; + } else if (typeof input === 'number') { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { + sign = (match[1] === "-") ? -1 : 1; + duration = { + y: 0, + d: toInt(match[DATE]) * sign, + h: toInt(match[HOUR]) * sign, + m: toInt(match[MINUTE]) * sign, + s: toInt(match[SECOND]) * sign, + ms: toInt(match[MILLISECOND]) * sign + }; + } else if (!!(match = isoDurationRegex.exec(input))) { + sign = (match[1] === "-") ? -1 : 1; + parseIso = function (inp) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + }; + duration = { + y: parseIso(match[2]), + M: parseIso(match[3]), + d: parseIso(match[4]), + h: parseIso(match[5]), + m: parseIso(match[6]), + s: parseIso(match[7]), + w: parseIso(match[8]) + }; + } + + ret = new Duration(duration); + + if (moment.isDuration(input) && input.hasOwnProperty('_lang')) { + ret._lang = input._lang; + } + + return ret; + }; + + // version number + moment.version = VERSION; + + // default format + moment.defaultFormat = isoFormat; + + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + moment.updateOffset = function () {}; + + // This function will load languages and then set the global language. If + // no arguments are passed in, it will simply return the current global + // language key. + moment.lang = function (key, values) { + var r; + if (!key) { + return moment.fn._lang._abbr; + } + if (values) { + loadLang(normalizeLanguage(key), values); + } else if (values === null) { + unloadLang(key); + key = 'en'; + } else if (!languages[key]) { + getLangDefinition(key); + } + r = moment.duration.fn._lang = moment.fn._lang = getLangDefinition(key); + return r._abbr; + }; + + // returns language data + moment.langData = function (key) { + if (key && key._lang && key._lang._abbr) { + key = key._lang._abbr; + } + return getLangDefinition(key); + }; + + // compare moment object + moment.isMoment = function (obj) { + return obj instanceof Moment || + (obj != null && obj.hasOwnProperty('_isAMomentObject')); + }; + + // for typechecking Duration objects + moment.isDuration = function (obj) { + return obj instanceof Duration; + }; + + for (i = lists.length - 1; i >= 0; --i) { + makeList(lists[i]); + } + + moment.normalizeUnits = function (units) { + return normalizeUnits(units); + }; + + moment.invalid = function (flags) { + var m = moment.utc(NaN); + if (flags != null) { + extend(m._pf, flags); + } + else { + m._pf.userInvalidated = true; + } + + return m; + }; + + moment.parseZone = function (input) { + return moment(input).parseZone(); + }; + + /************************************ + Moment Prototype + ************************************/ + + + extend(moment.fn = Moment.prototype, { + + clone : function () { + return moment(this); + }, + + valueOf : function () { + return +this._d + ((this._offset || 0) * 60000); + }, + + unix : function () { + return Math.floor(+this / 1000); + }, + + toString : function () { + return this.clone().lang('en').format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ"); + }, + + toDate : function () { + return this._offset ? new Date(+this) : this._d; + }, + + toISOString : function () { + var m = moment(this).utc(); + if (0 < m.year() && m.year() <= 9999) { + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } else { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + }, + + toArray : function () { + var m = this; + return [ + m.year(), + m.month(), + m.date(), + m.hours(), + m.minutes(), + m.seconds(), + m.milliseconds() + ]; + }, + + isValid : function () { + return isValid(this); + }, + + isDSTShifted : function () { + + if (this._a) { + return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; + } + + return false; + }, + + parsingFlags : function () { + return extend({}, this._pf); + }, + + invalidAt: function () { + return this._pf.overflow; + }, + + utc : function () { + return this.zone(0); + }, + + local : function () { + this.zone(0); + this._isUTC = false; + return this; + }, + + format : function (inputString) { + var output = formatMoment(this, inputString || moment.defaultFormat); + return this.lang().postformat(output); + }, + + add : function (input, val) { + var dur; + // switch args to support add('s', 1) and add(1, 's') + if (typeof input === 'string') { + dur = moment.duration(+val, input); + } else { + dur = moment.duration(input, val); + } + addOrSubtractDurationFromMoment(this, dur, 1); + return this; + }, + + subtract : function (input, val) { + var dur; + // switch args to support subtract('s', 1) and subtract(1, 's') + if (typeof input === 'string') { + dur = moment.duration(+val, input); + } else { + dur = moment.duration(input, val); + } + addOrSubtractDurationFromMoment(this, dur, -1); + return this; + }, + + diff : function (input, units, asFloat) { + var that = makeAs(input, this), + zoneDiff = (this.zone() - that.zone()) * 6e4, + diff, output; + + units = normalizeUnits(units); + + if (units === 'year' || units === 'month') { + // average number of days in the months in the given dates + diff = (this.daysInMonth() + that.daysInMonth()) * 432e5; // 24 * 60 * 60 * 1000 / 2 + // difference in months + output = ((this.year() - that.year()) * 12) + (this.month() - that.month()); + // adjust by taking difference in days, average number of days + // and dst in the given months. + output += ((this - moment(this).startOf('month')) - + (that - moment(that).startOf('month'))) / diff; + // same as above but with zones, to negate all dst + output -= ((this.zone() - moment(this).startOf('month').zone()) - + (that.zone() - moment(that).startOf('month').zone())) * 6e4 / diff; + if (units === 'year') { + output = output / 12; + } + } else { + diff = (this - that); + output = units === 'second' ? diff / 1e3 : // 1000 + units === 'minute' ? diff / 6e4 : // 1000 * 60 + units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + diff; + } + return asFloat ? output : absRound(output); + }, + + from : function (time, withoutSuffix) { + return moment.duration(this.diff(time)).lang(this.lang()._abbr).humanize(!withoutSuffix); + }, + + fromNow : function (withoutSuffix) { + return this.from(moment(), withoutSuffix); + }, + + calendar : function () { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're zone'd or not. + var sod = makeAs(moment(), this).startOf('day'), + diff = this.diff(sod, 'days', true), + format = diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + return this.format(this.lang().calendar(format, this)); + }, + + isLeapYear : function () { + return isLeapYear(this.year()); + }, + + isDST : function () { + return (this.zone() < this.clone().month(0).zone() || + this.zone() < this.clone().month(5).zone()); + }, + + day : function (input) { + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.lang()); + return this.add({ d : input - day }); + } else { + return day; + } + }, + + month : function (input) { + var utc = this._isUTC ? 'UTC' : '', + dayOfMonth; + + if (input != null) { + if (typeof input === 'string') { + input = this.lang().monthsParse(input); + if (typeof input !== 'number') { + return this; + } + } + + dayOfMonth = this.date(); + this.date(1); + this._d['set' + utc + 'Month'](input); + this.date(Math.min(dayOfMonth, this.daysInMonth())); + + moment.updateOffset(this); + return this; + } else { + return this._d['get' + utc + 'Month'](); + } + }, + + startOf: function (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + /* falls through */ + } + + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } else if (units === 'isoWeek') { + this.isoWeekday(1); + } + + return this; + }, + + endOf: function (units) { + units = normalizeUnits(units); + return this.startOf(units).add((units === 'isoWeek' ? 'week' : units), 1).subtract('ms', 1); + }, + + isAfter: function (input, units) { + units = typeof units !== 'undefined' ? units : 'millisecond'; + return +this.clone().startOf(units) > +moment(input).startOf(units); + }, + + isBefore: function (input, units) { + units = typeof units !== 'undefined' ? units : 'millisecond'; + return +this.clone().startOf(units) < +moment(input).startOf(units); + }, + + isSame: function (input, units) { + units = units || 'ms'; + return +this.clone().startOf(units) === +makeAs(input, this).startOf(units); + }, + + min: function (other) { + other = moment.apply(null, arguments); + return other < this ? this : other; + }, + + max: function (other) { + other = moment.apply(null, arguments); + return other > this ? this : other; + }, + + zone : function (input) { + var offset = this._offset || 0; + if (input != null) { + if (typeof input === "string") { + input = timezoneMinutesFromString(input); + } + if (Math.abs(input) < 16) { + input = input * 60; + } + this._offset = input; + this._isUTC = true; + if (offset !== input) { + addOrSubtractDurationFromMoment(this, moment.duration(offset - input, 'm'), 1, true); + } + } else { + return this._isUTC ? offset : this._d.getTimezoneOffset(); + } + return this; + }, + + zoneAbbr : function () { + return this._isUTC ? "UTC" : ""; + }, + + zoneName : function () { + return this._isUTC ? "Coordinated Universal Time" : ""; + }, + + parseZone : function () { + if (this._tzm) { + this.zone(this._tzm); + } else if (typeof this._i === 'string') { + this.zone(this._i); + } + return this; + }, + + hasAlignedHourOffset : function (input) { + if (!input) { + input = 0; + } + else { + input = moment(input).zone(); + } + + return (this.zone() - input) % 60 === 0; + }, + + daysInMonth : function () { + return daysInMonth(this.year(), this.month()); + }, + + dayOfYear : function (input) { + var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add("d", (input - dayOfYear)); + }, + + quarter : function () { + return Math.ceil((this.month() + 1.0) / 3.0); + }, + + weekYear : function (input) { + var year = weekOfYear(this, this.lang()._week.dow, this.lang()._week.doy).year; + return input == null ? year : this.add("y", (input - year)); + }, + + isoWeekYear : function (input) { + var year = weekOfYear(this, 1, 4).year; + return input == null ? year : this.add("y", (input - year)); + }, + + week : function (input) { + var week = this.lang().week(this); + return input == null ? week : this.add("d", (input - week) * 7); + }, + + isoWeek : function (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add("d", (input - week) * 7); + }, + + weekday : function (input) { + var weekday = (this.day() + 7 - this.lang()._week.dow) % 7; + return input == null ? weekday : this.add("d", input - weekday); + }, + + isoWeekday : function (input) { + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); + }, + + get : function (units) { + units = normalizeUnits(units); + return this[units](); + }, + + set : function (units, value) { + units = normalizeUnits(units); + if (typeof this[units] === 'function') { + this[units](value); + } + return this; + }, + + // If passed a language key, it will set the language for this + // instance. Otherwise, it will return the language configuration + // variables for this instance. + lang : function (key) { + if (key === undefined) { + return this._lang; + } else { + this._lang = getLangDefinition(key); + return this; + } + } + }); + + // helper for adding shortcuts + function makeGetterAndSetter(name, key) { + moment.fn[name] = moment.fn[name + 's'] = function (input) { + var utc = this._isUTC ? 'UTC' : ''; + if (input != null) { + this._d['set' + utc + key](input); + moment.updateOffset(this); + return this; + } else { + return this._d['get' + utc + key](); + } + }; + } + + // loop through and add shortcuts (Month, Date, Hours, Minutes, Seconds, Milliseconds) + for (i = 0; i < proxyGettersAndSetters.length; i ++) { + makeGetterAndSetter(proxyGettersAndSetters[i].toLowerCase().replace(/s$/, ''), proxyGettersAndSetters[i]); + } + + // add shortcut for year (uses different syntax than the getter/setter 'year' == 'FullYear') + makeGetterAndSetter('year', 'FullYear'); + + // add plural methods + moment.fn.days = moment.fn.day; + moment.fn.months = moment.fn.month; + moment.fn.weeks = moment.fn.week; + moment.fn.isoWeeks = moment.fn.isoWeek; + + // add aliased format methods + moment.fn.toJSON = moment.fn.toISOString; + + /************************************ + Duration Prototype + ************************************/ + + + extend(moment.duration.fn = Duration.prototype, { + + _bubble : function () { + var milliseconds = this._milliseconds, + days = this._days, + months = this._months, + data = this._data, + seconds, minutes, hours, years; + + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; + + seconds = absRound(milliseconds / 1000); + data.seconds = seconds % 60; + + minutes = absRound(seconds / 60); + data.minutes = minutes % 60; + + hours = absRound(minutes / 60); + data.hours = hours % 24; + + days += absRound(hours / 24); + data.days = days % 30; + + months += absRound(days / 30); + data.months = months % 12; + + years = absRound(months / 12); + data.years = years; + }, + + weeks : function () { + return absRound(this.days() / 7); + }, + + valueOf : function () { + return this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6; + }, + + humanize : function (withSuffix) { + var difference = +this, + output = relativeTime(difference, !withSuffix, this.lang()); + + if (withSuffix) { + output = this.lang().pastFuture(difference, output); + } + + return this.lang().postformat(output); + }, + + add : function (input, val) { + // supports only 2.0-style add(1, 's') or add(moment) + var dur = moment.duration(input, val); + + this._milliseconds += dur._milliseconds; + this._days += dur._days; + this._months += dur._months; + + this._bubble(); + + return this; + }, + + subtract : function (input, val) { + var dur = moment.duration(input, val); + + this._milliseconds -= dur._milliseconds; + this._days -= dur._days; + this._months -= dur._months; + + this._bubble(); + + return this; + }, + + get : function (units) { + units = normalizeUnits(units); + return this[units.toLowerCase() + 's'](); + }, + + as : function (units) { + units = normalizeUnits(units); + return this['as' + units.charAt(0).toUpperCase() + units.slice(1) + 's'](); + }, + + lang : moment.fn.lang, + + toIsoString : function () { + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var years = Math.abs(this.years()), + months = Math.abs(this.months()), + days = Math.abs(this.days()), + hours = Math.abs(this.hours()), + minutes = Math.abs(this.minutes()), + seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); + + if (!this.asSeconds()) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } + + return (this.asSeconds() < 0 ? '-' : '') + + 'P' + + (years ? years + 'Y' : '') + + (months ? months + 'M' : '') + + (days ? days + 'D' : '') + + ((hours || minutes || seconds) ? 'T' : '') + + (hours ? hours + 'H' : '') + + (minutes ? minutes + 'M' : '') + + (seconds ? seconds + 'S' : ''); + } + }); + + function makeDurationGetter(name) { + moment.duration.fn[name] = function () { + return this._data[name]; + }; + } + + function makeDurationAsGetter(name, factor) { + moment.duration.fn['as' + name] = function () { + return +this / factor; + }; + } + + for (i in unitMillisecondFactors) { + if (unitMillisecondFactors.hasOwnProperty(i)) { + makeDurationAsGetter(i, unitMillisecondFactors[i]); + makeDurationGetter(i.toLowerCase()); + } + } + + makeDurationAsGetter('Weeks', 6048e5); + moment.duration.fn.asMonths = function () { + return (+this - this.years() * 31536e6) / 2592e6 + this.years() * 12; + }; + + + /************************************ + Default Lang + ************************************/ + + + // Set default language, other languages will inherit from English. + moment.lang('en', { + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); + + // moment.js language configuration +// language : Moroccan Arabic (ar-ma) +// author : ElFadili Yassine : https://github.com/ElFadiliY +// author : Abdel Said : https://github.com/abdelsaid + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('ar-ma', { + months : "يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"), + monthsShort : "يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"), + weekdays : "الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"), + weekdaysShort : "احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"), + weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: "[اليوم على الساعة] LT", + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : "في %s", + past : "منذ %s", + s : "ثوان", + m : "دقيقة", + mm : "%d دقائق", + h : "ساعة", + hh : "%d ساعات", + d : "يوم", + dd : "%d أيام", + M : "شهر", + MM : "%d أشهر", + y : "سنة", + yy : "%d سنوات" + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : Arabic (ar) +// author : Abdel Said : https://github.com/abdelsaid +// changes in months, weekdays : Ahmed Elkhatib + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('ar', { + months : "يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"), + monthsShort : "يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"), + weekdays : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"), + weekdaysShort : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"), + weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: "[اليوم على الساعة] LT", + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : "في %s", + past : "منذ %s", + s : "ثوان", + m : "دقيقة", + mm : "%d دقائق", + h : "ساعة", + hh : "%d ساعات", + d : "يوم", + dd : "%d أيام", + M : "شهر", + MM : "%d أشهر", + y : "سنة", + yy : "%d سنوات" + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : bulgarian (bg) +// author : Krasen Borisov : https://github.com/kraz + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('bg', { + months : "януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"), + monthsShort : "янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"), + weekdays : "неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"), + weekdaysShort : "нед_пон_вто_сря_чет_пет_съб".split("_"), + weekdaysMin : "нд_пн_вт_ср_чт_пт_сб".split("_"), + longDateFormat : { + LT : "H:mm", + L : "D.MM.YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay : '[Днес в] LT', + nextDay : '[Утре в] LT', + nextWeek : 'dddd [в] LT', + lastDay : '[Вчера в] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + case 6: + return '[В изминалата] dddd [в] LT'; + case 1: + case 2: + case 4: + case 5: + return '[В изминалия] dddd [в] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : "след %s", + past : "преди %s", + s : "няколко секунди", + m : "минута", + mm : "%d минути", + h : "час", + hh : "%d часа", + d : "ден", + dd : "%d дни", + M : "месец", + MM : "%d месеца", + y : "година", + yy : "%d години" + }, + ordinal : function (number) { + var lastDigit = number % 10, + last2Digits = number % 100; + if (number === 0) { + return number + '-ев'; + } else if (last2Digits === 0) { + return number + '-ен'; + } else if (last2Digits > 10 && last2Digits < 20) { + return number + '-ти'; + } else if (lastDigit === 1) { + return number + '-ви'; + } else if (lastDigit === 2) { + return number + '-ри'; + } else if (lastDigit === 7 || lastDigit === 8) { + return number + '-ми'; + } else { + return number + '-ти'; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : breton (br) +// author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou + +(function (factory) { + factory(moment); +}(function (moment) { + function relativeTimeWithMutation(number, withoutSuffix, key) { + var format = { + 'mm': "munutenn", + 'MM': "miz", + 'dd': "devezh" + }; + return number + ' ' + mutation(format[key], number); + } + + function specialMutationForYears(number) { + switch (lastNumber(number)) { + case 1: + case 3: + case 4: + case 5: + case 9: + return number + ' bloaz'; + default: + return number + ' vloaz'; + } + } + + function lastNumber(number) { + if (number > 9) { + return lastNumber(number % 10); + } + return number; + } + + function mutation(text, number) { + if (number === 2) { + return softMutation(text); + } + return text; + } + + function softMutation(text) { + var mutationTable = { + 'm': 'v', + 'b': 'v', + 'd': 'z' + }; + if (mutationTable[text.charAt(0)] === undefined) { + return text; + } + return mutationTable[text.charAt(0)] + text.substring(1); + } + + return moment.lang('br', { + months : "Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"), + monthsShort : "Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"), + weekdays : "Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"), + weekdaysShort : "Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"), + weekdaysMin : "Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"), + longDateFormat : { + LT : "h[e]mm A", + L : "DD/MM/YYYY", + LL : "D [a viz] MMMM YYYY", + LLL : "D [a viz] MMMM YYYY LT", + LLLL : "dddd, D [a viz] MMMM YYYY LT" + }, + calendar : { + sameDay : '[Hiziv da] LT', + nextDay : '[Warc\'hoazh da] LT', + nextWeek : 'dddd [da] LT', + lastDay : '[Dec\'h da] LT', + lastWeek : 'dddd [paset da] LT', + sameElse : 'L' + }, + relativeTime : { + future : "a-benn %s", + past : "%s 'zo", + s : "un nebeud segondennoù", + m : "ur vunutenn", + mm : relativeTimeWithMutation, + h : "un eur", + hh : "%d eur", + d : "un devezh", + dd : relativeTimeWithMutation, + M : "ur miz", + MM : relativeTimeWithMutation, + y : "ur bloaz", + yy : specialMutationForYears + }, + ordinal : function (number) { + var output = (number === 1) ? 'añ' : 'vet'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : bosnian (bs) +// author : Nedim Cholich : https://github.com/frontyard +// based on (hr) translation by Bojan Marković + +(function (factory) { + factory(moment); +}(function (moment) { + + function translate(number, withoutSuffix, key) { + var result = number + " "; + switch (key) { + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mjesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'mjeseca'; + } else { + result += 'mjeseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; + } + } + + return moment.lang('bs', { + months : "januar_februar_mart_april_maj_juni_juli_avgust_septembar_oktobar_novembar_decembar".split("_"), + monthsShort : "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"), + weekdays : "nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"), + weekdaysShort : "ned._pon._uto._sri._čet._pet._sub.".split("_"), + weekdaysMin : "ne_po_ut_sr_če_pe_su".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD. MM. YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd, D. MMMM YYYY LT" + }, + calendar : { + sameDay : '[danas u] LT', + nextDay : '[sutra u] LT', + + nextWeek : function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[jučer u] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : "za %s", + past : "prije %s", + s : "par sekundi", + m : translate, + mm : translate, + h : translate, + hh : translate, + d : "dan", + dd : translate, + M : "mjesec", + MM : translate, + y : "godinu", + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : catalan (ca) +// author : Juan G. Hurtado : https://github.com/juanghurtado + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('ca', { + months : "gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"), + monthsShort : "gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"), + weekdays : "diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"), + weekdaysShort : "dg._dl._dt._dc._dj._dv._ds.".split("_"), + weekdaysMin : "Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay : function () { + return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + nextDay : function () { + return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + lastDay : function () { + return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : "en %s", + past : "fa %s", + s : "uns segons", + m : "un minut", + mm : "%d minuts", + h : "una hora", + hh : "%d hores", + d : "un dia", + dd : "%d dies", + M : "un mes", + MM : "%d mesos", + y : "un any", + yy : "%d anys" + }, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : czech (cs) +// author : petrbela : https://github.com/petrbela + +(function (factory) { + factory(moment); +}(function (moment) { + var months = "leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"), + monthsShort = "led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"); + + function plural(n) { + return (n > 1) && (n < 5) && (~~(n / 10) !== 1); + } + + function translate(number, withoutSuffix, key, isFuture) { + var result = number + " "; + switch (key) { + case 's': // a few seconds / in a few seconds / a few seconds ago + return (withoutSuffix || isFuture) ? 'pár vteřin' : 'pár vteřinami'; + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou'); + case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'minuty' : 'minut'); + } else { + return result + 'minutami'; + } + break; + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'hh': // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'hodiny' : 'hodin'); + } else { + return result + 'hodinami'; + } + break; + case 'd': // a day / in a day / a day ago + return (withoutSuffix || isFuture) ? 'den' : 'dnem'; + case 'dd': // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'dny' : 'dní'); + } else { + return result + 'dny'; + } + break; + case 'M': // a month / in a month / a month ago + return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem'; + case 'MM': // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'měsíce' : 'měsíců'); + } else { + return result + 'měsíci'; + } + break; + case 'y': // a year / in a year / a year ago + return (withoutSuffix || isFuture) ? 'rok' : 'rokem'; + case 'yy': // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'roky' : 'let'); + } else { + return result + 'lety'; + } + break; + } + } + + return moment.lang('cs', { + months : months, + monthsShort : monthsShort, + monthsParse : (function (months, monthsShort) { + var i, _monthsParse = []; + for (i = 0; i < 12; i++) { + // use custom parser to solve problem with July (červenec) + _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); + } + return _monthsParse; + }(months, monthsShort)), + weekdays : "neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"), + weekdaysShort : "ne_po_út_st_čt_pá_so".split("_"), + weekdaysMin : "ne_po_út_st_čt_pá_so".split("_"), + longDateFormat : { + LT: "H:mm", + L : "DD.MM.YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd D. MMMM YYYY LT" + }, + calendar : { + sameDay: "[dnes v] LT", + nextDay: '[zítra v] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[v neděli v] LT'; + case 1: + case 2: + return '[v] dddd [v] LT'; + case 3: + return '[ve středu v] LT'; + case 4: + return '[ve čtvrtek v] LT'; + case 5: + return '[v pátek v] LT'; + case 6: + return '[v sobotu v] LT'; + } + }, + lastDay: '[včera v] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[minulou neděli v] LT'; + case 1: + case 2: + return '[minulé] dddd [v] LT'; + case 3: + return '[minulou středu v] LT'; + case 4: + case 5: + return '[minulý] dddd [v] LT'; + case 6: + return '[minulou sobotu v] LT'; + } + }, + sameElse: "L" + }, + relativeTime : { + future : "za %s", + past : "před %s", + s : translate, + m : translate, + mm : translate, + h : translate, + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : chuvash (cv) +// author : Anatoly Mironov : https://github.com/mirontoli + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('cv', { + months : "кăрлач_нарăс_пуш_ака_май_çĕртме_утă_çурла_авăн_юпа_чӳк_раштав".split("_"), + monthsShort : "кăр_нар_пуш_ака_май_çĕр_утă_çур_ав_юпа_чӳк_раш".split("_"), + weekdays : "вырсарникун_тунтикун_ытларикун_юнкун_кĕçнерникун_эрнекун_шăматкун".split("_"), + weekdaysShort : "выр_тун_ытл_юн_кĕç_эрн_шăм".split("_"), + weekdaysMin : "вр_тн_ыт_юн_кç_эр_шм".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD-MM-YYYY", + LL : "YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ]", + LLL : "YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT", + LLLL : "dddd, YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT" + }, + calendar : { + sameDay: '[Паян] LT [сехетре]', + nextDay: '[Ыран] LT [сехетре]', + lastDay: '[Ĕнер] LT [сехетре]', + nextWeek: '[Çитес] dddd LT [сехетре]', + lastWeek: '[Иртнĕ] dddd LT [сехетре]', + sameElse: 'L' + }, + relativeTime : { + future : function (output) { + var affix = /сехет$/i.exec(output) ? "рен" : /çул$/i.exec(output) ? "тан" : "ран"; + return output + affix; + }, + past : "%s каялла", + s : "пĕр-ик çеккунт", + m : "пĕр минут", + mm : "%d минут", + h : "пĕр сехет", + hh : "%d сехет", + d : "пĕр кун", + dd : "%d кун", + M : "пĕр уйăх", + MM : "%d уйăх", + y : "пĕр çул", + yy : "%d çул" + }, + ordinal : '%d-мĕш', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : Welsh (cy) +// author : Robert Allen + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang("cy", { + months: "Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"), + monthsShort: "Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"), + weekdays: "Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"), + weekdaysShort: "Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"), + weekdaysMin: "Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"), + // time formats are the same as en-gb + longDateFormat: { + LT: "HH:mm", + L: "DD/MM/YYYY", + LL: "D MMMM YYYY", + LLL: "D MMMM YYYY LT", + LLLL: "dddd, D MMMM YYYY LT" + }, + calendar: { + sameDay: '[Heddiw am] LT', + nextDay: '[Yfory am] LT', + nextWeek: 'dddd [am] LT', + lastDay: '[Ddoe am] LT', + lastWeek: 'dddd [diwethaf am] LT', + sameElse: 'L' + }, + relativeTime: { + future: "mewn %s", + past: "%s yn àl", + s: "ychydig eiliadau", + m: "munud", + mm: "%d munud", + h: "awr", + hh: "%d awr", + d: "diwrnod", + dd: "%d diwrnod", + M: "mis", + MM: "%d mis", + y: "blwyddyn", + yy: "%d flynedd" + }, + // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh + ordinal: function (number) { + var b = number, + output = '', + lookup = [ + '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed + 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed + ]; + + if (b > 20) { + if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { + output = 'fed'; // not 30ain, 70ain or 90ain + } else { + output = 'ain'; + } + } else if (b > 0) { + output = lookup[b]; + } + + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : danish (da) +// author : Ulrik Nielsen : https://github.com/mrbase + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('da', { + months : "januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"), + monthsShort : "jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"), + weekdays : "søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"), + weekdaysShort : "søn_man_tir_ons_tor_fre_lør".split("_"), + weekdaysMin : "sø_ma_ti_on_to_fr_lø".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D. MMMM, YYYY LT" + }, + calendar : { + sameDay : '[I dag kl.] LT', + nextDay : '[I morgen kl.] LT', + nextWeek : 'dddd [kl.] LT', + lastDay : '[I går kl.] LT', + lastWeek : '[sidste] dddd [kl] LT', + sameElse : 'L' + }, + relativeTime : { + future : "om %s", + past : "%s siden", + s : "få sekunder", + m : "et minut", + mm : "%d minutter", + h : "en time", + hh : "%d timer", + d : "en dag", + dd : "%d dage", + M : "en måned", + MM : "%d måneder", + y : "et år", + yy : "%d år" + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : german (de) +// author : lluchs : https://github.com/lluchs +// author: Menelion Elensúle: https://github.com/Oire + +(function (factory) { + factory(moment); +}(function (moment) { + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eine Minute', 'einer Minute'], + 'h': ['eine Stunde', 'einer Stunde'], + 'd': ['ein Tag', 'einem Tag'], + 'dd': [number + ' Tage', number + ' Tagen'], + 'M': ['ein Monat', 'einem Monat'], + 'MM': [number + ' Monate', number + ' Monaten'], + 'y': ['ein Jahr', 'einem Jahr'], + 'yy': [number + ' Jahre', number + ' Jahren'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; + } + + return moment.lang('de', { + months : "Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"), + monthsShort : "Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"), + weekdays : "Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"), + weekdaysShort : "So._Mo._Di._Mi._Do._Fr._Sa.".split("_"), + weekdaysMin : "So_Mo_Di_Mi_Do_Fr_Sa".split("_"), + longDateFormat : { + LT: "H:mm [Uhr]", + L : "DD.MM.YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd, D. MMMM YYYY LT" + }, + calendar : { + sameDay: "[Heute um] LT", + sameElse: "L", + nextDay: '[Morgen um] LT', + nextWeek: 'dddd [um] LT', + lastDay: '[Gestern um] LT', + lastWeek: '[letzten] dddd [um] LT' + }, + relativeTime : { + future : "in %s", + past : "vor %s", + s : "ein paar Sekunden", + m : processRelativeTime, + mm : "%d Minuten", + h : processRelativeTime, + hh : "%d Stunden", + d : processRelativeTime, + dd : processRelativeTime, + M : processRelativeTime, + MM : processRelativeTime, + y : processRelativeTime, + yy : processRelativeTime + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : modern greek (el) +// author : Aggelos Karalias : https://github.com/mehiel + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('el', { + monthsNominativeEl : "Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"), + monthsGenitiveEl : "Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"), + months : function (momentToFormat, format) { + if (/D/.test(format.substring(0, format.indexOf("MMMM")))) { // if there is a day number before 'MMMM' + return this._monthsGenitiveEl[momentToFormat.month()]; + } else { + return this._monthsNominativeEl[momentToFormat.month()]; + } + }, + monthsShort : "Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"), + weekdays : "Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"), + weekdaysShort : "Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"), + weekdaysMin : "Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"), + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'μμ' : 'ΜΜ'; + } else { + return isLower ? 'πμ' : 'ΠΜ'; + } + }, + longDateFormat : { + LT : "h:mm A", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendarEl : { + sameDay : '[Σήμερα {}] LT', + nextDay : '[Αύριο {}] LT', + nextWeek : 'dddd [{}] LT', + lastDay : '[Χθες {}] LT', + lastWeek : '[την προηγούμενη] dddd [{}] LT', + sameElse : 'L' + }, + calendar : function (key, mom) { + var output = this._calendarEl[key], + hours = mom && mom.hours(); + + return output.replace("{}", (hours % 12 === 1 ? "στη" : "στις")); + }, + relativeTime : { + future : "σε %s", + past : "%s πριν", + s : "δευτερόλεπτα", + m : "ένα λεπτό", + mm : "%d λεπτά", + h : "μία ώρα", + hh : "%d ώρες", + d : "μία μέρα", + dd : "%d μέρες", + M : "ένας μήνας", + MM : "%d μήνες", + y : "ένας χρόνος", + yy : "%d χρόνια" + }, + ordinal : function (number) { + return number + 'η'; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : australian english (en-au) + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('en-au', { + months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), + monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), + weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), + weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), + weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), + longDateFormat : { + LT : "h:mm A", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : "in %s", + past : "%s ago", + s : "a few seconds", + m : "a minute", + mm : "%d minutes", + h : "an hour", + hh : "%d hours", + d : "a day", + dd : "%d days", + M : "a month", + MM : "%d months", + y : "a year", + yy : "%d years" + }, + ordinal : function (number) { + var b = number % 10, + output = (~~ (number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : canadian english (en-ca) +// author : Jonathan Abourbih : https://github.com/jonbca + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('en-ca', { + months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), + monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), + weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), + weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), + weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), + longDateFormat : { + LT : "h:mm A", + L : "YYYY-MM-DD", + LL : "D MMMM, YYYY", + LLL : "D MMMM, YYYY LT", + LLLL : "dddd, D MMMM, YYYY LT" + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : "in %s", + past : "%s ago", + s : "a few seconds", + m : "a minute", + mm : "%d minutes", + h : "an hour", + hh : "%d hours", + d : "a day", + dd : "%d days", + M : "a month", + MM : "%d months", + y : "a year", + yy : "%d years" + }, + ordinal : function (number) { + var b = number % 10, + output = (~~ (number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); +})); +// moment.js language configuration +// language : great britain english (en-gb) +// author : Chris Gedrim : https://github.com/chrisgedrim + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('en-gb', { + months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), + monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), + weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), + weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), + weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : "in %s", + past : "%s ago", + s : "a few seconds", + m : "a minute", + mm : "%d minutes", + h : "an hour", + hh : "%d hours", + d : "a day", + dd : "%d days", + M : "a month", + MM : "%d months", + y : "a year", + yy : "%d years" + }, + ordinal : function (number) { + var b = number % 10, + output = (~~ (number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : esperanto (eo) +// author : Colin Dean : https://github.com/colindean +// komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko. +// Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni! + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('eo', { + months : "januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"), + monthsShort : "jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"), + weekdays : "Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"), + weekdaysShort : "Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab".split("_"), + weekdaysMin : "Di_Lu_Ma_Me_Ĵa_Ve_Sa".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "YYYY-MM-DD", + LL : "D[-an de] MMMM, YYYY", + LLL : "D[-an de] MMMM, YYYY LT", + LLLL : "dddd, [la] D[-an de] MMMM, YYYY LT" + }, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'p.t.m.' : 'P.T.M.'; + } else { + return isLower ? 'a.t.m.' : 'A.T.M.'; + } + }, + calendar : { + sameDay : '[Hodiaŭ je] LT', + nextDay : '[Morgaŭ je] LT', + nextWeek : 'dddd [je] LT', + lastDay : '[Hieraŭ je] LT', + lastWeek : '[pasinta] dddd [je] LT', + sameElse : 'L' + }, + relativeTime : { + future : "je %s", + past : "antaŭ %s", + s : "sekundoj", + m : "minuto", + mm : "%d minutoj", + h : "horo", + hh : "%d horoj", + d : "tago",//ne 'diurno', ĉar estas uzita por proksimumo + dd : "%d tagoj", + M : "monato", + MM : "%d monatoj", + y : "jaro", + yy : "%d jaroj" + }, + ordinal : "%da", + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : spanish (es) +// author : Julio Napurí : https://github.com/julionc + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('es', { + months : "enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"), + monthsShort : "ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"), + weekdays : "domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"), + weekdaysShort : "dom._lun._mar._mié._jue._vie._sáb.".split("_"), + weekdaysMin : "Do_Lu_Ma_Mi_Ju_Vi_Sá".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD/MM/YYYY", + LL : "D [de] MMMM [de] YYYY", + LLL : "D [de] MMMM [de] YYYY LT", + LLLL : "dddd, D [de] MMMM [de] YYYY LT" + }, + calendar : { + sameDay : function () { + return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextDay : function () { + return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastDay : function () { + return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : "en %s", + past : "hace %s", + s : "unos segundos", + m : "un minuto", + mm : "%d minutos", + h : "una hora", + hh : "%d horas", + d : "un día", + dd : "%d días", + M : "un mes", + MM : "%d meses", + y : "un año", + yy : "%d años" + }, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : estonian (et) +// author : Henry Kehlmann : https://github.com/madhenry +// improvements : Illimar Tambek : https://github.com/ragulka + +(function (factory) { + factory(moment); +}(function (moment) { + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'], + 'm' : ['ühe minuti', 'üks minut'], + 'mm': [number + ' minuti', number + ' minutit'], + 'h' : ['ühe tunni', 'tund aega', 'üks tund'], + 'hh': [number + ' tunni', number + ' tundi'], + 'd' : ['ühe päeva', 'üks päev'], + 'M' : ['kuu aja', 'kuu aega', 'üks kuu'], + 'MM': [number + ' kuu', number + ' kuud'], + 'y' : ['ühe aasta', 'aasta', 'üks aasta'], + 'yy': [number + ' aasta', number + ' aastat'] + }; + if (withoutSuffix) { + return format[key][2] ? format[key][2] : format[key][1]; + } + return isFuture ? format[key][0] : format[key][1]; + } + + return moment.lang('et', { + months : "jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"), + monthsShort : "jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"), + weekdays : "pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"), + weekdaysShort : "P_E_T_K_N_R_L".split("_"), + weekdaysMin : "P_E_T_K_N_R_L".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD.MM.YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd, D. MMMM YYYY LT" + }, + calendar : { + sameDay : '[Täna,] LT', + nextDay : '[Homme,] LT', + nextWeek : '[Järgmine] dddd LT', + lastDay : '[Eile,] LT', + lastWeek : '[Eelmine] dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s pärast", + past : "%s tagasi", + s : processRelativeTime, + m : processRelativeTime, + mm : processRelativeTime, + h : processRelativeTime, + hh : processRelativeTime, + d : processRelativeTime, + dd : '%d päeva', + M : processRelativeTime, + MM : processRelativeTime, + y : processRelativeTime, + yy : processRelativeTime + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : euskara (eu) +// author : Eneko Illarramendi : https://github.com/eillarra + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('eu', { + months : "urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"), + monthsShort : "urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"), + weekdays : "igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"), + weekdaysShort : "ig._al._ar._az._og._ol._lr.".split("_"), + weekdaysMin : "ig_al_ar_az_og_ol_lr".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "YYYY-MM-DD", + LL : "YYYY[ko] MMMM[ren] D[a]", + LLL : "YYYY[ko] MMMM[ren] D[a] LT", + LLLL : "dddd, YYYY[ko] MMMM[ren] D[a] LT", + l : "YYYY-M-D", + ll : "YYYY[ko] MMM D[a]", + lll : "YYYY[ko] MMM D[a] LT", + llll : "ddd, YYYY[ko] MMM D[a] LT" + }, + calendar : { + sameDay : '[gaur] LT[etan]', + nextDay : '[bihar] LT[etan]', + nextWeek : 'dddd LT[etan]', + lastDay : '[atzo] LT[etan]', + lastWeek : '[aurreko] dddd LT[etan]', + sameElse : 'L' + }, + relativeTime : { + future : "%s barru", + past : "duela %s", + s : "segundo batzuk", + m : "minutu bat", + mm : "%d minutu", + h : "ordu bat", + hh : "%d ordu", + d : "egun bat", + dd : "%d egun", + M : "hilabete bat", + MM : "%d hilabete", + y : "urte bat", + yy : "%d urte" + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : Persian Language +// author : Ebrahim Byagowi : https://github.com/ebraminio + +(function (factory) { + factory(moment); +}(function (moment) { + var symbolMap = { + '1': '۱', + '2': '۲', + '3': '۳', + '4': '۴', + '5': '۵', + '6': '۶', + '7': '۷', + '8': '۸', + '9': '۹', + '0': '۰' + }, numberMap = { + '۱': '1', + '۲': '2', + '۳': '3', + '۴': '4', + '۵': '5', + '۶': '6', + '۷': '7', + '۸': '8', + '۹': '9', + '۰': '0' + }; + + return moment.lang('fa', { + months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), + monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), + weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), + weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), + weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'), + longDateFormat : { + LT : 'HH:mm', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY LT', + LLLL : 'dddd, D MMMM YYYY LT' + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return "قبل از ظهر"; + } else { + return "بعد از ظهر"; + } + }, + calendar : { + sameDay : '[امروز ساعت] LT', + nextDay : '[فردا ساعت] LT', + nextWeek : 'dddd [ساعت] LT', + lastDay : '[دیروز ساعت] LT', + lastWeek : 'dddd [پیش] [ساعت] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'در %s', + past : '%s پیش', + s : 'چندین ثانیه', + m : 'یک دقیقه', + mm : '%d دقیقه', + h : 'یک ساعت', + hh : '%d ساعت', + d : 'یک روز', + dd : '%d روز', + M : 'یک ماه', + MM : '%d ماه', + y : 'یک سال', + yy : '%d سال' + }, + preparse: function (string) { + return string.replace(/[۰-۹]/g, function (match) { + return numberMap[match]; + }).replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }).replace(/,/g, '،'); + }, + ordinal : '%dم', + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : finnish (fi) +// author : Tarmo Aidantausta : https://github.com/bleadof + +(function (factory) { + factory(moment); +}(function (moment) { + var numbers_past = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '), + numbers_future = ['nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', + numbers_past[7], numbers_past[8], numbers_past[9]]; + + function translate(number, withoutSuffix, key, isFuture) { + var result = ""; + switch (key) { + case 's': + return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; + case 'm': + return isFuture ? 'minuutin' : 'minuutti'; + case 'mm': + result = isFuture ? 'minuutin' : 'minuuttia'; + break; + case 'h': + return isFuture ? 'tunnin' : 'tunti'; + case 'hh': + result = isFuture ? 'tunnin' : 'tuntia'; + break; + case 'd': + return isFuture ? 'päivän' : 'päivä'; + case 'dd': + result = isFuture ? 'päivän' : 'päivää'; + break; + case 'M': + return isFuture ? 'kuukauden' : 'kuukausi'; + case 'MM': + result = isFuture ? 'kuukauden' : 'kuukautta'; + break; + case 'y': + return isFuture ? 'vuoden' : 'vuosi'; + case 'yy': + result = isFuture ? 'vuoden' : 'vuotta'; + break; + } + result = verbal_number(number, isFuture) + " " + result; + return result; + } + + function verbal_number(number, isFuture) { + return number < 10 ? (isFuture ? numbers_future[number] : numbers_past[number]) : number; + } + + return moment.lang('fi', { + months : "tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"), + monthsShort : "tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"), + weekdays : "sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"), + weekdaysShort : "su_ma_ti_ke_to_pe_la".split("_"), + weekdaysMin : "su_ma_ti_ke_to_pe_la".split("_"), + longDateFormat : { + LT : "HH.mm", + L : "DD.MM.YYYY", + LL : "Do MMMM[ta] YYYY", + LLL : "Do MMMM[ta] YYYY, [klo] LT", + LLLL : "dddd, Do MMMM[ta] YYYY, [klo] LT", + l : "D.M.YYYY", + ll : "Do MMM YYYY", + lll : "Do MMM YYYY, [klo] LT", + llll : "ddd, Do MMM YYYY, [klo] LT" + }, + calendar : { + sameDay : '[tänään] [klo] LT', + nextDay : '[huomenna] [klo] LT', + nextWeek : 'dddd [klo] LT', + lastDay : '[eilen] [klo] LT', + lastWeek : '[viime] dddd[na] [klo] LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s päästä", + past : "%s sitten", + s : translate, + m : translate, + mm : translate, + h : translate, + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + ordinal : "%d.", + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : faroese (fo) +// author : Ragnar Johannesen : https://github.com/ragnar123 + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('fo', { + months : "januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"), + monthsShort : "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"), + weekdays : "sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"), + weekdaysShort : "sun_mán_týs_mik_hós_frí_ley".split("_"), + weekdaysMin : "su_má_tý_mi_hó_fr_le".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D. MMMM, YYYY LT" + }, + calendar : { + sameDay : '[Í dag kl.] LT', + nextDay : '[Í morgin kl.] LT', + nextWeek : 'dddd [kl.] LT', + lastDay : '[Í gjár kl.] LT', + lastWeek : '[síðstu] dddd [kl] LT', + sameElse : 'L' + }, + relativeTime : { + future : "um %s", + past : "%s síðani", + s : "fá sekund", + m : "ein minutt", + mm : "%d minuttir", + h : "ein tími", + hh : "%d tímar", + d : "ein dagur", + dd : "%d dagar", + M : "ein mánaði", + MM : "%d mánaðir", + y : "eitt ár", + yy : "%d ár" + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : canadian french (fr-ca) +// author : Jonathan Abourbih : https://github.com/jonbca + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('fr-ca', { + months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"), + monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"), + weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"), + weekdaysShort : "dim._lun._mar._mer._jeu._ven._sam.".split("_"), + weekdaysMin : "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "YYYY-MM-DD", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: "[Aujourd'hui à] LT", + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L' + }, + relativeTime : { + future : "dans %s", + past : "il y a %s", + s : "quelques secondes", + m : "une minute", + mm : "%d minutes", + h : "une heure", + hh : "%d heures", + d : "un jour", + dd : "%d jours", + M : "un mois", + MM : "%d mois", + y : "un an", + yy : "%d ans" + }, + ordinal : function (number) { + return number + (number === 1 ? 'er' : ''); + } + }); +})); +// moment.js language configuration +// language : french (fr) +// author : John Fischer : https://github.com/jfroffice + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('fr', { + months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"), + monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"), + weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"), + weekdaysShort : "dim._lun._mar._mer._jeu._ven._sam.".split("_"), + weekdaysMin : "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: "[Aujourd'hui à] LT", + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L' + }, + relativeTime : { + future : "dans %s", + past : "il y a %s", + s : "quelques secondes", + m : "une minute", + mm : "%d minutes", + h : "une heure", + hh : "%d heures", + d : "un jour", + dd : "%d jours", + M : "un mois", + MM : "%d mois", + y : "un an", + yy : "%d ans" + }, + ordinal : function (number) { + return number + (number === 1 ? 'er' : ''); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : galician (gl) +// author : Juan G. Hurtado : https://github.com/juanghurtado + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('gl', { + months : "Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"), + monthsShort : "Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.".split("_"), + weekdays : "Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado".split("_"), + weekdaysShort : "Dom._Lun._Mar._Mér._Xov._Ven._Sáb.".split("_"), + weekdaysMin : "Do_Lu_Ma_Mé_Xo_Ve_Sá".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay : function () { + return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + }, + nextDay : function () { + return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + }, + nextWeek : function () { + return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + }, + lastDay : function () { + return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT'; + }, + lastWeek : function () { + return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : function (str) { + if (str === "uns segundos") { + return "nuns segundos"; + } + return "en " + str; + }, + past : "hai %s", + s : "uns segundos", + m : "un minuto", + mm : "%d minutos", + h : "unha hora", + hh : "%d horas", + d : "un día", + dd : "%d días", + M : "un mes", + MM : "%d meses", + y : "un ano", + yy : "%d anos" + }, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : Hebrew (he) +// author : Tomer Cohen : https://github.com/tomer +// author : Moshe Simantov : https://github.com/DevelopmentIL +// author : Tal Ater : https://github.com/TalAter + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('he', { + months : "ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"), + monthsShort : "ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"), + weekdays : "ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"), + weekdaysShort : "א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"), + weekdaysMin : "א_ב_ג_ד_ה_ו_ש".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D [ב]MMMM YYYY", + LLL : "D [ב]MMMM YYYY LT", + LLLL : "dddd, D [ב]MMMM YYYY LT", + l : "D/M/YYYY", + ll : "D MMM YYYY", + lll : "D MMM YYYY LT", + llll : "ddd, D MMM YYYY LT" + }, + calendar : { + sameDay : '[היום ב־]LT', + nextDay : '[מחר ב־]LT', + nextWeek : 'dddd [בשעה] LT', + lastDay : '[אתמול ב־]LT', + lastWeek : '[ביום] dddd [האחרון בשעה] LT', + sameElse : 'L' + }, + relativeTime : { + future : "בעוד %s", + past : "לפני %s", + s : "מספר שניות", + m : "דקה", + mm : "%d דקות", + h : "שעה", + hh : function (number) { + if (number === 2) { + return "שעתיים"; + } + return number + " שעות"; + }, + d : "יום", + dd : function (number) { + if (number === 2) { + return "יומיים"; + } + return number + " ימים"; + }, + M : "חודש", + MM : function (number) { + if (number === 2) { + return "חודשיים"; + } + return number + " חודשים"; + }, + y : "שנה", + yy : function (number) { + if (number === 2) { + return "שנתיים"; + } + return number + " שנים"; + } + } + }); +})); +// moment.js language configuration +// language : hindi (hi) +// author : Mayank Singhal : https://github.com/mayanksinghal + +(function (factory) { + factory(moment); +}(function (moment) { + var symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' + }, + numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' + }; + + return moment.lang('hi', { + months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split("_"), + monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split("_"), + weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split("_"), + weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split("_"), + weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split("_"), + longDateFormat : { + LT : "A h:mm बजे", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY, LT", + LLLL : "dddd, D MMMM YYYY, LT" + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[कल] LT', + nextWeek : 'dddd, LT', + lastDay : '[कल] LT', + lastWeek : '[पिछले] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s में", + past : "%s पहले", + s : "कुछ ही क्षण", + m : "एक मिनट", + mm : "%d मिनट", + h : "एक घंटा", + hh : "%d घंटे", + d : "एक दिन", + dd : "%d दिन", + M : "एक महीने", + MM : "%d महीने", + y : "एक वर्ष", + yy : "%d वर्ष" + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + // Hindi notation for meridiems are quite fuzzy in practice. While there exists + // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return "रात"; + } else if (hour < 10) { + return "सुबह"; + } else if (hour < 17) { + return "दोपहर"; + } else if (hour < 20) { + return "शाम"; + } else { + return "रात"; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : hrvatski (hr) +// author : Bojan Marković : https://github.com/bmarkovic + +// based on (sl) translation by Robert Sedovšek + +(function (factory) { + factory(moment); +}(function (moment) { + + function translate(number, withoutSuffix, key) { + var result = number + " "; + switch (key) { + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mjesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'mjeseca'; + } else { + result += 'mjeseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; + } + } + + return moment.lang('hr', { + months : "sječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_"), + monthsShort : "sje._vel._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"), + weekdays : "nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"), + weekdaysShort : "ned._pon._uto._sri._čet._pet._sub.".split("_"), + weekdaysMin : "ne_po_ut_sr_če_pe_su".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD. MM. YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd, D. MMMM YYYY LT" + }, + calendar : { + sameDay : '[danas u] LT', + nextDay : '[sutra u] LT', + + nextWeek : function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[jučer u] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : "za %s", + past : "prije %s", + s : "par sekundi", + m : translate, + mm : translate, + h : translate, + hh : translate, + d : "dan", + dd : translate, + M : "mjesec", + MM : translate, + y : "godinu", + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : hungarian (hu) +// author : Adam Brunner : https://github.com/adambrunner + +(function (factory) { + factory(moment); +}(function (moment) { + var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); + + function translate(number, withoutSuffix, key, isFuture) { + var num = number, + suffix; + + switch (key) { + case 's': + return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce'; + case 'm': + return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); + case 'mm': + return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); + case 'h': + return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); + case 'hh': + return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); + case 'd': + return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); + case 'dd': + return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); + case 'M': + return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); + case 'MM': + return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); + case 'y': + return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); + case 'yy': + return num + (isFuture || withoutSuffix ? ' év' : ' éve'); + } + + return ''; + } + + function week(isFuture) { + return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]'; + } + + return moment.lang('hu', { + months : "január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"), + monthsShort : "jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"), + weekdays : "vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"), + weekdaysShort : "vas_hét_kedd_sze_csüt_pén_szo".split("_"), + weekdaysMin : "v_h_k_sze_cs_p_szo".split("_"), + longDateFormat : { + LT : "H:mm", + L : "YYYY.MM.DD.", + LL : "YYYY. MMMM D.", + LLL : "YYYY. MMMM D., LT", + LLLL : "YYYY. MMMM D., dddd LT" + }, + calendar : { + sameDay : '[ma] LT[-kor]', + nextDay : '[holnap] LT[-kor]', + nextWeek : function () { + return week.call(this, true); + }, + lastDay : '[tegnap] LT[-kor]', + lastWeek : function () { + return week.call(this, false); + }, + sameElse : 'L' + }, + relativeTime : { + future : "%s múlva", + past : "%s", + s : translate, + m : translate, + mm : translate, + h : translate, + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : Armenian (hy-am) +// author : Armendarabyan : https://github.com/armendarabyan + +(function (factory) { + factory(moment); +}(function (moment) { + + function monthsCaseReplace(m, format) { + var months = { + 'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'), + 'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_') + }, + + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + + return months[nounCase][m.month()]; + } + + function monthsShortCaseReplace(m, format) { + var monthsShort = 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'); + + return monthsShort[m.month()]; + } + + function weekdaysCaseReplace(m, format) { + var weekdays = 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'); + + return weekdays[m.day()]; + } + + return moment.lang('hy-am', { + months : monthsCaseReplace, + monthsShort : monthsShortCaseReplace, + weekdays : weekdaysCaseReplace, + weekdaysShort : "կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"), + weekdaysMin : "կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD.MM.YYYY", + LL : "D MMMM YYYY թ.", + LLL : "D MMMM YYYY թ., LT", + LLLL : "dddd, D MMMM YYYY թ., LT" + }, + calendar : { + sameDay: '[այսօր] LT', + nextDay: '[վաղը] LT', + lastDay: '[երեկ] LT', + nextWeek: function () { + return 'dddd [օրը ժամը] LT'; + }, + lastWeek: function () { + return '[անցած] dddd [օրը ժամը] LT'; + }, + sameElse: 'L' + }, + relativeTime : { + future : "%s հետո", + past : "%s առաջ", + s : "մի քանի վայրկյան", + m : "րոպե", + mm : "%d րոպե", + h : "ժամ", + hh : "%d ժամ", + d : "օր", + dd : "%d օր", + M : "ամիս", + MM : "%d ամիս", + y : "տարի", + yy : "%d տարի" + }, + + meridiem : function (hour) { + if (hour < 4) { + return "գիշերվա"; + } else if (hour < 12) { + return "առավոտվա"; + } else if (hour < 17) { + return "ցերեկվա"; + } else { + return "երեկոյան"; + } + }, + + ordinal: function (number, period) { + switch (period) { + case 'DDD': + case 'w': + case 'W': + case 'DDDo': + if (number === 1) { + return number + '-ին'; + } + return number + '-րդ'; + default: + return number; + } + }, + + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : Bahasa Indonesia (id) +// author : Mohammad Satrio Utomo : https://github.com/tyok +// reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('id', { + months : "Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"), + monthsShort : "Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"), + weekdays : "Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"), + weekdaysShort : "Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"), + weekdaysMin : "Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"), + longDateFormat : { + LT : "HH.mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY [pukul] LT", + LLLL : "dddd, D MMMM YYYY [pukul] LT" + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'siang'; + } else if (hours < 19) { + return 'sore'; + } else { + return 'malam'; + } + }, + calendar : { + sameDay : '[Hari ini pukul] LT', + nextDay : '[Besok pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kemarin pukul] LT', + lastWeek : 'dddd [lalu pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : "dalam %s", + past : "%s yang lalu", + s : "beberapa detik", + m : "semenit", + mm : "%d menit", + h : "sejam", + hh : "%d jam", + d : "sehari", + dd : "%d hari", + M : "sebulan", + MM : "%d bulan", + y : "setahun", + yy : "%d tahun" + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : icelandic (is) +// author : Hinrik Örn Sigurðsson : https://github.com/hinrik + +(function (factory) { + factory(moment); +}(function (moment) { + function plural(n) { + if (n % 100 === 11) { + return true; + } else if (n % 10 === 1) { + return false; + } + return true; + } + + function translate(number, withoutSuffix, key, isFuture) { + var result = number + " "; + switch (key) { + case 's': + return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; + case 'm': + return withoutSuffix ? 'mínúta' : 'mínútu'; + case 'mm': + if (plural(number)) { + return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum'); + } else if (withoutSuffix) { + return result + 'mínúta'; + } + return result + 'mínútu'; + case 'hh': + if (plural(number)) { + return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum'); + } + return result + 'klukkustund'; + case 'd': + if (withoutSuffix) { + return 'dagur'; + } + return isFuture ? 'dag' : 'degi'; + case 'dd': + if (plural(number)) { + if (withoutSuffix) { + return result + 'dagar'; + } + return result + (isFuture ? 'daga' : 'dögum'); + } else if (withoutSuffix) { + return result + 'dagur'; + } + return result + (isFuture ? 'dag' : 'degi'); + case 'M': + if (withoutSuffix) { + return 'mánuður'; + } + return isFuture ? 'mánuð' : 'mánuði'; + case 'MM': + if (plural(number)) { + if (withoutSuffix) { + return result + 'mánuðir'; + } + return result + (isFuture ? 'mánuði' : 'mánuðum'); + } else if (withoutSuffix) { + return result + 'mánuður'; + } + return result + (isFuture ? 'mánuð' : 'mánuði'); + case 'y': + return withoutSuffix || isFuture ? 'ár' : 'ári'; + case 'yy': + if (plural(number)) { + return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); + } + return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); + } + } + + return moment.lang('is', { + months : "janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"), + monthsShort : "jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"), + weekdays : "sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"), + weekdaysShort : "sun_mán_þri_mið_fim_fös_lau".split("_"), + weekdaysMin : "Su_Má_Þr_Mi_Fi_Fö_La".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD/MM/YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY [kl.] LT", + LLLL : "dddd, D. MMMM YYYY [kl.] LT" + }, + calendar : { + sameDay : '[í dag kl.] LT', + nextDay : '[á morgun kl.] LT', + nextWeek : 'dddd [kl.] LT', + lastDay : '[í gær kl.] LT', + lastWeek : '[síðasta] dddd [kl.] LT', + sameElse : 'L' + }, + relativeTime : { + future : "eftir %s", + past : "fyrir %s síðan", + s : translate, + m : translate, + mm : translate, + h : "klukkustund", + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : italian (it) +// author : Lorenzo : https://github.com/aliem +// author: Mattia Larentis: https://github.com/nostalgiaz + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('it', { + months : "Gennaio_Febbraio_Marzo_Aprile_Maggio_Giugno_Luglio_Agosto_Settembre_Ottobre_Novembre_Dicembre".split("_"), + monthsShort : "Gen_Feb_Mar_Apr_Mag_Giu_Lug_Ago_Set_Ott_Nov_Dic".split("_"), + weekdays : "Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"), + weekdaysShort : "Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"), + weekdaysMin : "D_L_Ma_Me_G_V_S".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay: '[Oggi alle] LT', + nextDay: '[Domani alle] LT', + nextWeek: 'dddd [alle] LT', + lastDay: '[Ieri alle] LT', + lastWeek: '[lo scorso] dddd [alle] LT', + sameElse: 'L' + }, + relativeTime : { + future : function (s) { + return ((/^[0-9].+$/).test(s) ? "tra" : "in") + " " + s; + }, + past : "%s fa", + s : "alcuni secondi", + m : "un minuto", + mm : "%d minuti", + h : "un'ora", + hh : "%d ore", + d : "un giorno", + dd : "%d giorni", + M : "un mese", + MM : "%d mesi", + y : "un anno", + yy : "%d anni" + }, + ordinal: '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : japanese (ja) +// author : LI Long : https://github.com/baryon + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('ja', { + months : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), + monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), + weekdays : "日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"), + weekdaysShort : "日_月_火_水_木_金_土".split("_"), + weekdaysMin : "日_月_火_水_木_金_土".split("_"), + longDateFormat : { + LT : "Ah時m分", + L : "YYYY/MM/DD", + LL : "YYYY年M月D日", + LLL : "YYYY年M月D日LT", + LLLL : "YYYY年M月D日LT dddd" + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return "午前"; + } else { + return "午後"; + } + }, + calendar : { + sameDay : '[今日] LT', + nextDay : '[明日] LT', + nextWeek : '[来週]dddd LT', + lastDay : '[昨日] LT', + lastWeek : '[前週]dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s後", + past : "%s前", + s : "数秒", + m : "1分", + mm : "%d分", + h : "1時間", + hh : "%d時間", + d : "1日", + dd : "%d日", + M : "1ヶ月", + MM : "%dヶ月", + y : "1年", + yy : "%d年" + } + }); +})); +// moment.js language configuration +// language : Georgian (ka) +// author : Irakli Janiashvili : https://github.com/irakli-janiashvili + +(function (factory) { + factory(moment); +}(function (moment) { + + function monthsCaseReplace(m, format) { + var months = { + 'nominative': 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), + 'accusative': 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_') + }, + + nounCase = (/D[oD] *MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + + return months[nounCase][m.month()]; + } + + function weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), + 'accusative': 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_') + }, + + nounCase = (/(წინა|შემდეგ)/).test(format) ? + 'accusative' : + 'nominative'; + + return weekdays[nounCase][m.day()]; + } + + return moment.lang('ka', { + months : monthsCaseReplace, + monthsShort : "იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"), + weekdays : weekdaysCaseReplace, + weekdaysShort : "კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"), + weekdaysMin : "კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"), + longDateFormat : { + LT : "h:mm A", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay : '[დღეს] LT[-ზე]', + nextDay : '[ხვალ] LT[-ზე]', + lastDay : '[გუშინ] LT[-ზე]', + nextWeek : '[შემდეგ] dddd LT[-ზე]', + lastWeek : '[წინა] dddd LT-ზე', + sameElse : 'L' + }, + relativeTime : { + future : function (s) { + return (/(წამი|წუთი|საათი|წელი)/).test(s) ? + s.replace(/ი$/, "ში") : + s + "ში"; + }, + past : function (s) { + if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) { + return s.replace(/(ი|ე)$/, "ის წინ"); + } + if ((/წელი/).test(s)) { + return s.replace(/წელი$/, "წლის წინ"); + } + }, + s : "რამდენიმე წამი", + m : "წუთი", + mm : "%d წუთი", + h : "საათი", + hh : "%d საათი", + d : "დღე", + dd : "%d დღე", + M : "თვე", + MM : "%d თვე", + y : "წელი", + yy : "%d წელი" + }, + ordinal : function (number) { + if (number === 0) { + return number; + } + + if (number === 1) { + return number + "-ლი"; + } + + if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) { + return "მე-" + number; + } + + return number + "-ე"; + }, + week : { + dow : 1, + doy : 7 + } + }); +})); +// moment.js language configuration +// language : korean (ko) +// +// authors +// +// - Kyungwook, Park : https://github.com/kyungw00k +// - Jeeeyul Lee +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('ko', { + months : "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"), + monthsShort : "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"), + weekdays : "일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"), + weekdaysShort : "일_월_화_수_목_금_토".split("_"), + weekdaysMin : "일_월_화_수_목_금_토".split("_"), + longDateFormat : { + LT : "A h시 mm분", + L : "YYYY.MM.DD", + LL : "YYYY년 MMMM D일", + LLL : "YYYY년 MMMM D일 LT", + LLLL : "YYYY년 MMMM D일 dddd LT" + }, + meridiem : function (hour, minute, isUpper) { + return hour < 12 ? '오전' : '오후'; + }, + calendar : { + sameDay : '오늘 LT', + nextDay : '내일 LT', + nextWeek : 'dddd LT', + lastDay : '어제 LT', + lastWeek : '지난주 dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s 후", + past : "%s 전", + s : "몇초", + ss : "%d초", + m : "일분", + mm : "%d분", + h : "한시간", + hh : "%d시간", + d : "하루", + dd : "%d일", + M : "한달", + MM : "%d달", + y : "일년", + yy : "%d년" + }, + ordinal : '%d일', + meridiemParse : /(오전|오후)/, + isPM : function (token) { + return token === "오후"; + } + }); +})); +// moment.js language configuration +// language : Luxembourgish (lb) +// author : mweimerskirch : https://github.com/mweimerskirch + +// Note: Luxembourgish has a very particular phonological rule ("Eifeler Regel") that causes the +// deletion of the final "n" in certain contexts. That's what the "eifelerRegelAppliesToWeekday" +// and "eifelerRegelAppliesToNumber" methods are meant for + +(function (factory) { + factory(moment); +}(function (moment) { + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eng Minutt', 'enger Minutt'], + 'h': ['eng Stonn', 'enger Stonn'], + 'd': ['een Dag', 'engem Dag'], + 'dd': [number + ' Deeg', number + ' Deeg'], + 'M': ['ee Mount', 'engem Mount'], + 'MM': [number + ' Méint', number + ' Méint'], + 'y': ['ee Joer', 'engem Joer'], + 'yy': [number + ' Joer', number + ' Joer'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; + } + + function processFutureTime(string) { + var number = string.substr(0, string.indexOf(' ')); + if (eifelerRegelAppliesToNumber(number)) { + return "a " + string; + } + return "an " + string; + } + + function processPastTime(string) { + var number = string.substr(0, string.indexOf(' ')); + if (eifelerRegelAppliesToNumber(number)) { + return "viru " + string; + } + return "virun " + string; + } + + function processLastWeek(string1) { + var weekday = this.format('d'); + if (eifelerRegelAppliesToWeekday(weekday)) { + return '[Leschte] dddd [um] LT'; + } + return '[Leschten] dddd [um] LT'; + } + + /** + * Returns true if the word before the given week day loses the "-n" ending. + * e.g. "Leschten Dënschdeg" but "Leschte Méindeg" + * + * @param weekday {integer} + * @returns {boolean} + */ + function eifelerRegelAppliesToWeekday(weekday) { + weekday = parseInt(weekday, 10); + switch (weekday) { + case 0: // Sonndeg + case 1: // Méindeg + case 3: // Mëttwoch + case 5: // Freideg + case 6: // Samschdeg + return true; + default: // 2 Dënschdeg, 4 Donneschdeg + return false; + } + } + + /** + * Returns true if the word before the given number loses the "-n" ending. + * e.g. "an 10 Deeg" but "a 5 Deeg" + * + * @param number {integer} + * @returns {boolean} + */ + function eifelerRegelAppliesToNumber(number) { + number = parseInt(number, 10); + if (isNaN(number)) { + return false; + } + if (number < 0) { + // Negative Number --> always true + return true; + } else if (number < 10) { + // Only 1 digit + if (4 <= number && number <= 7) { + return true; + } + return false; + } else if (number < 100) { + // 2 digits + var lastDigit = number % 10, firstDigit = number / 10; + if (lastDigit === 0) { + return eifelerRegelAppliesToNumber(firstDigit); + } + return eifelerRegelAppliesToNumber(lastDigit); + } else if (number < 10000) { + // 3 or 4 digits --> recursively check first digit + while (number >= 10) { + number = number / 10; + } + return eifelerRegelAppliesToNumber(number); + } else { + // Anything larger than 4 digits: recursively check first n-3 digits + number = number / 1000; + return eifelerRegelAppliesToNumber(number); + } + } + + return moment.lang('lb', { + months: "Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"), + monthsShort: "Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"), + weekdays: "Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"), + weekdaysShort: "So._Mé._Dë._Më._Do._Fr._Sa.".split("_"), + weekdaysMin: "So_Mé_Dë_Më_Do_Fr_Sa".split("_"), + longDateFormat: { + LT: "H:mm [Auer]", + L: "DD.MM.YYYY", + LL: "D. MMMM YYYY", + LLL: "D. MMMM YYYY LT", + LLLL: "dddd, D. MMMM YYYY LT" + }, + calendar: { + sameDay: "[Haut um] LT", + sameElse: "L", + nextDay: '[Muer um] LT', + nextWeek: 'dddd [um] LT', + lastDay: '[Gëschter um] LT', + lastWeek: processLastWeek + }, + relativeTime: { + future: processFutureTime, + past: processPastTime, + s: "e puer Sekonnen", + m: processRelativeTime, + mm: "%d Minutten", + h: processRelativeTime, + hh: "%d Stonnen", + d: processRelativeTime, + dd: processRelativeTime, + M: processRelativeTime, + MM: processRelativeTime, + y: processRelativeTime, + yy: processRelativeTime + }, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : Lithuanian (lt) +// author : Mindaugas Mozūras : https://github.com/mmozuras + +(function (factory) { + factory(moment); +}(function (moment) { + var units = { + "m" : "minutė_minutės_minutę", + "mm": "minutės_minučių_minutes", + "h" : "valanda_valandos_valandą", + "hh": "valandos_valandų_valandas", + "d" : "diena_dienos_dieną", + "dd": "dienos_dienų_dienas", + "M" : "mėnuo_mėnesio_mėnesį", + "MM": "mėnesiai_mėnesių_mėnesius", + "y" : "metai_metų_metus", + "yy": "metai_metų_metus" + }, + weekDays = "pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis_sekmadienis".split("_"); + + function translateSeconds(number, withoutSuffix, key, isFuture) { + if (withoutSuffix) { + return "kelios sekundės"; + } else { + return isFuture ? "kelių sekundžių" : "kelias sekundes"; + } + } + + function translateSingular(number, withoutSuffix, key, isFuture) { + return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]); + } + + function special(number) { + return number % 10 === 0 || (number > 10 && number < 20); + } + + function forms(key) { + return units[key].split("_"); + } + + function translate(number, withoutSuffix, key, isFuture) { + var result = number + " "; + if (number === 1) { + return result + translateSingular(number, withoutSuffix, key[0], isFuture); + } else if (withoutSuffix) { + return result + (special(number) ? forms(key)[1] : forms(key)[0]); + } else { + if (isFuture) { + return result + forms(key)[1]; + } else { + return result + (special(number) ? forms(key)[1] : forms(key)[2]); + } + } + } + + function relativeWeekDay(moment, format) { + var nominative = format.indexOf('dddd LT') === -1, + weekDay = weekDays[moment.weekday()]; + + return nominative ? weekDay : weekDay.substring(0, weekDay.length - 2) + "į"; + } + + return moment.lang("lt", { + months : "sausio_vasario_kovo_balandžio_gegužės_biržėlio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"), + monthsShort : "sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"), + weekdays : relativeWeekDay, + weekdaysShort : "Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"), + weekdaysMin : "S_P_A_T_K_Pn_Š".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "YYYY-MM-DD", + LL : "YYYY [m.] MMMM D [d.]", + LLL : "YYYY [m.] MMMM D [d.], LT [val.]", + LLLL : "YYYY [m.] MMMM D [d.], dddd, LT [val.]", + l : "YYYY-MM-DD", + ll : "YYYY [m.] MMMM D [d.]", + lll : "YYYY [m.] MMMM D [d.], LT [val.]", + llll : "YYYY [m.] MMMM D [d.], ddd, LT [val.]" + }, + calendar : { + sameDay : "[Šiandien] LT", + nextDay : "[Rytoj] LT", + nextWeek : "dddd LT", + lastDay : "[Vakar] LT", + lastWeek : "[Praėjusį] dddd LT", + sameElse : "L" + }, + relativeTime : { + future : "po %s", + past : "prieš %s", + s : translateSeconds, + m : translateSingular, + mm : translate, + h : translateSingular, + hh : translate, + d : translateSingular, + dd : translate, + M : translateSingular, + MM : translate, + y : translateSingular, + yy : translate + }, + ordinal : function (number) { + return number + '-oji'; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : latvian (lv) +// author : Kristaps Karlsons : https://github.com/skakri + +(function (factory) { + factory(moment); +}(function (moment) { + var units = { + 'mm': 'minūti_minūtes_minūte_minūtes', + 'hh': 'stundu_stundas_stunda_stundas', + 'dd': 'dienu_dienas_diena_dienas', + 'MM': 'mēnesi_mēnešus_mēnesis_mēneši', + 'yy': 'gadu_gadus_gads_gadi' + }; + + function format(word, number, withoutSuffix) { + var forms = word.split('_'); + if (withoutSuffix) { + return number % 10 === 1 && number !== 11 ? forms[2] : forms[3]; + } else { + return number % 10 === 1 && number !== 11 ? forms[0] : forms[1]; + } + } + + function relativeTimeWithPlural(number, withoutSuffix, key) { + return number + ' ' + format(units[key], number, withoutSuffix); + } + + return moment.lang('lv', { + months : "janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"), + monthsShort : "jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"), + weekdays : "svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"), + weekdaysShort : "Sv_P_O_T_C_Pk_S".split("_"), + weekdaysMin : "Sv_P_O_T_C_Pk_S".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD.MM.YYYY", + LL : "YYYY. [gada] D. MMMM", + LLL : "YYYY. [gada] D. MMMM, LT", + LLLL : "YYYY. [gada] D. MMMM, dddd, LT" + }, + calendar : { + sameDay : '[Šodien pulksten] LT', + nextDay : '[Rīt pulksten] LT', + nextWeek : 'dddd [pulksten] LT', + lastDay : '[Vakar pulksten] LT', + lastWeek : '[Pagājušā] dddd [pulksten] LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s vēlāk", + past : "%s agrāk", + s : "dažas sekundes", + m : "minūti", + mm : relativeTimeWithPlural, + h : "stundu", + hh : relativeTimeWithPlural, + d : "dienu", + dd : relativeTimeWithPlural, + M : "mēnesi", + MM : relativeTimeWithPlural, + y : "gadu", + yy : relativeTimeWithPlural + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : macedonian (mk) +// author : Borislav Mickov : https://github.com/B0k0 + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('mk', { + months : "јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"), + monthsShort : "јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"), + weekdays : "недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"), + weekdaysShort : "нед_пон_вто_сре_чет_пет_саб".split("_"), + weekdaysMin : "нe_пo_вт_ср_че_пе_сa".split("_"), + longDateFormat : { + LT : "H:mm", + L : "D.MM.YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay : '[Денес во] LT', + nextDay : '[Утре во] LT', + nextWeek : 'dddd [во] LT', + lastDay : '[Вчера во] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + case 6: + return '[Во изминатата] dddd [во] LT'; + case 1: + case 2: + case 4: + case 5: + return '[Во изминатиот] dddd [во] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : "после %s", + past : "пред %s", + s : "неколку секунди", + m : "минута", + mm : "%d минути", + h : "час", + hh : "%d часа", + d : "ден", + dd : "%d дена", + M : "месец", + MM : "%d месеци", + y : "година", + yy : "%d години" + }, + ordinal : function (number) { + var lastDigit = number % 10, + last2Digits = number % 100; + if (number === 0) { + return number + '-ев'; + } else if (last2Digits === 0) { + return number + '-ен'; + } else if (last2Digits > 10 && last2Digits < 20) { + return number + '-ти'; + } else if (lastDigit === 1) { + return number + '-ви'; + } else if (lastDigit === 2) { + return number + '-ри'; + } else if (lastDigit === 7 || lastDigit === 8) { + return number + '-ми'; + } else { + return number + '-ти'; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : malayalam (ml) +// author : Floyd Pink : https://github.com/floydpink + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('ml', { + months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split("_"), + monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split("_"), + weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split("_"), + weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split("_"), + weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split("_"), + longDateFormat : { + LT : "A h:mm -നു", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY, LT", + LLLL : "dddd, D MMMM YYYY, LT" + }, + calendar : { + sameDay : '[ഇന്ന്] LT', + nextDay : '[നാളെ] LT', + nextWeek : 'dddd, LT', + lastDay : '[ഇന്നലെ] LT', + lastWeek : '[കഴിഞ്ഞ] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s കഴിഞ്ഞ്", + past : "%s മുൻപ്", + s : "അൽപ നിമിഷങ്ങൾ", + m : "ഒരു മിനിറ്റ്", + mm : "%d മിനിറ്റ്", + h : "ഒരു മണിക്കൂർ", + hh : "%d മണിക്കൂർ", + d : "ഒരു ദിവസം", + dd : "%d ദിവസം", + M : "ഒരു മാസം", + MM : "%d മാസം", + y : "ഒരു വർഷം", + yy : "%d വർഷം" + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return "രാത്രി"; + } else if (hour < 12) { + return "രാവിലെ"; + } else if (hour < 17) { + return "ഉച്ച കഴിഞ്ഞ്"; + } else if (hour < 20) { + return "വൈകുന്നേരം"; + } else { + return "രാത്രി"; + } + } + }); +})); +// moment.js language configuration +// language : Marathi (mr) +// author : Harshad Kale : https://github.com/kalehv + +(function (factory) { + factory(moment); +}(function (moment) { + var symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' + }, + numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' + }; + + return moment.lang('mr', { + months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split("_"), + monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split("_"), + weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split("_"), + weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split("_"), + weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split("_"), + longDateFormat : { + LT : "A h:mm वाजता", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY, LT", + LLLL : "dddd, D MMMM YYYY, LT" + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[उद्या] LT', + nextWeek : 'dddd, LT', + lastDay : '[काल] LT', + lastWeek: '[मागील] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s नंतर", + past : "%s पूर्वी", + s : "सेकंद", + m: "एक मिनिट", + mm: "%d मिनिटे", + h : "एक तास", + hh : "%d तास", + d : "एक दिवस", + dd : "%d दिवस", + M : "एक महिना", + MM : "%d महिने", + y : "एक वर्ष", + yy : "%d वर्षे" + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + meridiem: function (hour, minute, isLower) + { + if (hour < 4) { + return "रात्री"; + } else if (hour < 10) { + return "सकाळी"; + } else if (hour < 17) { + return "दुपारी"; + } else if (hour < 20) { + return "सायंकाळी"; + } else { + return "रात्री"; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : Bahasa Malaysia (ms-MY) +// author : Weldan Jamili : https://github.com/weldan + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('ms-my', { + months : "Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"), + monthsShort : "Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"), + weekdays : "Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"), + weekdaysShort : "Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"), + weekdaysMin : "Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"), + longDateFormat : { + LT : "HH.mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY [pukul] LT", + LLLL : "dddd, D MMMM YYYY [pukul] LT" + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'tengahari'; + } else if (hours < 19) { + return 'petang'; + } else { + return 'malam'; + } + }, + calendar : { + sameDay : '[Hari ini pukul] LT', + nextDay : '[Esok pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kelmarin pukul] LT', + lastWeek : 'dddd [lepas pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : "dalam %s", + past : "%s yang lepas", + s : "beberapa saat", + m : "seminit", + mm : "%d minit", + h : "sejam", + hh : "%d jam", + d : "sehari", + dd : "%d hari", + M : "sebulan", + MM : "%d bulan", + y : "setahun", + yy : "%d tahun" + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : norwegian bokmål (nb) +// authors : Espen Hovlandsdal : https://github.com/rexxars +// Sigurd Gartmann : https://github.com/sigurdga + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('nb', { + months : "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"), + monthsShort : "jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"), + weekdays : "søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"), + weekdaysShort : "sø._ma._ti._on._to._fr._lø.".split("_"), + weekdaysMin : "sø_ma_ti_on_to_fr_lø".split("_"), + longDateFormat : { + LT : "H.mm", + L : "DD.MM.YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY [kl.] LT", + LLLL : "dddd D. MMMM YYYY [kl.] LT" + }, + calendar : { + sameDay: '[i dag kl.] LT', + nextDay: '[i morgen kl.] LT', + nextWeek: 'dddd [kl.] LT', + lastDay: '[i går kl.] LT', + lastWeek: '[forrige] dddd [kl.] LT', + sameElse: 'L' + }, + relativeTime : { + future : "om %s", + past : "for %s siden", + s : "noen sekunder", + m : "ett minutt", + mm : "%d minutter", + h : "en time", + hh : "%d timer", + d : "en dag", + dd : "%d dager", + M : "en måned", + MM : "%d måneder", + y : "ett år", + yy : "%d år" + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : nepali/nepalese +// author : suvash : https://github.com/suvash + +(function (factory) { + factory(moment); +}(function (moment) { + var symbolMap = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' + }, + numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' + }; + + return moment.lang('ne', { + months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split("_"), + monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split("_"), + weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split("_"), + weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split("_"), + weekdaysMin : 'आइ._सो._मङ्_बु._बि._शु._श.'.split("_"), + longDateFormat : { + LT : "Aको h:mm बजे", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY, LT", + LLLL : "dddd, D MMMM YYYY, LT" + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 3) { + return "राती"; + } else if (hour < 10) { + return "बिहान"; + } else if (hour < 15) { + return "दिउँसो"; + } else if (hour < 18) { + return "बेलुका"; + } else if (hour < 20) { + return "साँझ"; + } else { + return "राती"; + } + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[भोली] LT', + nextWeek : '[आउँदो] dddd[,] LT', + lastDay : '[हिजो] LT', + lastWeek : '[गएको] dddd[,] LT', + sameElse : 'L' + }, + relativeTime : { + future : "%sमा", + past : "%s अगाडी", + s : "केही समय", + m : "एक मिनेट", + mm : "%d मिनेट", + h : "एक घण्टा", + hh : "%d घण्टा", + d : "एक दिन", + dd : "%d दिन", + M : "एक महिना", + MM : "%d महिना", + y : "एक बर्ष", + yy : "%d बर्ष" + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : dutch (nl) +// author : Joris Röling : https://github.com/jjupiter + +(function (factory) { + factory(moment); +}(function (moment) { + var monthsShortWithDots = "jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"), + monthsShortWithoutDots = "jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"); + + return moment.lang('nl', { + months : "januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"), + monthsShort : function (m, format) { + if (/-MMM-/.test(format)) { + return monthsShortWithoutDots[m.month()]; + } else { + return monthsShortWithDots[m.month()]; + } + }, + weekdays : "zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"), + weekdaysShort : "zo._ma._di._wo._do._vr._za.".split("_"), + weekdaysMin : "Zo_Ma_Di_Wo_Do_Vr_Za".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD-MM-YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: '[vandaag om] LT', + nextDay: '[morgen om] LT', + nextWeek: 'dddd [om] LT', + lastDay: '[gisteren om] LT', + lastWeek: '[afgelopen] dddd [om] LT', + sameElse: 'L' + }, + relativeTime : { + future : "over %s", + past : "%s geleden", + s : "een paar seconden", + m : "één minuut", + mm : "%d minuten", + h : "één uur", + hh : "%d uur", + d : "één dag", + dd : "%d dagen", + M : "één maand", + MM : "%d maanden", + y : "één jaar", + yy : "%d jaar" + }, + ordinal : function (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : norwegian nynorsk (nn) +// author : https://github.com/mechuwind + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('nn', { + months : "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"), + monthsShort : "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"), + weekdays : "sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"), + weekdaysShort : "sun_mån_tys_ons_tor_fre_lau".split("_"), + weekdaysMin : "su_må_ty_on_to_fr_lø".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD.MM.YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: '[I dag klokka] LT', + nextDay: '[I morgon klokka] LT', + nextWeek: 'dddd [klokka] LT', + lastDay: '[I går klokka] LT', + lastWeek: '[Føregående] dddd [klokka] LT', + sameElse: 'L' + }, + relativeTime : { + future : "om %s", + past : "for %s siden", + s : "noen sekund", + m : "ett minutt", + mm : "%d minutt", + h : "en time", + hh : "%d timar", + d : "en dag", + dd : "%d dagar", + M : "en månad", + MM : "%d månader", + y : "ett år", + yy : "%d år" + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : polish (pl) +// author : Rafal Hirsz : https://github.com/evoL + +(function (factory) { + factory(moment); +}(function (moment) { + var monthsNominative = "styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"), + monthsSubjective = "stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"); + + function plural(n) { + return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1); + } + + function translate(number, withoutSuffix, key) { + var result = number + " "; + switch (key) { + case 'm': + return withoutSuffix ? 'minuta' : 'minutę'; + case 'mm': + return result + (plural(number) ? 'minuty' : 'minut'); + case 'h': + return withoutSuffix ? 'godzina' : 'godzinę'; + case 'hh': + return result + (plural(number) ? 'godziny' : 'godzin'); + case 'MM': + return result + (plural(number) ? 'miesiące' : 'miesięcy'); + case 'yy': + return result + (plural(number) ? 'lata' : 'lat'); + } + } + + return moment.lang('pl', { + months : function (momentToFormat, format) { + if (/D MMMM/.test(format)) { + return monthsSubjective[momentToFormat.month()]; + } else { + return monthsNominative[momentToFormat.month()]; + } + }, + monthsShort : "sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"), + weekdays : "niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"), + weekdaysShort : "nie_pon_wt_śr_czw_pt_sb".split("_"), + weekdaysMin : "N_Pn_Wt_Śr_Cz_Pt_So".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD.MM.YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay: '[Dziś o] LT', + nextDay: '[Jutro o] LT', + nextWeek: '[W] dddd [o] LT', + lastDay: '[Wczoraj o] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[W zeszłą niedzielę o] LT'; + case 3: + return '[W zeszłą środę o] LT'; + case 6: + return '[W zeszłą sobotę o] LT'; + default: + return '[W zeszły] dddd [o] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : "za %s", + past : "%s temu", + s : "kilka sekund", + m : translate, + mm : translate, + h : translate, + hh : translate, + d : "1 dzień", + dd : '%d dni', + M : "miesiąc", + MM : translate, + y : "rok", + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : brazilian portuguese (pt-br) +// author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('pt-br', { + months : "Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"), + monthsShort : "Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"), + weekdays : "Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"), + weekdaysShort : "Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"), + weekdaysMin : "Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D [de] MMMM [de] YYYY", + LLL : "D [de] MMMM [de] YYYY LT", + LLLL : "dddd, D [de] MMMM [de] YYYY LT" + }, + calendar : { + sameDay: '[Hoje às] LT', + nextDay: '[Amanhã às] LT', + nextWeek: 'dddd [às] LT', + lastDay: '[Ontem às] LT', + lastWeek: function () { + return (this.day() === 0 || this.day() === 6) ? + '[Último] dddd [às] LT' : // Saturday + Sunday + '[Última] dddd [às] LT'; // Monday - Friday + }, + sameElse: 'L' + }, + relativeTime : { + future : "em %s", + past : "%s atrás", + s : "segundos", + m : "um minuto", + mm : "%d minutos", + h : "uma hora", + hh : "%d horas", + d : "um dia", + dd : "%d dias", + M : "um mês", + MM : "%d meses", + y : "um ano", + yy : "%d anos" + }, + ordinal : '%dº' + }); +})); +// moment.js language configuration +// language : portuguese (pt) +// author : Jefferson : https://github.com/jalex79 + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('pt', { + months : "Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"), + monthsShort : "Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"), + weekdays : "Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"), + weekdaysShort : "Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"), + weekdaysMin : "Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D [de] MMMM [de] YYYY", + LLL : "D [de] MMMM [de] YYYY LT", + LLLL : "dddd, D [de] MMMM [de] YYYY LT" + }, + calendar : { + sameDay: '[Hoje às] LT', + nextDay: '[Amanhã às] LT', + nextWeek: 'dddd [às] LT', + lastDay: '[Ontem às] LT', + lastWeek: function () { + return (this.day() === 0 || this.day() === 6) ? + '[Último] dddd [às] LT' : // Saturday + Sunday + '[Última] dddd [às] LT'; // Monday - Friday + }, + sameElse: 'L' + }, + relativeTime : { + future : "em %s", + past : "%s atrás", + s : "segundos", + m : "um minuto", + mm : "%d minutos", + h : "uma hora", + hh : "%d horas", + d : "um dia", + dd : "%d dias", + M : "um mês", + MM : "%d meses", + y : "um ano", + yy : "%d anos" + }, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : romanian (ro) +// author : Vlad Gurdiga : https://github.com/gurdiga +// author : Valentin Agachi : https://github.com/avaly + +(function (factory) { + factory(moment); +}(function (moment) { + function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': 'minute', + 'hh': 'ore', + 'dd': 'zile', + 'MM': 'luni', + 'yy': 'ani' + }, + separator = ' '; + if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { + separator = ' de '; + } + + return number + separator + format[key]; + } + + return moment.lang('ro', { + months : "ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"), + monthsShort : "ian_feb_mar_apr_mai_iun_iul_aug_sep_oct_noi_dec".split("_"), + weekdays : "duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"), + weekdaysShort : "Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"), + weekdaysMin : "Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD.MM.YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY H:mm", + LLLL : "dddd, D MMMM YYYY H:mm" + }, + calendar : { + sameDay: "[azi la] LT", + nextDay: '[mâine la] LT', + nextWeek: 'dddd [la] LT', + lastDay: '[ieri la] LT', + lastWeek: '[fosta] dddd [la] LT', + sameElse: 'L' + }, + relativeTime : { + future : "peste %s", + past : "%s în urmă", + s : "câteva secunde", + m : "un minut", + mm : relativeTimeWithPlural, + h : "o oră", + hh : relativeTimeWithPlural, + d : "o zi", + dd : relativeTimeWithPlural, + M : "o lună", + MM : relativeTimeWithPlural, + y : "un an", + yy : relativeTimeWithPlural + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : serbian (rs) +// author : Limon Monte : https://github.com/limonte +// based on (bs) translation by Nedim Cholich + +(function (factory) { + factory(moment); +}(function (moment) { + + function translate(number, withoutSuffix, key) { + var result = number + " "; + switch (key) { + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'meseca'; + } else { + result += 'meseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; + } + } + + return moment.lang('rs', { + months : "januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"), + monthsShort : "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"), + weekdays : "nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"), + weekdaysShort : "ned._pon._uto._sre._čet._pet._sub.".split("_"), + weekdaysMin : "ne_po_ut_sr_če_pe_su".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD. MM. YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd, D. MMMM YYYY LT" + }, + calendar : { + sameDay : '[danas u] LT', + nextDay : '[sutra u] LT', + + nextWeek : function () { + switch (this.day()) { + case 0: + return '[u] [nedelju] [u] LT'; + case 3: + return '[u] [sredu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[juče u] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : "za %s", + past : "pre %s", + s : "par sekundi", + m : translate, + mm : translate, + h : translate, + hh : translate, + d : "dan", + dd : translate, + M : "mesec", + MM : translate, + y : "godinu", + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : russian (ru) +// author : Viktorminator : https://github.com/Viktorminator +// Author : Menelion Elensúle : https://github.com/Oire + +(function (factory) { + factory(moment); +}(function (moment) { + function plural(word, num) { + var forms = word.split('_'); + return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); + } + + function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': 'минута_минуты_минут', + 'hh': 'час_часа_часов', + 'dd': 'день_дня_дней', + 'MM': 'месяц_месяца_месяцев', + 'yy': 'год_года_лет' + }; + if (key === 'm') { + return withoutSuffix ? 'минута' : 'минуту'; + } + else { + return number + ' ' + plural(format[key], +number); + } + } + + function monthsCaseReplace(m, format) { + var months = { + 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), + 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_') + }, + + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + + return months[nounCase][m.month()]; + } + + function monthsShortCaseReplace(m, format) { + var monthsShort = { + 'nominative': 'янв_фев_мар_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), + 'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_') + }, + + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + + return monthsShort[nounCase][m.month()]; + } + + function weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), + 'accusative': 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_') + }, + + nounCase = (/\[ ?[Вв] ?(?:прошлую|следующую)? ?\] ?dddd/).test(format) ? + 'accusative' : + 'nominative'; + + return weekdays[nounCase][m.day()]; + } + + return moment.lang('ru', { + months : monthsCaseReplace, + monthsShort : monthsShortCaseReplace, + weekdays : weekdaysCaseReplace, + weekdaysShort : "вс_пн_вт_ср_чт_пт_сб".split("_"), + weekdaysMin : "вс_пн_вт_ср_чт_пт_сб".split("_"), + monthsParse : [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[й|я]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i], + longDateFormat : { + LT : "HH:mm", + L : "DD.MM.YYYY", + LL : "D MMMM YYYY г.", + LLL : "D MMMM YYYY г., LT", + LLLL : "dddd, D MMMM YYYY г., LT" + }, + calendar : { + sameDay: '[Сегодня в] LT', + nextDay: '[Завтра в] LT', + lastDay: '[Вчера в] LT', + nextWeek: function () { + return this.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT'; + }, + lastWeek: function () { + switch (this.day()) { + case 0: + return '[В прошлое] dddd [в] LT'; + case 1: + case 2: + case 4: + return '[В прошлый] dddd [в] LT'; + case 3: + case 5: + case 6: + return '[В прошлую] dddd [в] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : "через %s", + past : "%s назад", + s : "несколько секунд", + m : relativeTimeWithPlural, + mm : relativeTimeWithPlural, + h : "час", + hh : relativeTimeWithPlural, + d : "день", + dd : relativeTimeWithPlural, + M : "месяц", + MM : relativeTimeWithPlural, + y : "год", + yy : relativeTimeWithPlural + }, + + // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason + + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return "ночи"; + } else if (hour < 12) { + return "утра"; + } else if (hour < 17) { + return "дня"; + } else { + return "вечера"; + } + }, + + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + return number + '-й'; + case 'D': + return number + '-го'; + case 'w': + case 'W': + return number + '-я'; + default: + return number; + } + }, + + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : slovak (sk) +// author : Martin Minka : https://github.com/k2s +// based on work of petrbela : https://github.com/petrbela + +(function (factory) { + factory(moment); +}(function (moment) { + var months = "január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"), + monthsShort = "jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"); + + function plural(n) { + return (n > 1) && (n < 5); + } + + function translate(number, withoutSuffix, key, isFuture) { + var result = number + " "; + switch (key) { + case 's': // a few seconds / in a few seconds / a few seconds ago + return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami'; + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou'); + case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'minúty' : 'minút'); + } else { + return result + 'minútami'; + } + break; + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'hh': // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'hodiny' : 'hodín'); + } else { + return result + 'hodinami'; + } + break; + case 'd': // a day / in a day / a day ago + return (withoutSuffix || isFuture) ? 'deň' : 'dňom'; + case 'dd': // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'dni' : 'dní'); + } else { + return result + 'dňami'; + } + break; + case 'M': // a month / in a month / a month ago + return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom'; + case 'MM': // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'mesiace' : 'mesiacov'); + } else { + return result + 'mesiacmi'; + } + break; + case 'y': // a year / in a year / a year ago + return (withoutSuffix || isFuture) ? 'rok' : 'rokom'; + case 'yy': // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'roky' : 'rokov'); + } else { + return result + 'rokmi'; + } + break; + } + } + + return moment.lang('sk', { + months : months, + monthsShort : monthsShort, + monthsParse : (function (months, monthsShort) { + var i, _monthsParse = []; + for (i = 0; i < 12; i++) { + // use custom parser to solve problem with July (červenec) + _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); + } + return _monthsParse; + }(months, monthsShort)), + weekdays : "nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"), + weekdaysShort : "ne_po_ut_st_št_pi_so".split("_"), + weekdaysMin : "ne_po_ut_st_št_pi_so".split("_"), + longDateFormat : { + LT: "H:mm", + L : "DD.MM.YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd D. MMMM YYYY LT" + }, + calendar : { + sameDay: "[dnes o] LT", + nextDay: '[zajtra o] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[v nedeľu o] LT'; + case 1: + case 2: + return '[v] dddd [o] LT'; + case 3: + return '[v stredu o] LT'; + case 4: + return '[vo štvrtok o] LT'; + case 5: + return '[v piatok o] LT'; + case 6: + return '[v sobotu o] LT'; + } + }, + lastDay: '[včera o] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[minulú nedeľu o] LT'; + case 1: + case 2: + return '[minulý] dddd [o] LT'; + case 3: + return '[minulú stredu o] LT'; + case 4: + case 5: + return '[minulý] dddd [o] LT'; + case 6: + return '[minulú sobotu o] LT'; + } + }, + sameElse: "L" + }, + relativeTime : { + future : "za %s", + past : "pred %s", + s : translate, + m : translate, + mm : translate, + h : translate, + hh : translate, + d : translate, + dd : translate, + M : translate, + MM : translate, + y : translate, + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : slovenian (sl) +// author : Robert Sedovšek : https://github.com/sedovsek + +(function (factory) { + factory(moment); +}(function (moment) { + function translate(number, withoutSuffix, key) { + var result = number + " "; + switch (key) { + case 'm': + return withoutSuffix ? 'ena minuta' : 'eno minuto'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2) { + result += 'minuti'; + } else if (number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minut'; + } + return result; + case 'h': + return withoutSuffix ? 'ena ura' : 'eno uro'; + case 'hh': + if (number === 1) { + result += 'ura'; + } else if (number === 2) { + result += 'uri'; + } else if (number === 3 || number === 4) { + result += 'ure'; + } else { + result += 'ur'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dni'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mesec'; + } else if (number === 2) { + result += 'meseca'; + } else if (number === 3 || number === 4) { + result += 'mesece'; + } else { + result += 'mesecev'; + } + return result; + case 'yy': + if (number === 1) { + result += 'leto'; + } else if (number === 2) { + result += 'leti'; + } else if (number === 3 || number === 4) { + result += 'leta'; + } else { + result += 'let'; + } + return result; + } + } + + return moment.lang('sl', { + months : "januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"), + monthsShort : "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"), + weekdays : "nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"), + weekdaysShort : "ned._pon._tor._sre._čet._pet._sob.".split("_"), + weekdaysMin : "ne_po_to_sr_če_pe_so".split("_"), + longDateFormat : { + LT : "H:mm", + L : "DD. MM. YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd, D. MMMM YYYY LT" + }, + calendar : { + sameDay : '[danes ob] LT', + nextDay : '[jutri ob] LT', + + nextWeek : function () { + switch (this.day()) { + case 0: + return '[v] [nedeljo] [ob] LT'; + case 3: + return '[v] [sredo] [ob] LT'; + case 6: + return '[v] [soboto] [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[v] dddd [ob] LT'; + } + }, + lastDay : '[včeraj ob] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + case 6: + return '[prejšnja] dddd [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prejšnji] dddd [ob] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : "čez %s", + past : "%s nazaj", + s : "nekaj sekund", + m : translate, + mm : translate, + h : translate, + hh : translate, + d : "en dan", + dd : translate, + M : "en mesec", + MM : translate, + y : "eno leto", + yy : translate + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : Albanian (sq) +// author : Flakërim Ismani : https://github.com/flakerimi +// author: Menelion Elensúle: https://github.com/Oire (tests) + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('sq', { + months : "Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"), + monthsShort : "Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"), + weekdays : "E Diel_E Hënë_E Marte_E Mërkure_E Enjte_E Premte_E Shtunë".split("_"), + weekdaysShort : "Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"), + weekdaysMin : "D_H_Ma_Më_E_P_Sh".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay : '[Sot në] LT', + nextDay : '[Neser në] LT', + nextWeek : 'dddd [në] LT', + lastDay : '[Dje në] LT', + lastWeek : 'dddd [e kaluar në] LT', + sameElse : 'L' + }, + relativeTime : { + future : "në %s", + past : "%s me parë", + s : "disa sekonda", + m : "një minut", + mm : "%d minuta", + h : "një orë", + hh : "%d orë", + d : "një ditë", + dd : "%d ditë", + M : "një muaj", + MM : "%d muaj", + y : "një vit", + yy : "%d vite" + }, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : swedish (sv) +// author : Jens Alm : https://github.com/ulmus + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('sv', { + months : "januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"), + monthsShort : "jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"), + weekdays : "söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"), + weekdaysShort : "sön_mån_tis_ons_tor_fre_lör".split("_"), + weekdaysMin : "sö_må_ti_on_to_fr_lö".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "YYYY-MM-DD", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: '[Idag] LT', + nextDay: '[Imorgon] LT', + lastDay: '[Igår] LT', + nextWeek: 'dddd LT', + lastWeek: '[Förra] dddd[en] LT', + sameElse: 'L' + }, + relativeTime : { + future : "om %s", + past : "för %s sedan", + s : "några sekunder", + m : "en minut", + mm : "%d minuter", + h : "en timme", + hh : "%d timmar", + d : "en dag", + dd : "%d dagar", + M : "en månad", + MM : "%d månader", + y : "ett år", + yy : "%d år" + }, + ordinal : function (number) { + var b = number % 10, + output = (~~ (number % 100 / 10) === 1) ? 'e' : + (b === 1) ? 'a' : + (b === 2) ? 'a' : + (b === 3) ? 'e' : 'e'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : tamil (ta) +// author : Arjunkumar Krishnamoorthy : https://github.com/tk120404 + +(function (factory) { + factory(moment); +}(function (moment) { + /*var symbolMap = { + '1': '௧', + '2': '௨', + '3': '௩', + '4': '௪', + '5': '௫', + '6': '௬', + '7': '௭', + '8': '௮', + '9': '௯', + '0': '௦' + }, + numberMap = { + '௧': '1', + '௨': '2', + '௩': '3', + '௪': '4', + '௫': '5', + '௬': '6', + '௭': '7', + '௮': '8', + '௯': '9', + '௦': '0' + }; */ + + return moment.lang('ta', { + months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split("_"), + monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split("_"), + weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split("_"), + weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split("_"), + weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY, LT", + LLLL : "dddd, D MMMM YYYY, LT" + }, + calendar : { + sameDay : '[இன்று] LT', + nextDay : '[நாளை] LT', + nextWeek : 'dddd, LT', + lastDay : '[நேற்று] LT', + lastWeek : '[கடந்த வாரம்] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s இல்", + past : "%s முன்", + s : "ஒரு சில விநாடிகள்", + m : "ஒரு நிமிடம்", + mm : "%d நிமிடங்கள்", + h : "ஒரு மணி நேரம்", + hh : "%d மணி நேரம்", + d : "ஒரு நாள்", + dd : "%d நாட்கள்", + M : "ஒரு மாதம்", + MM : "%d மாதங்கள்", + y : "ஒரு வருடம்", + yy : "%d ஆண்டுகள்" + }, +/* preparse: function (string) { + return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + },*/ + ordinal : function (number) { + return number + 'வது'; + }, + + +// refer http://ta.wikipedia.org/s/1er1 + + meridiem : function (hour, minute, isLower) { + if (hour >= 6 && hour <= 10) { + return " காலை"; + } else if (hour >= 10 && hour <= 14) { + return " நண்பகல்"; + } else if (hour >= 14 && hour <= 18) { + return " எற்பாடு"; + } else if (hour >= 18 && hour <= 20) { + return " மாலை"; + } else if (hour >= 20 && hour <= 24) { + return " இரவு"; + } else if (hour >= 0 && hour <= 6) { + return " வைகறை"; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : thai (th) +// author : Kridsada Thanabulpong : https://github.com/sirn + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('th', { + months : "มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"), + monthsShort : "มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา".split("_"), + weekdays : "อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"), + weekdaysShort : "อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"), // yes, three characters difference + weekdaysMin : "อา._จ._อ._พ._พฤ._ศ._ส.".split("_"), + longDateFormat : { + LT : "H นาฬิกา m นาที", + L : "YYYY/MM/DD", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY เวลา LT", + LLLL : "วันddddที่ D MMMM YYYY เวลา LT" + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return "ก่อนเที่ยง"; + } else { + return "หลังเที่ยง"; + } + }, + calendar : { + sameDay : '[วันนี้ เวลา] LT', + nextDay : '[พรุ่งนี้ เวลา] LT', + nextWeek : 'dddd[หน้า เวลา] LT', + lastDay : '[เมื่อวานนี้ เวลา] LT', + lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT', + sameElse : 'L' + }, + relativeTime : { + future : "อีก %s", + past : "%sที่แล้ว", + s : "ไม่กี่วินาที", + m : "1 นาที", + mm : "%d นาที", + h : "1 ชั่วโมง", + hh : "%d ชั่วโมง", + d : "1 วัน", + dd : "%d วัน", + M : "1 เดือน", + MM : "%d เดือน", + y : "1 ปี", + yy : "%d ปี" + } + }); +})); +// moment.js language configuration +// language : Tagalog/Filipino (tl-ph) +// author : Dan Hagman + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('tl-ph', { + months : "Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"), + monthsShort : "Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"), + weekdays : "Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"), + weekdaysShort : "Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"), + weekdaysMin : "Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "MM/D/YYYY", + LL : "MMMM D, YYYY", + LLL : "MMMM D, YYYY LT", + LLLL : "dddd, MMMM DD, YYYY LT" + }, + calendar : { + sameDay: "[Ngayon sa] LT", + nextDay: '[Bukas sa] LT', + nextWeek: 'dddd [sa] LT', + lastDay: '[Kahapon sa] LT', + lastWeek: 'dddd [huling linggo] LT', + sameElse: 'L' + }, + relativeTime : { + future : "sa loob ng %s", + past : "%s ang nakalipas", + s : "ilang segundo", + m : "isang minuto", + mm : "%d minuto", + h : "isang oras", + hh : "%d oras", + d : "isang araw", + dd : "%d araw", + M : "isang buwan", + MM : "%d buwan", + y : "isang taon", + yy : "%d taon" + }, + ordinal : function (number) { + return number; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : turkish (tr) +// authors : Erhan Gundogan : https://github.com/erhangundogan, +// Burak Yiğit Kaya: https://github.com/BYK + +(function (factory) { + factory(moment); +}(function (moment) { + + var suffixes = { + 1: "'inci", + 5: "'inci", + 8: "'inci", + 70: "'inci", + 80: "'inci", + + 2: "'nci", + 7: "'nci", + 20: "'nci", + 50: "'nci", + + 3: "'üncü", + 4: "'üncü", + 100: "'üncü", + + 6: "'ncı", + + 9: "'uncu", + 10: "'uncu", + 30: "'uncu", + + 60: "'ıncı", + 90: "'ıncı" + }; + + return moment.lang('tr', { + months : "Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"), + monthsShort : "Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"), + weekdays : "Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"), + weekdaysShort : "Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"), + weekdaysMin : "Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD.MM.YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay : '[bugün saat] LT', + nextDay : '[yarın saat] LT', + nextWeek : '[haftaya] dddd [saat] LT', + lastDay : '[dün] LT', + lastWeek : '[geçen hafta] dddd [saat] LT', + sameElse : 'L' + }, + relativeTime : { + future : "%s sonra", + past : "%s önce", + s : "birkaç saniye", + m : "bir dakika", + mm : "%d dakika", + h : "bir saat", + hh : "%d saat", + d : "bir gün", + dd : "%d gün", + M : "bir ay", + MM : "%d ay", + y : "bir yıl", + yy : "%d yıl" + }, + ordinal : function (number) { + if (number === 0) { // special case for zero + return number + "'ıncı"; + } + var a = number % 10, + b = number % 100 - a, + c = number >= 100 ? 100 : null; + + return number + (suffixes[a] || suffixes[b] || suffixes[c]); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : Morocco Central Atlas Tamaziɣt in Latin (tzm-la) +// author : Abdel Said : https://github.com/abdelsaid + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('tzm-la', { + months : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"), + monthsShort : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"), + weekdays : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"), + weekdaysShort : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"), + weekdaysMin : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: "[asdkh g] LT", + nextDay: '[aska g] LT', + nextWeek: 'dddd [g] LT', + lastDay: '[assant g] LT', + lastWeek: 'dddd [g] LT', + sameElse: 'L' + }, + relativeTime : { + future : "dadkh s yan %s", + past : "yan %s", + s : "imik", + m : "minuḍ", + mm : "%d minuḍ", + h : "saɛa", + hh : "%d tassaɛin", + d : "ass", + dd : "%d ossan", + M : "ayowr", + MM : "%d iyyirn", + y : "asgas", + yy : "%d isgasn" + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : Morocco Central Atlas Tamaziɣt (tzm) +// author : Abdel Said : https://github.com/abdelsaid + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('tzm', { + months : "ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"), + monthsShort : "ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"), + weekdays : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"), + weekdaysShort : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"), + weekdaysMin : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd D MMMM YYYY LT" + }, + calendar : { + sameDay: "[ⴰⵙⴷⵅ ⴴ] LT", + nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', + nextWeek: 'dddd [ⴴ] LT', + lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', + lastWeek: 'dddd [ⴴ] LT', + sameElse: 'L' + }, + relativeTime : { + future : "ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s", + past : "ⵢⴰⵏ %s", + s : "ⵉⵎⵉⴽ", + m : "ⵎⵉⵏⵓⴺ", + mm : "%d ⵎⵉⵏⵓⴺ", + h : "ⵙⴰⵄⴰ", + hh : "%d ⵜⴰⵙⵙⴰⵄⵉⵏ", + d : "ⴰⵙⵙ", + dd : "%d oⵙⵙⴰⵏ", + M : "ⴰⵢoⵓⵔ", + MM : "%d ⵉⵢⵢⵉⵔⵏ", + y : "ⴰⵙⴳⴰⵙ", + yy : "%d ⵉⵙⴳⴰⵙⵏ" + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : ukrainian (uk) +// author : zemlanin : https://github.com/zemlanin +// Author : Menelion Elensúle : https://github.com/Oire + +(function (factory) { + factory(moment); +}(function (moment) { + function plural(word, num) { + var forms = word.split('_'); + return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); + } + + function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': 'хвилина_хвилини_хвилин', + 'hh': 'година_години_годин', + 'dd': 'день_дні_днів', + 'MM': 'місяць_місяці_місяців', + 'yy': 'рік_роки_років' + }; + if (key === 'm') { + return withoutSuffix ? 'хвилина' : 'хвилину'; + } + else if (key === 'h') { + return withoutSuffix ? 'година' : 'годину'; + } + else { + return number + ' ' + plural(format[key], +number); + } + } + + function monthsCaseReplace(m, format) { + var months = { + 'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'), + 'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_') + }, + + nounCase = (/D[oD]? *MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + + return months[nounCase][m.month()]; + } + + function weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), + 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'), + 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_') + }, + + nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ? + 'accusative' : + ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ? + 'genitive' : + 'nominative'); + + return weekdays[nounCase][m.day()]; + } + + function processHoursFunction(str) { + return function () { + return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; + }; + } + + return moment.lang('uk', { + months : monthsCaseReplace, + monthsShort : "січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"), + weekdays : weekdaysCaseReplace, + weekdaysShort : "нд_пн_вт_ср_чт_пт_сб".split("_"), + weekdaysMin : "нд_пн_вт_ср_чт_пт_сб".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD.MM.YYYY", + LL : "D MMMM YYYY р.", + LLL : "D MMMM YYYY р., LT", + LLLL : "dddd, D MMMM YYYY р., LT" + }, + calendar : { + sameDay: processHoursFunction('[Сьогодні '), + nextDay: processHoursFunction('[Завтра '), + lastDay: processHoursFunction('[Вчора '), + nextWeek: processHoursFunction('[У] dddd ['), + lastWeek: function () { + switch (this.day()) { + case 0: + case 3: + case 5: + case 6: + return processHoursFunction('[Минулої] dddd [').call(this); + case 1: + case 2: + case 4: + return processHoursFunction('[Минулого] dddd [').call(this); + } + }, + sameElse: 'L' + }, + relativeTime : { + future : "за %s", + past : "%s тому", + s : "декілька секунд", + m : relativeTimeWithPlural, + mm : relativeTimeWithPlural, + h : "годину", + hh : relativeTimeWithPlural, + d : "день", + dd : relativeTimeWithPlural, + M : "місяць", + MM : relativeTimeWithPlural, + y : "рік", + yy : relativeTimeWithPlural + }, + + // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason + + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return "ночі"; + } else if (hour < 12) { + return "ранку"; + } else if (hour < 17) { + return "дня"; + } else { + return "вечора"; + } + }, + + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + case 'w': + case 'W': + return number + '-й'; + case 'D': + return number + '-го'; + default: + return number; + } + }, + + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : uzbek +// author : Sardor Muminov : https://github.com/muminoff + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('uz', { + months : "январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"), + monthsShort : "янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"), + weekdays : "Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"), + weekdaysShort : "Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"), + weekdaysMin : "Як_Ду_Се_Чо_Па_Жу_Ша".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "D MMMM YYYY, dddd LT" + }, + calendar : { + sameDay : '[Бугун соат] LT [да]', + nextDay : '[Эртага] LT [да]', + nextWeek : 'dddd [куни соат] LT [да]', + lastDay : '[Кеча соат] LT [да]', + lastWeek : '[Утган] dddd [куни соат] LT [да]', + sameElse : 'L' + }, + relativeTime : { + future : "Якин %s ичида", + past : "Бир неча %s олдин", + s : "фурсат", + m : "бир дакика", + mm : "%d дакика", + h : "бир соат", + hh : "%d соат", + d : "бир кун", + dd : "%d кун", + M : "бир ой", + MM : "%d ой", + y : "бир йил", + yy : "%d йил" + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : vietnamese (vn) +// author : Bang Nguyen : https://github.com/bangnk + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('vn', { + months : "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".split("_"), + monthsShort : "Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"), + weekdays : "chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"), + weekdaysShort : "CN_T2_T3_T4_T5_T6_T7".split("_"), + weekdaysMin : "CN_T2_T3_T4_T5_T6_T7".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM [năm] YYYY", + LLL : "D MMMM [năm] YYYY LT", + LLLL : "dddd, D MMMM [năm] YYYY LT", + l : "DD/M/YYYY", + ll : "D MMM YYYY", + lll : "D MMM YYYY LT", + llll : "ddd, D MMM YYYY LT" + }, + calendar : { + sameDay: "[Hôm nay lúc] LT", + nextDay: '[Ngày mai lúc] LT', + nextWeek: 'dddd [tuần tới lúc] LT', + lastDay: '[Hôm qua lúc] LT', + lastWeek: 'dddd [tuần rồi lúc] LT', + sameElse: 'L' + }, + relativeTime : { + future : "%s tới", + past : "%s trước", + s : "vài giây", + m : "một phút", + mm : "%d phút", + h : "một giờ", + hh : "%d giờ", + d : "một ngày", + dd : "%d ngày", + M : "một tháng", + MM : "%d tháng", + y : "một năm", + yy : "%d năm" + }, + ordinal : function (number) { + return number; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : chinese +// author : suupic : https://github.com/suupic +// author : Zeno Zeng : https://github.com/zenozeng + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('zh-cn', { + months : "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"), + monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), + weekdays : "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"), + weekdaysShort : "周日_周一_周二_周三_周四_周五_周六".split("_"), + weekdaysMin : "日_一_二_三_四_五_六".split("_"), + longDateFormat : { + LT : "Ah点mm", + L : "YYYY-MM-DD", + LL : "YYYY年MMMD日", + LLL : "YYYY年MMMD日LT", + LLLL : "YYYY年MMMD日ddddLT", + l : "YYYY-MM-DD", + ll : "YYYY年MMMD日", + lll : "YYYY年MMMD日LT", + llll : "YYYY年MMMD日ddddLT" + }, + meridiem : function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return "凌晨"; + } else if (hm < 900) { + return "早上"; + } else if (hm < 1130) { + return "上午"; + } else if (hm < 1230) { + return "中午"; + } else if (hm < 1800) { + return "下午"; + } else { + return "晚上"; + } + }, + calendar : { + sameDay : function () { + return this.minutes() === 0 ? "[今天]Ah[点整]" : "[今天]LT"; + }, + nextDay : function () { + return this.minutes() === 0 ? "[明天]Ah[点整]" : "[明天]LT"; + }, + lastDay : function () { + return this.minutes() === 0 ? "[昨天]Ah[点整]" : "[昨天]LT"; + }, + nextWeek : function () { + var startOfWeek, prefix; + startOfWeek = moment().startOf('week'); + prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]'; + return this.minutes() === 0 ? prefix + "dddAh点整" : prefix + "dddAh点mm"; + }, + lastWeek : function () { + var startOfWeek, prefix; + startOfWeek = moment().startOf('week'); + prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]'; + return this.minutes() === 0 ? prefix + "dddAh点整" : prefix + "dddAh点mm"; + }, + sameElse : 'LL' + }, + ordinal : function (number, period) { + switch (period) { + case "d": + case "D": + case "DDD": + return number + "日"; + case "M": + return number + "月"; + case "w": + case "W": + return number + "周"; + default: + return number; + } + }, + relativeTime : { + future : "%s内", + past : "%s前", + s : "几秒", + m : "1分钟", + mm : "%d分钟", + h : "1小时", + hh : "%d小时", + d : "1天", + dd : "%d天", + M : "1个月", + MM : "%d个月", + y : "1年", + yy : "%d年" + }, + week : { + // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); +})); +// moment.js language configuration +// language : traditional chinese (zh-tw) +// author : Ben : https://github.com/ben-lin + +(function (factory) { + factory(moment); +}(function (moment) { + return moment.lang('zh-tw', { + months : "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"), + monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), + weekdays : "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"), + weekdaysShort : "週日_週一_週二_週三_週四_週五_週六".split("_"), + weekdaysMin : "日_一_二_三_四_五_六".split("_"), + longDateFormat : { + LT : "Ah點mm", + L : "YYYY年MMMD日", + LL : "YYYY年MMMD日", + LLL : "YYYY年MMMD日LT", + LLLL : "YYYY年MMMD日ddddLT", + l : "YYYY年MMMD日", + ll : "YYYY年MMMD日", + lll : "YYYY年MMMD日LT", + llll : "YYYY年MMMD日ddddLT" + }, + meridiem : function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 900) { + return "早上"; + } else if (hm < 1130) { + return "上午"; + } else if (hm < 1230) { + return "中午"; + } else if (hm < 1800) { + return "下午"; + } else { + return "晚上"; + } + }, + calendar : { + sameDay : '[今天]LT', + nextDay : '[明天]LT', + nextWeek : '[下]ddddLT', + lastDay : '[昨天]LT', + lastWeek : '[上]ddddLT', + sameElse : 'L' + }, + ordinal : function (number, period) { + switch (period) { + case "d" : + case "D" : + case "DDD" : + return number + "日"; + case "M" : + return number + "月"; + case "w" : + case "W" : + return number + "週"; + default : + return number; + } + }, + relativeTime : { + future : "%s內", + past : "%s前", + s : "幾秒", + m : "一分鐘", + mm : "%d分鐘", + h : "一小時", + hh : "%d小時", + d : "一天", + dd : "%d天", + M : "一個月", + MM : "%d個月", + y : "一年", + yy : "%d年" + } + }); +})); + + moment.lang('en'); + + + /************************************ + Exposing Moment + ************************************/ + + function makeGlobal(deprecate) { + var warned = false, local_moment = moment; + /*global ender:false */ + if (typeof ender !== 'undefined') { + return; + } + // here, `this` means `window` in the browser, or `global` on the server + // add `moment` as a global object via a string identifier, + // for Closure Compiler "advanced" mode + if (deprecate) { + global.moment = function () { + if (!warned && console && console.warn) { + warned = true; + console.warn( + "Accessing Moment through the global scope is " + + "deprecated, and will be removed in an upcoming " + + "release."); + } + return local_moment.apply(null, arguments); + }; + extend(global.moment, local_moment); + } else { + global['moment'] = moment; + } + } + + // CommonJS module is defined + if (hasModule) { + module.exports = moment; + makeGlobal(true); + } else if (typeof define === "function" && define.amd) { + define("moment", function (require, exports, module) { + if (module.config && module.config() && module.config().noGlobal !== true) { + // If user provided noGlobal, he is aware of global + makeGlobal(module.config().noGlobal === undefined); + } + + return moment; + }); + } else { + makeGlobal(); + } +}).call(this); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/min/moment-with-langs.min.js b/static/bootstrap-datetimepicker-master/moment-develop/min/moment-with-langs.min.js new file mode 100755 index 0000000..c200447 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/min/moment-with-langs.min.js @@ -0,0 +1,9 @@ +//! moment.js +//! version : 2.5.1 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com +(function(a){function b(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function c(a,b){return function(c){return k(a.call(this,c),b)}}function d(a,b){return function(c){return this.lang().ordinal(a.call(this,c),b)}}function e(){}function f(a){w(a),h(this,a)}function g(a){var b=q(a),c=b.year||0,d=b.month||0,e=b.week||0,f=b.day||0,g=b.hour||0,h=b.minute||0,i=b.second||0,j=b.millisecond||0;this._milliseconds=+j+1e3*i+6e4*h+36e5*g,this._days=+f+7*e,this._months=+d+12*c,this._data={},this._bubble()}function h(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return b.hasOwnProperty("toString")&&(a.toString=b.toString),b.hasOwnProperty("valueOf")&&(a.valueOf=b.valueOf),a}function i(a){var b,c={};for(b in a)a.hasOwnProperty(b)&&qb.hasOwnProperty(b)&&(c[b]=a[b]);return c}function j(a){return 0>a?Math.ceil(a):Math.floor(a)}function k(a,b,c){for(var d=""+Math.abs(a),e=a>=0;d.lengthd;d++)(c&&a[d]!==b[d]||!c&&s(a[d])!==s(b[d]))&&g++;return g+f}function p(a){if(a){var b=a.toLowerCase().replace(/(.)s$/,"$1");a=Tb[a]||Ub[b]||b}return a}function q(a){var b,c,d={};for(c in a)a.hasOwnProperty(c)&&(b=p(c),b&&(d[b]=a[c]));return d}function r(b){var c,d;if(0===b.indexOf("week"))c=7,d="day";else{if(0!==b.indexOf("month"))return;c=12,d="month"}db[b]=function(e,f){var g,h,i=db.fn._lang[b],j=[];if("number"==typeof e&&(f=e,e=a),h=function(a){var b=db().utc().set(d,a);return i.call(db.fn._lang,b,e||"")},null!=f)return h(f);for(g=0;c>g;g++)j.push(h(g));return j}}function s(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=b>=0?Math.floor(b):Math.ceil(b)),c}function t(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function u(a){return v(a)?366:365}function v(a){return a%4===0&&a%100!==0||a%400===0}function w(a){var b;a._a&&-2===a._pf.overflow&&(b=a._a[jb]<0||a._a[jb]>11?jb:a._a[kb]<1||a._a[kb]>t(a._a[ib],a._a[jb])?kb:a._a[lb]<0||a._a[lb]>23?lb:a._a[mb]<0||a._a[mb]>59?mb:a._a[nb]<0||a._a[nb]>59?nb:a._a[ob]<0||a._a[ob]>999?ob:-1,a._pf._overflowDayOfYear&&(ib>b||b>kb)&&(b=kb),a._pf.overflow=b)}function x(a){return null==a._isValid&&(a._isValid=!isNaN(a._d.getTime())&&a._pf.overflow<0&&!a._pf.empty&&!a._pf.invalidMonth&&!a._pf.nullInput&&!a._pf.invalidFormat&&!a._pf.userInvalidated,a._strict&&(a._isValid=a._isValid&&0===a._pf.charsLeftOver&&0===a._pf.unusedTokens.length)),a._isValid}function y(a){return a?a.toLowerCase().replace("_","-"):a}function z(a,b){return b._isUTC?db(a).zone(b._offset||0):db(a).local()}function A(a,b){return b.abbr=a,pb[a]||(pb[a]=new e),pb[a].set(b),pb[a]}function B(a){delete pb[a]}function C(a){var b,c,d,e,f=0,g=function(a){if(!pb[a]&&rb)try{require("./lang/"+a)}catch(b){}return pb[a]};if(!a)return db.fn._lang;if(!m(a)){if(c=g(a))return c;a=[a]}for(;f0;){if(c=g(e.slice(0,b).join("-")))return c;if(d&&d.length>=b&&o(e,d,!0)>=b-1)break;b--}f++}return db.fn._lang}function D(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function E(a){var b,c,d=a.match(vb);for(b=0,c=d.length;c>b;b++)d[b]=Yb[d[b]]?Yb[d[b]]:D(d[b]);return function(e){var f="";for(b=0;c>b;b++)f+=d[b]instanceof Function?d[b].call(e,a):d[b];return f}}function F(a,b){return a.isValid()?(b=G(b,a.lang()),Vb[b]||(Vb[b]=E(b)),Vb[b](a)):a.lang().invalidDate()}function G(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(wb.lastIndex=0;d>=0&&wb.test(a);)a=a.replace(wb,c),wb.lastIndex=0,d-=1;return a}function H(a,b){var c,d=b._strict;switch(a){case"DDDD":return Ib;case"YYYY":case"GGGG":case"gggg":return d?Jb:zb;case"Y":case"G":case"g":return Lb;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return d?Kb:Ab;case"S":if(d)return Gb;case"SS":if(d)return Hb;case"SSS":if(d)return Ib;case"DDD":return yb;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Cb;case"a":case"A":return C(b._l)._meridiemParse;case"X":return Fb;case"Z":case"ZZ":return Db;case"T":return Eb;case"SSSS":return Bb;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return d?Hb:xb;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return xb;default:return c=new RegExp(P(O(a.replace("\\","")),"i"))}}function I(a){a=a||"";var b=a.match(Db)||[],c=b[b.length-1]||[],d=(c+"").match(Qb)||["-",0,0],e=+(60*d[1])+s(d[2]);return"+"===d[0]?-e:e}function J(a,b,c){var d,e=c._a;switch(a){case"M":case"MM":null!=b&&(e[jb]=s(b)-1);break;case"MMM":case"MMMM":d=C(c._l).monthsParse(b),null!=d?e[jb]=d:c._pf.invalidMonth=b;break;case"D":case"DD":null!=b&&(e[kb]=s(b));break;case"DDD":case"DDDD":null!=b&&(c._dayOfYear=s(b));break;case"YY":e[ib]=s(b)+(s(b)>68?1900:2e3);break;case"YYYY":case"YYYYY":case"YYYYYY":e[ib]=s(b);break;case"a":case"A":c._isPm=C(c._l).isPM(b);break;case"H":case"HH":case"h":case"hh":e[lb]=s(b);break;case"m":case"mm":e[mb]=s(b);break;case"s":case"ss":e[nb]=s(b);break;case"S":case"SS":case"SSS":case"SSSS":e[ob]=s(1e3*("0."+b));break;case"X":c._d=new Date(1e3*parseFloat(b));break;case"Z":case"ZZ":c._useUTC=!0,c._tzm=I(b);break;case"w":case"ww":case"W":case"WW":case"d":case"dd":case"ddd":case"dddd":case"e":case"E":a=a.substr(0,1);case"gg":case"gggg":case"GG":case"GGGG":case"GGGGG":a=a.substr(0,2),b&&(c._w=c._w||{},c._w[a]=b)}}function K(a){var b,c,d,e,f,g,h,i,j,k,l=[];if(!a._d){for(d=M(a),a._w&&null==a._a[kb]&&null==a._a[jb]&&(f=function(b){var c=parseInt(b,10);return b?b.length<3?c>68?1900+c:2e3+c:c:null==a._a[ib]?db().weekYear():a._a[ib]},g=a._w,null!=g.GG||null!=g.W||null!=g.E?h=Z(f(g.GG),g.W||1,g.E,4,1):(i=C(a._l),j=null!=g.d?V(g.d,i):null!=g.e?parseInt(g.e,10)+i._week.dow:0,k=parseInt(g.w,10)||1,null!=g.d&&ju(e)&&(a._pf._overflowDayOfYear=!0),c=U(e,0,a._dayOfYear),a._a[jb]=c.getUTCMonth(),a._a[kb]=c.getUTCDate()),b=0;3>b&&null==a._a[b];++b)a._a[b]=l[b]=d[b];for(;7>b;b++)a._a[b]=l[b]=null==a._a[b]?2===b?1:0:a._a[b];l[lb]+=s((a._tzm||0)/60),l[mb]+=s((a._tzm||0)%60),a._d=(a._useUTC?U:T).apply(null,l)}}function L(a){var b;a._d||(b=q(a._i),a._a=[b.year,b.month,b.day,b.hour,b.minute,b.second,b.millisecond],K(a))}function M(a){var b=new Date;return a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function N(a){a._a=[],a._pf.empty=!0;var b,c,d,e,f,g=C(a._l),h=""+a._i,i=h.length,j=0;for(d=G(a._f,g).match(vb)||[],b=0;b0&&a._pf.unusedInput.push(f),h=h.slice(h.indexOf(c)+c.length),j+=c.length),Yb[e]?(c?a._pf.empty=!1:a._pf.unusedTokens.push(e),J(e,c,a)):a._strict&&!c&&a._pf.unusedTokens.push(e);a._pf.charsLeftOver=i-j,h.length>0&&a._pf.unusedInput.push(h),a._isPm&&a._a[lb]<12&&(a._a[lb]+=12),a._isPm===!1&&12===a._a[lb]&&(a._a[lb]=0),K(a),w(a)}function O(a){return a.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e})}function P(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Q(a){var c,d,e,f,g;if(0===a._f.length)return a._pf.invalidFormat=!0,a._d=new Date(0/0),void 0;for(f=0;fg)&&(e=g,d=c));h(a,d||c)}function R(a){var b,c,d=a._i,e=Mb.exec(d);if(e){for(a._pf.iso=!0,b=0,c=Ob.length;c>b;b++)if(Ob[b][1].exec(d)){a._f=Ob[b][0]+(e[6]||" ");break}for(b=0,c=Pb.length;c>b;b++)if(Pb[b][1].exec(d)){a._f+=Pb[b][0];break}d.match(Db)&&(a._f+="Z"),N(a)}else a._d=new Date(d)}function S(b){var c=b._i,d=sb.exec(c);c===a?b._d=new Date:d?b._d=new Date(+d[1]):"string"==typeof c?R(b):m(c)?(b._a=c.slice(0),K(b)):n(c)?b._d=new Date(+c):"object"==typeof c?L(b):b._d=new Date(c)}function T(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 1970>a&&h.setFullYear(a),h}function U(a){var b=new Date(Date.UTC.apply(null,arguments));return 1970>a&&b.setUTCFullYear(a),b}function V(a,b){if("string"==typeof a)if(isNaN(a)){if(a=b.weekdaysParse(a),"number"!=typeof a)return null}else a=parseInt(a,10);return a}function W(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function X(a,b,c){var d=hb(Math.abs(a)/1e3),e=hb(d/60),f=hb(e/60),g=hb(f/24),h=hb(g/365),i=45>d&&["s",d]||1===e&&["m"]||45>e&&["mm",e]||1===f&&["h"]||22>f&&["hh",f]||1===g&&["d"]||25>=g&&["dd",g]||45>=g&&["M"]||345>g&&["MM",hb(g/30)]||1===h&&["y"]||["yy",h];return i[2]=b,i[3]=a>0,i[4]=c,W.apply({},i)}function Y(a,b,c){var d,e=c-b,f=c-a.day();return f>e&&(f-=7),e-7>f&&(f+=7),d=db(a).add("d",f),{week:Math.ceil(d.dayOfYear()/7),year:d.year()}}function Z(a,b,c,d,e){var f,g,h=U(a,0,1).getUTCDay();return c=null!=c?c:e,f=e-h+(h>d?7:0)-(e>h?7:0),g=7*(b-1)+(c-e)+f+1,{year:g>0?a:a-1,dayOfYear:g>0?g:u(a-1)+g}}function $(a){var b=a._i,c=a._f;return null===b?db.invalid({nullInput:!0}):("string"==typeof b&&(a._i=b=C().preparse(b)),db.isMoment(b)?(a=i(b),a._d=new Date(+b._d)):c?m(c)?Q(a):N(a):S(a),new f(a))}function _(a,b){db.fn[a]=db.fn[a+"s"]=function(a){var c=this._isUTC?"UTC":"";return null!=a?(this._d["set"+c+b](a),db.updateOffset(this),this):this._d["get"+c+b]()}}function ab(a){db.duration.fn[a]=function(){return this._data[a]}}function bb(a,b){db.duration.fn["as"+a]=function(){return+this/b}}function cb(a){var b=!1,c=db;"undefined"==typeof ender&&(a?(gb.moment=function(){return!b&&console&&console.warn&&(b=!0,console.warn("Accessing Moment through the global scope is deprecated, and will be removed in an upcoming release.")),c.apply(null,arguments)},h(gb.moment,c)):gb.moment=db)}for(var db,eb,fb="2.5.1",gb=this,hb=Math.round,ib=0,jb=1,kb=2,lb=3,mb=4,nb=5,ob=6,pb={},qb={_isAMomentObject:null,_i:null,_f:null,_l:null,_strict:null,_isUTC:null,_offset:null,_pf:null,_lang:null},rb="undefined"!=typeof module&&module.exports&&"undefined"!=typeof require,sb=/^\/?Date\((\-?\d+)/i,tb=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,ub=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,vb=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g,wb=/(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,xb=/\d\d?/,yb=/\d{1,3}/,zb=/\d{1,4}/,Ab=/[+\-]?\d{1,6}/,Bb=/\d+/,Cb=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Db=/Z|[\+\-]\d\d:?\d\d/gi,Eb=/T/i,Fb=/[\+\-]?\d+(\.\d{1,3})?/,Gb=/\d/,Hb=/\d\d/,Ib=/\d{3}/,Jb=/\d{4}/,Kb=/[+-]?\d{6}/,Lb=/[+-]?\d+/,Mb=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Nb="YYYY-MM-DDTHH:mm:ssZ",Ob=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],Pb=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d{1,3}/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],Qb=/([\+\-]|\d\d)/gi,Rb="Date|Hours|Minutes|Seconds|Milliseconds".split("|"),Sb={Milliseconds:1,Seconds:1e3,Minutes:6e4,Hours:36e5,Days:864e5,Months:2592e6,Years:31536e6},Tb={ms:"millisecond",s:"second",m:"minute",h:"hour",d:"day",D:"date",w:"week",W:"isoWeek",M:"month",y:"year",DDD:"dayOfYear",e:"weekday",E:"isoWeekday",gg:"weekYear",GG:"isoWeekYear"},Ub={dayofyear:"dayOfYear",isoweekday:"isoWeekday",isoweek:"isoWeek",weekyear:"weekYear",isoweekyear:"isoWeekYear"},Vb={},Wb="DDD w W M D d".split(" "),Xb="M D H h m s w W".split(" "),Yb={M:function(){return this.month()+1},MMM:function(a){return this.lang().monthsShort(this,a)},MMMM:function(a){return this.lang().months(this,a)},D:function(){return this.date()},DDD:function(){return this.dayOfYear()},d:function(){return this.day()},dd:function(a){return this.lang().weekdaysMin(this,a)},ddd:function(a){return this.lang().weekdaysShort(this,a)},dddd:function(a){return this.lang().weekdays(this,a)},w:function(){return this.week()},W:function(){return this.isoWeek()},YY:function(){return k(this.year()%100,2)},YYYY:function(){return k(this.year(),4)},YYYYY:function(){return k(this.year(),5)},YYYYYY:function(){var a=this.year(),b=a>=0?"+":"-";return b+k(Math.abs(a),6)},gg:function(){return k(this.weekYear()%100,2)},gggg:function(){return k(this.weekYear(),4)},ggggg:function(){return k(this.weekYear(),5)},GG:function(){return k(this.isoWeekYear()%100,2)},GGGG:function(){return k(this.isoWeekYear(),4)},GGGGG:function(){return k(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.lang().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.lang().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return s(this.milliseconds()/100)},SS:function(){return k(s(this.milliseconds()/10),2)},SSS:function(){return k(this.milliseconds(),3)},SSSS:function(){return k(this.milliseconds(),3)},Z:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+k(s(a/60),2)+":"+k(s(a)%60,2)},ZZ:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+k(s(a/60),2)+k(s(a)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Zb=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];Wb.length;)eb=Wb.pop(),Yb[eb+"o"]=d(Yb[eb],eb);for(;Xb.length;)eb=Xb.pop(),Yb[eb+eb]=c(Yb[eb],2);for(Yb.DDDD=c(Yb.DDD,3),h(e.prototype,{set:function(a){var b,c;for(c in a)b=a[c],"function"==typeof b?this[c]=b:this["_"+c]=b},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(a){return this._months[a.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(a){return this._monthsShort[a.month()]},monthsParse:function(a){var b,c,d;for(this._monthsParse||(this._monthsParse=[]),b=0;12>b;b++)if(this._monthsParse[b]||(c=db.utc([2e3,b]),d="^"+this.months(c,"")+"|^"+this.monthsShort(c,""),this._monthsParse[b]=new RegExp(d.replace(".",""),"i")),this._monthsParse[b].test(a))return b},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(a){return this._weekdays[a.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(a){return this._weekdaysShort[a.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(a){return this._weekdaysMin[a.day()]},weekdaysParse:function(a){var b,c,d;for(this._weekdaysParse||(this._weekdaysParse=[]),b=0;7>b;b++)if(this._weekdaysParse[b]||(c=db([2e3,1]).day(b),d="^"+this.weekdays(c,"")+"|^"+this.weekdaysShort(c,"")+"|^"+this.weekdaysMin(c,""),this._weekdaysParse[b]=new RegExp(d.replace(".",""),"i")),this._weekdaysParse[b].test(a))return b},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D YYYY",LLL:"MMMM D YYYY LT",LLLL:"dddd, MMMM D YYYY LT"},longDateFormat:function(a){var b=this._longDateFormat[a];return!b&&this._longDateFormat[a.toUpperCase()]&&(b=this._longDateFormat[a.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a]=b),b},isPM:function(a){return"p"===(a+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(a,b){var c=this._calendar[a];return"function"==typeof c?c.apply(b):c},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(a,b,c,d){var e=this._relativeTime[c];return"function"==typeof e?e(a,b,c,d):e.replace(/%d/i,a)},pastFuture:function(a,b){var c=this._relativeTime[a>0?"future":"past"];return"function"==typeof c?c(b):c.replace(/%s/i,b)},ordinal:function(a){return this._ordinal.replace("%d",a)},_ordinal:"%d",preparse:function(a){return a},postformat:function(a){return a},week:function(a){return Y(a,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),db=function(c,d,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._i=c,g._f=d,g._l=e,g._strict=f,g._isUTC=!1,g._pf=b(),$(g)},db.utc=function(c,d,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._useUTC=!0,g._isUTC=!0,g._l=e,g._i=c,g._f=d,g._strict=f,g._pf=b(),$(g).utc()},db.unix=function(a){return db(1e3*a)},db.duration=function(a,b){var c,d,e,f=a,h=null;return db.isDuration(a)?f={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(f={},b?f[b]=a:f.milliseconds=a):(h=tb.exec(a))?(c="-"===h[1]?-1:1,f={y:0,d:s(h[kb])*c,h:s(h[lb])*c,m:s(h[mb])*c,s:s(h[nb])*c,ms:s(h[ob])*c}):(h=ub.exec(a))&&(c="-"===h[1]?-1:1,e=function(a){var b=a&&parseFloat(a.replace(",","."));return(isNaN(b)?0:b)*c},f={y:e(h[2]),M:e(h[3]),d:e(h[4]),h:e(h[5]),m:e(h[6]),s:e(h[7]),w:e(h[8])}),d=new g(f),db.isDuration(a)&&a.hasOwnProperty("_lang")&&(d._lang=a._lang),d},db.version=fb,db.defaultFormat=Nb,db.updateOffset=function(){},db.lang=function(a,b){var c;return a?(b?A(y(a),b):null===b?(B(a),a="en"):pb[a]||C(a),c=db.duration.fn._lang=db.fn._lang=C(a),c._abbr):db.fn._lang._abbr},db.langData=function(a){return a&&a._lang&&a._lang._abbr&&(a=a._lang._abbr),C(a)},db.isMoment=function(a){return a instanceof f||null!=a&&a.hasOwnProperty("_isAMomentObject")},db.isDuration=function(a){return a instanceof g},eb=Zb.length-1;eb>=0;--eb)r(Zb[eb]);for(db.normalizeUnits=function(a){return p(a)},db.invalid=function(a){var b=db.utc(0/0);return null!=a?h(b._pf,a):b._pf.userInvalidated=!0,b},db.parseZone=function(a){return db(a).parseZone()},h(db.fn=f.prototype,{clone:function(){return db(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().lang("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var a=db(this).utc();return 00:!1},parsingFlags:function(){return h({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(){return this.zone(0)},local:function(){return this.zone(0),this._isUTC=!1,this},format:function(a){var b=F(this,a||db.defaultFormat);return this.lang().postformat(b)},add:function(a,b){var c;return c="string"==typeof a?db.duration(+b,a):db.duration(a,b),l(this,c,1),this},subtract:function(a,b){var c;return c="string"==typeof a?db.duration(+b,a):db.duration(a,b),l(this,c,-1),this},diff:function(a,b,c){var d,e,f=z(a,this),g=6e4*(this.zone()-f.zone());return b=p(b),"year"===b||"month"===b?(d=432e5*(this.daysInMonth()+f.daysInMonth()),e=12*(this.year()-f.year())+(this.month()-f.month()),e+=(this-db(this).startOf("month")-(f-db(f).startOf("month")))/d,e-=6e4*(this.zone()-db(this).startOf("month").zone()-(f.zone()-db(f).startOf("month").zone()))/d,"year"===b&&(e/=12)):(d=this-f,e="second"===b?d/1e3:"minute"===b?d/6e4:"hour"===b?d/36e5:"day"===b?(d-g)/864e5:"week"===b?(d-g)/6048e5:d),c?e:j(e)},from:function(a,b){return db.duration(this.diff(a)).lang(this.lang()._abbr).humanize(!b)},fromNow:function(a){return this.from(db(),a)},calendar:function(){var a=z(db(),this).startOf("day"),b=this.diff(a,"days",!0),c=-6>b?"sameElse":-1>b?"lastWeek":0>b?"lastDay":1>b?"sameDay":2>b?"nextDay":7>b?"nextWeek":"sameElse";return this.format(this.lang().calendar(c,this))},isLeapYear:function(){return v(this.year())},isDST:function(){return this.zone()+db(a).startOf(b)},isBefore:function(a,b){return b="undefined"!=typeof b?b:"millisecond",+this.clone().startOf(b)<+db(a).startOf(b)},isSame:function(a,b){return b=b||"ms",+this.clone().startOf(b)===+z(a,this).startOf(b)},min:function(a){return a=db.apply(null,arguments),this>a?this:a},max:function(a){return a=db.apply(null,arguments),a>this?this:a},zone:function(a){var b=this._offset||0;return null==a?this._isUTC?b:this._d.getTimezoneOffset():("string"==typeof a&&(a=I(a)),Math.abs(a)<16&&(a=60*a),this._offset=a,this._isUTC=!0,b!==a&&l(this,db.duration(b-a,"m"),1,!0),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.zone(this._tzm):"string"==typeof this._i&&this.zone(this._i),this},hasAlignedHourOffset:function(a){return a=a?db(a).zone():0,(this.zone()-a)%60===0},daysInMonth:function(){return t(this.year(),this.month())},dayOfYear:function(a){var b=hb((db(this).startOf("day")-db(this).startOf("year"))/864e5)+1;return null==a?b:this.add("d",a-b)},quarter:function(){return Math.ceil((this.month()+1)/3)},weekYear:function(a){var b=Y(this,this.lang()._week.dow,this.lang()._week.doy).year;return null==a?b:this.add("y",a-b)},isoWeekYear:function(a){var b=Y(this,1,4).year;return null==a?b:this.add("y",a-b)},week:function(a){var b=this.lang().week(this);return null==a?b:this.add("d",7*(a-b))},isoWeek:function(a){var b=Y(this,1,4).week;return null==a?b:this.add("d",7*(a-b))},weekday:function(a){var b=(this.day()+7-this.lang()._week.dow)%7;return null==a?b:this.add("d",a-b)},isoWeekday:function(a){return null==a?this.day()||7:this.day(this.day()%7?a:a-7)},get:function(a){return a=p(a),this[a]()},set:function(a,b){return a=p(a),"function"==typeof this[a]&&this[a](b),this},lang:function(b){return b===a?this._lang:(this._lang=C(b),this)}}),eb=0;eb10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}})}),function(a){a(db)}(function(b){function c(a,b,c){var d={mm:"munutenn",MM:"miz",dd:"devezh"};return a+" "+f(d[c],a)}function d(a){switch(e(a)){case 1:case 3:case 4:case 5:case 9:return a+" bloaz";default:return a+" vloaz"}}function e(a){return a>9?e(a%10):a}function f(a,b){return 2===b?g(a):a}function g(b){var c={m:"v",b:"v",d:"z"};return c[b.charAt(0)]===a?b:c[b.charAt(0)]+b.substring(1)}return b.lang("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),longDateFormat:{LT:"h[e]mm A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY LT",LLLL:"dddd, D [a viz] MMMM YYYY LT"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",m:"ur vunutenn",mm:c,h:"un eur",hh:"%d eur",d:"un devezh",dd:c,M:"ur miz",MM:c,y:"ur bloaz",yy:d},ordinal:function(a){var b=1===a?"añ":"vet";return a+b},week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){function b(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}return a.lang("bs",{months:"januar_februar_mart_april_maj_juni_juli_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:b,mm:b,h:b,hh:b,d:"dan",dd:b,M:"mjesec",MM:b,y:"godinu",yy:b},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("ca",{months:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),monthsShort:"gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"),weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT" +},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinal:"%dº",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){function b(a){return a>1&&5>a&&1!==~~(a/10)}function c(a,c,d,e){var f=a+" ";switch(d){case"s":return c||e?"pár vteřin":"pár vteřinami";case"m":return c?"minuta":e?"minutu":"minutou";case"mm":return c||e?f+(b(a)?"minuty":"minut"):f+"minutami";break;case"h":return c?"hodina":e?"hodinu":"hodinou";case"hh":return c||e?f+(b(a)?"hodiny":"hodin"):f+"hodinami";break;case"d":return c||e?"den":"dnem";case"dd":return c||e?f+(b(a)?"dny":"dní"):f+"dny";break;case"M":return c||e?"měsíc":"měsícem";case"MM":return c||e?f+(b(a)?"měsíce":"měsíců"):f+"měsíci";break;case"y":return c||e?"rok":"rokem";case"yy":return c||e?f+(b(a)?"roky":"let"):f+"lety"}}var d="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),e="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_");return a.lang("cs",{months:d,monthsShort:e,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(d,e),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd D. MMMM YYYY LT"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:c,m:c,mm:c,h:c,hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("cv",{months:"кăрлач_нарăс_пуш_ака_май_çĕртме_утă_çурла_авăн_юпа_чӳк_раштав".split("_"),monthsShort:"кăр_нар_пуш_ака_май_çĕр_утă_çур_ав_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кĕçнерникун_эрнекун_шăматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кĕç_эрн_шăм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кç_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",L:"DD-MM-YYYY",LL:"YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ]",LLL:"YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT",LLLL:"dddd, YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ĕнер] LT [сехетре]",nextWeek:"[Çитес] dddd LT [сехетре]",lastWeek:"[Иртнĕ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(a){var b=/сехет$/i.exec(a)?"рен":/çул$/i.exec(a)?"тан":"ран";return a+b},past:"%s каялла",s:"пĕр-ик çеккунт",m:"пĕр минут",mm:"%d минут",h:"пĕр сехет",hh:"%d сехет",d:"пĕр кун",dd:"%d кун",M:"пĕр уйăх",MM:"%d уйăх",y:"пĕр çул",yy:"%d çул"},ordinal:"%d-мĕш",week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn àl",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},ordinal:function(a){var b=a,c="",d=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"];return b>20?c=40===b||50===b||60===b||80===b||100===b?"fed":"ain":b>0&&(c=d[b]),a+c},week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D. MMMM, YYYY LT"},calendar:{sameDay:"[I dag kl.] LT",nextDay:"[I morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[I går kl.] LT",lastWeek:"[sidste] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){function b(a,b,c){var d={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?d[c][0]:d[c][1]}return a.lang("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),longDateFormat:{LT:"H:mm [Uhr]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[Heute um] LT",sameElse:"L",nextDay:"[Morgen um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gestern um] LT",lastWeek:"[letzten] dddd [um] LT"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:b,mm:"%d Minuten",h:b,hh:"%d Stunden",d:b,dd:b,M:b,MM:b,y:b,yy:b},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(a,b){return/D/.test(b.substring(0,b.indexOf("MMMM")))?this._monthsGenitiveEl[a.month()]:this._monthsNominativeEl[a.month()]},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(a,b,c){return a>11?c?"μμ":"ΜΜ":c?"πμ":"ΠΜ"},longDateFormat:{LT:"h:mm A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:"[την προηγούμενη] dddd [{}] LT",sameElse:"L"},calendar:function(a,b){var c=this._calendarEl[a],d=b&&b.hours();return c.replace("{}",d%12===1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},ordinal:function(a){return a+"η"},week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",L:"YYYY-MM-DD",LL:"D MMMM, YYYY",LLL:"D MMMM, YYYY LT",LLLL:"dddd, D MMMM, YYYY LT"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}})}),function(a){a(db)}(function(a){return a.lang("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"),weekdaysShort:"Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Ĵa_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D[-an de] MMMM, YYYY",LLL:"D[-an de] MMMM, YYYY LT",LLLL:"dddd, [la] D[-an de] MMMM, YYYY LT"},meridiem:function(a,b,c){return a>11?c?"p.t.m.":"P.T.M.":c?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"je %s",past:"antaŭ %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},ordinal:"%da",week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"Do_Lu_Ma_Mi_Ju_Vi_Sá".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY LT",LLLL:"dddd, D [de] MMMM [de] YYYY LT"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinal:"%dº",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){function b(a,b,c,d){var e={s:["mõne sekundi","mõni sekund","paar sekundit"],m:["ühe minuti","üks minut"],mm:[a+" minuti",a+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[a+" tunni",a+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[a+" kuu",a+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[a+" aasta",a+" aastat"]};return b?e[c][2]?e[c][2]:e[c][1]:d?e[c][0]:e[c][1]}return a.lang("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:b,m:b,mm:b,h:b,hh:b,d:b,dd:"%d päeva",M:b,MM:b,y:b,yy:b},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] LT",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] LT",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] LT",llll:"ddd, YYYY[ko] MMM D[a] LT"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){var b={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},c={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};return a.lang("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},meridiem:function(a){return 12>a?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چندین ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(a){return a.replace(/[۰-۹]/g,function(a){return c[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]}).replace(/,/g,"،")},ordinal:"%dم",week:{dow:6,doy:12}})}),function(a){a(db)}(function(a){function b(a,b,d,e){var f="";switch(d){case"s":return e?"muutaman sekunnin":"muutama sekunti";case"m":return e?"minuutin":"minuutti";case"mm":f=e?"minuutin":"minuuttia";break;case"h":return e?"tunnin":"tunti";case"hh":f=e?"tunnin":"tuntia";break;case"d":return e?"päivän":"päivä";case"dd":f=e?"päivän":"päivää";break;case"M":return e?"kuukauden":"kuukausi";case"MM":f=e?"kuukauden":"kuukautta";break;case"y":return e?"vuoden":"vuosi";case"yy":f=e?"vuoden":"vuotta"}return f=c(a,e)+" "+f}function c(a,b){return 10>a?b?e[a]:d[a]:a}var d="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),e=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",d[7],d[8],d[9]];return a.lang("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] LT",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] LT",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] LT",llll:"ddd, Do MMM YYYY, [klo] LT"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:b,m:b,mm:b,h:b,hh:b,d:b,dd:b,M:b,MM:b,y:b,yy:b},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D. MMMM, YYYY LT"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",m:"ein minutt",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaði",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(a){return a+(1===a?"er":"")}})}),function(a){a(db)}(function(a){return a.lang("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(a){return a+(1===a?"er":"")},week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("gl",{months:"Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"),monthsShort:"Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.".split("_"),weekdays:"Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado".split("_"),weekdaysShort:"Dom._Lun._Mar._Mér._Xov._Ven._Sáb.".split("_"),weekdaysMin:"Do_Lu_Ma_Mé_Xo_Ve_Sá".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(a){return"uns segundos"===a?"nuns segundos":"en "+a},past:"hai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},ordinal:"%dº",week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY LT",LLLL:"dddd, D [ב]MMMM YYYY LT",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY LT",llll:"ddd, D MMM YYYY LT"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(a){return 2===a?"שעתיים":a+" שעות"},d:"יום",dd:function(a){return 2===a?"יומיים":a+" ימים"},M:"חודש",MM:function(a){return 2===a?"חודשיים":a+" חודשים"},y:"שנה",yy:function(a){return 2===a?"שנתיים":a+" שנים"}}})}),function(a){a(db)}(function(a){var b={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},c={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return a.lang("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return c[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]})},meridiem:function(a){return 4>a?"रात":10>a?"सुबह":17>a?"दोपहर":20>a?"शाम":"रात"},week:{dow:0,doy:6}})}),function(a){a(db)}(function(a){function b(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}return a.lang("hr",{months:"sječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_"),monthsShort:"sje._vel._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:b,mm:b,h:b,hh:b,d:"dan",dd:b,M:"mjesec",MM:b,y:"godinu",yy:b},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){function b(a,b,c,d){var e=a;switch(c){case"s":return d||b?"néhány másodperc":"néhány másodperce";case"m":return"egy"+(d||b?" perc":" perce");case"mm":return e+(d||b?" perc":" perce");case"h":return"egy"+(d||b?" óra":" órája");case"hh":return e+(d||b?" óra":" órája");case"d":return"egy"+(d||b?" nap":" napja");case"dd":return e+(d||b?" nap":" napja");case"M":return"egy"+(d||b?" hónap":" hónapja");case"MM":return e+(d||b?" hónap":" hónapja");case"y":return"egy"+(d||b?" év":" éve");case"yy":return e+(d||b?" év":" éve")}return""}function c(a){return(a?"":"[múlt] ")+"["+d[this.day()]+"] LT[-kor]"}var d="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");return a.lang("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D., LT",LLLL:"YYYY. MMMM D., dddd LT"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return c.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return c.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:b,m:b,mm:b,h:b,hh:b,d:b,dd:b,M:b,MM:b,y:b,yy:b},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){function b(a,b){var c={nominative:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_"),accusative:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function c(a){var b="հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_");return b[a.month()]}function d(a){var b="կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_");return b[a.day()]}return a.lang("hy-am",{months:b,monthsShort:c,weekdays:d,weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., LT",LLLL:"dddd, D MMMM YYYY թ., LT"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiem:function(a){return 4>a?"գիշերվա":12>a?"առավոտվա":17>a?"ցերեկվա":"երեկոյան"},ordinal:function(a,b){switch(b){case"DDD":case"w":case"W":case"DDDo":return 1===a?a+"-ին":a+"-րդ";default:return a}},week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] LT",LLLL:"dddd, D MMMM YYYY [pukul] LT"},meridiem:function(a){return 11>a?"pagi":15>a?"siang":19>a?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){function b(a){return a%100===11?!0:a%10===1?!1:!0}function c(a,c,d,e){var f=a+" ";switch(d){case"s":return c||e?"nokkrar sekúndur":"nokkrum sekúndum";case"m":return c?"mínúta":"mínútu";case"mm":return b(a)?f+(c||e?"mínútur":"mínútum"):c?f+"mínúta":f+"mínútu";case"hh":return b(a)?f+(c||e?"klukkustundir":"klukkustundum"):f+"klukkustund";case"d":return c?"dagur":e?"dag":"degi";case"dd":return b(a)?c?f+"dagar":f+(e?"daga":"dögum"):c?f+"dagur":f+(e?"dag":"degi");case"M":return c?"mánuður":e?"mánuð":"mánuði";case"MM":return b(a)?c?f+"mánuðir":f+(e?"mánuði":"mánuðum"):c?f+"mánuður":f+(e?"mánuð":"mánuði");case"y":return c||e?"ár":"ári";case"yy":return b(a)?f+(c||e?"ár":"árum"):f+(c||e?"ár":"ári")}}return a.lang("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] LT",LLLL:"dddd, D. MMMM YYYY [kl.] LT"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:c,m:c,mm:c,h:"klukkustund",hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinal:"%d.",week:{dow:1,doy:4}}) +}),function(a){a(db)}(function(a){return a.lang("it",{months:"Gennaio_Febbraio_Marzo_Aprile_Maggio_Giugno_Luglio_Agosto_Settembre_Ottobre_Novembre_Dicembre".split("_"),monthsShort:"Gen_Feb_Mar_Apr_Mag_Giu_Lug_Ago_Set_Ott_Nov_Dic".split("_"),weekdays:"Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"D_L_Ma_Me_G_V_S".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:"[lo scorso] dddd [alle] LT",sameElse:"L"},relativeTime:{future:function(a){return(/^[0-9].+$/.test(a)?"tra":"in")+" "+a},past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinal:"%dº",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("ja",{months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"Ah時m分",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日LT",LLLL:"YYYY年M月D日LT dddd"},meridiem:function(a){return 12>a?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},relativeTime:{future:"%s後",past:"%s前",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})}),function(a){a(db)}(function(a){function b(a,b){var c={nominative:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),accusative:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},d=/D[oD] *MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function c(a,b){var c={nominative:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),accusative:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_")},d=/(წინა|შემდეგ)/.test(b)?"accusative":"nominative";return c[d][a.day()]}return a.lang("ka",{months:b,monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:c,weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(a){return/(წამი|წუთი|საათი|წელი)/.test(a)?a.replace(/ი$/,"ში"):a+"ში"},past:function(a){return/(წამი|წუთი|საათი|დღე|თვე)/.test(a)?a.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(a)?a.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},ordinal:function(a){return 0===a?a:1===a?a+"-ლი":20>a||100>=a&&a%20===0||a%100===0?"მე-"+a:a+"-ე"},week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h시 mm분",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 LT",LLLL:"YYYY년 MMMM D일 dddd LT"},meridiem:function(a){return 12>a?"오전":"오후"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇초",ss:"%d초",m:"일분",mm:"%d분",h:"한시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한달",MM:"%d달",y:"일년",yy:"%d년"},ordinal:"%d일",meridiemParse:/(오전|오후)/,isPM:function(a){return"오후"===a}})}),function(a){a(db)}(function(a){function b(a,b,c){var d={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],dd:[a+" Deeg",a+" Deeg"],M:["ee Mount","engem Mount"],MM:[a+" Méint",a+" Méint"],y:["ee Joer","engem Joer"],yy:[a+" Joer",a+" Joer"]};return b?d[c][0]:d[c][1]}function c(a){var b=a.substr(0,a.indexOf(" "));return g(b)?"a "+a:"an "+a}function d(a){var b=a.substr(0,a.indexOf(" "));return g(b)?"viru "+a:"virun "+a}function e(){var a=this.format("d");return f(a)?"[Leschte] dddd [um] LT":"[Leschten] dddd [um] LT"}function f(a){switch(a=parseInt(a,10)){case 0:case 1:case 3:case 5:case 6:return!0;default:return!1}}function g(a){if(a=parseInt(a,10),isNaN(a))return!1;if(0>a)return!0;if(10>a)return a>=4&&7>=a?!0:!1;if(100>a){var b=a%10,c=a/10;return 0===b?g(c):g(b)}if(1e4>a){for(;a>=10;)a/=10;return g(a)}return a/=1e3,g(a)}return a.lang("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),longDateFormat:{LT:"H:mm [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:e},relativeTime:{future:c,past:d,s:"e puer Sekonnen",m:b,mm:"%d Minutten",h:b,hh:"%d Stonnen",d:b,dd:b,M:b,MM:b,y:b,yy:b},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){function b(a,b,c,d){return b?"kelios sekundės":d?"kelių sekundžių":"kelias sekundes"}function c(a,b,c,d){return b?e(c)[0]:d?e(c)[1]:e(c)[2]}function d(a){return a%10===0||a>10&&20>a}function e(a){return h[a].split("_")}function f(a,b,f,g){var h=a+" ";return 1===a?h+c(a,b,f[0],g):b?h+(d(a)?e(f)[1]:e(f)[0]):g?h+e(f)[1]:h+(d(a)?e(f)[1]:e(f)[2])}function g(a,b){var c=-1===b.indexOf("dddd LT"),d=i[a.weekday()];return c?d:d.substring(0,d.length-2)+"į"}var h={m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"},i="pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis_sekmadienis".split("_");return a.lang("lt",{months:"sausio_vasario_kovo_balandžio_gegužės_biržėlio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:g,weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], LT [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, LT [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], LT [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, LT [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:b,m:c,mm:f,h:c,hh:f,d:c,dd:f,M:c,MM:f,y:c,yy:f},ordinal:function(a){return a+"-oji"},week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){function b(a,b,c){var d=a.split("_");return c?b%10===1&&11!==b?d[2]:d[3]:b%10===1&&11!==b?d[0]:d[1]}function c(a,c,e){return a+" "+b(d[e],a,c)}var d={mm:"minūti_minūtes_minūte_minūtes",hh:"stundu_stundas_stunda_stundas",dd:"dienu_dienas_diena_dienas",MM:"mēnesi_mēnešus_mēnesis_mēneši",yy:"gadu_gadus_gads_gadi"};return a.lang("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, LT",LLLL:"YYYY. [gada] D. MMMM, dddd, LT"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"%s vēlāk",past:"%s agrāk",s:"dažas sekundes",m:"minūti",mm:c,h:"stundu",hh:c,d:"dienu",dd:c,M:"mēnesi",MM:c,y:"gadu",yy:c},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Во изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Во изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiem:function(a){return 4>a?"രാത്രി":12>a?"രാവിലെ":17>a?"ഉച്ച കഴിഞ്ഞ്":20>a?"വൈകുന്നേരം":"രാത്രി"}})}),function(a){a(db)}(function(a){var b={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},c={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return a.lang("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%s नंतर",past:"%s पूर्वी",s:"सेकंद",m:"एक मिनिट",mm:"%d मिनिटे",h:"एक तास",hh:"%d तास",d:"एक दिवस",dd:"%d दिवस",M:"एक महिना",MM:"%d महिने",y:"एक वर्ष",yy:"%d वर्षे"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return c[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]})},meridiem:function(a){return 4>a?"रात्री":10>a?"सकाळी":17>a?"दुपारी":20>a?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}),function(a){a(db)}(function(a){return a.lang("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] LT",LLLL:"dddd, D MMMM YYYY [pukul] LT"},meridiem:function(a){return 11>a?"pagi":15>a?"tengahari":19>a?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"H.mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] LT",LLLL:"dddd D. MMMM YYYY [kl.] LT"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){var b={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},c={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return a.lang("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आइ._सो._मङ्_बु._बि._शु._श.".split("_"),longDateFormat:{LT:"Aको h:mm बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return c[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]})},meridiem:function(a){return 3>a?"राती":10>a?"बिहान":15>a?"दिउँसो":18>a?"बेलुका":20>a?"साँझ":"राती"},calendar:{sameDay:"[आज] LT",nextDay:"[भोली] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडी",s:"केही समय",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){var b="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),c="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_");return a.lang("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(a,d){return/-MMM-/.test(d)?c[a.month()]:b[a.month()]},weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),longDateFormat:{LT:"HH:mm",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregående] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s siden",s:"noen sekund",m:"ett minutt",mm:"%d minutt",h:"en time",hh:"%d timar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){function b(a){return 5>a%10&&a%10>1&&~~(a/10)%10!==1}function c(a,c,d){var e=a+" ";switch(d){case"m":return c?"minuta":"minutę";case"mm":return e+(b(a)?"minuty":"minut");case"h":return c?"godzina":"godzinę";case"hh":return e+(b(a)?"godziny":"godzin");case"MM":return e+(b(a)?"miesiące":"miesięcy");case"yy":return e+(b(a)?"lata":"lat")}}var d="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),e="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");return a.lang("pl",{months:function(a,b){return/D MMMM/.test(b)?e[a.month()]:d[a.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"nie_pon_wt_śr_czw_pt_sb".split("_"),weekdaysMin:"N_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:"[W] dddd [o] LT",lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:c,mm:c,h:c,hh:c,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:c,y:"rok",yy:c},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY LT",LLLL:"dddd, D [de] MMMM [de] YYYY LT"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinal:"%dº"})}),function(a){a(db)}(function(a){return a.lang("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY LT",LLLL:"dddd, D [de] MMMM [de] YYYY LT"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinal:"%dº",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){function b(a,b,c){var d={mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},e=" ";return(a%100>=20||a>=100&&a%100===0)&&(e=" de "),a+e+d[c]}return a.lang("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian_feb_mar_apr_mai_iun_iul_aug_sep_oct_noi_dec".split("_"),weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",m:"un minut",mm:b,h:"o oră",hh:b,d:"o zi",dd:b,M:"o lună",MM:b,y:"un an",yy:b},week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){function b(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mesec":2===a||3===a||4===a?"meseca":"meseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}return a.lang("rs",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"par sekundi",m:b,mm:b,h:b,hh:b,d:"dan",dd:b,M:"mesec",MM:b,y:"godinu",yy:b},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){function b(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function c(a,c,d){var e={mm:"минута_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===d?c?"минута":"минуту":a+" "+b(e[d],+a)}function d(a,b){var c={nominative:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),accusative:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function e(a,b){var c={nominative:"янв_фев_мар_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),accusative:"янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function f(a,b){var c={nominative:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),accusative:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_")},d=/\[ ?[Вв] ?(?:прошлую|следующую)? ?\] ?dddd/.test(b)?"accusative":"nominative";return c[d][a.day()]}return a.lang("ru",{months:d,monthsShort:e,weekdays:f,weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[й|я]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i],longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., LT",LLLL:"dddd, D MMMM YYYY г., LT"},calendar:{sameDay:"[Сегодня в] LT",nextDay:"[Завтра в] LT",lastDay:"[Вчера в] LT",nextWeek:function(){return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT"},lastWeek:function(){switch(this.day()){case 0:return"[В прошлое] dddd [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",m:c,mm:c,h:"час",hh:c,d:"день",dd:c,M:"месяц",MM:c,y:"год",yy:c},meridiem:function(a){return 4>a?"ночи":12>a?"утра":17>a?"дня":"вечера"},ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":return a+"-й";case"D":return a+"-го";case"w":case"W":return a+"-я";default:return a}},week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){function b(a){return a>1&&5>a}function c(a,c,d,e){var f=a+" ";switch(d){case"s":return c||e?"pár sekúnd":"pár sekundami";case"m":return c?"minúta":e?"minútu":"minútou";case"mm":return c||e?f+(b(a)?"minúty":"minút"):f+"minútami";break;case"h":return c?"hodina":e?"hodinu":"hodinou";case"hh":return c||e?f+(b(a)?"hodiny":"hodín"):f+"hodinami";break;case"d":return c||e?"deň":"dňom";case"dd":return c||e?f+(b(a)?"dni":"dní"):f+"dňami";break;case"M":return c||e?"mesiac":"mesiacom";case"MM":return c||e?f+(b(a)?"mesiace":"mesiacov"):f+"mesiacmi";break;case"y":return c||e?"rok":"rokom";case"yy":return c||e?f+(b(a)?"roky":"rokov"):f+"rokmi"}}var d="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),e="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");return a.lang("sk",{months:d,monthsShort:e,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(d,e),weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd D. MMMM YYYY LT"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:c,m:c,mm:c,h:c,hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){function b(a,b,c){var d=a+" ";switch(c){case"m":return b?"ena minuta":"eno minuto";case"mm":return d+=1===a?"minuta":2===a?"minuti":3===a||4===a?"minute":"minut";case"h":return b?"ena ura":"eno uro";case"hh":return d+=1===a?"ura":2===a?"uri":3===a||4===a?"ure":"ur";case"dd":return d+=1===a?"dan":"dni";case"MM":return d+=1===a?"mesec":2===a?"meseca":3===a||4===a?"mesece":"mesecev";case"yy":return d+=1===a?"leto":2===a?"leti":3===a||4===a?"leta":"let"}}return a.lang("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[prejšnja] dddd [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"%s nazaj",s:"nekaj sekund",m:b,mm:b,h:b,hh:b,d:"en dan",dd:b,M:"en mesec",MM:b,y:"eno leto",yy:b},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Marte_E Mërkure_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Neser në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s me parë",s:"disa sekonda",m:"një minut",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"dddd LT",lastWeek:"[Förra] dddd[en] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"e":1===b?"a":2===b?"a":3===b?"e":"e";return a+c},week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},ordinal:function(a){return a+"வது" +},meridiem:function(a){return a>=6&&10>=a?" காலை":a>=10&&14>=a?" நண்பகல்":a>=14&&18>=a?" எற்பாடு":a>=18&&20>=a?" மாலை":a>=20&&24>=a?" இரவு":a>=0&&6>=a?" வைகறை":void 0},week:{dow:0,doy:6}})}),function(a){a(db)}(function(a){return a.lang("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา".split("_"),weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),longDateFormat:{LT:"H นาฬิกา m นาที",L:"YYYY/MM/DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา LT",LLLL:"วันddddที่ D MMMM YYYY เวลา LT"},meridiem:function(a){return 12>a?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}),function(a){a(db)}(function(a){return a.lang("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM DD, YYYY LT"},calendar:{sameDay:"[Ngayon sa] LT",nextDay:"[Bukas sa] LT",nextWeek:"dddd [sa] LT",lastDay:"[Kahapon sa] LT",lastWeek:"dddd [huling linggo] LT",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},ordinal:function(a){return a},week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){var b={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};return a.lang("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(a){if(0===a)return a+"'ıncı";var c=a%10,d=a%100-c,e=a>=100?100:null;return a+(b[c]||b[d]||b[e])},week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("tzm-la",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}),function(a){a(db)}(function(a){return a.lang("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}),function(a){a(db)}(function(a){function b(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function c(a,c,d){var e={mm:"хвилина_хвилини_хвилин",hh:"година_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===d?c?"хвилина":"хвилину":"h"===d?c?"година":"годину":a+" "+b(e[d],+a)}function d(a,b){var c={nominative:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_"),accusative:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_")},d=/D[oD]? *MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function e(a,b){var c={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")},d=/(\[[ВвУу]\]) ?dddd/.test(b)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(b)?"genitive":"nominative";return c[d][a.day()]}function f(a){return function(){return a+"о"+(11===this.hours()?"б":"")+"] LT"}}return a.lang("uk",{months:d,monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:e,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., LT",LLLL:"dddd, D MMMM YYYY р., LT"},calendar:{sameDay:f("[Сьогодні "),nextDay:f("[Завтра "),lastDay:f("[Вчора "),nextWeek:f("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return f("[Минулої] dddd [").call(this);case 1:case 2:case 4:return f("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:c,mm:c,h:"годину",hh:c,d:"день",dd:c,M:"місяць",MM:c,y:"рік",yy:c},meridiem:function(a){return 4>a?"ночі":12>a?"ранку":17>a?"дня":"вечора"},ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a+"-й";case"D":return a+"-го";default:return a}},week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("uz",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"D MMMM YYYY, dddd LT"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}),function(a){a(db)}(function(a){return a.lang("vn",{months:"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".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY LT",LLLL:"dddd, D MMMM [năm] YYYY LT",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY LT",llll:"ddd, D MMM YYYY LT"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},ordinal:function(a){return a},week:{dow:1,doy:4}})}),function(a){a(db)}(function(a){return a.lang("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah点mm",L:"YYYY-MM-DD",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日LT",LLLL:"YYYY年MMMD日ddddLT",l:"YYYY-MM-DD",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日LT",llll:"YYYY年MMMD日ddddLT"},meridiem:function(a,b){var c=100*a+b;return 600>c?"凌晨":900>c?"早上":1130>c?"上午":1230>c?"中午":1800>c?"下午":"晚上"},calendar:{sameDay:function(){return 0===this.minutes()?"[今天]Ah[点整]":"[今天]LT"},nextDay:function(){return 0===this.minutes()?"[明天]Ah[点整]":"[明天]LT"},lastDay:function(){return 0===this.minutes()?"[昨天]Ah[点整]":"[昨天]LT"},nextWeek:function(){var b,c;return b=a().startOf("week"),c=this.unix()-b.unix()>=604800?"[下]":"[本]",0===this.minutes()?c+"dddAh点整":c+"dddAh点mm"},lastWeek:function(){var b,c;return b=a().startOf("week"),c=this.unix()c?"早上":1130>c?"上午":1230>c?"中午":1800>c?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"一分鐘",mm:"%d分鐘",h:"一小時",hh:"%d小時",d:"一天",dd:"%d天",M:"一個月",MM:"%d個月",y:"一年",yy:"%d年"}})}),db.lang("en"),rb?(module.exports=db,cb(!0)):"function"==typeof define&&define.amd?define("moment",function(b,c,d){return d.config&&d.config()&&d.config().noGlobal!==!0&&cb(d.config().noGlobal===a),db}):cb()}).call(this); \ No newline at end of file diff --git a/static/bootstrap-datetimepicker-master/moment-develop/min/moment.min.js b/static/bootstrap-datetimepicker-master/moment-develop/min/moment.min.js new file mode 100755 index 0000000..29e1cef --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/min/moment.min.js @@ -0,0 +1,6 @@ +//! moment.js +//! version : 2.5.1 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com +(function(a){function b(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function c(a,b){return function(c){return k(a.call(this,c),b)}}function d(a,b){return function(c){return this.lang().ordinal(a.call(this,c),b)}}function e(){}function f(a){w(a),h(this,a)}function g(a){var b=q(a),c=b.year||0,d=b.month||0,e=b.week||0,f=b.day||0,g=b.hour||0,h=b.minute||0,i=b.second||0,j=b.millisecond||0;this._milliseconds=+j+1e3*i+6e4*h+36e5*g,this._days=+f+7*e,this._months=+d+12*c,this._data={},this._bubble()}function h(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return b.hasOwnProperty("toString")&&(a.toString=b.toString),b.hasOwnProperty("valueOf")&&(a.valueOf=b.valueOf),a}function i(a){var b,c={};for(b in a)a.hasOwnProperty(b)&&qb.hasOwnProperty(b)&&(c[b]=a[b]);return c}function j(a){return 0>a?Math.ceil(a):Math.floor(a)}function k(a,b,c){for(var d=""+Math.abs(a),e=a>=0;d.lengthd;d++)(c&&a[d]!==b[d]||!c&&s(a[d])!==s(b[d]))&&g++;return g+f}function p(a){if(a){var b=a.toLowerCase().replace(/(.)s$/,"$1");a=Tb[a]||Ub[b]||b}return a}function q(a){var b,c,d={};for(c in a)a.hasOwnProperty(c)&&(b=p(c),b&&(d[b]=a[c]));return d}function r(b){var c,d;if(0===b.indexOf("week"))c=7,d="day";else{if(0!==b.indexOf("month"))return;c=12,d="month"}db[b]=function(e,f){var g,h,i=db.fn._lang[b],j=[];if("number"==typeof e&&(f=e,e=a),h=function(a){var b=db().utc().set(d,a);return i.call(db.fn._lang,b,e||"")},null!=f)return h(f);for(g=0;c>g;g++)j.push(h(g));return j}}function s(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=b>=0?Math.floor(b):Math.ceil(b)),c}function t(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function u(a){return v(a)?366:365}function v(a){return a%4===0&&a%100!==0||a%400===0}function w(a){var b;a._a&&-2===a._pf.overflow&&(b=a._a[jb]<0||a._a[jb]>11?jb:a._a[kb]<1||a._a[kb]>t(a._a[ib],a._a[jb])?kb:a._a[lb]<0||a._a[lb]>23?lb:a._a[mb]<0||a._a[mb]>59?mb:a._a[nb]<0||a._a[nb]>59?nb:a._a[ob]<0||a._a[ob]>999?ob:-1,a._pf._overflowDayOfYear&&(ib>b||b>kb)&&(b=kb),a._pf.overflow=b)}function x(a){return null==a._isValid&&(a._isValid=!isNaN(a._d.getTime())&&a._pf.overflow<0&&!a._pf.empty&&!a._pf.invalidMonth&&!a._pf.nullInput&&!a._pf.invalidFormat&&!a._pf.userInvalidated,a._strict&&(a._isValid=a._isValid&&0===a._pf.charsLeftOver&&0===a._pf.unusedTokens.length)),a._isValid}function y(a){return a?a.toLowerCase().replace("_","-"):a}function z(a,b){return b._isUTC?db(a).zone(b._offset||0):db(a).local()}function A(a,b){return b.abbr=a,pb[a]||(pb[a]=new e),pb[a].set(b),pb[a]}function B(a){delete pb[a]}function C(a){var b,c,d,e,f=0,g=function(a){if(!pb[a]&&rb)try{require("./lang/"+a)}catch(b){}return pb[a]};if(!a)return db.fn._lang;if(!m(a)){if(c=g(a))return c;a=[a]}for(;f0;){if(c=g(e.slice(0,b).join("-")))return c;if(d&&d.length>=b&&o(e,d,!0)>=b-1)break;b--}f++}return db.fn._lang}function D(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function E(a){var b,c,d=a.match(vb);for(b=0,c=d.length;c>b;b++)d[b]=Yb[d[b]]?Yb[d[b]]:D(d[b]);return function(e){var f="";for(b=0;c>b;b++)f+=d[b]instanceof Function?d[b].call(e,a):d[b];return f}}function F(a,b){return a.isValid()?(b=G(b,a.lang()),Vb[b]||(Vb[b]=E(b)),Vb[b](a)):a.lang().invalidDate()}function G(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(wb.lastIndex=0;d>=0&&wb.test(a);)a=a.replace(wb,c),wb.lastIndex=0,d-=1;return a}function H(a,b){var c,d=b._strict;switch(a){case"DDDD":return Ib;case"YYYY":case"GGGG":case"gggg":return d?Jb:zb;case"Y":case"G":case"g":return Lb;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return d?Kb:Ab;case"S":if(d)return Gb;case"SS":if(d)return Hb;case"SSS":if(d)return Ib;case"DDD":return yb;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Cb;case"a":case"A":return C(b._l)._meridiemParse;case"X":return Fb;case"Z":case"ZZ":return Db;case"T":return Eb;case"SSSS":return Bb;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return d?Hb:xb;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return xb;default:return c=new RegExp(P(O(a.replace("\\","")),"i"))}}function I(a){a=a||"";var b=a.match(Db)||[],c=b[b.length-1]||[],d=(c+"").match(Qb)||["-",0,0],e=+(60*d[1])+s(d[2]);return"+"===d[0]?-e:e}function J(a,b,c){var d,e=c._a;switch(a){case"M":case"MM":null!=b&&(e[jb]=s(b)-1);break;case"MMM":case"MMMM":d=C(c._l).monthsParse(b),null!=d?e[jb]=d:c._pf.invalidMonth=b;break;case"D":case"DD":null!=b&&(e[kb]=s(b));break;case"DDD":case"DDDD":null!=b&&(c._dayOfYear=s(b));break;case"YY":e[ib]=s(b)+(s(b)>68?1900:2e3);break;case"YYYY":case"YYYYY":case"YYYYYY":e[ib]=s(b);break;case"a":case"A":c._isPm=C(c._l).isPM(b);break;case"H":case"HH":case"h":case"hh":e[lb]=s(b);break;case"m":case"mm":e[mb]=s(b);break;case"s":case"ss":e[nb]=s(b);break;case"S":case"SS":case"SSS":case"SSSS":e[ob]=s(1e3*("0."+b));break;case"X":c._d=new Date(1e3*parseFloat(b));break;case"Z":case"ZZ":c._useUTC=!0,c._tzm=I(b);break;case"w":case"ww":case"W":case"WW":case"d":case"dd":case"ddd":case"dddd":case"e":case"E":a=a.substr(0,1);case"gg":case"gggg":case"GG":case"GGGG":case"GGGGG":a=a.substr(0,2),b&&(c._w=c._w||{},c._w[a]=b)}}function K(a){var b,c,d,e,f,g,h,i,j,k,l=[];if(!a._d){for(d=M(a),a._w&&null==a._a[kb]&&null==a._a[jb]&&(f=function(b){var c=parseInt(b,10);return b?b.length<3?c>68?1900+c:2e3+c:c:null==a._a[ib]?db().weekYear():a._a[ib]},g=a._w,null!=g.GG||null!=g.W||null!=g.E?h=Z(f(g.GG),g.W||1,g.E,4,1):(i=C(a._l),j=null!=g.d?V(g.d,i):null!=g.e?parseInt(g.e,10)+i._week.dow:0,k=parseInt(g.w,10)||1,null!=g.d&&ju(e)&&(a._pf._overflowDayOfYear=!0),c=U(e,0,a._dayOfYear),a._a[jb]=c.getUTCMonth(),a._a[kb]=c.getUTCDate()),b=0;3>b&&null==a._a[b];++b)a._a[b]=l[b]=d[b];for(;7>b;b++)a._a[b]=l[b]=null==a._a[b]?2===b?1:0:a._a[b];l[lb]+=s((a._tzm||0)/60),l[mb]+=s((a._tzm||0)%60),a._d=(a._useUTC?U:T).apply(null,l)}}function L(a){var b;a._d||(b=q(a._i),a._a=[b.year,b.month,b.day,b.hour,b.minute,b.second,b.millisecond],K(a))}function M(a){var b=new Date;return a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function N(a){a._a=[],a._pf.empty=!0;var b,c,d,e,f,g=C(a._l),h=""+a._i,i=h.length,j=0;for(d=G(a._f,g).match(vb)||[],b=0;b0&&a._pf.unusedInput.push(f),h=h.slice(h.indexOf(c)+c.length),j+=c.length),Yb[e]?(c?a._pf.empty=!1:a._pf.unusedTokens.push(e),J(e,c,a)):a._strict&&!c&&a._pf.unusedTokens.push(e);a._pf.charsLeftOver=i-j,h.length>0&&a._pf.unusedInput.push(h),a._isPm&&a._a[lb]<12&&(a._a[lb]+=12),a._isPm===!1&&12===a._a[lb]&&(a._a[lb]=0),K(a),w(a)}function O(a){return a.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e})}function P(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Q(a){var c,d,e,f,g;if(0===a._f.length)return a._pf.invalidFormat=!0,a._d=new Date(0/0),void 0;for(f=0;fg)&&(e=g,d=c));h(a,d||c)}function R(a){var b,c,d=a._i,e=Mb.exec(d);if(e){for(a._pf.iso=!0,b=0,c=Ob.length;c>b;b++)if(Ob[b][1].exec(d)){a._f=Ob[b][0]+(e[6]||" ");break}for(b=0,c=Pb.length;c>b;b++)if(Pb[b][1].exec(d)){a._f+=Pb[b][0];break}d.match(Db)&&(a._f+="Z"),N(a)}else a._d=new Date(d)}function S(b){var c=b._i,d=sb.exec(c);c===a?b._d=new Date:d?b._d=new Date(+d[1]):"string"==typeof c?R(b):m(c)?(b._a=c.slice(0),K(b)):n(c)?b._d=new Date(+c):"object"==typeof c?L(b):b._d=new Date(c)}function T(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 1970>a&&h.setFullYear(a),h}function U(a){var b=new Date(Date.UTC.apply(null,arguments));return 1970>a&&b.setUTCFullYear(a),b}function V(a,b){if("string"==typeof a)if(isNaN(a)){if(a=b.weekdaysParse(a),"number"!=typeof a)return null}else a=parseInt(a,10);return a}function W(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function X(a,b,c){var d=hb(Math.abs(a)/1e3),e=hb(d/60),f=hb(e/60),g=hb(f/24),h=hb(g/365),i=45>d&&["s",d]||1===e&&["m"]||45>e&&["mm",e]||1===f&&["h"]||22>f&&["hh",f]||1===g&&["d"]||25>=g&&["dd",g]||45>=g&&["M"]||345>g&&["MM",hb(g/30)]||1===h&&["y"]||["yy",h];return i[2]=b,i[3]=a>0,i[4]=c,W.apply({},i)}function Y(a,b,c){var d,e=c-b,f=c-a.day();return f>e&&(f-=7),e-7>f&&(f+=7),d=db(a).add("d",f),{week:Math.ceil(d.dayOfYear()/7),year:d.year()}}function Z(a,b,c,d,e){var f,g,h=U(a,0,1).getUTCDay();return c=null!=c?c:e,f=e-h+(h>d?7:0)-(e>h?7:0),g=7*(b-1)+(c-e)+f+1,{year:g>0?a:a-1,dayOfYear:g>0?g:u(a-1)+g}}function $(a){var b=a._i,c=a._f;return null===b?db.invalid({nullInput:!0}):("string"==typeof b&&(a._i=b=C().preparse(b)),db.isMoment(b)?(a=i(b),a._d=new Date(+b._d)):c?m(c)?Q(a):N(a):S(a),new f(a))}function _(a,b){db.fn[a]=db.fn[a+"s"]=function(a){var c=this._isUTC?"UTC":"";return null!=a?(this._d["set"+c+b](a),db.updateOffset(this),this):this._d["get"+c+b]()}}function ab(a){db.duration.fn[a]=function(){return this._data[a]}}function bb(a,b){db.duration.fn["as"+a]=function(){return+this/b}}function cb(a){var b=!1,c=db;"undefined"==typeof ender&&(a?(gb.moment=function(){return!b&&console&&console.warn&&(b=!0,console.warn("Accessing Moment through the global scope is deprecated, and will be removed in an upcoming release.")),c.apply(null,arguments)},h(gb.moment,c)):gb.moment=db)}for(var db,eb,fb="2.5.1",gb=this,hb=Math.round,ib=0,jb=1,kb=2,lb=3,mb=4,nb=5,ob=6,pb={},qb={_isAMomentObject:null,_i:null,_f:null,_l:null,_strict:null,_isUTC:null,_offset:null,_pf:null,_lang:null},rb="undefined"!=typeof module&&module.exports&&"undefined"!=typeof require,sb=/^\/?Date\((\-?\d+)/i,tb=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,ub=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,vb=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g,wb=/(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,xb=/\d\d?/,yb=/\d{1,3}/,zb=/\d{1,4}/,Ab=/[+\-]?\d{1,6}/,Bb=/\d+/,Cb=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Db=/Z|[\+\-]\d\d:?\d\d/gi,Eb=/T/i,Fb=/[\+\-]?\d+(\.\d{1,3})?/,Gb=/\d/,Hb=/\d\d/,Ib=/\d{3}/,Jb=/\d{4}/,Kb=/[+-]?\d{6}/,Lb=/[+-]?\d+/,Mb=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Nb="YYYY-MM-DDTHH:mm:ssZ",Ob=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],Pb=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d{1,3}/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],Qb=/([\+\-]|\d\d)/gi,Rb="Date|Hours|Minutes|Seconds|Milliseconds".split("|"),Sb={Milliseconds:1,Seconds:1e3,Minutes:6e4,Hours:36e5,Days:864e5,Months:2592e6,Years:31536e6},Tb={ms:"millisecond",s:"second",m:"minute",h:"hour",d:"day",D:"date",w:"week",W:"isoWeek",M:"month",y:"year",DDD:"dayOfYear",e:"weekday",E:"isoWeekday",gg:"weekYear",GG:"isoWeekYear"},Ub={dayofyear:"dayOfYear",isoweekday:"isoWeekday",isoweek:"isoWeek",weekyear:"weekYear",isoweekyear:"isoWeekYear"},Vb={},Wb="DDD w W M D d".split(" "),Xb="M D H h m s w W".split(" "),Yb={M:function(){return this.month()+1},MMM:function(a){return this.lang().monthsShort(this,a)},MMMM:function(a){return this.lang().months(this,a)},D:function(){return this.date()},DDD:function(){return this.dayOfYear()},d:function(){return this.day()},dd:function(a){return this.lang().weekdaysMin(this,a)},ddd:function(a){return this.lang().weekdaysShort(this,a)},dddd:function(a){return this.lang().weekdays(this,a)},w:function(){return this.week()},W:function(){return this.isoWeek()},YY:function(){return k(this.year()%100,2)},YYYY:function(){return k(this.year(),4)},YYYYY:function(){return k(this.year(),5)},YYYYYY:function(){var a=this.year(),b=a>=0?"+":"-";return b+k(Math.abs(a),6)},gg:function(){return k(this.weekYear()%100,2)},gggg:function(){return k(this.weekYear(),4)},ggggg:function(){return k(this.weekYear(),5)},GG:function(){return k(this.isoWeekYear()%100,2)},GGGG:function(){return k(this.isoWeekYear(),4)},GGGGG:function(){return k(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.lang().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.lang().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return s(this.milliseconds()/100)},SS:function(){return k(s(this.milliseconds()/10),2)},SSS:function(){return k(this.milliseconds(),3)},SSSS:function(){return k(this.milliseconds(),3)},Z:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+k(s(a/60),2)+":"+k(s(a)%60,2)},ZZ:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+k(s(a/60),2)+k(s(a)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Zb=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];Wb.length;)eb=Wb.pop(),Yb[eb+"o"]=d(Yb[eb],eb);for(;Xb.length;)eb=Xb.pop(),Yb[eb+eb]=c(Yb[eb],2);for(Yb.DDDD=c(Yb.DDD,3),h(e.prototype,{set:function(a){var b,c;for(c in a)b=a[c],"function"==typeof b?this[c]=b:this["_"+c]=b},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(a){return this._months[a.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(a){return this._monthsShort[a.month()]},monthsParse:function(a){var b,c,d;for(this._monthsParse||(this._monthsParse=[]),b=0;12>b;b++)if(this._monthsParse[b]||(c=db.utc([2e3,b]),d="^"+this.months(c,"")+"|^"+this.monthsShort(c,""),this._monthsParse[b]=new RegExp(d.replace(".",""),"i")),this._monthsParse[b].test(a))return b},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(a){return this._weekdays[a.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(a){return this._weekdaysShort[a.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(a){return this._weekdaysMin[a.day()]},weekdaysParse:function(a){var b,c,d;for(this._weekdaysParse||(this._weekdaysParse=[]),b=0;7>b;b++)if(this._weekdaysParse[b]||(c=db([2e3,1]).day(b),d="^"+this.weekdays(c,"")+"|^"+this.weekdaysShort(c,"")+"|^"+this.weekdaysMin(c,""),this._weekdaysParse[b]=new RegExp(d.replace(".",""),"i")),this._weekdaysParse[b].test(a))return b},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D YYYY",LLL:"MMMM D YYYY LT",LLLL:"dddd, MMMM D YYYY LT"},longDateFormat:function(a){var b=this._longDateFormat[a];return!b&&this._longDateFormat[a.toUpperCase()]&&(b=this._longDateFormat[a.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a]=b),b},isPM:function(a){return"p"===(a+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(a,b){var c=this._calendar[a];return"function"==typeof c?c.apply(b):c},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(a,b,c,d){var e=this._relativeTime[c];return"function"==typeof e?e(a,b,c,d):e.replace(/%d/i,a)},pastFuture:function(a,b){var c=this._relativeTime[a>0?"future":"past"];return"function"==typeof c?c(b):c.replace(/%s/i,b)},ordinal:function(a){return this._ordinal.replace("%d",a)},_ordinal:"%d",preparse:function(a){return a},postformat:function(a){return a},week:function(a){return Y(a,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),db=function(c,d,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._i=c,g._f=d,g._l=e,g._strict=f,g._isUTC=!1,g._pf=b(),$(g)},db.utc=function(c,d,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._useUTC=!0,g._isUTC=!0,g._l=e,g._i=c,g._f=d,g._strict=f,g._pf=b(),$(g).utc()},db.unix=function(a){return db(1e3*a)},db.duration=function(a,b){var c,d,e,f=a,h=null;return db.isDuration(a)?f={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(f={},b?f[b]=a:f.milliseconds=a):(h=tb.exec(a))?(c="-"===h[1]?-1:1,f={y:0,d:s(h[kb])*c,h:s(h[lb])*c,m:s(h[mb])*c,s:s(h[nb])*c,ms:s(h[ob])*c}):(h=ub.exec(a))&&(c="-"===h[1]?-1:1,e=function(a){var b=a&&parseFloat(a.replace(",","."));return(isNaN(b)?0:b)*c},f={y:e(h[2]),M:e(h[3]),d:e(h[4]),h:e(h[5]),m:e(h[6]),s:e(h[7]),w:e(h[8])}),d=new g(f),db.isDuration(a)&&a.hasOwnProperty("_lang")&&(d._lang=a._lang),d},db.version=fb,db.defaultFormat=Nb,db.updateOffset=function(){},db.lang=function(a,b){var c;return a?(b?A(y(a),b):null===b?(B(a),a="en"):pb[a]||C(a),c=db.duration.fn._lang=db.fn._lang=C(a),c._abbr):db.fn._lang._abbr},db.langData=function(a){return a&&a._lang&&a._lang._abbr&&(a=a._lang._abbr),C(a)},db.isMoment=function(a){return a instanceof f||null!=a&&a.hasOwnProperty("_isAMomentObject")},db.isDuration=function(a){return a instanceof g},eb=Zb.length-1;eb>=0;--eb)r(Zb[eb]);for(db.normalizeUnits=function(a){return p(a)},db.invalid=function(a){var b=db.utc(0/0);return null!=a?h(b._pf,a):b._pf.userInvalidated=!0,b},db.parseZone=function(a){return db(a).parseZone()},h(db.fn=f.prototype,{clone:function(){return db(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().lang("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var a=db(this).utc();return 00:!1},parsingFlags:function(){return h({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(){return this.zone(0)},local:function(){return this.zone(0),this._isUTC=!1,this},format:function(a){var b=F(this,a||db.defaultFormat);return this.lang().postformat(b)},add:function(a,b){var c;return c="string"==typeof a?db.duration(+b,a):db.duration(a,b),l(this,c,1),this},subtract:function(a,b){var c;return c="string"==typeof a?db.duration(+b,a):db.duration(a,b),l(this,c,-1),this},diff:function(a,b,c){var d,e,f=z(a,this),g=6e4*(this.zone()-f.zone());return b=p(b),"year"===b||"month"===b?(d=432e5*(this.daysInMonth()+f.daysInMonth()),e=12*(this.year()-f.year())+(this.month()-f.month()),e+=(this-db(this).startOf("month")-(f-db(f).startOf("month")))/d,e-=6e4*(this.zone()-db(this).startOf("month").zone()-(f.zone()-db(f).startOf("month").zone()))/d,"year"===b&&(e/=12)):(d=this-f,e="second"===b?d/1e3:"minute"===b?d/6e4:"hour"===b?d/36e5:"day"===b?(d-g)/864e5:"week"===b?(d-g)/6048e5:d),c?e:j(e)},from:function(a,b){return db.duration(this.diff(a)).lang(this.lang()._abbr).humanize(!b)},fromNow:function(a){return this.from(db(),a)},calendar:function(){var a=z(db(),this).startOf("day"),b=this.diff(a,"days",!0),c=-6>b?"sameElse":-1>b?"lastWeek":0>b?"lastDay":1>b?"sameDay":2>b?"nextDay":7>b?"nextWeek":"sameElse";return this.format(this.lang().calendar(c,this))},isLeapYear:function(){return v(this.year())},isDST:function(){return this.zone()+db(a).startOf(b)},isBefore:function(a,b){return b="undefined"!=typeof b?b:"millisecond",+this.clone().startOf(b)<+db(a).startOf(b)},isSame:function(a,b){return b=b||"ms",+this.clone().startOf(b)===+z(a,this).startOf(b)},min:function(a){return a=db.apply(null,arguments),this>a?this:a},max:function(a){return a=db.apply(null,arguments),a>this?this:a},zone:function(a){var b=this._offset||0;return null==a?this._isUTC?b:this._d.getTimezoneOffset():("string"==typeof a&&(a=I(a)),Math.abs(a)<16&&(a=60*a),this._offset=a,this._isUTC=!0,b!==a&&l(this,db.duration(b-a,"m"),1,!0),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.zone(this._tzm):"string"==typeof this._i&&this.zone(this._i),this},hasAlignedHourOffset:function(a){return a=a?db(a).zone():0,(this.zone()-a)%60===0},daysInMonth:function(){return t(this.year(),this.month())},dayOfYear:function(a){var b=hb((db(this).startOf("day")-db(this).startOf("year"))/864e5)+1;return null==a?b:this.add("d",a-b)},quarter:function(){return Math.ceil((this.month()+1)/3)},weekYear:function(a){var b=Y(this,this.lang()._week.dow,this.lang()._week.doy).year;return null==a?b:this.add("y",a-b)},isoWeekYear:function(a){var b=Y(this,1,4).year;return null==a?b:this.add("y",a-b)},week:function(a){var b=this.lang().week(this);return null==a?b:this.add("d",7*(a-b))},isoWeek:function(a){var b=Y(this,1,4).week;return null==a?b:this.add("d",7*(a-b))},weekday:function(a){var b=(this.day()+7-this.lang()._week.dow)%7;return null==a?b:this.add("d",a-b)},isoWeekday:function(a){return null==a?this.day()||7:this.day(this.day()%7?a:a-7)},get:function(a){return a=p(a),this[a]()},set:function(a,b){return a=p(a),"function"==typeof this[a]&&this[a](b),this},lang:function(b){return b===a?this._lang:(this._lang=C(b),this)}}),eb=0;eb (https://github.com/ichernev)", + "contributors": [ + "Tim Wood (http://timwoodcreates.com/)", + "Rocky Meza (http://rockymeza.com)", + "Matt Johnson (http://codeofmatt.com)", + "Isaac Cambron (http://drunkencoder.net/)" + ], + "keywords": [ + "moment", + "date", + "time", + "parse", + "format", + "validate", + "i18n", + "l10n", + "ender" + ], + "main": "./moment.js", + "engines": { + "node": "*" + }, + "repository": { + "type": "git", + "url": "https://github.com/moment/moment.git" + }, + "bugs": { + "url": "https://github.com/moment/moment/issues" + }, + "licenses" : [ + { + "type" : "MIT" + } + ], + "devDependencies": { + "uglify-js": "latest", + "grunt": "latest", + "nodeunit": "latest", + "grunt-contrib-jshint": "latest", + "grunt-contrib-nodeunit": "latest", + "grunt-contrib-concat": "latest", + "grunt-contrib-uglify": "latest", + "grunt-contrib-watch": "latest", + "grunt-env": "latest", + "grunt-lib-legacyhelpers": "latest", + "grunt-karma": "~0.7.2", + "karma": "~0.11.0", + "karma-chrome-launcher": "latest", + "karma-firefox-launcher": "latest", + "karma-nodeunit": "~0.1.1", + "karma-sauce-launcher": "~0.1" + }, + "scripts": { + "test": "grunt test:node" + }, + "ender": "./ender.js", + "dojoBuild": "package.js", + "jspm": { + "files": ["moment.js", "lang"], + "map": { + "moment": "./moment" + }, + "buildConfig": { + "uglify": true + } + } +} diff --git a/static/bootstrap-datetimepicker-master/moment-develop/readme.md b/static/bootstrap-datetimepicker-master/moment-develop/readme.md new file mode 100755 index 0000000..ae685ba --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/readme.md @@ -0,0 +1,349 @@ +A lightweight javascript date library for parsing, validating, manipulating, and formatting dates. + +# [Documentation](http://momentjs.com/docs/) + +Upgrading to 2.0.0 +================== + +There are a number of small backwards incompatible changes with version 2.0.0. + +[See them and their descriptions here](https://gist.github.com/timrwood/e72f2eef320ed9e37c51#backwards-incompatible-changes) + +Changed language ordinal method to return the number + ordinal instead of just the ordinal. + +Changed two digit year parsing cutoff to match strptime. + +Removed `moment#sod` and `moment#eod` in favor of `moment#startOf` and `moment#endOf`. + +Removed `moment.humanizeDuration()` in favor of `moment.duration().humanize()`. + +Removed the lang data objects from the top level namespace. + +Duplicate `Date` passed to `moment()` instead of referencing it. + +Travis Build Status +=================== + +Develop [![Build Status](https://travis-ci.org/moment/moment.png?branch=develop)](https://travis-ci.org/moment/moment) + +Master [![Build Status](https://travis-ci.org/moment/moment.png?branch=master)](https://travis-ci.org/moment/moment) + +For developers +============== + +You need [node](http://nodejs.org/), use [nvm](https://github.com/creationix/nvm) or [nenv](https://github.com/ryuone/nenv) to install it. + +Then, in your shell + +```bash +git clone https://github.com/moment/moment.git +cd moment +npm install -g grunt-cli +npm install +git checkout develop # all patches against develop branch, please! +grunt # this runs tests and jshint +``` + +Changelog +========= + +### 2.5.1 + +* languages + * [#1392](https://github.com/moment/moment/issues/1392) Armenian (hy-am) + +* bugfixes + * [#1429](https://github.com/moment/moment/issues/1429) fixes [#1423](https://github.com/moment/moment/issues/1423) weird chrome-32 bug with js object creation + * [#1421](https://github.com/moment/moment/issues/1421) remove html entities from Welsh + * [#1418](https://github.com/moment/moment/issues/1418) fixes [#1401](https://github.com/moment/moment/issues/1401) improved non-padded tokens in strict matching + * [#1417](https://github.com/moment/moment/issues/1417) fixes [#1404](https://github.com/moment/moment/issues/1404) handle buggy moment object created by property cloning + * [#1398](https://github.com/moment/moment/issues/1398) fixes [#1397](https://github.com/moment/moment/issues/1397) fix Arabic-like week number parsing + * [#1396](https://github.com/moment/moment/issues/1396) add leftZeroFill(4) to GGGG and gggg formats + * [#1373](https://github.com/moment/moment/issues/1373) use lowercase for months and days in Catalan + +* testing + * [#1374](https://github.com/moment/moment/issues/1374) run tests on multiple browser/os combos via SauceLabs and Travis + +### 2.5.0 [See changelog](https://gist.github.com/ichernev/8104451) + +* New languages + * Luxemburish (lb) [1247](https://github.com/moment/moment/issues/1247) + * Serbian (rs) [1319](https://github.com/moment/moment/issues/1319) + * Tamil (ta) [1324](https://github.com/moment/moment/issues/1324) + * Macedonian (mk) [1337](https://github.com/moment/moment/issues/1337) + +* Features + * [1311](https://github.com/moment/moment/issues/1311) Add quarter getter and format token `Q` + * [1303](https://github.com/moment/moment/issues/1303) strict parsing now respects number of digits per token (fix [1196](https://github.com/moment/moment/issues/1196)) + * 0d30bb7 add jspm support + * [1347](https://github.com/moment/moment/issues/1347) improve zone parsing + * [1362](https://github.com/moment/moment/issues/1362) support merideam parsing in Korean + +* 22 bugfixes + +### 2.4.0 + +* **Deprecate** globally exported moment, will be removed in next major +* New languages + * Farose (fo) [#1206](https://github.com/moment/moment/issues/1206) + * Tagalog/Filipino (tl-ph) [#1197](https://github.com/moment/moment/issues/1197) + * Welsh (cy) [#1215](https://github.com/moment/moment/issues/1215) +* Bugfixes + * properly handle Z at the end of iso RegExp [#1187](https://github.com/moment/moment/issues/1187) + * chinese meridian time improvements [#1076](https://github.com/moment/moment/issues/1076) + * fix language tests [#1177](https://github.com/moment/moment/issues/1177) + * remove some failing tests (that should have never existed :)) + [#1185](https://github.com/moment/moment/issues/1185) + [#1183](https://github.com/moment/moment/issues/1183) + * handle russian noun cases in weird cases [#1195](https://github.com/moment/moment/issues/1195) + +### 2.3.1 + +Removed a trailing comma [1169] and fixed a bug with `months`, `weekdays` getters [#1171](https://github.com/moment/moment/issues/1171). + +### 2.3.0 [See changelog](https://gist.github.com/ichernev/6864354) + +Changed isValid, added strict parsing. +Week tokens parsing. + +### 2.2.1 + +Fixed bug in string prototype test. +Updated authors and contributors. + +### 2.2.0 [See changelog](https://gist.github.com/ichernev/00f837a9baf46a3565e4) + +Added bower support. + +Language files now use UMD. + +Creating moment defaults to current date/month/year. + +Added a bundle of moment and all language files. + +### 2.1.0 [See changelog](https://gist.github.com/timrwood/b8c2d90d528eddb53ab5) + +Added better week support. + +Added ability to set offset with `moment#zone`. + +Added ability to set month or weekday from a string. + +Added `moment#min` and `moment#max` + +### 2.0.0 [See changelog](https://gist.github.com/timrwood/e72f2eef320ed9e37c51) + +Added short form localized tokens. + +Added ability to define language a string should be parsed in. + +Added support for reversed add/subtract arguments. + +Added support for `endOf('week')` and `startOf('week')`. + +Fixed the logic for `moment#diff(Moment, 'months')` and `moment#diff(Moment, 'years')` + +`moment#diff` now floors instead of rounds. + +Normalized `moment#toString`. + +Added `isSame`, `isAfter`, and `isBefore` methods. + +Added better week support. + +Added `moment#toJSON` + +Bugfix: Fixed parsing of first century dates + +Bugfix: Parsing 10Sep2001 should work as expected + +Bugfix: Fixed wierdness with `moment.utc()` parsing. + +Changed language ordinal method to return the number + ordinal instead of just the ordinal. + +Changed two digit year parsing cutoff to match strptime. + +Removed `moment#sod` and `moment#eod` in favor of `moment#startOf` and `moment#endOf`. + +Removed `moment.humanizeDuration()` in favor of `moment.duration().humanize()`. + +Removed the lang data objects from the top level namespace. + +Duplicate `Date` passed to `moment()` instead of referencing it. + +### 1.7.2 [See discussion](https://github.com/timrwood/moment/issues/456) + +Bugfixes + +### 1.7.1 [See discussion](https://github.com/timrwood/moment/issues/384) + +Bugfixes + +### 1.7.0 [See discussion](https://github.com/timrwood/moment/issues/288) + +Added `moment.fn.endOf()` and `moment.fn.startOf()`. + +Added validation via `moment.fn.isValid()`. + +Made formatting method 3x faster. http://jsperf.com/momentjs-cached-format-functions + +Add support for month/weekday callbacks in `moment.fn.format()` + +Added instance specific languages. + +Added two letter weekday abbreviations with the formatting token `dd`. + +Various language updates. + +Various bugfixes. + +### 1.6.0 [See discussion](https://github.com/timrwood/moment/pull/268) + +Added Durations. + +Revamped parser to support parsing non-separated strings (YYYYMMDD vs YYYY-MM-DD). + +Added support for millisecond parsing and formatting tokens (S SS SSS) + +Added a getter for `moment.lang()` + +Various bugfixes. + +There are a few things deprecated in the 1.6.0 release. + +1. The format tokens `z` and `zz` (timezone abbreviations like EST CST MST etc) will no longer be supported. Due to inconsistent browser support, we are unable to consistently produce this value. See [this issue](https://github.com/timrwood/moment/issues/162) for more background. + +2. The method `moment.fn.native` is deprecated in favor of `moment.fn.toDate`. There continue to be issues with Google Closure Compiler throwing errors when using `native`, even in valid instances. + +3. The way to customize am/pm strings is being changed. This would only affect you if you created a custom language file. For more information, see [this issue](https://github.com/timrwood/moment/pull/222). + +### 1.5.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=10&page=1&state=closed) + +Added UTC mode. + +Added automatic ISO8601 parsing. + +Various bugfixes. + +### 1.4.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=8&state=closed) + +Added `moment.fn.toDate` as a replacement for `moment.fn.native`. + +Added `moment.fn.sod` and `moment.fn.eod` to get the start and end of day. + +Various bugfixes. + +### 1.3.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=7&state=closed) + +Added support for parsing month names in the current language. + +Added escape blocks for parsing tokens. + +Added `moment.fn.calendar` to format strings like 'Today 2:30 PM', 'Tomorrow 1:25 AM', and 'Last Sunday 4:30 AM'. + +Added `moment.fn.day` as a setter. + +Various bugfixes + +### 1.2.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=4&state=closed) + +Added timezones to parser and formatter. + +Added `moment.fn.isDST`. + +Added `moment.fn.zone` to get the timezone offset in minutes. + +### 1.1.2 [See milestone](https://github.com/timrwood/moment/issues?milestone=6&state=closed) + +Various bugfixes + +### 1.1.1 [See milestone](https://github.com/timrwood/moment/issues?milestone=5&state=closed) + +Added time specific diffs (months, days, hours, etc) + +### 1.1.0 + +Added `moment.fn.format` localized masks. 'L LL LLL LLLL' [issue 29](https://github.com/timrwood/moment/pull/29) + +Fixed [issue 31](https://github.com/timrwood/moment/pull/31). + +### 1.0.1 + +Added `moment.version` to get the current version. + +Removed `window !== undefined` when checking if module exists to support browserify. [issue 25](https://github.com/timrwood/moment/pull/25) + +### 1.0.0 + +Added convenience methods for getting and setting date parts. + +Added better support for `moment.add()`. + +Added better lang support in NodeJS. + +Renamed library from underscore.date to Moment.js + +### 0.6.1 + +Added Portuguese, Italian, and French language support + +### 0.6.0 + +Added _date.lang() support. +Added support for passing multiple formats to try to parse a date. _date("07-10-1986", ["MM-DD-YYYY", "YYYY-MM-DD"]); +Made parse from string and single format 25% faster. + +### 0.5.2 + +Bugfix for [issue 8](https://github.com/timrwood/underscore.date/pull/8) and [issue 9](https://github.com/timrwood/underscore.date/pull/9). + +### 0.5.1 + +Bugfix for [issue 5](https://github.com/timrwood/underscore.date/pull/5). + +### 0.5.0 + +Dropped the redundant `_date.date()` in favor of `_date()`. +Removed `_date.now()`, as it is a duplicate of `_date()` with no parameters. +Removed `_date.isLeapYear(yearNumber)`. Use `_date([yearNumber]).isLeapYear()` instead. +Exposed customization options through the `_date.relativeTime`, `_date.weekdays`, `_date.weekdaysShort`, `_date.months`, `_date.monthsShort`, and `_date.ordinal` variables instead of the `_date.customize()` function. + +### 0.4.1 + +Added date input formats for input strings. + +### 0.4.0 + +Added underscore.date to npm. Removed dependencies on underscore. + +### 0.3.2 + +Added `'z'` and `'zz'` to `_.date().format()`. Cleaned up some redundant code to trim off some bytes. + +### 0.3.1 + +Cleaned up the namespace. Moved all date manipulation and display functions to the _.date() object. + +### 0.3.0 + +Switched to the Underscore methodology of not mucking with the native objects' prototypes. +Made chaining possible. + +### 0.2.1 + +Changed date names to be a more pseudo standardized 'dddd, MMMM Do YYYY, h:mm:ss a'. +Added `Date.prototype` functions `add`, `subtract`, `isdst`, and `isleapyear`. + +### 0.2.0 + +Changed function names to be more concise. +Changed date format from php date format to custom format. + +### 0.1.0 + +Initial release + +License +======= + +Moment.js is freely distributable under the terms of the MIT license. diff --git a/static/bootstrap-datetimepicker-master/moment-develop/tasks/check_sauce_creds.js b/static/bootstrap-datetimepicker-master/moment-develop/tasks/check_sauce_creds.js new file mode 100755 index 0000000..e8203e3 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/tasks/check_sauce_creds.js @@ -0,0 +1,14 @@ +module.exports = function (grunt) { + + // Pull Requests do not have secure variables enabled for security reasons. + // Use this task before launching travis-sauce-browser task, so it would + // exit early and won't try connecting to saucelabs without credentials. + grunt.registerTask('check-sauce-creds', function () { + if (process.env.SAUCE_USERNAME === undefined) { + grunt.log.writeln("No sauce credentials found"); + grunt.task.clearQueue(); + } else { + grunt.log.writeln("Sauce credentials found"); + } + }); +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/tasks/component.js b/static/bootstrap-datetimepicker-master/moment-develop/tasks/component.js new file mode 100755 index 0000000..d975b2d --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/tasks/component.js @@ -0,0 +1,10 @@ +module.exports = function (grunt) { + grunt.registerTask('component', function () { + var config = JSON.parse(grunt.file.read('component.json')); + + config.files = grunt.file.expand('lang/*.js'); + config.files.unshift('moment.js'); + + grunt.file.write('component.json', JSON.stringify(config, true, 2)); + }); +} diff --git a/static/bootstrap-datetimepicker-master/moment-develop/tasks/embed_languages.js b/static/bootstrap-datetimepicker-master/moment-develop/tasks/embed_languages.js new file mode 100755 index 0000000..7bffeae --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/tasks/embed_languages.js @@ -0,0 +1,49 @@ + +module.exports = function (grunt) { + + grunt.registerTask('embed_languages', function () { + var config = grunt.config('embed_languages'); + + var files = grunt.file.expand(config.targetLangs); + var embeddedContents = determineEmbeddedContent(files); + + var momentContents = grunt.file.read(config.moment); + var modifiedContents = momentContents.replace('/* EMBED_LANGUAGES */', function () { + // If we don't do this, $ symbols in lang files may get interpreted in + // the regex replacement + return embeddedContents; + }); + + grunt.file.write(config.dest, modifiedContents); + }); + + var languageReset = 'moment.lang(\'en\');'; + + function determineEmbeddedContent(files) { + var embeddedContent = ''; + files.forEach(function (file) { + embeddedContent += transformFile(file); + }); + embeddedContent += '\n ' + languageReset + '\n'; + return embeddedContent; + } + + var reTransform = /function \(factory\) \{[^]*\}(?=\(function \(moment\) \{)/gm; + var replaceWith = + 'function (factory) {\n' + + ' factory(moment);\n' + + '}'; + + function transformFile(file) { + var fileContents = grunt.file.read(file); + + if (!fileContents.match(reTransform)) { + grunt.warn('Warning: all language files must use the common UMD wrapper pattern. Failed language file: ' + file); + return ''; + } + + return fileContents.replace(reTransform, replaceWith); + } + +}; + diff --git a/static/bootstrap-datetimepicker-master/moment-develop/tasks/history.js b/static/bootstrap-datetimepicker-master/moment-develop/tasks/history.js new file mode 100755 index 0000000..251519c --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/tasks/history.js @@ -0,0 +1,123 @@ +var https = require("https"), + zlib = require('zlib'), + path = require('path'), + fs = require('fs'); + +var count = 0; +var resolved = 0; + +var outputs = []; + +var done; + +function check() { + if (resolved === count) { + normalize(); + display(); + } +} + +function makeBar(length) { + var i = ''; + while (i.length < length) { + i += '='; + } + return i; +} + +function normalize() { + var i, + max = 0, + max2 = 0; + for (i = 0; i < count; i ++) { + max = Math.max(max, outputs[i].gzip); + max2 = Math.max(max2, outputs[i].original); + } + for (i = 0; i < count; i ++) { + outputs[i].bargraph = makeBar((outputs[i].gzip / max) * 80); + outputs[i].bargraph2 = makeBar((outputs[i].original / max2) * 80); + } +} + +function display() { + var i; + for (i = 0; i < count; i ++) { + console.log(outputs[i].version + ' ' + outputs[i].gzip + ' ' + outputs[i].original); + console.log('gzip ' + outputs[i].bargraph); + console.log('orig ' + outputs[i].bargraph2); + } + done(); +} + +function getSizeAtVersion(version, path) { + var data = '', + op = {}, + + req = https.request({ + host: 'raw.github.com', + port: 443, + path: '/timrwood/moment/' + version + path + }, function (res) { + res.setEncoding('utf8'); + res.on('data', function (chunk) { + data += chunk; + }); + res.on('end', function (e) { + zlib.gzip(data, function (error, result) { + op.version = version; + op.gzip = result.length; + op.original = data.length; + resolved ++; + check(); + }); + }); + }); + + req.on('error', function (e) { + console.log('problem with request: ' + e.message); + }); + req.end(); + count++; + outputs.push(op); +} + +function getRemote() { + var old_versions = '1.0.1 1.1.0 1.1.1 1.1.2 1.2.0 1.3.0 1.4.0'.split(' '), + new_versions = '1.5.0 1.5.1 1.6.0 1.6.1 1.7.0 1.7.1'.split(' '), + i; + + for (i = 0; i < old_versions.length; i++) { + getSizeAtVersion(old_versions[i], '/moment.min.js'); + } + for (i = 0; i < new_versions.length; i++) { + getSizeAtVersion(new_versions[i], '/min/moment.min.js'); + } +} + +function getLocal() { + count ++; + var op = {}; + outputs.push(op); + fs.readFile(path.normalize(__dirname + '/../min/moment.min.js'), 'utf8', function (err, data) { + if (err) { + throw err; + } + zlib.gzip(data, function (error, result) { + op.version = '.next'; + op.gzip = result.length; + op.original = data.length; + resolved ++; + check(); + }); + }); +} + + + +module.exports = function (grunt) { + grunt.registerTask('history', 'Check the codebase filesize over different releases.', function () { + done = this.async(); + getRemote(); + getLocal(); + }); +}; \ No newline at end of file diff --git a/static/bootstrap-datetimepicker-master/moment-develop/tasks/size.js b/static/bootstrap-datetimepicker-master/moment-develop/tasks/size.js new file mode 100755 index 0000000..e465e25 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/tasks/size.js @@ -0,0 +1,60 @@ +var https = require("https"), + zlib = require('zlib'), + path = require('path'), + fs = require('fs'); + +var stable = '1.7.1', + done; + +function getVersion(path, cb) { + var data = '', + + req = https.request({ + host: 'raw.github.com', + port: 443, + path: '/timrwood/moment/' + path + }, function (res) { + res.setEncoding('utf8'); + res.on('data', function (chunk) { + data += chunk; + }); + res.on('end', function (e) { + zlib.gzip(data, function (error, result) { + cb(data.length, result.length); + }); + }); + }); + req.on('error', function (e) { + console.log('problem with request: ' + e.message); + }); + req.end(); +} + +function printDiffs(stableLen, stableGzip, currentLen, currentGzip) { + var diff = currentLen - stableLen, + gzipDiff = currentGzip - stableGzip; + + console.log("Filesize difference from current branch to " + stable); + console.log(stable + " " + stableLen + ' / ' + stableGzip); + console.log("curr " + currentLen + ' / ' + currentGzip); + console.log("diff " + (diff > 0 ? '+' : '') + diff); + console.log("gzip " + (gzipDiff > 0 ? '+' : '') + gzipDiff); +} + + +module.exports = function (grunt) { + grunt.registerTask('size', 'Check the codebase filesize against the latest stable version.', function () { + done = this.async(); + fs.readFile(path.normalize(__dirname + '/../min/moment.min.js'), 'utf8', function (err, data) { + if (err) { + throw err; + } + zlib.gzip(data, function (error, result) { + getVersion(stable + '/min/moment.min.js', function (stableLength, stableGzipLength) { + printDiffs(stableLength, stableGzipLength, data.length, result.length); + done(); + }); + }); + }); + }); +}; \ No newline at end of file diff --git a/static/bootstrap-datetimepicker-master/moment-develop/tasks/zones.js b/static/bootstrap-datetimepicker-master/moment-develop/tasks/zones.js new file mode 100755 index 0000000..869653c --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/tasks/zones.js @@ -0,0 +1,60 @@ +var fs = require('fs'); + + +module.exports = function (grunt) { + var ZONE_TAB = '/usr/share/zoneinfo/zone.tab'; + + grunt.registerTask('zones', 'Run the unit tests in different timezones.', function () { + var done = this.async(); + + getAllTimezones(function (err, zones) { + if (err != null) { + throw err; + } + (function iterator(i) { + if (i >= zones.length) { + return done(); + } + runTestsInZone(zones[i], function (err) { + if (err != null) { + throw err; + } + iterator(i+1); + }); + }(0)); + }); + }); + + function getAllTimezones (callback) { + fs.readFile(ZONE_TAB, 'ascii', function (err, content) { + if (err != null) { + callback(err); + } + callback(null, content.split(/\r\n|\r|\n/) + // remove empty and commented lines + .filter(function (line) { return line && !/^#/.test(line); }) + // country code TAB coordinates TAB timezone + .map(function (line) { return line.split('\t')[2]; })); + }); + }; + + function runTestsInZone (zone, next) { + grunt.log.ok("Running tests in zone " + zone); + grunt.util.spawn({ + cmd: "grunt", + opts: { env: { + "PATH": process.env.PATH, + "TZ": zone + } }, + args: ["--no-color", "nodeunit"] + }, function (err, result, code) { + if (code !== 0) { + grunt.log.error(result.stdout.split(/\r\n|\r|\n/) + .filter(function (line) { return /^(>>|Warning:|$)/.test(line) }) + .map(function (line) { return (line.substr(0, 3) === '>> ' ? line.substr(3) : line); }) + .join('\n')); + } + next(); + }); + }; +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/browser-prefix.js b/static/bootstrap-datetimepicker-master/moment-develop/test/browser-prefix.js new file mode 100755 index 0000000..7123d76 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/browser-prefix.js @@ -0,0 +1,4 @@ +(function () { + var global = this, + require = function() { return global.moment; }, + exports = global.NPM_TESTS = {}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/browser-suffix.js b/static/bootstrap-datetimepicker-master/moment-develop/test/browser-suffix.js new file mode 100755 index 0000000..b6bc0f6 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/browser-suffix.js @@ -0,0 +1 @@ +}(this)); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/browser.js b/static/bootstrap-datetimepicker-master/moment-develop/test/browser.js new file mode 100755 index 0000000..83e2195 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/browser.js @@ -0,0 +1,3 @@ +/* global nodeunit */ + +nodeunit.run(NPM_TESTS); diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ar-ma.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ar-ma.js new file mode 100755 index 0000000..edded5d --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ar-ma.js @@ -0,0 +1,352 @@ +// moment.js Moroccan arabic (ar-ma) tests +// author: Abdel Said : https://github.com/abdelsaid +var moment = require("../../moment"); + +exports["lang:ar-ma"] = { + setUp : function (cb) { + moment.lang('ar-ma'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + var tests = 'يناير:يناير_فبراير:فبراير_مارس:مارس_أبريل:أبريل_ماي:ماي_يونيو:يونيو_يوليوز:يوليوز_غشت:غشت_شتنبر:شتنبر_أكتوبر:أكتوبر_نونبر:نونبر_دجنبر:دجنبر'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(':'); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'الأحد, فبراير 14 2010, 3:25:50 pm'], + ['ddd, hA', 'احد, 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 فبراير فبراير'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 الأحد احد ح'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '8 8 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['L', '14/02/2010'], + ['LL', '14 فبراير 2010'], + ['LLL', '14 فبراير 2010 15:25'], + ['LLLL', 'الأحد 14 فبراير 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 فبراير 2010'], + ['lll', '14 فبراير 2010 15:25'], + ['llll', 'احد 14 فبراير 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'يناير يناير_فبراير فبراير_مارس مارس_أبريل أبريل_ماي ماي_يونيو يونيو_يوليوز يوليوز_غشت غشت_شتنبر شتنبر_أكتوبر أكتوبر_نونبر نونبر_دجنبر دجنبر'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'الأحد احد ح_الإتنين اتنين ن_الثلاثاء ثلاثاء ث_الأربعاء اربعاء ر_الخميس خميس خ_الجمعة جمعة ج_السبت سبت س'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "ثوان", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "دقيقة", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "دقيقة", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 دقائق", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 دقائق", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "ساعة", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "ساعة", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 ساعات", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 ساعات", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 ساعات", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "يوم", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "يوم", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 أيام", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "يوم", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 أيام", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 أيام", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "شهر", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "شهر", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "شهر", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 أشهر", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 أشهر", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 أشهر", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "شهر", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 أشهر", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 أشهر", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "سنة", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "سنة", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 سنوات", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "سنة", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 سنوات", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "في ثوان", "prefix"); + test.equal(moment(0).from(30000), "منذ ثوان", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "منذ ثوان", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "في ثوان", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "في 5 أيام", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "اليوم على الساعة 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "اليوم على الساعة 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "اليوم على الساعة 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "غدا على الساعة 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "اليوم على الساعة 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "أمس على الساعة 02:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({d: i}); + test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + + // Saturday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 31]).week(), 1, "Dec 31 2011 should be week 1"); + test.equal(moment([2012, 0, 6]).week(), 1, "Jan 6 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).week(), 2, "Jan 7 2012 should be week 2"); + test.equal(moment([2012, 0, 13]).week(), 2, "Jan 13 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).week(), 3, "Jan 14 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2006, 11, 30]).week(), 1, "Dec 30 2006 should be week 1"); + test.equal(moment([2007, 0, 5]).week(), 1, "Jan 5 2007 should be week 1"); + test.equal(moment([2007, 0, 6]).week(), 2, "Jan 6 2007 should be week 2"); + test.equal(moment([2007, 0, 12]).week(), 2, "Jan 12 2007 should be week 2"); + test.equal(moment([2007, 0, 13]).week(), 3, "Jan 13 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 29]).week(), 1, "Dec 29 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 4]).week(), 1, "Jan 4 2008 should be week 1"); + test.equal(moment([2008, 0, 5]).week(), 2, "Jan 5 2008 should be week 2"); + test.equal(moment([2008, 0, 11]).week(), 2, "Jan 11 2008 should be week 2"); + test.equal(moment([2008, 0, 12]).week(), 3, "Jan 12 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 28]).week(), 1, "Dec 28 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 3]).week(), 1, "Jan 3 2003 should be week 1"); + test.equal(moment([2003, 0, 4]).week(), 2, "Jan 4 2003 should be week 2"); + test.equal(moment([2003, 0, 10]).week(), 2, "Jan 10 2003 should be week 2"); + test.equal(moment([2003, 0, 11]).week(), 3, "Jan 11 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 27]).week(), 1, "Dec 27 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 2]).week(), 1, "Jan 2 2009 should be week 1"); + test.equal(moment([2009, 0, 3]).week(), 2, "Jan 3 2009 should be week 2"); + test.equal(moment([2009, 0, 9]).week(), 2, "Jan 9 2009 should be week 2"); + test.equal(moment([2009, 0, 10]).week(), 3, "Jan 10 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(5); + + test.equal(moment([2009, 11, 26]).week(), 1, "Dec 26 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 2]).week(), 2, "Jan 2 2010 should be week 2"); + test.equal(moment([2010, 0, 8]).week(), 2, "Jan 8 2010 should be week 2"); + test.equal(moment([2010, 0, 9]).week(), 3, "Jan 9 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 7]).week(), 1, "Jan 7 2011 should be week 1"); + test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); + test.equal(moment([2011, 0, 14]).week(), 2, "Jan 14 2011 should be week 2"); + test.equal(moment([2011, 0, 15]).week(), 3, "Jan 15 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', "Dec 31 2011 should be week 1"); + test.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', "Jan 6 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', "Jan 7 2012 should be week 2"); + test.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', "Jan 13 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', "Jan 14 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/ar-ma'), 'ar-ma', "module should export ar-ma"); + } + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ar.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ar.js new file mode 100755 index 0000000..098b802 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ar.js @@ -0,0 +1,361 @@ +// moment.js arabic (ar) tests +// author: Abdel Said : https://github.com/abdelsaid +var moment = require("../../moment"); + +exports["lang:ar"] = { + setUp : function (cb) { + moment.lang('ar'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + var tests = 'يناير/ كانون الثاني:يناير/ كانون الثاني_فبراير/ شباط:فبراير/ شباط_مارس/ آذار:مارس/ آذار_أبريل/ نيسان:أبريل/ نيسان_مايو/ أيار:مايو/ أيار_يونيو/ حزيران:يونيو/ حزيران_يوليو/ تموز:يوليو/ تموز_أغسطس/ آب:أغسطس/ آب_سبتمبر/ أيلول:سبتمبر/ أيلول_أكتوبر/ تشرين الأول:أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني:نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول:ديسمبر/ كانون الأول'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1) + ' instead is month ' + moment(input, mmm).month()); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(':'); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'الأحد, فبراير/ شباط 14 2010, 3:25:50 pm'], + ['ddd, hA', 'الأحد, 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 فبراير/ شباط فبراير/ شباط'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 الأحد الأحد ح'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '8 8 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['L', '14/02/2010'], + ['LL', '14 فبراير/ شباط 2010'], + ['LLL', '14 فبراير/ شباط 2010 15:25'], + ['LLLL', 'الأحد 14 فبراير/ شباط 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 فبراير/ شباط 2010'], + ['lll', '14 فبراير/ شباط 2010 15:25'], + ['llll', 'الأحد 14 فبراير/ شباط 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'يناير/ كانون الثاني يناير/ كانون الثاني_فبراير/ شباط فبراير/ شباط_مارس/ آذار مارس/ آذار_أبريل/ نيسان أبريل/ نيسان_مايو/ أيار مايو/ أيار_يونيو/ حزيران يونيو/ حزيران_يوليو/ تموز يوليو/ تموز_أغسطس/ آب أغسطس/ آب_سبتمبر/ أيلول سبتمبر/ أيلول_أكتوبر/ تشرين الأول أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول ديسمبر/ كانون الأول'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'الأحد الأحد ح_الإثنين الإثنين ن_الثلاثاء الثلاثاء ث_الأربعاء الأربعاء ر_الخميس الخميس خ_الجمعة الجمعة ج_السبت السبت س'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "ثوان", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "دقيقة", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "دقيقة", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 دقائق", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 دقائق", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "ساعة", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "ساعة", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 ساعات", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 ساعات", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 ساعات", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "يوم", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "يوم", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 أيام", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "يوم", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 أيام", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 أيام", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "شهر", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "شهر", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "شهر", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 أشهر", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 أشهر", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 أشهر", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "شهر", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 أشهر", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 أشهر", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "سنة", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "سنة", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 سنوات", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "سنة", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 سنوات", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "في ثوان", "prefix"); + test.equal(moment(0).from(30000), "منذ ثوان", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "منذ ثوان", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "في ثوان", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "في 5 أيام", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "اليوم على الساعة 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "اليوم على الساعة 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "اليوم على الساعة 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "غدا على الساعة 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "اليوم على الساعة 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "أمس على الساعة 02:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [على الساعة] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + + // Saturday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 31]).week(), 1, "Dec 31 2011 should be week 1"); + test.equal(moment([2012, 0, 6]).week(), 1, "Jan 6 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).week(), 2, "Jan 7 2012 should be week 2"); + test.equal(moment([2012, 0, 13]).week(), 2, "Jan 13 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).week(), 3, "Jan 14 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2006, 11, 30]).week(), 1, "Dec 30 2006 should be week 1"); + test.equal(moment([2007, 0, 5]).week(), 1, "Jan 5 2007 should be week 1"); + test.equal(moment([2007, 0, 6]).week(), 2, "Jan 6 2007 should be week 2"); + test.equal(moment([2007, 0, 12]).week(), 2, "Jan 12 2007 should be week 2"); + test.equal(moment([2007, 0, 13]).week(), 3, "Jan 13 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 29]).week(), 1, "Dec 29 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 4]).week(), 1, "Jan 4 2008 should be week 1"); + test.equal(moment([2008, 0, 5]).week(), 2, "Jan 5 2008 should be week 2"); + test.equal(moment([2008, 0, 11]).week(), 2, "Jan 11 2008 should be week 2"); + test.equal(moment([2008, 0, 12]).week(), 3, "Jan 12 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(10); + + test.equal(moment([2002, 11, 28]).week(), 1, "Dec 28 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 3]).week(), 1, "Jan 3 2003 should be week 1"); + test.equal(moment([2003, 0, 4]).week(), 2, "Jan 4 2003 should be week 2"); + test.equal(moment([2003, 0, 10]).week(), 2, "Jan 10 2003 should be week 2"); + test.equal(moment([2003, 0, 11]).week(), 3, "Jan 11 2003 should be week 3"); + + test.equal(moment("2003 1 6", "gggg w d").format("YYYY-MM-DD"), "2002-12-28", "Week 1 of 2003 should be Dec 28 2002"); + test.equal(moment("2003 1 0", "gggg w e").format("YYYY-MM-DD"), "2002-12-28", "Week 1 of 2003 should be Dec 28 2002"); + test.equal(moment("2003 1 6", "gggg w d").format("gggg w d"), "2003 1 6", "Saturday of week 1 of 2003 parsed should be formatted as 2003 1 6"); + test.equal(moment("2003 1 0", "gggg w e").format("gggg w e"), "2003 1 0", "1st day of week 1 of 2003 parsed should be formatted as 2003 1 0"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 27]).week(), 1, "Dec 27 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 2]).week(), 1, "Jan 2 2009 should be week 1"); + test.equal(moment([2009, 0, 3]).week(), 2, "Jan 3 2009 should be week 2"); + test.equal(moment([2009, 0, 9]).week(), 2, "Jan 9 2009 should be week 2"); + test.equal(moment([2009, 0, 10]).week(), 3, "Jan 10 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(5); + + test.equal(moment([2009, 11, 26]).week(), 1, "Dec 26 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 2]).week(), 2, "Jan 2 2010 should be week 2"); + test.equal(moment([2010, 0, 8]).week(), 2, "Jan 8 2010 should be week 2"); + test.equal(moment([2010, 0, 9]).week(), 3, "Jan 9 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 7]).week(), 1, "Jan 7 2011 should be week 1"); + test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); + test.equal(moment([2011, 0, 14]).week(), 2, "Jan 14 2011 should be week 2"); + test.equal(moment([2011, 0, 15]).week(), 3, "Jan 15 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', "Dec 31 2011 should be week 1"); + test.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', "Jan 6 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', "Jan 7 2012 should be week 2"); + test.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', "Jan 13 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', "Jan 14 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/ar'), 'ar', "module should export ar"); + } + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/bg.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/bg.js new file mode 100755 index 0000000..f28e693 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/bg.js @@ -0,0 +1,372 @@ +var moment = require("../../moment"); + + + /************************************************** + Bulgarian + *************************************************/ + +exports["lang:bg"] = { + setUp : function (cb) { + moment.lang('bg'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + var tests = 'януари янр_февруари фев_март мар_април апр_май май_юни юни_юли юли_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + var a = [ + ['dddd, MMMM Do YYYY, H:mm:ss', 'неделя, февруари 14-ти 2010, 15:25:50'], + ['ddd, hA', 'нед, 3PM'], + ['M Mo MM MMMM MMM', '2 2-ри 02 февруари фев'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14-ти 14'], + ['d do dddd ddd dd', '0 0-ев неделя нед нд'], + ['DDD DDDo DDDD', '45 45-ти 045'], + ['w wo ww', '7 7-ми 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45-ти day of the year'], + ['L', '14.02.2010'], + ['LL', '14 февруари 2010'], + ['LLL', '14 февруари 2010 15:25'], + ['LLLL', 'неделя, 14 февруари 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14 фев 2010'], + ['lll', '14 фев 2010 15:25'], + ['llll', 'нед, 14 фев 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1-ви', '1-ви'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2-ри', '2-ри'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3-ти', '3-ти'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4-ти', '4-ти'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5-ти', '5-ти'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6-ти', '6-ти'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7-ми', '7-ми'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8-ми', '8-ми'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9-ти', '9-ти'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10-ти', '10-ти'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11-ти', '11-ти'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12-ти', '12-ти'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13-ти', '13-ти'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14-ти', '14-ти'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15-ти', '15-ти'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16-ти', '16-ти'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17-ти', '17-ти'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18-ти', '18-ти'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19-ти', '19-ти'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20-ти', '20-ти'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21-ви', '21-ви'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22-ри', '22-ри'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23-ти', '23-ти'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24-ти', '24-ти'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25-ти', '25-ти'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26-ти', '26-ти'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27-ми', '27-ми'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28-ми', '28-ми'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29-ти', '29-ти'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30-ти', '30-ти'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31-ви', '31-ви'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'януари янр_февруари фев_март мар_април апр_май май_юни юни_юли юли_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'неделя нед нд_понеделник пон пн_вторник вто вт_сряда сря ср_четвъртък чет чт_петък пет пт_събота съб сб'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "няколко секунди", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "минута", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "минута", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 минути", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 минути", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "час", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "час", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 часа", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 часа", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 часа", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "ден", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "ден", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 дни", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "ден", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 дни", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 дни", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "месец", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "месец", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "месец", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 месеца", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 месеца", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 месеца", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "месец", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 месеца", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 месеца", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "година", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "година", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 години", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "година", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 години", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "след няколко секунди", "prefix"); + test.equal(moment(0).from(30000), "преди няколко секунди", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "преди няколко секунди", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "след няколко секунди", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "след 5 дни", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Днес в 2:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Днес в 2:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Днес в 3:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Утре в 2:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Днес в 1:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Вчера в 2:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [в] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [в] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [в] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + case 3: + case 6: + return '[В изминалата] dddd [в] LT'; + case 1: + case 2: + case 4: + case 5: + return '[В изминалия] dddd [в] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); + test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); + test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); + test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); + test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ви', "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ви', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-ри', "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-ри', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-ти', "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/bg'), 'bg', "module should export bg"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/br.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/br.js new file mode 100755 index 0000000..7e007a7 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/br.js @@ -0,0 +1,279 @@ +var moment = require("../../moment"); + + + /************************************************** + Breton + *************************************************/ + +exports["lang:br"] = { + setUp : function (cb) { + moment.lang('br'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('br'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + var tests = "Genver Gen_C'hwevrer C'hwe_Meurzh Meu_Ebrel Ebr_Mae Mae_Mezheven Eve_Gouere Gou_Eost Eos_Gwengolo Gwe_Here Her_Du Du_Kerzu Ker".split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(17); + moment.lang('br'); + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', "Sul, C'hwevrer 14vet 2010, 3:25:50 pm"], + ['ddd, h A', 'Sul, 3 PM'], + ['M Mo MM MMMM MMM', "2 2vet 02 C'hwevrer C'hwe"], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14vet 14'], + ['d do dddd ddd dd', '0 0vet Sul Sul Su'], + ['DDD DDDo DDDD', '45 45vet 045'], + ['w wo ww', '6 6vet 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['DDDo [devezh] [ar] [vloaz]', '45vet devezh ar vloaz'], + ['L', '14/02/2010'], + ['LL', "14 a viz C'hwevrer 2010"], + ['LLL', "14 a viz C'hwevrer 2010 3e25 PM"], + ['LLLL', "Sul, 14 a viz C'hwevrer 2010 3e25 PM"] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + moment.lang('br'); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1añ', '1añ'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2vet', '2vet'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3vet', '3vet'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4vet', '4vet'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5vet', '5vet'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6vet', '6vet'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7vet', '7vet'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8vet', '8vet'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9vet', '9vet'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10vet', '10vet'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11vet', '11vet'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12vet', '12vet'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13vet', '13vet'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14vet', '14vet'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15vet', '15vet'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16vet', '16vet'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17vet', '17vet'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18vet', '18vet'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19vet', '19vet'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20vet', '20vet'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21vet', '21vet'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22vet', '22vet'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23vet', '23vet'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24vet', '24vet'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25vet', '25vet'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26vet', '26vet'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27vet', '27vet'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28vet', '28vet'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29vet', '29vet'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30vet', '30vet'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31vet', '31vet'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + moment.lang('br'); + var expected = "Genver Gen_C'hwevrer C'hwe_Meurzh Meu_Ebrel Ebr_Mae Mae_Mezheven Eve_Gouere Gou_Eost Eos_Gwengolo Gwe_Here Her_Du Du_Kerzu Ker".split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + moment.lang('br'); + var expected = "Sul Sul Su_Lun Lun Lu_Meurzh Meu Me_Merc'her Mer Mer_Yaou Yao Ya_Gwener Gwe Gw_Sadorn Sad Sa".split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + moment.lang('br'); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "un nebeud segondennoù", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "ur vunutenn", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "ur vunutenn", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 vunutenn", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 munutenn", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "un eur", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "un eur", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 eur", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 eur", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 eur", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "un devezh", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "un devezh", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 zevezh", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "un devezh", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 devezh", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 devezh", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "ur miz", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "ur miz", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "ur miz", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 viz", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 viz", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 miz", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "ur miz", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 miz", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 miz", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "ur bloaz", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "ur bloaz", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 vloaz", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ur bloaz", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 bloaz", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + moment.lang('br'); + test.equal(moment(30000).from(0), "a-benn un nebeud segondennoù", "prefix"); + test.equal(moment(0).from(30000), "un nebeud segondennoù 'zo", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + moment.lang('br'); + test.equal(moment().fromNow(), "un nebeud segondennoù 'zo", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + moment.lang('br'); + test.equal(moment().add({s: 30}).fromNow(), "a-benn un nebeud segondennoù", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "a-benn 5 devezh", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + moment.lang('br'); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Hiziv da 2e00 AM", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Hiziv da 2e25 AM", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Hiziv da 3e00 AM", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Warc'hoazh da 2e00 AM", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Hiziv da 1e00 AM", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Dec'h da 2e00 AM", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + moment.lang('br'); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [da] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [da] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [da] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + moment.lang('br'); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('dddd [paset da] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [paset da] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [paset da] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + moment.lang('br'); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + "special mutations for years": function (test) { + test.expect(12); + moment.lang('br'); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ur bloaz", "mutation 1 year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 2}), true), "2 vloaz", "mutation 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 3}), true), "3 bloaz", "mutation 3 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 4}), true), "4 bloaz", "mutation 4 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 bloaz", "mutation 5 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 9}), true), "9 bloaz", "mutation 9 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 10}), true), "10 vloaz", "mutation 10 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 21}), true), "21 bloaz", "mutation 21 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 22}), true), "22 vloaz", "mutation 22 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 133}), true), "133 bloaz", "mutation 133 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 148}), true), "148 vloaz", "mutation 148 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 261}), true), "261 bloaz", "mutation 261 years"); + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/br'), 'br', "module should export br"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/bs.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/bs.js new file mode 100755 index 0000000..10930e1 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/bs.js @@ -0,0 +1,393 @@ +var moment = require("../../moment"); + + + /************************************************** + Croatian + *************************************************/ + +exports["lang:bs"] = { + setUp : function (cb) { + moment.lang('bs'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'januar jan._februar feb._mart mar._april apr._maj maj._juni jun._juli jul._avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + var a = [ + ['dddd, Do MMMM YYYY, h:mm:ss a', 'nedjelja, 14. februar 2010, 3:25:50 pm'], + ['ddd, hA', 'ned., 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 februar feb.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. nedjelja ned. ne'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '7 7. 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['L', '14. 02. 2010'], + ['LL', '14. februar 2010'], + ['LLL', '14. februar 2010 15:25'], + ['LLLL', 'nedjelja, 14. februar 2010 15:25'], + ['l', '14. 2. 2010'], + ['ll', '14. feb. 2010'], + ['lll', '14. feb. 2010 15:25'], + ['llll', 'ned., 14. feb. 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'januar jan._februar feb._mart mar._april apr._maj maj._juni jun._juli jul._avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'nedjelja ned. ne_ponedjeljak pon. po_utorak uto. ut_srijeda sri. sr_četvrtak čet. če_petak pet. pe_subota sub. su'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "par sekundi", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "jedna minuta", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "jedna minuta", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minute", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuta", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "jedan sat", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "jedan sat", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 sata", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 sati", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 sati", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "dan", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "dan", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dana", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "dan", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dana", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dana", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "mjesec", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "mjesec", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "mjesec", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mjeseca", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mjeseca", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mjeseca", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "mjesec", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mjeseci", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mjeseci", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "godinu", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "godinu", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 godine", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "godinu", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 godina", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "za par sekundi", "prefix"); + test.equal(moment(0).from(30000), "prije par sekundi", "prefix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "prije par sekundi", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "za par sekundi", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "za 5 dana", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "danas u 2:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "danas u 2:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "danas u 3:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "sutra u 2:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "danas u 1:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "jučer u 2:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); + test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); + test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); + test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); + test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/bs'), 'bs', "module should export bs"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ca.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ca.js new file mode 100755 index 0000000..fbf68fe --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ca.js @@ -0,0 +1,326 @@ +var moment = require("../../moment"); + + + /************************************************** + Català + *************************************************/ + +exports["lang:ca"] = { + setUp : function (cb) { + moment.lang('ca'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = "gener gen._febrer febr._març mar._abril abr._maig mai._juny jun._juliol jul._agost ag._setembre set._octubre oct._novembre nov._desembre des.".split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = "gener gen._febrer febr._març mar._abril abr._maig mai._juny jun._juliol jul._agost ag._setembre set._octubre oct._novembre nov._desembre des.".split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = "diumenge dg. Dg_dilluns dl. Dl_dimarts dt. Dt_dimecres dc. Dc_dijous dj. Dj_divendres dv. Dv_dissabte ds. Ds".split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "uns segons", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "un minut", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "un minut", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minuts", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuts", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "una hora", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "una hora", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 hores", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 hores", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 hores", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "un dia", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "un dia", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dies", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "un dia", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dies", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dies", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "un mes", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "un mes", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "un mes", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mesos", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mesos", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mesos", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "un mes", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mesos", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mesos", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "un any", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "un any", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 anys", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "un any", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 anys", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "en uns segons", "prefix"); + test.equal(moment(0).from(30000), "fa uns segons", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "fa uns segons", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "en uns segons", "en uns segons"); + test.equal(moment().add({d: 5}).fromNow(), "en 5 dies", "en 5 dies"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(7); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "avui a les 2:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "avui a les 2:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "avui a les 3:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "demà a les 2:00", "tomorrow at the same time"); + test.equal(moment(a).add({ d: 1, h : -1 }).calendar(), "demà a la 1:00", "tomorrow minus 1 hour"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "avui a la 1:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "ahir a les 2:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[el] dddd [passat a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[el] dddd [passat a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[el] dddd [passat a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/ca'), 'ca', "module should export ca"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/cs.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/cs.js new file mode 100755 index 0000000..07d2c2b --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/cs.js @@ -0,0 +1,449 @@ +var moment = require("../../moment"); + + + /************************************************** + Czech + *************************************************/ + +exports["lang:cs"] = { + setUp : function (cb) { + moment.lang('cs'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + var tests = 'leden led_únor úno_březen bře_duben dub_květen kvě_červen čvn_červenec čvc_srpen srp_září zář_říjen říj_listopad lis_prosinec pro'.split("_"), i; + function equalTest(input, mmm, monthIndex) { + test.equal(moment(input, mmm).month(), monthIndex, input + ' should be month ' + (monthIndex + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss', 'neděle, únor 14. 2010, 3:25:50'], + ['ddd, h', 'ne, 3'], + ['M Mo MM MMMM MMM', '2 2. 02 únor úno'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. neděle ne ne'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['DDDo [den v roce]', '45. den v roce'], + ['L', '14.02.2010'], + ['LL', '14. únor 2010'], + ['LLL', '14. únor 2010 15:25'], + ['LLLL', 'neděle 14. únor 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14. úno 2010'], + ['lll', '14. úno 2010 15:25'], + ['llll', 'ne 14. úno 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'leden led_únor úno_březen bře_duben dub_květen kvě_červen čvn_červenec čvc_srpen srp_září zář_říjen říj_listopad lis_prosinec pro'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'neděle ne ne_pondělí po po_úterý út út_středa st st_čtvrtek čt čt_pátek pá pá_sobota so so'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "pár vteřin", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "minuta", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "minuta", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minuty", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minut", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "hodina", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "hodina", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 hodiny", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 hodin", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 hodin", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "den", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "den", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dny", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "den", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dní", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dní", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "měsíc", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "měsíc", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "měsíc", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 měsíce", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 měsíce", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 měsíce", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "měsíc", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 měsíců", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 měsíců", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "rok", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "rok", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 roky", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "rok", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 let", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "za pár vteřin", "prefix"); + test.equal(moment(0).from(30000), "před pár vteřinami", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "před pár vteřinami", "now from now should display as in the past"); + test.done(); + }, + + "fromNow (future)" : function (test) { + test.expect(16); + test.equal(moment().add({s: 30}).fromNow(), "za pár vteřin", "in a few seconds"); + test.equal(moment().add({m: 1}).fromNow(), "za minutu", "in a minute"); + test.equal(moment().add({m: 3}).fromNow(), "za 3 minuty", "in 3 minutes"); + test.equal(moment().add({m: 10}).fromNow(), "za 10 minut", "in 10 minutes"); + test.equal(moment().add({h: 1}).fromNow(), "za hodinu", "in an hour"); + test.equal(moment().add({h: 3}).fromNow(), "za 3 hodiny", "in 3 hours"); + test.equal(moment().add({h: 10}).fromNow(), "za 10 hodin", "in 10 hours"); + test.equal(moment().add({d: 1}).fromNow(), "za den", "in a day"); + test.equal(moment().add({d: 3}).fromNow(), "za 3 dny", "in 3 days"); + test.equal(moment().add({d: 10}).fromNow(), "za 10 dní", "in 10 days"); + test.equal(moment().add({M: 1}).fromNow(), "za měsíc", "in a month"); + test.equal(moment().add({M: 3}).fromNow(), "za 3 měsíce", "in 3 months"); + test.equal(moment().add({M: 10}).fromNow(), "za 10 měsíců", "in 10 months"); + test.equal(moment().add({y: 1}).fromNow(), "za rok", "in a year"); + test.equal(moment().add({y: 3}).fromNow(), "za 3 roky", "in 3 years"); + test.equal(moment().add({y: 10}).fromNow(), "za 10 let", "in 10 years"); + test.done(); + }, + + "fromNow (past)" : function (test) { + test.expect(16); + test.equal(moment().subtract({s: 30}).fromNow(), "před pár vteřinami", "a few seconds ago"); + test.equal(moment().subtract({m: 1}).fromNow(), "před minutou", "a minute ago"); + test.equal(moment().subtract({m: 3}).fromNow(), "před 3 minutami", "3 minutes ago"); + test.equal(moment().subtract({m: 10}).fromNow(), "před 10 minutami", "10 minutes ago"); + test.equal(moment().subtract({h: 1}).fromNow(), "před hodinou", "an hour ago"); + test.equal(moment().subtract({h: 3}).fromNow(), "před 3 hodinami", "3 hours ago"); + test.equal(moment().subtract({h: 10}).fromNow(), "před 10 hodinami", "10 hours ago"); + test.equal(moment().subtract({d: 1}).fromNow(), "před dnem", "a day ago"); + test.equal(moment().subtract({d: 3}).fromNow(), "před 3 dny", "3 days ago"); + test.equal(moment().subtract({d: 10}).fromNow(), "před 10 dny", "10 days ago"); + test.equal(moment().subtract({M: 1}).fromNow(), "před měsícem", "a month ago"); + test.equal(moment().subtract({M: 3}).fromNow(), "před 3 měsíci", "3 months ago"); + test.equal(moment().subtract({M: 10}).fromNow(), "před 10 měsíci", "10 months ago"); + test.equal(moment().subtract({y: 1}).fromNow(), "před rokem", "a year ago"); + test.equal(moment().subtract({y: 3}).fromNow(), "před 3 lety", "3 years ago"); + test.equal(moment().subtract({y: 10}).fromNow(), "před 10 lety", "10 years ago"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "dnes v 2:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "dnes v 2:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "dnes v 3:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "zítra v 2:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "dnes v 1:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "včera v 2:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m, nextDay; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + nextDay = ''; + switch (m.day()) { + case 0: + nextDay = 'v neděli'; + break; + case 1: + nextDay = 'v pondělí'; + break; + case 2: + nextDay = 'v úterý'; + break; + case 3: + nextDay = 've středu'; + break; + case 4: + nextDay = 've čtvrtek'; + break; + case 5: + nextDay = 'v pátek'; + break; + case 6: + nextDay = 'v sobotu'; + break; + } + test.equal(m.calendar(), m.format('[' + nextDay + '] [v] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[' + nextDay + '] [v] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[' + nextDay + '] [v] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m, lastDay; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + lastDay = ''; + switch (m.day()) { + case 0: + lastDay = 'minulou neděli'; + break; + case 1: + lastDay = 'minulé pondělí'; + break; + case 2: + lastDay = 'minulé úterý'; + break; + case 3: + lastDay = 'minulou středu'; + break; + case 4: + lastDay = 'minulý čtvrtek'; + break; + case 5: + lastDay = 'minulý pátek'; + break; + case 6: + lastDay = 'minulou sobotu'; + break; + } + test.equal(m.calendar(), m.format('[' + lastDay + '] [v] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[' + lastDay + '] [v] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[' + lastDay + '] [v] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + "humanize duration" : function (test) { + test.expect(4); + test.equal(moment.duration(1, "minutes").humanize(), "minuta", "a minute (future)"); + test.equal(moment.duration(1, "minutes").humanize(true), "za minutu", "in a minute"); + test.equal(moment.duration(-1, "minutes").humanize(), "minuta", "a minute (past)"); + test.equal(moment.duration(-1, "minutes").humanize(true), "před minutou", "a minute ago"); + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/cs'), 'cs', "module should export cs"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/cv.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/cv.js new file mode 100755 index 0000000..27d81a9 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/cv.js @@ -0,0 +1,365 @@ +var moment = require("../../moment"); + + + /************************************************** + Chuvash + *************************************************/ + +exports["lang:cv"] = { + setUp : function (cb) { + moment.lang('cv'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'кăрлач кăр_нарăс нар_пуш пуш_ака ака_май май_çĕртме çĕр_утă утă_çурла çур_авăн ав_юпа юпа_чӳк чӳк_раштав раш'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'вырсарникун, нарăс 14-мĕш 2010, 3:25:50 pm'], + ['ddd, hA', 'выр, 3PM'], + ['M Mo MM MMMM MMM', '2 2-мĕш 02 нарăс нар'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14-мĕш 14'], + ['d do dddd ddd dd', '0 0-мĕш вырсарникун выр вр'], + ['DDD DDDo DDDD', '45 45-мĕш 045'], + ['w wo ww', '7 7-мĕш 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['Çулăн DDDo кунĕ', 'Çулăн 45-мĕш кунĕ'], + ['L', '14-02-2010'], + ['LL', '2010 çулхи нарăс уйăхĕн 14-мĕшĕ'], + ['LLL', '2010 çулхи нарăс уйăхĕн 14-мĕшĕ, 15:25'], + ['LLLL', 'вырсарникун, 2010 çулхи нарăс уйăхĕн 14-мĕшĕ, 15:25'], + ['l', '14-2-2010'], + ['ll', '2010 çулхи нар уйăхĕн 14-мĕшĕ'], + ['lll', '2010 çулхи нар уйăхĕн 14-мĕшĕ, 15:25'], + ['llll', 'выр, 2010 çулхи нар уйăхĕн 14-мĕшĕ, 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1-мĕш', '1-мĕш'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2-мĕш', '2-мĕш'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3-мĕш', '3-мĕш'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4-мĕш', '4-мĕш'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5-мĕш', '5-мĕш'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6-мĕш', '6-мĕш'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7-мĕш', '7-мĕш'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8-мĕш', '8-мĕш'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9-мĕш', '9-мĕш'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10-мĕш', '10-мĕш'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11-мĕш', '11-мĕш'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12-мĕш', '12-мĕш'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13-мĕш', '13-мĕш'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14-мĕш', '14-мĕш'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15-мĕш', '15-мĕш'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16-мĕш', '16-мĕш'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17-мĕш', '17-мĕш'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18-мĕш', '18-мĕш'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19-мĕш', '19-мĕш'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20-мĕш', '20-мĕш'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21-мĕш', '21-мĕш'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22-мĕш', '22-мĕш'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23-мĕш', '23-мĕш'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24-мĕш', '24-мĕш'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25-мĕш', '25-мĕш'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26-мĕш', '26-мĕш'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27-мĕш', '27-мĕш'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28-мĕш', '28-мĕш'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29-мĕш', '29-мĕш'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30-мĕш', '30-мĕш'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31-мĕш', '31-мĕш'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'кăрлач кăр_нарăс нар_пуш пуш_ака ака_май май_çĕртме çĕр_утă утă_çурла çур_авăн ав_юпа юпа_чӳк чӳк_раштав раш'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'вырсарникун выр вр_тунтикун тун тн_ытларикун ытл ыт_юнкун юн юн_кĕçнерникун кĕç кç_эрнекун эрн эр_шăматкун шăм шм'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "пĕр-ик çеккунт", "44 sekunder = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "пĕр минут", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "пĕр минут", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 минут", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 минут", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "пĕр сехет", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "пĕр сехет", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 сехет", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 сехет", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 сехет", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "пĕр кун", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "пĕр кун", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 кун", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "пĕр кун", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 кун", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 кун", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "пĕр уйăх", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "пĕр уйăх", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "пĕр уйăх", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 уйăх", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 уйăх", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 уйăх", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "пĕр уйăх", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 уйăх", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 уйăх", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "пĕр çул", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "пĕр çул", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 çул", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "пĕр çул", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 çул", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "пĕр-ик çеккунтран", "prefix"); + test.equal(moment(0).from(30000), "пĕр-ик çеккунт каялла", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "пĕр-ик çеккунт каялла", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(4); + test.equal(moment().add({s: 30}).fromNow(), "пĕр-ик çеккунтран", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "5 кунран", "in 5 days"); + test.equal(moment().add({h: 2}).fromNow(), "2 сехетрен", "in 2 hours, the right suffix!"); + test.equal(moment().add({y: 3}).fromNow(), "3 çултан", "in 3 years, the right suffix!"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + var a = moment().hours(2).minutes(0).seconds(0); + test.equal(moment(a).calendar(), "Паян 02:00 сехетре", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Паян 02:25 сехетре", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Паян 03:00 сехетре", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Ыран 02:00 сехетре", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Паян 01:00 сехетре", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Ĕнер 02:00 сехетре", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('[Çитес] dddd LT [сехетре]'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[Çитес] dddd LT [сехетре]'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[Çитес] dddd LT [сехетре]'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[Иртнĕ] dddd LT [сехетре]'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[Иртнĕ] dddd LT [сехетре]'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[Иртнĕ] dddd LT [сехетре]'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); + test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); + test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); + test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); + test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-мĕш', "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-мĕш', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-мĕш', "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-мĕш', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-мĕш', "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/cv'), 'cv', "module should export cv"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/cy.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/cy.js new file mode 100755 index 0000000..362b89b --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/cy.js @@ -0,0 +1,362 @@ +var moment = require("../../moment"); + + + /************************************************** + Welsh + *************************************************/ + +exports["lang:cy"] = { + setUp : function (cb) { + moment.lang('cy'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'Ionawr Ion_Chwefror Chwe_Mawrth Maw_Ebrill Ebr_Mai Mai_Mehefin Meh_Gorffennaf Gor_Awst Aws_Medi Med_Hydref Hyd_Tachwedd Tach_Rhagfyr Rhag'.split("_"), + i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Dydd Sul, Chwefror 14eg 2010, 3:25:50 pm'], + ['ddd, hA', 'Sul, 3PM'], + ['M Mo MM MMMM MMM', '2 2il 02 Chwefror Chwe'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14eg 14'], + ['d do dddd ddd dd', '0 0 Dydd Sul Sul Su'], + ['DDD DDDo DDDD', '45 45ain 045'], + ['w wo ww', '6 6ed 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45ain day of the year'], + ['L', '14/02/2010'], + ['LL', '14 Chwefror 2010'], + ['LLL', '14 Chwefror 2010 15:25'], + ['LLLL', 'Dydd Sul, 14 Chwefror 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 Chwe 2010'], + ['lll', '14 Chwe 2010 15:25'], + ['llll', 'Sul, 14 Chwe 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1af', '1af'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2il', '2il'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3ydd', '3ydd'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4ydd', '4ydd'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5ed', '5ed'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6ed', '6ed'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7ed', '7ed'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8fed', '8fed'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9fed', '9fed'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10fed', '10fed'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11eg', '11eg'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12fed', '12fed'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13eg', '13eg'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14eg', '14eg'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15fed', '15fed'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16eg', '16eg'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17eg', '17eg'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18fed', '18fed'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19eg', '19eg'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20fed', '20fed'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21ain', '21ain'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22ain', '22ain'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23ain', '23ain'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24ain', '24ain'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25ain', '25ain'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26ain', '26ain'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27ain', '27ain'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28ain', '28ain'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29ain', '29ain'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30ain', '30ain'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31ain', '31ain'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'Ionawr Ion_Chwefror Chwe_Mawrth Maw_Ebrill Ebr_Mai Mai_Mehefin Meh_Gorffennaf Gor_Awst Aws_Medi Med_Hydref Hyd_Tachwedd Tach_Rhagfyr Rhag'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'Dydd Sul Sul Su_Dydd Llun Llun Ll_Dydd Mawrth Maw Ma_Dydd Mercher Mer Me_Dydd Iau Iau Ia_Dydd Gwener Gwe Gw_Dydd Sadwrn Sad Sa'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "ychydig eiliadau", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "munud", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "munud", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 munud", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 munud", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "awr", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "awr", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 awr", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 awr", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 awr", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "diwrnod", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "diwrnod", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 diwrnod", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "diwrnod", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 diwrnod", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 diwrnod", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "mis", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "mis", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "mis", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mis", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mis", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mis", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "mis", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mis", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mis", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "blwyddyn", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "blwyddyn", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 flynedd", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "blwyddyn", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 flynedd", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + + test.equal(moment(30000).from(0), "mewn ychydig eiliadau", "prefix"); + test.equal(moment(0).from(30000), "ychydig eiliadau yn àl", "suffix"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + + test.equal(moment().add({s: 30}).fromNow(), "mewn ychydig eiliadau", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "mewn 5 diwrnod", "in 5 days"); + test.done(); + }, + + "same day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Heddiw am 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Heddiw am 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Heddiw am 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Yfory am 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Heddiw am 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Ddoe am 02:00", "yesterday at the same time"); + test.done(); + }, + + "same next week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [am] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [am] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [am] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "same last week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('dddd [diwethaf am] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [diwethaf am] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [diwethaf am] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "same all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52ain', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1af', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1af', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2il', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2il', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/cy'), 'cy', "module should export cy"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/da.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/da.js new file mode 100755 index 0000000..5c5ba26 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/da.js @@ -0,0 +1,297 @@ +var moment = require("../../moment"); + + + /************************************************** + Danish + *************************************************/ + +exports["lang:da"] = { + setUp : function (cb) { + moment.lang('da'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + var tests = 'januar jan_februar feb_marts mar_april apr_maj maj_juni jun_juli jul_august aug_september sep_oktober okt_november nov_december dec'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + var a = [ + ['dddd [den] Do MMMM YYYY, h:mm:ss a', 'søndag den 14. februar 2010, 3:25:50 pm'], + ['ddd hA', 'søn 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 februar feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. søndag søn sø'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[den] DDDo [dag på året]', 'den 45. dag på året'], + ['L', '14/02/2010'], + ['LL', '14 februar 2010'], + ['LLL', '14 februar 2010 15:25'], + ['LLLL', 'søndag 14. februar, 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 feb 2010'], + ['lll', '14 feb 2010 15:25'], + ['llll', 'søn 14. feb, 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'januar jan_februar feb_marts mar_april apr_maj maj_juni jun_juli jul_august aug_september sep_oktober okt_november nov_december dec'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'søndag søn sø_mandag man ma_tirsdag tir ti_onsdag ons on_torsdag tor to_fredag fre fr_lørdag lør lø'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "få sekunder", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "et minut", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "et minut", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutter", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutter", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "en time", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "en time", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 timer", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 timer", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 timer", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "en dag", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "en dag", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dage", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "en dag", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dage", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dage", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "en måned", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "en måned", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "en måned", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 måneder", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 måneder", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 måneder", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "en måned", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 måneder", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 måneder", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "et år", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "et år", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 år", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "et år", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 år", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "om få sekunder", "prefix"); + test.equal(moment(0).from(30000), "få sekunder siden", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "få sekunder siden", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "om få sekunder", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "om 5 dage", "in 5 days"); + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/da'), 'da', "module should export da"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/de.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/de.js new file mode 100755 index 0000000..f97c08d --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/de.js @@ -0,0 +1,358 @@ +var moment = require("../../moment"); + + + /************************************************** + German + *************************************************/ + +exports["lang:de"] = { + setUp : function (cb) { + moment.lang('de'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'Januar Jan._Februar Febr._März Mrz._April Apr._Mai Mai_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, Do MMMM YYYY, h:mm:ss a', 'Sonntag, 14. Februar 2010, 3:25:50 pm'], + ['ddd, hA', 'So., 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 Februar Febr.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. Sonntag So. So'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['L', '14.02.2010'], + ['LL', '14. Februar 2010'], + ['LLL', '14. Februar 2010 15:25 Uhr'], + ['LLLL', 'Sonntag, 14. Februar 2010 15:25 Uhr'], + ['l', '14.2.2010'], + ['ll', '14. Febr. 2010'], + ['lll', '14. Febr. 2010 15:25 Uhr'], + ['llll', 'So., 14. Febr. 2010 15:25 Uhr'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'Januar Jan._Februar Febr._März Mrz._April Apr._Mai Mai_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'Sonntag So. So_Montag Mo. Mo_Dienstag Di. Di_Mittwoch Mi. Mi_Donnerstag Do. Do_Freitag Fr. Fr_Samstag Sa. Sa'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "ein paar Sekunden", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "eine Minute", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "eine Minute", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 Minuten", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 Minuten", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "eine Stunde", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "eine Stunde", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 Stunden", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 Stunden", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 Stunden", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "ein Tag", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "ein Tag", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 Tage", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "ein Tag", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 Tage", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 Tage", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "ein Monat", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "ein Monat", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "ein Monat", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 Monate", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 Monate", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 Monate", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "ein Monat", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 Monate", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 Monate", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "ein Jahr", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "ein Jahr", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 Jahre", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ein Jahr", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 Jahre", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "in ein paar Sekunden", "prefix"); + test.equal(moment(0).from(30000), "vor ein paar Sekunden", "suffix"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "in ein paar Sekunden", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "in 5 Tagen", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Heute um 2:00 Uhr", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Heute um 2:25 Uhr", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Heute um 3:00 Uhr", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Morgen um 2:00 Uhr", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Heute um 1:00 Uhr", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Gestern um 2:00 Uhr", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [um] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [um] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [um] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[letzten] dddd [um] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[letzten] dddd [um] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[letzten] dddd [um] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/de'), 'de', "module should export de"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/el.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/el.js new file mode 100755 index 0000000..59bafd3 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/el.js @@ -0,0 +1,389 @@ +var moment = require("../../moment"); + + + /************************************************** + Modern Greek + *************************************************/ + +exports["lang:el"] = { + setUp : function (cb) { + moment.lang('el'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var i, + tests = 'Ιανουάριος Ιαν_Φεβρουάριος Φεβ_Μάρτιος Μαρ_Απρίλιος Απρ_Μάιος Μαϊ_Ιούνιος Ιουν_Ιούλιος Ιουλ_Αύγουστος Αυγ_Σεπτέμβριος Σεπ_Οκτώβριος Οκτ_Νοέμβριος Νοε_Δεκέμβριος Δεκ'.split("_"); + + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + + test.done(); + }, + + "format" : function (test) { + test.expect(24); + + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Κυριακή, Φεβρουάριος 14η 2010, 3:25:50 μμ'], + ['dddd, D MMMM YYYY, h:mm:ss a', 'Κυριακή, 14 Φεβρουαρίου 2010, 3:25:50 μμ'], + ['ddd, hA', 'Κυρ, 3ΜΜ'], + ['dddd, MMMM YYYY', 'Κυριακή, Φεβρουάριος 2010'], + ['M Mo MM MMMM MMM', '2 2η 02 Φεβρουάριος Φεβ'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14η 14'], + ['d do dddd ddd dd', '0 0η Κυριακή Κυρ Κυ'], + ['DDD DDDo DDDD', '45 45η 045'], + ['w wo ww', '6 6η 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'μμ ΜΜ'], + ['[the] DDDo [day of the year]', 'the 45η day of the year'], + ['L', '14/02/2010'], + ['LL', '14 Φεβρουαρίου 2010'], + ['LLL', '14 Φεβρουαρίου 2010 3:25 ΜΜ'], + ['LLLL', 'Κυριακή, 14 Φεβρουαρίου 2010 3:25 ΜΜ'], + ['l', '14/2/2010'], + ['ll', '14 Φεβ 2010'], + ['lll', '14 Φεβ 2010 3:25 ΜΜ'], + ['llll', 'Κυρ, 14 Φεβ 2010 3:25 ΜΜ'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1η', '1η'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2η', '2η'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3η', '3η'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4η', '4η'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5η', '5η'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6η', '6η'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7η', '7η'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8η', '8η'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9η', '9η'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10η', '10η'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11η', '11η'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12η', '12η'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13η', '13η'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14η', '14η'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15η', '15η'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16η', '16η'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17η', '17η'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18η', '18η'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19η', '19η'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20η', '20η'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21η', '21η'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22η', '22η'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23η', '23η'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24η', '24η'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25η', '25η'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26η', '26η'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27η', '27η'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28η', '28η'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29η', '29η'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30η', '30η'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31η', '31η'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var i, + expected = 'Ιανουάριος Ιαν_Φεβρουάριος Φεβ_Μάρτιος Μαρ_Απρίλιος Απρ_Μάιος Μαϊ_Ιούνιος Ιουν_Ιούλιος Ιουλ_Αύγουστος Αυγ_Σεπτέμβριος Σεπ_Οκτώβριος Οκτ_Νοέμβριος Νοε_Δεκέμβριος Δεκ'.split("_"); + + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var i, + expected = 'Κυριακή Κυρ Κυ_Δευτέρα Δευ Δε_Τρίτη Τρι Τρ_Τετάρτη Τετ Τε_Πέμπτη Πεμ Πε_Παρασκευή Παρ Πα_Σάββατο Σαβ Σα'.split("_"); + + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "δευτερόλεπτα", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "ένα λεπτό", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "ένα λεπτό", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 λεπτά", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 λεπτά", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "μία ώρα", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "μία ώρα", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 ώρες", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 ώρες", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 ώρες", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "μία μέρα", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "μία μέρα", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 μέρες", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "μία μέρα", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 μέρες", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 μέρες", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "ένας μήνας", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "ένας μήνας", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "ένας μήνας", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 μήνες", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 μήνες", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 μήνες", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "ένας μήνας", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 μήνες", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 μήνες", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "ένας χρόνος", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "ένας χρόνος", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 χρόνια", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ένας χρόνος", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 χρόνια", "5 years = 5 years"); + + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + + test.equal(moment(30000).from(0), "σε δευτερόλεπτα", "prefix"); + test.equal(moment(0).from(30000), "δευτερόλεπτα πριν", "suffix"); + + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + + test.equal(moment().fromNow(), "δευτερόλεπτα πριν", "now from now should display as in the past"); + + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + + test.equal(moment().add({s: 30}).fromNow(), "σε δευτερόλεπτα", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "σε 5 μέρες", "in 5 days"); + + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Σήμερα στις 2:00 ΠΜ", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Σήμερα στις 2:25 ΠΜ", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Σήμερα στις 3:00 ΠΜ", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Αύριο στις 2:00 ΠΜ", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Σήμερα στη 1:00 ΠΜ", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Χθες στις 2:00 ΠΜ", "yesterday at the same time"); + + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [' + (m.hours() % 12 === 1 ? 'στη' : 'στις') + '] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [στις] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [στις] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[την προηγούμενη] dddd [' + (m.hours() % 12 === 1 ? 'στη' : 'στις') + '] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[την προηγούμενη] dddd [στις] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[την προηγούμενη] dddd [στις] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(6); + + test.equal(moment([2006, 11, 31]).week(), 52, "Dec 31 2006 should be week 52"); + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 30]).week(), 52, "Dec 30 2007 should be week 52"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 29]).week(), 52, "Dec 29 2002 should be week 52"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 28]).week(), 52, "Dec 28 2008 should be week 52"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(7); + + test.equal(moment([2009, 11, 27]).week(), 52, "Dec 27 2009 should be week 52"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 2]).week(), 53, "Jan 2 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 1"); + test.equal(moment([2010, 0, 9]).week(), 1, "Jan 9 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 26]).week(), 51, "Dec 26 2010 should be week 51"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 8]).week(), 1, "Jan 8 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday format" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52η', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1η', "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1η', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2η', "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2η', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/el'), 'el', "module should export el"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/en-au.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/en-au.js new file mode 100755 index 0000000..0a7a824 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/en-au.js @@ -0,0 +1,360 @@ +var moment = require("../../moment"); + + + /************************************************** + Australian English + *************************************************/ + +exports["lang:en-au"] = { + setUp : function (cb) { + moment.lang('en-au'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + var tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'], + ['ddd, hA', 'Sun, 3PM'], + ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14th 14'], + ['d do dddd ddd dd', '0 0th Sunday Sun Su'], + ['DDD DDDo DDDD', '45 45th 045'], + ['w wo ww', '6 6th 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45th day of the year'], + ['L', '14/02/2010'], + ['LL', '14 February 2010'], + ['LLL', '14 February 2010 3:25 PM'], + ['LLLL', 'Sunday, 14 February 2010 3:25 PM'], + ['l', '14/2/2010'], + ['ll', '14 Feb 2010'], + ['lll', '14 Feb 2010 3:25 PM'], + ['llll', 'Sun, 14 Feb 2010 3:25 PM'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "a few seconds", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "a minute", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "a minute", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutes", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutes", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "an hour", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "an hour", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 hours", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 hours", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 hours", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "a day", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "a day", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 days", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "a day", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 days", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 days", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "a month", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "a month", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "a month", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 months", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 months", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 months", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "a month", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 months", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 months", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "a year", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "a year", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 years", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "a year", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 years", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "in a few seconds", "prefix"); + test.equal(moment(0).from(30000), "a few seconds ago", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "a few seconds ago", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "in a few seconds", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "in 5 days", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Today at 2:00 AM", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Today at 2:25 AM", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Today at 3:00 AM", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Tomorrow at 2:00 AM", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Today at 1:00 AM", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Yesterday at 2:00 AM", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52nd', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1st', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2nd', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/en-au'), 'en-au', "module should export en-au"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/en-ca.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/en-ca.js new file mode 100755 index 0000000..1703511 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/en-ca.js @@ -0,0 +1,386 @@ +var moment = require("../../moment"); + +/************************************************** + English (Canadian) +*************************************************/ + +exports["lang:en-ca"] = { + setUp : function (cb) { + moment.lang('en-ca'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var i, + tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split("_"); + + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'], + ['ddd, hA', 'Sun, 3PM'], + ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14th 14'], + ['d do dddd ddd dd', '0 0th Sunday Sun Su'], + ['DDD DDDo DDDD', '45 45th 045'], + ['w wo ww', '8 8th 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45th day of the year'], + ['L', '2010-02-14'], + ['LL', '14 February, 2010'], + ['LLL', '14 February, 2010 3:25 PM'], + ['LLLL', 'Sunday, 14 February, 2010 3:25 PM'], + ['l', '2010-2-14'], + ['ll', '14 Feb, 2010'], + ['lll', '14 Feb, 2010 3:25 PM'], + ['llll', 'Sun, 14 Feb, 2010 3:25 PM'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st'); + + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var i, + expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split("_"); + + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var i, + expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split("_"); + + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "a few seconds", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "a minute", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "a minute", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutes", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutes", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "an hour", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "an hour", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 hours", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 hours", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 hours", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "a day", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "a day", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 days", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "a day", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 days", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 days", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "a month", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "a month", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "a month", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 months", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 months", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 months", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "a month", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 months", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 months", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "a year", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "a year", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 years", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "a year", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 years", "5 years = 5 years"); + + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + + test.equal(moment(30000).from(0), "in a few seconds", "prefix"); + test.equal(moment(0).from(30000), "a few seconds ago", "suffix"); + + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + + test.equal(moment().fromNow(), "a few seconds ago", "now from now should display as in the past"); + + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + + test.equal(moment().add({s: 30}).fromNow(), "in a few seconds", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "in 5 days", "in 5 days"); + + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Today at 2:00 AM", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Today at 2:25 AM", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Today at 3:00 AM", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Tomorrow at 2:00 AM", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Today at 1:00 AM", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Yesterday at 2:00 AM", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Sunday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(6); + + test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); + test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); + test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); + test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); + test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); + test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(5); + + test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); + test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday format" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1st', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1st', "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2nd', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2nd', "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3rd', "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/en-ca'), 'en-ca', "module should export en-ca"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/en-gb.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/en-gb.js new file mode 100755 index 0000000..5ebe451 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/en-gb.js @@ -0,0 +1,360 @@ +var moment = require("../../moment"); + + + /************************************************** + British English + *************************************************/ + +exports["lang:en-gb"] = { + setUp : function (cb) { + moment.lang('en-gb'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + var tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'], + ['ddd, hA', 'Sun, 3PM'], + ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14th 14'], + ['d do dddd ddd dd', '0 0th Sunday Sun Su'], + ['DDD DDDo DDDD', '45 45th 045'], + ['w wo ww', '6 6th 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45th day of the year'], + ['L', '14/02/2010'], + ['LL', '14 February 2010'], + ['LLL', '14 February 2010 15:25'], + ['LLLL', 'Sunday, 14 February 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 Feb 2010'], + ['lll', '14 Feb 2010 15:25'], + ['llll', 'Sun, 14 Feb 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "a few seconds", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "a minute", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "a minute", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutes", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutes", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "an hour", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "an hour", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 hours", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 hours", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 hours", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "a day", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "a day", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 days", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "a day", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 days", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 days", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "a month", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "a month", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "a month", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 months", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 months", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 months", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "a month", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 months", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 months", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "a year", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "a year", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 years", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "a year", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 years", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "in a few seconds", "prefix"); + test.equal(moment(0).from(30000), "a few seconds ago", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "a few seconds ago", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "in a few seconds", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "in 5 days", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Today at 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Today at 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Today at 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Tomorrow at 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Today at 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Yesterday at 02:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52nd', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1st', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2nd', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/en-gb'), 'en-gb', "module should export en-gb"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/en.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/en.js new file mode 100755 index 0000000..7a0e8b0 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/en.js @@ -0,0 +1,379 @@ +var moment = require("../../moment"); + + + /************************************************** + English + *************************************************/ + +exports["lang:en"] = { + setUp : function (cb) { + moment.lang('en'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var i, + tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split("_"); + + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'], + ['ddd, hA', 'Sun, 3PM'], + ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14th 14'], + ['d do dddd ddd dd', '0 0th Sunday Sun Su'], + ['DDD DDDo DDDD', '45 45th 045'], + ['w wo ww', '8 8th 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45th day of the year'], + ['L', '02/14/2010'], + ['LL', 'February 14 2010'], + ['LLL', 'February 14 2010 3:25 PM'], + ['LLLL', 'Sunday, February 14 2010 3:25 PM'], + ['l', '2/14/2010'], + ['ll', 'Feb 14 2010'], + ['lll', 'Feb 14 2010 3:25 PM'], + ['llll', 'Sun, Feb 14 2010 3:25 PM'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var i, + expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split("_"); + + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var i, + expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split("_"); + + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "a few seconds", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "a minute", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "a minute", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutes", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutes", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "an hour", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "an hour", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 hours", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 hours", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 hours", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "a day", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "a day", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 days", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "a day", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 days", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 days", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "a month", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "a month", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "a month", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 months", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 months", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 months", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "a month", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 months", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 months", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "a year", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "a year", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 years", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "a year", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 years", "5 years = 5 years"); + + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + + test.equal(moment(30000).from(0), "in a few seconds", "prefix"); + test.equal(moment(0).from(30000), "a few seconds ago", "suffix"); + + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + + test.equal(moment().fromNow(), "a few seconds ago", "now from now should display as in the past"); + + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + + test.equal(moment().add({s: 30}).fromNow(), "in a few seconds", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "in 5 days", "in 5 days"); + + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Today at 2:00 AM", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Today at 2:25 AM", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Today at 3:00 AM", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Tomorrow at 2:00 AM", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Today at 1:00 AM", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Yesterday at 2:00 AM", "yesterday at the same time"); + + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [at] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[Last] dddd [at] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Sunday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(6); + + test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); + test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); + test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); + test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); + test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); + test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(5); + + test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); + test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday format" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1st', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1st', "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2nd', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2nd', "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3rd', "Jan 15 2012 should be week 3"); + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/eo.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/eo.js new file mode 100755 index 0000000..57455fe --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/eo.js @@ -0,0 +1,367 @@ +var moment = require("../../moment"); + + + /************************************************** + Esperanto + *************************************************/ + +exports["lang:eo"] = { + setUp : function (cb) { + moment.lang('eo'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'januaro jan_februaro feb_marto mar_aprilo apr_majo maj_junio jun_julio jul_aŭgusto aŭg_septembro sep_oktobro okt_novembro nov_decembro dec'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Dimanĉo, februaro 14a 2010, 3:25:50 p.t.m.'], + ['ddd, hA', 'Dim, 3P.T.M.'], + ['M Mo MM MMMM MMM', '2 2a 02 februaro feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14a 14'], + ['d do dddd ddd dd', '0 0a Dimanĉo Dim Di'], + ['DDD DDDo DDDD', '45 45a 045'], + ['w wo ww', '7 7a 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'p.t.m. P.T.M.'], + ['[la] DDDo [tago] [de] [la] [jaro]', 'la 45a tago de la jaro'], + ['L', '2010-02-14'], + ['LL', '14-an de februaro, 2010'], + ['LLL', '14-an de februaro, 2010 15:25'], + ['LLLL', 'Dimanĉo, la 14-an de februaro, 2010 15:25'], + ['l', '2010-2-14'], + ['ll', '14-an de feb, 2010'], + ['lll', '14-an de feb, 2010 15:25'], + ['llll', 'Dim, la 14-an de feb, 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1a', '1a'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2a', '2a'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3a', '3a'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4a', '4a'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5a', '5a'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6a', '6a'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7a', '7a'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8a', '8a'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9a', '9a'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10a', '10a'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11a', '11a'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12a', '12a'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13a', '13a'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14a', '14a'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15a', '15a'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16a', '16a'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17a', '17a'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18a', '18a'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19a', '19a'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20a', '20a'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21a', '21a'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22a', '22a'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23a', '23a'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24a', '24a'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25a', '25a'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26a', '26a'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27a', '27a'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28a', '28a'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29a', '29a'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30a', '30a'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31a', '31a'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'januaro jan_februaro feb_marto mar_aprilo apr_majo maj_junio jun_julio jul_aŭgusto aŭg_septembro sep_oktobro okt_novembro nov_decembro dec'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'Dimanĉo Dim Di_Lundo Lun Lu_Mardo Mard Ma_Merkredo Merk Me_Ĵaŭdo Ĵaŭ Ĵa_Vendredo Ven Ve_Sabato Sab Sa'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "sekundoj", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "minuto", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "minuto", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutoj", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutoj", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "horo", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "horo", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 horoj", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 horoj", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 horoj", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "tago", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "tago", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 tagoj", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "tago", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 tagoj", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 tagoj", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "monato", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "monato", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "monato", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 monatoj", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 monatoj", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 monatoj", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "monato", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 monatoj", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 monatoj", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "jaro", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "jaro", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 jaroj", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "jaro", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 jaroj", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "je sekundoj", "je prefix"); + test.equal(moment(0).from(30000), "antaŭ sekundoj", "antaŭ prefix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "antaŭ sekundoj", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "je sekundoj", "je sekundoj"); + test.equal(moment().add({d: 5}).fromNow(), "je 5 tagoj", "je 5 tagoj"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Hodiaŭ je 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Hodiaŭ je 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Hodiaŭ je 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Morgaŭ je 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Hodiaŭ je 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Hieraŭ je 02:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [je] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [je] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [je] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[pasinta] dddd [je] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[pasinta] dddd [je] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[pasinta] dddd [je] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); + test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); + test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); + test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); + test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1a', "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1a', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2a', "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2a', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3a', "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/eo'), 'eo', "module should export eo"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/es.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/es.js new file mode 100755 index 0000000..ef58809 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/es.js @@ -0,0 +1,363 @@ +var moment = require("../../moment"); + + + /************************************************** + Spanish + *************************************************/ + +exports["lang:es"] = { + setUp : function (cb) { + moment.lang('es'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + var tests = 'enero ene._febrero feb._marzo mar._abril abr._mayo may._junio jun._julio jul._agosto ago._septiembre sep._octubre oct._noviembre nov._diciembre dic.'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(23); + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'domingo, febrero 14º 2010, 3:25:50 pm'], + ['ddd, hA', 'dom., 3PM'], + ['M Mo MM MMMM MMM', '2 2º 02 febrero feb.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14º 14'], + ['d do dddd ddd dd', '0 0º domingo dom. Do'], + ['DDD DDDo DDDD', '45 45º 045'], + ['w wo ww', '6 6º 06'], + ['YYYY-MMM-DD', '2010-feb-14'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45º day of the year'], + ['L', '14/02/2010'], + ['LL', '14 de febrero de 2010'], + ['LLL', '14 de febrero de 2010 15:25'], + ['LLLL', 'domingo, 14 de febrero de 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 de feb. de 2010'], + ['lll', '14 de feb. de 2010 15:25'], + ['llll', 'dom., 14 de feb. de 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'enero ene._febrero feb._marzo mar._abril abr._mayo may._junio jun._julio jul._agosto ago._septiembre sep._octubre oct._noviembre nov._diciembre dic.'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'domingo dom. Do_lunes lun. Lu_martes mar. Ma_miércoles mié. Mi_jueves jue. Ju_viernes vie. Vi_sábado sáb. Sá'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "unos segundos", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "un minuto", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "un minuto", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutos", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutos", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "una hora", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "una hora", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 horas", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 horas", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 horas", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "un día", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "un día", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 días", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "un día", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 días", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 días", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "un mes", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "un mes", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "un mes", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 meses", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 meses", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 meses", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "un mes", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 meses", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 meses", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "un año", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "un año", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 años", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "un año", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 años", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "en unos segundos", "prefix"); + test.equal(moment(0).from(30000), "hace unos segundos", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "hace unos segundos", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "en unos segundos", "en unos segundos"); + test.equal(moment().add({d: 5}).fromNow(), "en 5 días", "en 5 días"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(7); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "hoy a las 2:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "hoy a las 2:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "hoy a las 3:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "mañana a las 2:00", "tomorrow at the same time"); + test.equal(moment(a).add({ d: 1, h : -1 }).calendar(), "mañana a la 1:00", "tomorrow minus 1 hour"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "hoy a la 1:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "ayer a las 2:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/es'), 'es', "module should export es"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/et.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/et.js new file mode 100755 index 0000000..b0d9cac --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/et.js @@ -0,0 +1,392 @@ +var moment = require("../../moment"); + + +/************************************************** + Estonian +**************************************************/ + +exports["lang:et"] = { + setUp : function (cb) { + moment.lang('et'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'jaanuar jaan_veebruar veebr_märts märts_aprill apr_mai mai_juuni juuni_juuli juuli_august aug_september sept_oktoober okt_november nov_detsember dets'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' peaks olema kuu ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, Do MMMM YYYY, H:mm:ss', 'pühapäev, 14. veebruar 2010, 15:25:50'], + ['ddd, h', 'P, 3'], + ['M Mo MM MMMM MMM', '2 2. 02 veebruar veebr'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. pühapäev P P'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[aasta] DDDo [päev]', 'aasta 45. päev'], + ['L', '14.02.2010'], + ['LL', '14. veebruar 2010'], + ['LLL', '14. veebruar 2010 15:25'], + ['LLLL', 'pühapäev, 14. veebruar 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14. veebr 2010'], + ['lll', '14. veebr 2010 15:25'], + ['llll', 'P, 14. veebr 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'jaanuar jaan_veebruar veebr_märts märts_aprill apr_mai mai_juuni juuni_juuli juuli_august aug_september sept_oktoober okt_november nov_detsember dets'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'pühapäev P P_esmaspäev E E_teisipäev T T_kolmapäev K K_neljapäev N N_reede R R_laupäev L L'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "paar sekundit", "44 seconds = paar sekundit"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "üks minut", "45 seconds = üks minut"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "üks minut", "89 seconds = üks minut"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutit", "90 seconds = 2 minutit"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutit", "44 minutes = 44 minutit"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "üks tund", "45 minutes = tund aega"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "üks tund", "89 minutes = üks tund"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 tundi", "90 minutes = 2 tundi"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 tundi", "5 hours = 5 tundi"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 tundi", "21 hours = 21 tundi"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "üks päev", "22 hours = üks päev"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "üks päev", "35 hours = üks päev"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 päeva", "36 hours = 2 päeva"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "üks päev", "1 day = üks päev"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 päeva", "5 days = 5 päeva"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 päeva", "25 days = 25 päeva"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "üks kuu", "26 days = üks kuu"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "üks kuu", "30 days = üks kuu"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "üks kuu", "45 days = üks kuu"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 kuud", "46 days = 2 kuud"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 kuud", "75 days = 2 kuud"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 kuud", "76 days = 3 kuud"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "üks kuu", "1 month = üks kuu"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 kuud", "5 months = 5 kuud"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 kuud", "344 days = 11 kuud"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "üks aasta", "345 days = üks aasta"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "üks aasta", "547 days = üks aasta"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 aastat", "548 days = 2 aastat"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "üks aasta", "1 year = üks aasta"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 aastat", "5 years = 5 aastat"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + + test.equal(moment(30000).from(0), "mõne sekundi pärast", "prefix"); + test.equal(moment(0).from(30000), "mõni sekund tagasi", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + + test.equal(moment().fromNow(), "mõni sekund tagasi", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(18); + + test.equal(moment().add({s: 30}).fromNow(), "mõne sekundi pärast", "in a few seconds"); + test.equal(moment().subtract({s: 30}).fromNow(), "mõni sekund tagasi", "a few seconds ago"); + + test.equal(moment().add({m: 1}).fromNow(), "ühe minuti pärast", "in a minute"); + test.equal(moment().subtract({m: 1}).fromNow(), "üks minut tagasi", "a minute ago"); + + test.equal(moment().add({m: 5}).fromNow(), "5 minuti pärast", "in 5 minutes"); + test.equal(moment().subtract({m: 5}).fromNow(), "5 minutit tagasi", "5 minutes ago"); + + test.equal(moment().add({d: 1}).fromNow(), "ühe päeva pärast", "in one day"); + test.equal(moment().subtract({d: 1}).fromNow(), "üks päev tagasi", "one day ago"); + + test.equal(moment().add({d: 5}).fromNow(), "5 päeva pärast", "in 5 days"); + test.equal(moment().subtract({d: 5}).fromNow(), "5 päeva tagasi", "5 days ago"); + + test.equal(moment().add({M: 1}).fromNow(), "kuu aja pärast", "in a month"); + test.equal(moment().subtract({M: 1}).fromNow(), "kuu aega tagasi", "a month ago"); + + test.equal(moment().add({M: 5}).fromNow(), "5 kuu pärast", "in 5 months"); + test.equal(moment().subtract({M: 5}).fromNow(), "5 kuud tagasi", "5 months ago"); + + test.equal(moment().add({y: 1}).fromNow(), "ühe aasta pärast", "in a year"); + test.equal(moment().subtract({y: 1}).fromNow(), "aasta tagasi", "a year ago"); + + test.equal(moment().add({y: 5}).fromNow(), "5 aasta pärast", "in 5 years"); + test.equal(moment().subtract({y: 5}).fromNow(), "5 aastat tagasi", "5 years ago"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Täna, 2:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Täna, 2:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Täna, 3:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Homme, 2:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Täna, 1:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Eile, 2:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('[Järgmine] dddd LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[Järgmine] dddd LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[Järgmine] dddd LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[Eelmine] dddd LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[Eelmine] dddd LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[Eelmine] dddd LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 nädal tagasi"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "1 nädala pärast"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 nädalat tagasi"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "2 nädala pärast"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/et'), 'et', "module should export et"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/eu.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/eu.js new file mode 100755 index 0000000..1c0f12b --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/eu.js @@ -0,0 +1,364 @@ +var moment = require("../../moment"); + + + /************************************************** + Euskara + *************************************************/ + +exports["lang:eu"] = { + setUp : function (cb) { + moment.lang('eu'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'urtarrila urt._otsaila ots._martxoa mar._apirila api._maiatza mai._ekaina eka._uztaila uzt._abuztua abu._iraila ira._urria urr._azaroa aza._abendua abe.'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'igandea, otsaila 14. 2010, 3:25:50 pm'], + ['ddd, hA', 'ig., 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 otsaila ots.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. igandea ig. ig'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '7 7. 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['L', '2010-02-14'], + ['LL', '2010ko otsailaren 14a'], + ['LLL', '2010ko otsailaren 14a 15:25'], + ['LLLL', 'igandea, 2010ko otsailaren 14a 15:25'], + ['l', '2010-2-14'], + ['ll', '2010ko ots. 14a'], + ['lll', '2010ko ots. 14a 15:25'], + ['llll', 'ig., 2010ko ots. 14a 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'urtarrila urt._otsaila ots._martxoa mar._apirila api._maiatza mai._ekaina eka._uztaila uzt._abuztua abu._iraila ira._urria urr._azaroa aza._abendua abe.'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'igandea ig. ig_astelehena al. al_asteartea ar. ar_asteazkena az. az_osteguna og. og_ostirala ol. ol_larunbata lr. lr'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "segundo batzuk", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "minutu bat", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "minutu bat", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutu", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutu", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "ordu bat", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "ordu bat", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 ordu", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 ordu", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 ordu", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "egun bat", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "egun bat", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 egun", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "egun bat", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 egun", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 egun", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "hilabete bat", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "hilabete bat", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "hilabete bat", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 hilabete", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 hilabete", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 hilabete", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "hilabete bat", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 hilabete", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 hilabete", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "urte bat", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "urte bat", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 urte", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "urte bat", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 urte", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "segundo batzuk barru", "prefix"); + test.equal(moment(0).from(30000), "duela segundo batzuk", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "duela segundo batzuk", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "segundo batzuk barru", "in seconds"); + test.equal(moment().add({d: 5}).fromNow(), "5 egun barru", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "gaur 02:00etan", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "gaur 02:25etan", "now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "gaur 03:00etan", "now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "bihar 02:00etan", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "gaur 01:00etan", "now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "atzo 02:00etan", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd LT[etan]'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd LT[etan]'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd LT[etan]'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[aurreko] dddd LT[etan]'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[aurreko] dddd LT[etan]'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[aurreko] dddd LT[etan]'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); + test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); + test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); + test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); + test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/eu'), 'eu', "module should export eu"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/fa.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/fa.js new file mode 100755 index 0000000..75f0de9 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/fa.js @@ -0,0 +1,346 @@ +// moment.js Persian (fa) tests +// author: Ebrahim Byagowi : https://github.com/ebraminio +var moment = require("../../moment"); + +exports["lang:fa"] = { + setUp : function (cb) { + moment.lang('fa'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(24); + var tests = 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1) + ' instead is month ' + moment(input, mmm).month()); + } + for (i = 0; i < 12; i++) { + equalTest(tests[i], 'MMM', i); + equalTest(tests[i], 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'یک\u200cشنبه، فوریه ۱۴م ۲۰۱۰، ۳:۲۵:۵۰ بعد از ظهر'], + ['ddd, hA', 'یک\u200cشنبه، ۳بعد از ظهر'], + ['M Mo MM MMMM MMM', '۲ ۲م ۰۲ فوریه فوریه'], + ['YYYY YY', '۲۰۱۰ ۱۰'], + ['D Do DD', '۱۴ ۱۴م ۱۴'], + ['d do dddd ddd dd', '۰ ۰م یک\u200cشنبه یک\u200cشنبه ی'], + ['DDD DDDo DDDD', '۴۵ ۴۵م ۰۴۵'], + ['w wo ww', '۸ ۸م ۰۸'], + ['h hh', '۳ ۰۳'], + ['H HH', '۱۵ ۱۵'], + ['m mm', '۲۵ ۲۵'], + ['s ss', '۵۰ ۵۰'], + ['a A', 'بعد از ظهر بعد از ظهر'], + ['DDDo [روز سال]', '۴۵م روز سال'], + ['L', '۱۴/۰۲/۲۰۱۰'], + ['LL', '۱۴ فوریه ۲۰۱۰'], + ['LLL', '۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'], + ['LLLL', 'یک\u200cشنبه، ۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'], + ['l', '۱۴/۲/۲۰۱۰'], + ['ll', '۱۴ فوریه ۲۰۱۰'], + ['lll', '۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'], + ['llll', 'یک\u200cشنبه، ۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '۱م', '1'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '۲م', '2'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '۳م', '3'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '۴م', '4'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '۵م', '5'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '۶م', '6'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '۷م', '7'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '۸م', '8'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '۹م', '9'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '۱۰م', '10'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '۱۱م', '11'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '۱۲م', '12'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '۱۳م', '13'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '۱۴م', '14'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '۱۵م', '15'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '۱۶م', '16'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '۱۷م', '17'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '۱۸م', '18'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '۱۹م', '19'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '۲۰م', '20'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '۲۱م', '21'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '۲۲م', '22'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '۲۳م', '23'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '۲۴م', '24'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '۲۵م', '25'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '۲۶م', '26'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '۲۷م', '27'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '۲۸م', '28'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '۲۹م', '29'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '۳۰م', '30'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '۳۱م', '31'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'ژانویه ژانویه_فوریه فوریه_مارس مارس_آوریل آوریل_مه مه_ژوئن ژوئن_ژوئیه ژوئیه_اوت اوت_سپتامبر سپتامبر_اکتبر اکتبر_نوامبر نوامبر_دسامبر دسامبر'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'یک\u200cشنبه یک\u200cشنبه ی_دوشنبه دوشنبه د_سه\u200cشنبه سه\u200cشنبه س_چهارشنبه چهارشنبه چ_پنج\u200cشنبه پنج\u200cشنبه پ_جمعه جمعه ج_شنبه شنبه ش'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "چندین ثانیه", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "یک دقیقه", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "یک دقیقه", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "۲ دقیقه", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "۴۴ دقیقه", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "یک ساعت", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "یک ساعت", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "۲ ساعت", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "۵ ساعت", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "۲۱ ساعت", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "یک روز", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "یک روز", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "۲ روز", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "یک روز", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "۵ روز", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "۲۵ روز", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "یک ماه", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "یک ماه", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "یک ماه", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "۲ ماه", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "۲ ماه", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "۳ ماه", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "یک ماه", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "۵ ماه", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "۱۱ ماه", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "یک سال", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "یک سال", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "۲ سال", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "یک سال", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "۵ سال", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "در چندین ثانیه", "prefix"); + test.equal(moment(0).from(30000), "چندین ثانیه پیش", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "چندین ثانیه پیش", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "در چندین ثانیه", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "در ۵ روز", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "امروز ساعت ۰۲:۰۰", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "امروز ساعت ۰۲:۲۵", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "امروز ساعت ۰۳:۰۰", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "فردا ساعت ۰۲:۰۰", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "امروز ساعت ۰۱:۰۰", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "دیروز ساعت ۰۲:۰۰", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [ساعت] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [ساعت] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [ساعت] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('dddd [پیش ساعت] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [پیش ساعت] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [پیش ساعت] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + + // Saturday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 31]).week(), 1, "Dec 31 2011 should be week 1"); + test.equal(moment([2012, 0, 6]).week(), 1, "Jan 6 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).week(), 2, "Jan 7 2012 should be week 2"); + test.equal(moment([2012, 0, 13]).week(), 2, "Jan 13 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).week(), 3, "Jan 14 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2006, 11, 30]).week(), 1, "Dec 30 2006 should be week 1"); + test.equal(moment([2007, 0, 5]).week(), 1, "Jan 5 2007 should be week 1"); + test.equal(moment([2007, 0, 6]).week(), 2, "Jan 6 2007 should be week 2"); + test.equal(moment([2007, 0, 12]).week(), 2, "Jan 12 2007 should be week 2"); + test.equal(moment([2007, 0, 13]).week(), 3, "Jan 13 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 29]).week(), 1, "Dec 29 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 4]).week(), 1, "Jan 4 2008 should be week 1"); + test.equal(moment([2008, 0, 5]).week(), 2, "Jan 5 2008 should be week 2"); + test.equal(moment([2008, 0, 11]).week(), 2, "Jan 11 2008 should be week 2"); + test.equal(moment([2008, 0, 12]).week(), 3, "Jan 12 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 28]).week(), 1, "Dec 28 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 3]).week(), 1, "Jan 3 2003 should be week 1"); + test.equal(moment([2003, 0, 4]).week(), 2, "Jan 4 2003 should be week 2"); + test.equal(moment([2003, 0, 10]).week(), 2, "Jan 10 2003 should be week 2"); + test.equal(moment([2003, 0, 11]).week(), 3, "Jan 11 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 27]).week(), 1, "Dec 27 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 2]).week(), 1, "Jan 2 2009 should be week 1"); + test.equal(moment([2009, 0, 3]).week(), 2, "Jan 3 2009 should be week 2"); + test.equal(moment([2009, 0, 9]).week(), 2, "Jan 9 2009 should be week 2"); + test.equal(moment([2009, 0, 10]).week(), 3, "Jan 10 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(5); + + test.equal(moment([2009, 11, 26]).week(), 1, "Dec 26 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 2]).week(), 2, "Jan 2 2010 should be week 2"); + test.equal(moment([2010, 0, 8]).week(), 2, "Jan 8 2010 should be week 2"); + test.equal(moment([2010, 0, 9]).week(), 3, "Jan 9 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 7]).week(), 1, "Jan 7 2011 should be week 1"); + test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); + test.equal(moment([2011, 0, 14]).week(), 2, "Jan 14 2011 should be week 2"); + test.equal(moment([2011, 0, 15]).week(), 3, "Jan 15 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 31]).format('w ww wo'), '۱ ۰۱ ۱م', "Dec 31 2011 should be week 1"); + test.equal(moment([2012, 0, 6]).format('w ww wo'), '۱ ۰۱ ۱م', "Jan 6 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).format('w ww wo'), '۲ ۰۲ ۲م', "Jan 7 2012 should be week 2"); + test.equal(moment([2012, 0, 13]).format('w ww wo'), '۲ ۰۲ ۲م', "Jan 13 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).format('w ww wo'), '۳ ۰۳ ۳م', "Jan 14 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/fa'), 'fa', "module should export fa"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/fi.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/fi.js new file mode 100755 index 0000000..c85bfb8 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/fi.js @@ -0,0 +1,359 @@ +var moment = require("../../moment"); + + + /************************************************** + Finnish + *************************************************/ + +exports["lang:fi"] = { + setUp : function (cb) { + moment.lang('fi'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + var tests = 'tammikuu tammi_helmikuu helmi_maaliskuu maalis_huhtikuu huhti_toukokuu touko_kesäkuu kesä_heinäkuu heinä_elokuu elo_syyskuu syys_lokakuu loka_marraskuu marras_joulukuu joulu'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'sunnuntai, helmikuu 14. 2010, 3:25:50 pm'], + ['ddd, hA', 'su, 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 helmikuu helmi'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. sunnuntai su su'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[vuoden] DDDo [päivä]', 'vuoden 45. päivä'], + ['L', '14.02.2010'], + ['LL', '14. helmikuuta 2010'], + ['LLL', '14. helmikuuta 2010, klo 15.25'], + ['LLLL', 'sunnuntai, 14. helmikuuta 2010, klo 15.25'], + ['l', '14.2.2010'], + ['ll', '14. helmi 2010'], + ['lll', '14. helmi 2010, klo 15.25'], + ['llll', 'su, 14. helmi 2010, klo 15.25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1st'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2nd'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3rd'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4th'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5th'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6th'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7th'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8th'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9th'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10th'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11th'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12th'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13th'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14th'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15th'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16th'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17th'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18th'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19th'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20th'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21st'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22nd'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23rd'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24th'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25th'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26th'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27th'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28th'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29th'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30th'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31st'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'tammikuu tammi_helmikuu helmi_maaliskuu maalis_huhtikuu huhti_toukokuu touko_kesäkuu kesä_heinäkuu heinä_elokuu elo_syyskuu syys_lokakuu loka_marraskuu marras_joulukuu joulu'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'sunnuntai su su_maanantai ma ma_tiistai ti ti_keskiviikko ke ke_torstai to to_perjantai pe pe_lauantai la la'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "muutama sekunti", "44 seconds = few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "minuutti", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "minuutti", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "kaksi minuuttia", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuuttia", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "tunti", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "tunti", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "kaksi tuntia", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "viisi tuntia", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 tuntia", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "päivä", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "päivä", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "kaksi päivää", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "päivä", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "viisi päivää", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 päivää", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "kuukausi", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "kuukausi", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "kuukausi", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "kaksi kuukautta", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "kaksi kuukautta", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "kolme kuukautta", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "kuukausi", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "viisi kuukautta", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 kuukautta", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "vuosi", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "vuosi", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "kaksi vuotta", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "vuosi", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "viisi vuotta", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "muutaman sekunnin päästä", "prefix"); + test.equal(moment(0).from(30000), "muutama sekunti sitten", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "muutama sekunti sitten", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "muutaman sekunnin päästä", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "viiden päivän päästä", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "tänään klo 02.00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "tänään klo 02.25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "tänään klo 03.00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "huomenna klo 02.00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "tänään klo 01.00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "eilen klo 02.00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [klo] LT'), "today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [klo] LT'), "today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [klo] LT'), "today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[viime] dddd[na] [klo] LT'), "today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[viime] dddd[na] [klo] LT'), "today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[viime] dddd[na] [klo] LT'), "today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "yksi viikko sitten"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "yhden viikon päästä"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "kaksi viikkoa sitten"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "kaden viikon päästä"); + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/fi'), 'fi', "module should export fi"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/fo.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/fo.js new file mode 100755 index 0000000..98d1736 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/fo.js @@ -0,0 +1,297 @@ +var moment = require("../../moment"); + + + /************************************************** + Danish + *************************************************/ + +exports["lang:fo"] = { + setUp : function (cb) { + moment.lang('fo'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + var tests = 'januar jan_februar feb_mars mar_apríl apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + var a = [ + ['dddd [tann] Do MMMM YYYY, h:mm:ss a', 'sunnudagur tann 14. februar 2010, 3:25:50 pm'], + ['ddd hA', 'sun 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 februar feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. sunnudagur sun su'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[tann] DDDo [dagin á árinum]', 'tann 45. dagin á árinum'], + ['L', '14/02/2010'], + ['LL', '14 februar 2010'], + ['LLL', '14 februar 2010 15:25'], + ['LLLL', 'sunnudagur 14. februar, 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 feb 2010'], + ['lll', '14 feb 2010 15:25'], + ['llll', 'sun 14. feb, 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'januar jan_februar feb_mars mar_apríl apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'sunnudagur sun su_mánadagur mán má_týsdagur týs tý_mikudagur mik mi_hósdagur hós hó_fríggjadagur frí fr_leygardagur ley le'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "fá sekund", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "ein minutt", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "ein minutt", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minuttir", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuttir", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "ein tími", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "ein tími", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 tímar", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 tímar", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 tímar", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "ein dagur", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "ein dagur", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dagar", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "ein dagur", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dagar", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dagar", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "ein mánaði", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "ein mánaði", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "ein mánaði", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mánaðir", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mánaðir", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mánaðir", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "ein mánaði", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mánaðir", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mánaðir", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "eitt ár", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "eitt ár", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 ár", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "eitt ár", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 ár", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "um fá sekund", "prefix"); + test.equal(moment(0).from(30000), "fá sekund síðani", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "fá sekund síðani", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "um fá sekund", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "um 5 dagar", "in 5 days"); + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/fo'), 'fo', "module should export fo"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/fr-ca.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/fr-ca.js new file mode 100755 index 0000000..b9e4355 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/fr-ca.js @@ -0,0 +1,379 @@ +var moment = require("../../moment"); + +/************************************************** + French (Canadian) +*************************************************/ + +exports["lang:fr-ca"] = { + setUp : function (cb) { + moment.lang('fr-ca'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var i, + tests = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split("_"); + + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'dimanche, février 14 2010, 3:25:50 pm'], + ['ddd, hA', 'dim., 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 février févr.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 dimanche dim. Di'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '8 8 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['L', '2010-02-14'], + ['LL', '14 février 2010'], + ['LLL', '14 février 2010 15:25'], + ['LLLL', 'dimanche 14 février 2010 15:25'], + ['l', '2010-2-14'], + ['ll', '14 févr. 2010'], + ['lll', '14 févr. 2010 15:25'], + ['llll', 'dim. 14 févr. 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1er', '1er'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var i, + expected = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split("_"); + + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var i, + expected = 'dimanche dim. Di_lundi lun. Lu_mardi mar. Ma_mercredi mer. Me_jeudi jeu. Je_vendredi ven. Ve_samedi sam. Sa'.split("_"); + + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "quelques secondes", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "une minute", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "une minute", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutes", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutes", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "une heure", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "une heure", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 heures", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 heures", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 heures", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "un jour", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "un jour", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 jours", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "un jour", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 jours", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 jours", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "un mois", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "un mois", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "un mois", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mois", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mois", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mois", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "un mois", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mois", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mois", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "un an", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "un an", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 ans", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "un an", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 ans", "5 years = 5 years"); + + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + + test.equal(moment(30000).from(0), "dans quelques secondes", "prefix"); + test.equal(moment(0).from(30000), "il y a quelques secondes", "suffix"); + + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + + test.equal(moment().add({s: 30}).fromNow(), "dans quelques secondes", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "dans 5 jours", "in 5 days"); + + test.done(); + }, + + "same day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Aujourd'hui à 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Aujourd'hui à 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Aujourd'hui à 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Demain à 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Aujourd'hui à 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Hier à 02:00", "yesterday at the same time"); + test.done(); + }, + + "same next week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [à] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [à] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [à] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "same last week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('dddd [dernier à] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [dernier à] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [dernier à] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "same all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Sunday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(6); + + test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); + test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); + test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); + test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); + test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); + test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(5); + + test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); + test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday format" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1er', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1er', "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/fr-ca'), 'fr-ca', "module should export fr-ca"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/fr.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/fr.js new file mode 100755 index 0000000..5de9a7b --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/fr.js @@ -0,0 +1,362 @@ +var moment = require("../../moment"); + + + /************************************************** + French + *************************************************/ + +exports["lang:fr"] = { + setUp : function (cb) { + moment.lang('fr'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split("_"), + i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'dimanche, février 14 2010, 3:25:50 pm'], + ['ddd, hA', 'dim., 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 février févr.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 dimanche dim. Di'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '6 6 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['L', '14/02/2010'], + ['LL', '14 février 2010'], + ['LLL', '14 février 2010 15:25'], + ['LLLL', 'dimanche 14 février 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 févr. 2010'], + ['lll', '14 févr. 2010 15:25'], + ['llll', 'dim. 14 févr. 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1er', '1er'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'dimanche dim. Di_lundi lun. Lu_mardi mar. Ma_mercredi mer. Me_jeudi jeu. Je_vendredi ven. Ve_samedi sam. Sa'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "quelques secondes", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "une minute", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "une minute", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutes", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutes", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "une heure", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "une heure", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 heures", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 heures", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 heures", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "un jour", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "un jour", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 jours", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "un jour", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 jours", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 jours", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "un mois", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "un mois", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "un mois", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mois", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mois", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mois", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "un mois", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mois", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mois", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "un an", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "un an", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 ans", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "un an", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 ans", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + + test.equal(moment(30000).from(0), "dans quelques secondes", "prefix"); + test.equal(moment(0).from(30000), "il y a quelques secondes", "suffix"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + + test.equal(moment().add({s: 30}).fromNow(), "dans quelques secondes", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "dans 5 jours", "in 5 days"); + test.done(); + }, + + "same day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Aujourd'hui à 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Aujourd'hui à 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Aujourd'hui à 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Demain à 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Aujourd'hui à 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Hier à 02:00", "yesterday at the same time"); + test.done(); + }, + + "same next week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [à] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [à] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [à] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "same last week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('dddd [dernier à] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [dernier à] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [dernier à] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "same all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1er', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1er', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/fr'), 'fr', "module should export fr"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/gl.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/gl.js new file mode 100755 index 0000000..2a78bb9 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/gl.js @@ -0,0 +1,343 @@ +var moment = require("../../moment"); + + + /************************************************** + Galego + *************************************************/ + +exports["lang:gl"] = { + setUp : function (cb) { + moment.lang('gl'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = "Xaneiro Xan._Febreiro Feb._Marzo Mar._Abril Abr._Maio Mai._Xuño Xuñ._Xullo Xul._Agosto Ago._Setembro Set._Outubro Out._Novembro Nov._Decembro Dec.".split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = "Xaneiro Xan._Febreiro Feb._Marzo Mar._Abril Abr._Maio Mai._Xuño Xuñ._Xullo Xul._Agosto Ago._Setembro Set._Outubro Out._Novembro Nov._Decembro Dec.".split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = "Domingo Dom. Do_Luns Lun. Lu_Martes Mar. Ma_Mércores Mér. Mé_Xoves Xov. Xo_Venres Ven. Ve_Sábado Sáb. Sá".split("_"), + i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "uns segundos", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "un minuto", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "un minuto", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutos", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutos", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "unha hora", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "unha hora", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 horas", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 horas", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 horas", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "un día", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "un día", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 días", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "un día", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 días", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 días", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "un mes", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "un mes", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "un mes", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 meses", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 meses", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 meses", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "un mes", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 meses", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 meses", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "un ano", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "un ano", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 anos", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "un ano", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 anos", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + + test.equal(moment(30000).from(0), "nuns segundos", "prefix"); + test.equal(moment(0).from(30000), "hai uns segundos", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "hai uns segundos", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "nuns segundos", "en unos segundos"); + test.equal(moment().add({d: 5}).fromNow(), "en 5 días", "en 5 días"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(7); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "hoxe ás 2:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "hoxe ás 2:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "hoxe ás 3:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "mañá ás 2:00", "tomorrow at the same time"); + test.equal(moment(a).add({ d: 1, h : -1 }).calendar(), "mañá á 1:00", "tomorrow minus 1 hour"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "hoxe á 1:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "onte á 2:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[o] dddd [pasado ' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[o] dddd [pasado ' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[o] dddd [pasado ' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + "regression tests" : function (test) { + test.expect(1); + + var lastWeek = moment().subtract({ d: 4 }).hours(1); + test.equal(lastWeek.calendar(), lastWeek.format('[o] dddd [pasado a] LT'), "1 o'clock bug"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); + test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); + test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); + test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); + test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1º', "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1º', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2º', "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2º', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3º', "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/gl'), 'gl', "module should export gl"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/he.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/he.js new file mode 100755 index 0000000..146d912 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/he.js @@ -0,0 +1,322 @@ +var moment = require("../../moment"); + + +/************************************************** + Hebrew +**************************************************/ + +exports["lang:he"] = { + setUp : function (cb) { + moment.lang('he'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'ינואר ינו׳_פברואר פבר׳_מרץ מרץ_אפריל אפר׳_מאי מאי_יוני יוני_יולי יולי_אוגוסט אוג׳_ספטמבר ספט׳_אוקטובר אוק׳_נובמבר נוב׳_דצמבר דצמ׳'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'ראשון, פברואר 14 2010, 3:25:50 pm'], + ['ddd, hA', 'א׳, 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 פברואר פבר׳'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 ראשון א׳ א'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '8 8 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['L', '14/02/2010'], + ['LL', '14 בפברואר 2010'], + ['LLL', '14 בפברואר 2010 15:25'], + ['LLLL', 'ראשון, 14 בפברואר 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 פבר׳ 2010'], + ['lll', '14 פבר׳ 2010 15:25'], + ['llll', 'א׳, 14 פבר׳ 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'ינואר ינו׳_פברואר פבר׳_מרץ מרץ_אפריל אפר׳_מאי מאי_יוני יוני_יולי יולי_אוגוסט אוג׳_ספטמבר ספט׳_אוקטובר אוק׳_נובמבר נוב׳_דצמבר דצמ׳'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'ראשון א׳ א|שני ב׳ ב|שלישי ג׳ ג|רביעי ד׳ ד|חמישי ה׳ ה|שישי ו׳ ו|שבת ש׳ ש'.split("|"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "מספר שניות", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "דקה", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "דקה", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 דקות", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 דקות", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "שעה", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "שעה", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "שעתיים", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 שעות", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 שעות", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "יום", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "יום", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "יומיים", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "יום", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 ימים", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 ימים", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "חודש", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "חודש", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "חודש", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "חודשיים", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "חודשיים", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 חודשים", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "חודש", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 חודשים", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 חודשים", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "שנה", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "שנה", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "שנתיים", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "שנה", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 שנים", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "בעוד מספר שניות", "prefix"); + test.equal(moment(0).from(30000), "לפני מספר שניות", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "לפני מספר שניות", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "בעוד מספר שניות", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "בעוד 5 ימים", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "היום ב־02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "היום ב־02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "היום ב־03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "מחר ב־02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "היום ב־01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "אתמול ב־02:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [בשעה] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [בשעה] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [בשעה] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[ביום] dddd [האחרון בשעה] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[ביום] dddd [האחרון בשעה] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[ביום] dddd [האחרון בשעה] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Sunday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(6); + + test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); + test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); + test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); + test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); + test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); + test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(5); + + test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); + test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday format" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/he'), 'he', "module should export he"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/hi.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/hi.js new file mode 100755 index 0000000..e6ff685 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/hi.js @@ -0,0 +1,385 @@ +var moment = require("../../moment"); + + + /************************************************** + Hindi + *************************************************/ + +exports["lang:hi"] = { + setUp : function (cb) { + moment.lang('hi'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'जनवरी जन._फ़रवरी फ़र._मार्च मार्च_अप्रैल अप्रै._मई मई_जून जून_जुलाई जुल._अगस्त अग._सितम्बर सित._अक्टूबर अक्टू._नवम्बर नव._दिसम्बर दिस.'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(21); + + var a = [ + ['dddd, Do MMMM YYYY, a h:mm:ss बजे', 'रविवार, १४ फ़रवरी २०१०, दोपहर ३:२५:५० बजे'], + ['ddd, a h बजे', 'रवि, दोपहर ३ बजे'], + ['M Mo MM MMMM MMM', '२ २ ०२ फ़रवरी फ़र.'], + ['YYYY YY', '२०१० १०'], + ['D Do DD', '१४ १४ १४'], + ['d do dddd ddd dd', '० ० रविवार रवि र'], + ['DDD DDDo DDDD', '४५ ४५ ०४५'], + ['w wo ww', '८ ८ ०८'], + ['h hh', '३ ०३'], + ['H HH', '१५ १५'], + ['m mm', '२५ २५'], + ['s ss', '५० ५०'], + ['a A', 'दोपहर दोपहर'], + ['L', '१४/०२/२०१०'], + ['LL', '१४ फ़रवरी २०१०'], + ['LLL', '१४ फ़रवरी २०१०, दोपहर ३:२५ बजे'], + ['LLLL', 'रविवार, १४ फ़रवरी २०१०, दोपहर ३:२५ बजे'], + ['l', '१४/२/२०१०'], + ['ll', '१४ फ़र. २०१०'], + ['lll', '१४ फ़र. २०१०, दोपहर ३:२५ बजे'], + ['llll', 'रवि, १४ फ़र. २०१०, दोपहर ३:२५ बजे'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '१', '१'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '२', '२'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '३', '३'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '४', '४'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '५', '५'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '६', '६'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '७', '७'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '८', '८'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '९', '९'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '१०', '१०'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '११', '११'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '१२', '१२'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '१३', '१३'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '१४', '१४'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '१५', '१५'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '१६', '१६'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '१७', '१७'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '१८', '१८'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '१९', '१९'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '२०', '२०'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '२१', '२१'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '२२', '२२'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '२३', '२३'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '२४', '२४'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '२५', '२५'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '२६', '२६'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '२७', '२७'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '२८', '२८'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '२९', '२९'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '३०', '३०'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '३१', '३१'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'जनवरी जन._फ़रवरी फ़र._मार्च मार्च_अप्रैल अप्रै._मई मई_जून जून_जुलाई जुल._अगस्त अग._सितम्बर सित._अक्टूबर अक्टू._नवम्बर नव._दिसम्बर दिस.'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'रविवार रवि र_सोमवार सोम सो_मंगलवार मंगल मं_बुधवार बुध बु_गुरूवार गुरू गु_शुक्रवार शुक्र शु_शनिवार शनि श'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "कुछ ही क्षण", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "एक मिनट", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "एक मिनट", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "२ मिनट", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "४४ मिनट", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "एक घंटा", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "एक घंटा", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "२ घंटे", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "५ घंटे", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "२१ घंटे", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "एक दिन", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "एक दिन", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "२ दिन", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "एक दिन", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "५ दिन", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "२५ दिन", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "एक महीने", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "एक महीने", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "एक महीने", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "२ महीने", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "२ महीने", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "३ महीने", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "एक महीने", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "५ महीने", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "११ महीने", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "एक वर्ष", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "एक वर्ष", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "२ वर्ष", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "एक वर्ष", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "५ वर्ष", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "कुछ ही क्षण में", "prefix"); + test.equal(moment(0).from(30000), "कुछ ही क्षण पहले", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "कुछ ही क्षण पहले", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "कुछ ही क्षण में", "कुछ ही क्षण में"); + test.equal(moment().add({d: 5}).fromNow(), "५ दिन में", "५ दिन में"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "आज रात २:०० बजे", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "आज रात २:२५ बजे", "Now plus 25 min"); + test.equal(moment(a).add({ h: 3 }).calendar(), "आज सुबह ५:०० बजे", "Now plus 3 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "कल रात २:०० बजे", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "आज रात १:०० बजे", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "कल रात २:०० बजे", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd[,] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd[,] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd[,] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[पिछले] dddd[,] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[पिछले] dddd[,] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[पिछले] dddd[,] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + "meridiem" : function (test) { + test.expect(12); + + test.equal(moment([2011, 2, 23, 2, 30]).format('a'), "रात", "before dawn"); + test.equal(moment([2011, 2, 23, 9, 30]).format('a'), "सुबह", "morning"); + test.equal(moment([2011, 2, 23, 14, 30]).format('a'), "दोपहर", "during day"); + test.equal(moment([2011, 2, 23, 17, 30]).format('a'), "शाम", "evening"); + test.equal(moment([2011, 2, 23, 19, 30]).format('a'), "शाम", "late evening"); + test.equal(moment([2011, 2, 23, 21, 20]).format('a'), "रात", "night"); + + test.equal(moment([2011, 2, 23, 2, 30]).format('A'), "रात", "before dawn"); + test.equal(moment([2011, 2, 23, 9, 30]).format('A'), "सुबह", "morning"); + test.equal(moment([2011, 2, 23, 14, 30]).format('A'), "दोपहर", " during day"); + test.equal(moment([2011, 2, 23, 17, 30]).format('A'), "शाम", "evening"); + test.equal(moment([2011, 2, 23, 19, 30]).format('A'), "शाम", "late evening"); + test.equal(moment([2011, 2, 23, 21, 20]).format('A'), "रात", "night"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(6); + + test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); + test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); + test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); + test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); + test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); + test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(5); + + test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); + test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '१ ०१ १', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).format('w ww wo'), '१ ०१ १', "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '२ ०२ २', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).format('w ww wo'), '२ ०२ २', "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '३ ०३ ३', "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/hi'), 'hi', "module should export hi"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/hr.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/hr.js new file mode 100755 index 0000000..7316f7e --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/hr.js @@ -0,0 +1,393 @@ +var moment = require("../../moment"); + + + /************************************************** + Croatian + *************************************************/ + +exports["lang:hr"] = { + setUp : function (cb) { + moment.lang('hr'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'sječanj sje._veljača vel._ožujak ožu._travanj tra._svibanj svi._lipanj lip._srpanj srp._kolovoz kol._rujan ruj._listopad lis._studeni stu._prosinac pro.'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + var a = [ + ['dddd, Do MMMM YYYY, h:mm:ss a', 'nedjelja, 14. veljača 2010, 3:25:50 pm'], + ['ddd, hA', 'ned., 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 veljača vel.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. nedjelja ned. ne'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '7 7. 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['L', '14. 02. 2010'], + ['LL', '14. veljača 2010'], + ['LLL', '14. veljača 2010 15:25'], + ['LLLL', 'nedjelja, 14. veljača 2010 15:25'], + ['l', '14. 2. 2010'], + ['ll', '14. vel. 2010'], + ['lll', '14. vel. 2010 15:25'], + ['llll', 'ned., 14. vel. 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'sječanj sje._veljača vel._ožujak ožu._travanj tra._svibanj svi._lipanj lip._srpanj srp._kolovoz kol._rujan ruj._listopad lis._studeni stu._prosinac pro.'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'nedjelja ned. ne_ponedjeljak pon. po_utorak uto. ut_srijeda sri. sr_četvrtak čet. če_petak pet. pe_subota sub. su'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "par sekundi", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "jedna minuta", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "jedna minuta", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minute", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuta", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "jedan sat", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "jedan sat", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 sata", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 sati", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 sati", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "dan", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "dan", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dana", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "dan", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dana", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dana", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "mjesec", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "mjesec", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "mjesec", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mjeseca", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mjeseca", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mjeseca", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "mjesec", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mjeseci", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mjeseci", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "godinu", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "godinu", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 godine", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "godinu", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 godina", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "za par sekundi", "prefix"); + test.equal(moment(0).from(30000), "prije par sekundi", "prefix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "prije par sekundi", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "za par sekundi", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "za 5 dana", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "danas u 2:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "danas u 2:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "danas u 3:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "sutra u 2:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "danas u 1:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "jučer u 2:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); + test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); + test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); + test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); + test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/hr'), 'hr', "module should export hr"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/hu.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/hu.js new file mode 100755 index 0000000..192966b --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/hu.js @@ -0,0 +1,364 @@ +var moment = require("../../moment"); + + /************************************************** + Hungarian + *************************************************/ + +exports["lang:hu"] = { + setUp : function (cb) { + moment.lang('hu'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'január jan_február feb_március márc_április ápr_május máj_június jún_július júl_augusztus aug_szeptember szept_október okt_november nov_december dec'.split("_"), + i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(20); + + var a = [ + ['dddd, MMMM Do YYYY, HH:mm:ss', 'vasárnap, február 14. 2010, 15:25:50'], + ['ddd, HH', 'vas, 15'], + ['M Mo MM MMMM MMM', '2 2. 02 február feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. vasárnap vas v'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '7 7. 07'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['[az év] DDDo [napja]', 'az év 45. napja'], + ['L', '2010.02.14.'], + ['LL', '2010. február 14.'], + ['LLL', '2010. február 14., 15:25'], + ['LLLL', '2010. február 14., vasárnap 15:25'], + ['l', '2010.2.14.'], + ['ll', '2010. feb 14.'], + ['lll', '2010. feb 14., 15:25'], + ['llll', '2010. feb 14., vas 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'január jan_február feb_március márc_április ápr_május máj_június jún_július júl_augusztus aug_szeptember szept_október okt_november nov_december dec'.split("_"), + i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'vasárnap vas_hétfő hét_kedd kedd_szerda sze_csütörtök csüt_péntek pén_szombat szo'.split("_"), + i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "néhány másodperc", "44 másodperc = néhány másodperc"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "egy perc", "45 másodperc = egy perc"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "egy perc", "89 másodperc = egy perc"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 perc", "90 másodperc = 2 perc"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 perc", "44 perc = 44 perc"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "egy óra", "45 perc = egy óra"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "egy óra", "89 perc = egy óra"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 óra", "90 perc = 2 óra"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 óra", "5 óra = 5 óra"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 óra", "21 óra = 21 óra"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "egy nap", "22 óra = egy nap"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "egy nap", "35 óra = egy nap"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 nap", "36 óra = 2 nap"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "egy nap", "1 nap = egy nap"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 nap", "5 nap = 5 nap"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 nap", "25 nap = 25 nap"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "egy hónap", "26 nap = egy hónap"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "egy hónap", "30 nap = egy hónap"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "egy hónap", "45 nap = egy hónap"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 hónap", "46 nap = 2 hónap"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 hónap", "75 nap = 2 hónap"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 hónap", "76 nap = 3 hónap"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "egy hónap", "1 hónap = egy hónap"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 hónap", "5 hónap = 5 hónap"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 hónap", "344 nap = 11 hónap"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "egy év", "345 nap = egy év"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "egy év", "547 nap = egy év"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 év", "548 nap = 2 év"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "egy év", "1 év = egy év"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 év", "5 év = 5 év"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "néhány másodperc múlva", "prefix"); + test.equal(moment(0).from(30000), "néhány másodperce", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "néhány másodperce", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "néhány másodperc múlva", "néhány másodperc múlva"); + test.equal(moment().add({d: 5}).fromNow(), "5 nap múlva", "5 nap múlva"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "ma 2:00-kor", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "ma 2:25-kor", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "ma 3:00-kor", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "holnap 2:00-kor", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "ma 1:00-kor", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "tegnap 2:00-kor", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m, days = 'vasárnap_hétfőn_kedden_szerdán_csütörtökön_pénteken_szombaton'.split('_'); + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('[' + days[m.day()] + '] LT[-kor]'), "today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[' + days[m.day()] + '] LT[-kor]'), "today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[' + days[m.day()] + '] LT[-kor]'), "today + " + i + " days end of day"); + } + + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m, days = 'vasárnap_hétfőn_kedden_szerdán_csütörtökön_pénteken_szombaton'.split('_'); + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[múlt ' + days[m.day()] + '] LT[-kor]'), "today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[múlt ' + days[m.day()] + '] LT[-kor]'), "today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[múlt ' + days[m.day()] + '] LT[-kor]'), "today - " + i + " days end of day"); + } + + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "egy héte"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "egy hét múlva"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 hete"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "2 hét múlva"); + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); + test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); + test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); + test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); + test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/hu'), 'hu', "module should export hu"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/hy-am.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/hy-am.js new file mode 100755 index 0000000..dad5365 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/hy-am.js @@ -0,0 +1,450 @@ +var moment = require("../../moment"); + + + /************************************************** + Armenian + *************************************************/ + +exports["lang:hy-am"] = { + setUp : function (cb) { + moment.lang('hy-am'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'հունվար հնվ_փետրվար փտր_մարտ մրտ_ապրիլ ապր_մայիս մյս_հունիս հնս_հուլիս հլս_օգոստոս օգս_սեպտեմբեր սպտ_հոկտեմբեր հկտ_նոյեմբեր նմբ_դեկտեմբեր դկտ'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "parse exceptional case" : function (test) { + test.equal(moment('11 մայիսի 1989', ['DD MMMM YYYY']).format('DD-MM-YYYY'), '11-05-1989'); + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, Do MMMM YYYY, HH:mm:ss', 'կիրակի, 14 փետրվարի 2010, 15:25:50'], + ['ddd, h A', 'կրկ, 3 ցերեկվա'], + ['M Mo MM MMMM MMM', '2 2 02 փետրվար փտր'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 կիրակի կրկ կրկ'], + ['DDD DDDo DDDD', '45 45-րդ 045'], + ['w wo ww', '7 7-րդ 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'ցերեկվա ցերեկվա'], + ['[տարվա] DDDo [օրը]', 'տարվա 45-րդ օրը'], + ['L', '14.02.2010'], + ['LL', '14 փետրվարի 2010 թ.'], + ['LLL', '14 փետրվարի 2010 թ., 15:25'], + ['LLLL', 'կիրակի, 14 փետրվարի 2010 թ., 15:25'], + ['l', '14.2.2010'], + ['ll', '14 փտր 2010 թ.'], + ['lll', '14 փտր 2010 թ., 15:25'], + ['llll', 'կրկ, 14 փտր 2010 թ., 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format meridiem" : function (test) { + test.expect(8); + + test.equal(moment([2012, 11, 28, 0, 0]).format("A"), "գիշերվա", "night"); + test.equal(moment([2012, 11, 28, 3, 59]).format("A"), "գիշերվա", "night"); + test.equal(moment([2012, 11, 28, 4, 0]).format("A"), "առավոտվա", "morning"); + test.equal(moment([2012, 11, 28, 11, 59]).format("A"), "առավոտվա", "morning"); + test.equal(moment([2012, 11, 28, 12, 0]).format("A"), "ցերեկվա", "afternoon"); + test.equal(moment([2012, 11, 28, 16, 59]).format("A"), "ցերեկվա", "afternoon"); + test.equal(moment([2012, 11, 28, 17, 0]).format("A"), "երեկոյան", "evening"); + test.equal(moment([2012, 11, 28, 23, 59]).format("A"), "երեկոյան", "evening"); + + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1-ին', '1-ին'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2-րդ', '2-րդ'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3-րդ', '3-րդ'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4-րդ', '4-րդ'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5-րդ', '5-րդ'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6-րդ', '6-րդ'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7-րդ', '7-րդ'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8-րդ', '8-րդ'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9-րդ', '9-րդ'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10-րդ', '10-րդ'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11-րդ', '11-րդ'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12-րդ', '12-րդ'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13-րդ', '13-րդ'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14-րդ', '14-րդ'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15-րդ', '15-րդ'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16-րդ', '16-րդ'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17-րդ', '17-րդ'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18-րդ', '18-րդ'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19-րդ', '19-րդ'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20-րդ', '20-րդ'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21-րդ', '21-րդ'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22-րդ', '22-րդ'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23-րդ', '23-րդ'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24-րդ', '24-րդ'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25-րդ', '25-րդ'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26-րդ', '26-րդ'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27-րդ', '27-րդ'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28-րդ', '28-րդ'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29-րդ', '29-րդ'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30-րդ', '30-րդ'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31-րդ', '31-րդ'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'հունվար հնվ_փետրվար փտր_մարտ մրտ_ապրիլ ապր_մայիս մյս_հունիս հնս_հուլիս հլս_օգոստոս օգս_սեպտեմբեր սպտ_հոկտեմբեր հկտ_նոյեմբեր նմբ_դեկտեմբեր դկտ'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format month case" : function (test) { + test.expect(24); + + var months = { + 'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'), + 'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_') + }, i; + for (i = 0; i < 12; i++) { + test.equal(moment([2011, i, 1]).format('D MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]); + test.equal(moment([2011, i, 1]).format('MMMM'), months.nominative[i], '1 ' + months.nominative[i]); + } + test.done(); + }, + + "format month short case" : function (test) { + test.expect(24); + + var monthsShort = { + 'nominative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), + 'accusative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_') + }, i; + for (i = 0; i < 12; i++) { + test.equal(moment([2011, i, 1]).format('D MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]); + test.equal(moment([2011, i, 1]).format('MMM'), monthsShort.nominative[i], '1 ' + monthsShort.nominative[i]); + } + test.done(); + }, + + "format month case with escaped symbols" : function (test) { + test.expect(48); + + var months = { + 'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'), + 'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_') + }, i; + for (i = 0; i < 12; i++) { + test.equal(moment([2013, i, 1]).format('D[] MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]); + test.equal(moment([2013, i, 1]).format('[]D[] []MMMM[]'), '1 ' + months.accusative[i] + '', '1 ' + months.accusative[i] + ''); + test.equal(moment([2013, i, 1]).format('D[-ին օրը] MMMM'), '1-ին օրը ' + months.accusative[i], '1-ին օրը ' + months.accusative[i]); + test.equal(moment([2013, i, 1]).format('D, MMMM'), '1, ' + months.nominative[i], '1, ' + months.nominative[i]); + } + test.done(); + }, + + "format month short case with escaped symbols" : function (test) { + test.expect(48); + + var monthsShort = { + 'nominative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), + 'accusative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_') + }, i; + for (i = 0; i < 12; i++) { + test.equal(moment([2013, i, 1]).format('D[] MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]); + test.equal(moment([2013, i, 1]).format('[]D[] []MMM[]'), '1 ' + monthsShort.accusative[i] + '', '1 ' + monthsShort.accusative[i] + ''); + test.equal(moment([2013, i, 1]).format('D[-ին օրը] MMM'), '1-ին օրը ' + monthsShort.accusative[i], '1-ին օրը ' + monthsShort.accusative[i]); + test.equal(moment([2013, i, 1]).format('D, MMM'), '1, ' + monthsShort.nominative[i], '1, ' + monthsShort.nominative[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'կիրակի կրկ կրկ_երկուշաբթի երկ երկ_երեքշաբթի երք երք_չորեքշաբթի չրք չրք_հինգշաբթի հնգ հնգ_ուրբաթ ուրբ ուրբ_շաբաթ շբթ շբթ'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(32); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "մի քանի վայրկյան", "44 seconds = seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "րոպե", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "րոպե", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 րոպե", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 րոպե", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "ժամ", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "ժամ", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 ժամ", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 ժամ", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 ժամ", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "օր", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "օր", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 օր", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "օր", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 օր", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), "11 օր", "11 days = 11 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), "21 օր", "21 days = 21 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 օր", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "ամիս", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "ամիս", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "ամիս", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 ամիս", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 ամիս", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 ամիս", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "ամիս", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 ամիս", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 ամիս", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "տարի", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "տարի", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 տարի", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "տարի", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 տարի", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "մի քանի վայրկյան հետո", "prefix"); + test.equal(moment(0).from(30000), "մի քանի վայրկյան առաջ", "suffix"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "մի քանի վայրկյան հետո", "in seconds"); + test.equal(moment().add({d: 5}).fromNow(), "5 օր հետո", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "այսօր 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "այսօր 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "այսօր 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "վաղը 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "այսօր 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "երեկ 02:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + function makeFormat(d) { + return 'dddd [օրը ժամը] LT'; + } + + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + function makeFormat(d) { + return '[անցած] dddd [օրը ժամը] LT'; + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); + test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); + test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); + test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); + test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ին', "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ին', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-րդ', "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-րդ', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-րդ', "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/hy-am'), 'hy-am', "module should export hy"); + } + + test.done(); + } + +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/id.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/id.js new file mode 100755 index 0000000..93ca990 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/id.js @@ -0,0 +1,319 @@ +var moment = require("../../moment"); + + + /************************************************** + Indonesian + *************************************************/ + +exports["lang:id"] = { + setUp : function (cb) { + moment.lang('id'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + var tests = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_November Nov_Desember Des'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Minggu, Februari 14 2010, 3:25:50 sore'], + ['ddd, hA', 'Min, 3sore'], + ['M Mo MM MMMM MMM', '2 2 02 Februari Feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 Minggu Min Mg'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '7 7 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'sore sore'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['L', '14/02/2010'], + ['LL', '14 Februari 2010'], + ['LLL', '14 Februari 2010 pukul 15.25'], + ['LLLL', 'Minggu, 14 Februari 2010 pukul 15.25'], + ['l', '14/2/2010'], + ['ll', '14 Feb 2010'], + ['lll', '14 Feb 2010 pukul 15.25'], + ['llll', 'Min, 14 Feb 2010 pukul 15.25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_November Nov_Desember Des'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'Minggu Min Mg_Senin Sen Sn_Selasa Sel Sl_Rabu Rab Rb_Kamis Kam Km_Jumat Jum Jm_Sabtu Sab Sb'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "beberapa detik", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "semenit", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "semenit", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 menit", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 menit", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "sejam", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "sejam", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 jam", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 jam", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 jam", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "sehari", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "sehari", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 hari", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "sehari", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 hari", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 hari", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "sebulan", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "sebulan", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "sebulan", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 bulan", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 bulan", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 bulan", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "sebulan", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 bulan", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 bulan", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "setahun", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "setahun", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 tahun", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "setahun", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 tahun", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "dalam beberapa detik", "prefix"); + test.equal(moment(0).from(30000), "beberapa detik yang lalu", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "beberapa detik yang lalu", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "dalam beberapa detik", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "dalam 5 hari", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Hari ini pukul 02.00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Hari ini pukul 02.25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Hari ini pukul 03.00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Besok pukul 02.00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Hari ini pukul 01.00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Kemarin pukul 02.00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [pukul] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [pukul] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [pukul] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('dddd [lalu pukul] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [lalu pukul] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [lalu pukul] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); + test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); + test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); + test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); + test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1', "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2', "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3', "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/id'), 'id', "module should export id"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/is.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/is.js new file mode 100755 index 0000000..b727b43 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/is.js @@ -0,0 +1,373 @@ +var moment = require("../../moment"); + + + /************************************************** + Icelandic + *************************************************/ + +exports["lang:is"] = { + setUp : function (cb) { + moment.lang('is'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'janúar jan_febrúar feb_mars mar_apríl apr_maí maí_júní jún_júlí júl_ágúst ágú_september sep_október okt_nóvember nóv_desember des'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, Do MMMM YYYY, h:mm:ss a', 'sunnudagur, 14. febrúar 2010, 3:25:50 pm'], + ['ddd, hA', 'sun, 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 febrúar feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. sunnudagur sun Su'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['L', '14/02/2010'], + ['LL', '14. febrúar 2010'], + ['LLL', '14. febrúar 2010 kl. 15:25'], + ['LLLL', 'sunnudagur, 14. febrúar 2010 kl. 15:25'], + ['l', '14/2/2010'], + ['ll', '14. feb 2010'], + ['lll', '14. feb 2010 kl. 15:25'], + ['llll', 'sun, 14. feb 2010 kl. 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'janúar jan_febrúar feb_mars mar_apríl apr_maí maí_júní jún_júlí júl_ágúst ágú_september sep_október okt_nóvember nóv_desember des'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'sunnudagur sun Su_mánudagur mán Má_þriðjudagur þri Þr_miðvikudagur mið Mi_fimmtudagur fim Fi_föstudagur fös Fö_laugardagur lau La'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(34); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "nokkrar sekúndur", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "mínúta", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "mínúta", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 mínútur", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 mínútur", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 21}), true), "21 mínúta", "21 minutes = 21 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "klukkustund", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "klukkustund", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 klukkustundir", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 klukkustundir", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 klukkustund", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "dagur", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "dagur", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dagar", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "dagur", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dagar", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dagar", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), "11 dagar", "11 days = 11 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), "21 dagur", "21 days = 21 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "mánuður", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "mánuður", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "mánuður", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mánuðir", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mánuðir", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mánuðir", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "mánuður", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mánuðir", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mánuðir", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "ár", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "ár", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 ár", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ár", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 ár", "5 years = 5 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 21}), true), "21 ár", "21 years = 21 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(3); + test.equal(moment(30000).from(0), "eftir nokkrar sekúndur", "prefix"); + test.equal(moment(0).from(30000), "fyrir nokkrum sekúndum síðan", "suffix"); + test.equal(moment().subtract({m: 1}).fromNow(), "fyrir mínútu síðan", "a minute ago"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "fyrir nokkrum sekúndum síðan", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(3); + test.equal(moment().add({s: 30}).fromNow(), "eftir nokkrar sekúndur", "in a few seconds"); + test.equal(moment().add({m: 1}).fromNow(), "eftir mínútu", "in a minute"); + test.equal(moment().add({d: 5}).fromNow(), "eftir 5 daga", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "í dag kl. 2:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "í dag kl. 2:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "í dag kl. 3:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "á morgun kl. 2:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "í dag kl. 1:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "í gær kl. 2:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [kl.] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [kl.] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [kl.] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[síðasta] dddd [kl.] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[síðasta] dddd [kl.] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[síðasta] dddd [kl.] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + + test.equal(require('../../lang/is'), 'is', "module should export is"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/it.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/it.js new file mode 100755 index 0000000..321a580 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/it.js @@ -0,0 +1,360 @@ +var moment = require("../../moment"); + + + /************************************************** + Italian + *************************************************/ + +exports["lang:it"] = { + setUp : function (cb) { + moment.lang('it'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'Gennaio Gen_Febbraio Feb_Marzo Mar_Aprile Apr_Maggio Mag_Giugno Giu_Luglio Lug_Agosto Ago_Settembre Set_Ottobre Ott_Novembre Nov_Dicembre Dic'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Domenica, Febbraio 14º 2010, 3:25:50 pm'], + ['ddd, hA', 'Dom, 3PM'], + ['M Mo MM MMMM MMM', '2 2º 02 Febbraio Feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14º 14'], + ['d do dddd ddd dd', '0 0º Domenica Dom D'], + ['DDD DDDo DDDD', '45 45º 045'], + ['w wo ww', '6 6º 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45º day of the year'], + ['L', '14/02/2010'], + ['LL', '14 Febbraio 2010'], + ['LLL', '14 Febbraio 2010 15:25'], + ['LLLL', 'Domenica, 14 Febbraio 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 Feb 2010'], + ['lll', '14 Feb 2010 15:25'], + ['llll', 'Dom, 14 Feb 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'Gennaio Gen_Febbraio Feb_Marzo Mar_Aprile Apr_Maggio Mag_Giugno Giu_Luglio Lug_Agosto Ago_Settembre Set_Ottobre Ott_Novembre Nov_Dicembre Dic'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'Domenica Dom D_Lunedì Lun L_Martedì Mar Ma_Mercoledì Mer Me_Giovedì Gio G_Venerdì Ven V_Sabato Sab S'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "alcuni secondi", "44 seconds = seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "un minuto", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "un minuto", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minuti", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuti", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "un'ora", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "un'ora", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 ore", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 ore", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 ore", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "un giorno", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "un giorno", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 giorni", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "un giorno", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 giorni", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 giorni", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "un mese", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "un mese", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "un mese", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mesi", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mesi", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mesi", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "un mese", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mesi", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mesi", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "un anno", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "un anno", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 anni", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "un anno", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 anni", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + + test.equal(moment(30000).from(0), "in alcuni secondi", "prefix"); + test.equal(moment(0).from(30000), "alcuni secondi fa", "suffix"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + + test.equal(moment().add({s: 30}).fromNow(), "in alcuni secondi", "in seconds"); + test.equal(moment().add({d: 5}).fromNow(), "tra 5 giorni", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Oggi alle 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Oggi alle 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Oggi alle 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Domani alle 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Oggi alle 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Ieri alle 02:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [alle] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [alle] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [alle] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[lo scorso] dddd [alle] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[lo scorso] dddd [alle] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[lo scorso] dddd [alle] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/it'), 'it', "module should export it"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ja.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ja.js new file mode 100755 index 0000000..127f1ce --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ja.js @@ -0,0 +1,324 @@ +var moment = require("../../moment"); + + + /************************************************** + Japanese + *************************************************/ + +exports["lang:ja"] = { + setUp : function (cb) { + moment.lang('ja'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = '1月 1月_2月 2月_3月 3月_4月 4月_5月 5月_6月 6月_7月 7月_8月 8月_9月 9月_10月 10月_11月 11月_12月 12月'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, a h:mm:ss', '日曜日, 2月 14 2010, 午後 3:25:50'], + ['ddd, Ah', '日, 午後3'], + ['M Mo MM MMMM MMM', '2 2 02 2月 2月'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 日曜日 日 日'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '8 8 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', '午後 午後'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['L', '2010/02/14'], + ['LL', '2010年2月14日'], + ['LLL', '2010年2月14日午後3時25分'], + ['LLLL', '2010年2月14日午後3時25分 日曜日'], + ['l', '2010/2/14'], + ['ll', '2010年2月14日'], + ['lll', '2010年2月14日午後3時25分'], + ['llll', '2010年2月14日午後3時25分 日'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = '1月 1月_2月 2月_3月 3月_4月 4月_5月 5月_6月 6月_7月 7月_8月 8月_9月 9月_10月 10月_11月 11月_12月 12月'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = '日曜日 日 日_月曜日 月 月_火曜日 火 火_水曜日 水 水_木曜日 木 木_金曜日 金 金_土曜日 土 土'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "数秒", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "1分", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "1分", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2分", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44分", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "1時間", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "1時間", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2時間", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5時間", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21時間", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "1日", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "1日", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2日", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "1日", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5日", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25日", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "1ヶ月", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "1ヶ月", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "1ヶ月", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2ヶ月", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2ヶ月", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3ヶ月", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "1ヶ月", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5ヶ月", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11ヶ月", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "1年", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "1年", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2年", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "1年", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5年", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "数秒後", "prefix"); + test.equal(moment(0).from(30000), "数秒前", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "数秒前", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "数秒後", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "5日後", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "今日 午前2時0分", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "今日 午前2時25分", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "今日 午前3時0分", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "明日 午前2時0分", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "今日 午前1時0分", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "昨日 午前2時0分", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('[来週]dddd LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[来週]dddd LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[来週]dddd LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[前週]dddd LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[前週]dddd LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[前週]dddd LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + // Sunday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(6); + + test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); + test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); + test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); + test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); + test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); + test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(5); + + test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); + test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday format" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/ja'), 'ja', "module should export ja"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ka.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ka.js new file mode 100755 index 0000000..ed0c7ad --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ka.js @@ -0,0 +1,385 @@ +// moment.js language configuration +// language : Georgian (ka) +// author : Irakli Janiashvili : https://github.com/irakli-janiashvili + +var moment = require("../../moment"); + +exports["lang:ka"] = { + setUp : function (cb) { + moment.lang('ka'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('ka'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var i, + tests = 'იანვარი იან_თებერვალი თებ_მარტი მარ_აპრილი აპრ_მაისი მაი_ივნისი ივნ_ივლისი ივლ_აგვისტო აგვ_სექტემბერი სექ_ოქტომბერი ოქტ_ნოემბერი ნოე_დეკემბერი დეკ'.split("_"); + + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' უნდა იყოს თვე ' + (i + 1)); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'კვირა, თებერვალი მე-14 2010, 3:25:50 pm'], + ['ddd, hA', 'კვი, 3PM'], + ['M Mo MM MMMM MMM', '2 მე-2 02 თებერვალი თებ'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 მე-14 14'], + ['d do dddd ddd dd', '0 0 კვირა კვი კვ'], + ['DDD DDDo DDDD', '45 45-ე 045'], + ['w wo ww', '7 მე-7 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['წლის DDDo დღე', 'წლის 45-ე დღე'], + ['L', '14/02/2010'], + ['LL', '14 თებერვალი 2010'], + ['LLL', '14 თებერვალი 2010 3:25 PM'], + ['LLLL', 'კვირა, 14 თებერვალი 2010 3:25 PM'], + ['l', '14/2/2010'], + ['ll', '14 თებ 2010'], + ['lll', '14 თებ 2010 3:25 PM'], + ['llll', 'კვი, 14 თებ 2010 3:25 PM'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(35); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1-ლი', '1-ლი'); + test.equal(moment([2011, 0, 2]).format('DDDo'), 'მე-2', 'მე-2'); + test.equal(moment([2011, 0, 3]).format('DDDo'), 'მე-3', 'მე-3'); + test.equal(moment([2011, 0, 4]).format('DDDo'), 'მე-4', 'მე-4'); + test.equal(moment([2011, 0, 5]).format('DDDo'), 'მე-5', 'მე-5'); + test.equal(moment([2011, 0, 6]).format('DDDo'), 'მე-6', 'მე-6'); + test.equal(moment([2011, 0, 7]).format('DDDo'), 'მე-7', 'მე-7'); + test.equal(moment([2011, 0, 8]).format('DDDo'), 'მე-8', 'მე-8'); + test.equal(moment([2011, 0, 9]).format('DDDo'), 'მე-9', 'მე-9'); + test.equal(moment([2011, 0, 10]).format('DDDo'), 'მე-10', 'მე-10'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), 'მე-11', 'მე-11'); + test.equal(moment([2011, 0, 12]).format('DDDo'), 'მე-12', 'მე-12'); + test.equal(moment([2011, 0, 13]).format('DDDo'), 'მე-13', 'მე-13'); + test.equal(moment([2011, 0, 14]).format('DDDo'), 'მე-14', 'მე-14'); + test.equal(moment([2011, 0, 15]).format('DDDo'), 'მე-15', 'მე-15'); + test.equal(moment([2011, 0, 16]).format('DDDo'), 'მე-16', 'მე-16'); + test.equal(moment([2011, 0, 17]).format('DDDo'), 'მე-17', 'მე-17'); + test.equal(moment([2011, 0, 18]).format('DDDo'), 'მე-18', 'მე-18'); + test.equal(moment([2011, 0, 19]).format('DDDo'), 'მე-19', 'მე-19'); + test.equal(moment([2011, 0, 20]).format('DDDo'), 'მე-20', 'მე-20'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21-ე', '21-ე'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22-ე', '22-ე'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23-ე', '23-ე'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24-ე', '24-ე'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25-ე', '25-ე'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26-ე', '26-ე'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27-ე', '27-ე'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28-ე', '28-ე'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29-ე', '29-ე'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30-ე', '30-ე'); + + test.equal(moment("2011 40", "YYYY DDD").format('DDDo'), 'მე-40', 'მე-40'); + test.equal(moment("2011 50", "YYYY DDD").format('DDDo'), '50-ე', '50-ე'); + test.equal(moment("2011 60", "YYYY DDD").format('DDDo'), 'მე-60', 'მე-60'); + test.equal(moment("2011 100", "YYYY DDD").format('DDDo'), 'მე-100', 'მე-100'); + test.equal(moment("2011 101", "YYYY DDD").format('DDDo'), '101-ე', '101-ე'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var i, + expected = 'იანვარი იან_თებერვალი თებ_მარტი მარ_აპრილი აპრ_მაისი მაი_ივნისი ივნ_ივლისი ივლ_აგვისტო აგვ_სექტემბერი სექ_ოქტომბერი ოქტ_ნოემბერი ნოე_დეკემბერი დეკ'.split("_"); + + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var i, + expected = 'კვირა კვი კვ_ორშაბათი ორშ ორ_სამშაბათი სამ სა_ოთხშაბათი ოთხ ოთ_ხუთშაბათი ხუთ ხუ_პარასკევი პარ პა_შაბათი შაბ შა'.split("_"); + + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "რამდენიმე წამი", "44 წამი = რამდენიმე წამი"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "წუთი", "45 წამი = წუთი"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "წუთი", "89 წამი = წუთი"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 წუთი", "90 წამი = 2 წუთი"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 წუთი", "44 წამი = 44 წუთი"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "საათი", "45 წამი = საათი"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "საათი", "89 წამი = საათი"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 საათი", "90 წამი = 2 საათი"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 საათი", "5 საათი = 5 საათი"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 საათი", "21 საათი = 21 საათი"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "დღე", "22 საათი = დღე"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "დღე", "35 საათი = დღე"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 დღე", "36 საათი = 2 დღე"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "დღე", "1 დღე = დღე"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 დღე", "5 დღე = 5 დღე"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 დღე", "25 დღე = 25 დღე"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "თვე", "26 დღე = თვე"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "თვე", "30 დღე = თვე"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "თვე", "45 დღე = თვე"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 თვე", "46 დღე = 2 თვე"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 თვე", "75 დღე = 2 თვე"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 თვე", "76 დღე = 3 თვე"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "თვე", "1 თვე = თვე"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 თვე", "5 თვე = 5 თვე"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 თვე", "344 დღე = 11 თვე"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "წელი", "345 დღე = წელი"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "წელი", "547 დღე = წელი"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 წელი", "548 დღე = 2 წელი"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "წელი", "1 წელი = წელი"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 წელი", "5 წელი = 5 წელი"); + + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + + test.equal(moment(30000).from(0), "რამდენიმე წამში", "ში სუფიქსი"); + test.equal(moment(0).from(30000), "რამდენიმე წამის წინ", "წინ სუფიქსი"); + + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + + test.equal(moment().fromNow(), "რამდენიმე წამის წინ", "უნდა აჩვენოს როგორც წარსული"); + + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + + test.equal(moment().add({s: 30}).fromNow(), "რამდენიმე წამში", "რამდენიმე წამში"); + test.equal(moment().add({d: 5}).fromNow(), "5 დღეში", "5 დღეში"); + + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "დღეს 2:00 AM-ზე", "დღეს ამავე დროს"); + test.equal(moment(a).add({ m: 25 }).calendar(), "დღეს 2:25 AM-ზე", "ახლანდელ დროს დამატებული 25 წუთი"); + test.equal(moment(a).add({ h: 1 }).calendar(), "დღეს 3:00 AM-ზე", "ახლანდელ დროს დამატებული 1 საათი"); + test.equal(moment(a).add({ d: 1 }).calendar(), "ხვალ 2:00 AM-ზე", "ხვალ ამავე დროს"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "დღეს 1:00 AM-ზე", "ახლანდელ დროს გამოკლებული 1 საათი"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "გუშინ 2:00 AM-ზე", "გუშინ ამავე დროს"); + + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('[შემდეგ] dddd LT[-ზე]'), "დღეს + " + i + " დღე ახლანდელ დროს"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[შემდეგ] dddd LT[-ზე]'), "დღეს + " + i + " დღე დღის დასაწყისში"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[შემდეგ] dddd LT[-ზე]'), "დღეს + " + i + " დღე დღის დასასრულს"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[წინა] dddd LT[-ზე]'), "დღეს - " + i + " დღე ახლანდელ დროს"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[წინა] dddd LT[-ზე]'), "დღეს - " + i + " დღე დღის დასაწყისში"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[წინა] dddd LT[-ზე]'), "დღეს - " + i + " დღე დღის დასასრულს"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 კვირის წინ"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "1 კვირაში"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 კვირის წინ"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "2 კვირაში"); + + test.done(); + }, + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).week(), 1, "დეკ 26 2011 უნდა იყოს კვირა 1"); + test.equal(moment([2012, 0, 1]).week(), 1, "იან 1 2012 უნდა იყოს კვირა 1"); + test.equal(moment([2012, 0, 2]).week(), 2, "იან 2 2012 უნდა იყოს კვირა 2"); + test.equal(moment([2012, 0, 8]).week(), 2, "იან 8 2012 უნდა იყოს კვირა 2"); + test.equal(moment([2012, 0, 9]).week(), 3, "იან 9 2012 უნდა იყოს კვირა 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "იან 1 2007 უნდა იყოს კვირა 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "იან 7 2007 უნდა იყოს კვირა 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "იან 8 2007 უნდა იყოს კვირა 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "იან 14 2007 უნდა იყოს კვირა 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "იან 15 2007 უნდა იყოს კვირა 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "დეკ 31 2007 უნდა იყოს კვირა 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "იან 1 2008 უნდა იყოს კვირა 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "იან 6 2008 უნდა იყოს კვირა 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "იან 7 2008 უნდა იყოს კვირა 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "იან 13 2008 უნდა იყოს კვირა 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "იან 14 2008 უნდა იყოს კვირა 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "დეკ 30 2002 უნდა იყოს კვირა 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "იან 1 2003 უნდა იყოს კვირა 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "იან 5 2003 უნდა იყოს კვირა 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "იან 6 2003 უნდა იყოს კვირა 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "იან 12 2003 უნდა იყოს კვირა 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "იან 13 2003 უნდა იყოს კვირა 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "დეკ 29 2008 უნდა იყოს კვირა 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "იან 1 2009 უნდა იყოს კვირა 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "იან 4 2009 უნდა იყოს კვირა 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "იან 5 2009 უნდა იყოს კვირა 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "იან 11 2009 უნდა იყოს კვირა 2"); + test.equal(moment([2009, 0, 12]).week(), 3, "იან 12 2009 უნდა იყოს კვირა 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 1, "დეკ 28 2009 უნდა იყოს კვირა 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "იან 1 2010 უნდა იყოს კვირა 1"); + test.equal(moment([2010, 0, 3]).week(), 1, "იან 3 2010 უნდა იყოს კვირა 1"); + test.equal(moment([2010, 0, 4]).week(), 2, "იან 4 2010 უნდა იყოს კვირა 2"); + test.equal(moment([2010, 0, 10]).week(), 2, "იან 10 2010 უნდა იყოს კვირა 2"); + test.equal(moment([2010, 0, 11]).week(), 3, "იან 11 2010 უნდა იყოს კვირა 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 1, "დეკ 27 2010 უნდა იყოს კვირა 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "იან 1 2011 უნდა იყოს კვირა 1"); + test.equal(moment([2011, 0, 2]).week(), 1, "იან 2 2011 უნდა იყოს კვირა 1"); + test.equal(moment([2011, 0, 3]).week(), 2, "იან 3 2011 უნდა იყოს კვირა 2"); + test.equal(moment([2011, 0, 9]).week(), 2, "იან 9 2011 უნდა იყოს კვირა 2"); + test.equal(moment([2011, 0, 10]).week(), 3, "იან 10 2011 უნდა იყოს კვირა 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ლი', "დეკ 26 2011 უნდა იყოს კვირა 1"); + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ლი', "იან 1 2012 უნდა იყოს კვირა 1"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 მე-2', "იან 2 2012 უნდა იყოს კვირა 2"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 მე-2', "იან 8 2012 უნდა იყოს კვირა 2"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 მე-3', "იან 9 2012 უნდა იყოს კვირა 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/ka'), 'ka', "module should export ka"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ko.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ko.js new file mode 100755 index 0000000..839061d --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ko.js @@ -0,0 +1,411 @@ +var moment = require("../../moment"); + + + /************************************************** + Korean + *************************************************/ + +exports["lang:kr"] = { + setUp : function (cb) { + moment.lang('ko'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = '1월 1월_2월 2월_3월 3월_4월 4월_5월 5월_6월 6월_7월 7월_8월 8월_9월 9월_10월 10월_11월 11월_12월 12월'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "parse meridiem" : function (test) { + var elements = [{ + expression : "1981년 9월 8일 오후 2시 30분", + inputFormat : "YYYY[년] M[월] D[일] A h[시] m[분]", + outputFormat : "A", + expected : "오후" + }, { + expression : "1981년 9월 8일 오전 2시 30분", + inputFormat : "YYYY[년] M[월] D[일] A h[시] m[분]", + outputFormat : "A h시", + expected : "오전 2시" + }, { + expression : "14시 30분", + inputFormat : "H[시] m[분]", + outputFormat : "A", + expected : "오후" + }, { + expression : "오후 4시", + inputFormat : "A h[시]", + outputFormat : "H", + expected : "16" + }], i, l, it, actual; + + test.expect(elements.length); + + for (i = 0, l = elements.length; i < l; ++i) { + it = elements[i]; + actual = moment(it.expression, it.inputFormat).format(it.outputFormat); + + test.equal( + actual, + it.expected, + "'" + it.outputFormat + "' of '" + it.expression + "' must be '" + it.expected + "' but was '" + actual + "'." + ); + } + + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['YYYY년 MMMM Do dddd a h:mm:ss', '2010년 2월 14일 일요일 오후 3:25:50'], + ['ddd A h', '일 오후 3'], + ['M Mo MM MMMM MMM', '2 2일 02 2월 2월'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14일 14'], + ['d do dddd ddd dd', '0 0일 일요일 일 일'], + ['DDD DDDo DDDD', '45 45일 045'], + ['w wo ww', '8 8일 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', '오후 오후'], + ['일년 중 DDDo째 되는 날', '일년 중 45일째 되는 날'], + ['L', '2010.02.14'], + ['LL', '2010년 2월 14일'], + ['LLL', '2010년 2월 14일 오후 3시 25분'], + ['LLLL', '2010년 2월 14일 일요일 오후 3시 25분'], + ['l', '2010.2.14'], + ['ll', '2010년 2월 14일'], + ['lll', '2010년 2월 14일 오후 3시 25분'], + ['llll', '2010년 2월 14일 일 오후 3시 25분'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1일', '1일'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2일', '2일'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3일', '3일'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4일', '4일'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5일', '5일'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6일', '6일'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7일', '7일'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8일', '8일'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9일', '9일'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10일', '10일'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11일', '11일'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12일', '12일'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13일', '13일'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14일', '14일'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15일', '15일'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16일', '16일'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17일', '17일'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18일', '18일'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19일', '19일'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20일', '20일'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21일', '21일'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22일', '22일'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23일', '23일'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24일', '24일'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25일', '25일'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26일', '26일'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27일', '27일'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28일', '28일'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29일', '29일'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30일', '30일'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31일', '31일'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = '1월 1월_2월 2월_3월 3월_4월 4월_5월 5월_6월 6월_7월 7월_8월 8월_9월 9월_10월 10월_11월 11월_12월 12월'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = '일요일 일 일_월요일 월 월_화요일 화 화_수요일 수 수_목요일 목 목_금요일 금 금_토요일 토 토'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "몇초", "44초 = 몇초"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "일분", "45초 = 일분"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "일분", "89초 = 일분"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2분", "90초 = 2분"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44분", "44분 = 44분"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "한시간", "45분 = 한시간"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "한시간", "89분 = 한시간"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2시간", "90분 = 2시간"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5시간", "5시간 = 5시간"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21시간", "21시간 = 21시간"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "하루", "22시간 = 하루"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "하루", "35시간 = 하루"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2일", "36시간 = 2일"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "하루", "하루 = 하루"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5일", "5일 = 5일"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25일", "25일 = 25일"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "한달", "26일 = 한달"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "한달", "30일 = 한달"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "한달", "45일 = 한달"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2달", "46일 = 2달"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2달", "75일 = 2달"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3달", "76일 = 3달"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "한달", "1달 = 한달"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5달", "5달 = 5달"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11달", "344일 = 11달"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "일년", "345일 = 일년"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "일년", "547일 = 일년"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2년", "548일 = 2년"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "일년", "일년 = 일년"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5년", "5년 = 5년"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + + test.equal(moment(30000).from(0), "몇초 후", "prefix"); + test.equal(moment(0).from(30000), "몇초 전", "suffix"); + + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + + test.equal(moment().fromNow(), "몇초 전", "now from now should display as in the past"); + + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + + test.equal(moment().add({s: 30}).fromNow(), "몇초 후", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "5일 후", "in 5 days"); + + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "오늘 오전 2시 00분", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "오늘 오전 2시 25분", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "오늘 오전 3시 00분", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "내일 오전 2시 00분", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "오늘 오전 1시 00분", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "어제 오전 2시 00분", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('지난주 dddd LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('지난주 dddd LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('지난주 dddd LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Sunday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(6); + + test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); + test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); + test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); + test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); + test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); + test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(5); + + test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); + test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday format" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1일', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1일', "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2일', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2일', "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3일', "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/ko'), 'ko', "module should export ko"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/lb.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/lb.js new file mode 100755 index 0000000..dbac991 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/lb.js @@ -0,0 +1,184 @@ +var moment = require("../../moment"); + +/************************************************** + Luxembourgish + *************************************************/ + +exports["lang:lb"] = { + setUp: function (cb) { + moment.lang('lb'); + cb(); + }, + + tearDown: function (cb) { + moment.lang('lb'); + cb(); + }, + + "parse": function (test) { + test.expect(96); + + var tests = 'Januar Jan._Februar Febr._Mäerz Mrz._Abrëll Abr._Mee Mee_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split("_"), i; + + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format": function (test) { + test.expect(22); + + var a = [ + ['dddd, Do MMMM YYYY, HH:mm:ss', 'Sonndeg, 14. Februar 2010, 15:25:50'], + ['ddd, HH:mm', 'So., 15:25'], + ['M Mo MM MMMM MMM', '2 2. 02 Februar Febr.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. Sonndeg So. So'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['L', '14.02.2010'], + ['LL', '14. Februar 2010'], + ['LLL', '14. Februar 2010 15:25 Auer'], + ['LLLL', 'Sonndeg, 14. Februar 2010 15:25 Auer'], + ['l', '14.2.2010'], + ['ll', '14. Febr. 2010'], + ['lll', '14. Febr. 2010 15:25 Auer'], + ['llll', 'So., 14. Febr. 2010 15:25 Auer'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format month": function (test) { + test.expect(12); + + var expected = 'Januar Jan._Februar Febr._Mäerz Mrz._Abrëll Abr._Mee Mee_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week": function (test) { + test.expect(7); + + var expected = 'Sonndeg So. So_Méindeg Mé. Mé_Dënschdeg Dë. Dë_Mëttwoch Më. Më_Donneschdeg Do. Do_Freideg Fr. Fr_Samschdeg Sa. Sa'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from": function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "e puer Sekonnen", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "eng Minutt", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "eng Minutt", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 Minutten", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 Minutten", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "eng Stonn", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "eng Stonn", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 Stonnen", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 Stonnen", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 Stonnen", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "een Dag", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "een Dag", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 Deeg", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "een Dag", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 Deeg", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 Deeg", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "ee Mount", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "ee Mount", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "ee Mount", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 Méint", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 Méint", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 Méint", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "ee Mount", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 Méint", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 Méint", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "ee Joer", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "ee Joer", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 Joer", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ee Joer", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 Joer", "5 years = 5 years"); + test.done(); + }, + + "suffix": function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "an e puer Sekonnen", "prefix"); + test.equal(moment(0).from(30000), "virun e puer Sekonnen", "suffix"); + test.done(); + }, + + "fromNow": function (test) { + test.expect(13); + test.equal(moment().add({s: 30}).fromNow(), "an e puer Sekonnen", "in a few seconds"); + test.equal(moment().add({d: 1}).fromNow(), "an engem Dag", "in one day"); + test.equal(moment().add({d: 2}).fromNow(), "an 2 Deeg", "in 2 days"); + test.equal(moment().add({d: 3}).fromNow(), "an 3 Deeg", "in 3 days"); + test.equal(moment().add({d: 4}).fromNow(), "a 4 Deeg", "in 4 days"); + test.equal(moment().add({d: 5}).fromNow(), "a 5 Deeg", "in 5 days"); + test.equal(moment().add({d: 6}).fromNow(), "a 6 Deeg", "in 6 days"); + test.equal(moment().add({d: 7}).fromNow(), "a 7 Deeg", "in 7 days"); + test.equal(moment().add({d: 8}).fromNow(), "an 8 Deeg", "in 8 days"); + test.equal(moment().add({d: 9}).fromNow(), "an 9 Deeg", "in 9 days"); + test.equal(moment().add({d: 10}).fromNow(), "an 10 Deeg", "in 10 days"); + test.equal(moment().add({y: 100}).fromNow(), "an 100 Joer", "in 100 years"); + test.equal(moment().add({y: 400}).fromNow(), "a 400 Joer", "in 400 years"); + test.done(); + }, + + "calendar last week": function (test) { + test.expect(15); + + var i, m, weekday, datestring; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + + // Different date string for "Dënschdeg" (Tuesday) and "Donneschdeg" (Thursday) + weekday = parseInt(m.format('d'), 10); + datestring = (weekday === 2 || weekday === 4 ? '[Leschten] dddd [um] LT' : '[Leschte] dddd [um] LT'); + + test.equal(m.calendar(), m.format(datestring), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format(datestring), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format(datestring), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "returns the name of the language": function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/lb'), 'lb', "module should export lb"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/lt.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/lt.js new file mode 100755 index 0000000..996693b --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/lt.js @@ -0,0 +1,370 @@ +var moment = require("../../moment"); + + + /************************************************** + Lithuanian + *************************************************/ + +exports["lang:lt"] = { + setUp : function (cb) { + moment.lang('lt'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'sausio sau_vasario vas_kovo kov_balandžio bal_gegužės geg_biržėlio bir_liepos lie_rugpjūčio rgp_rugsėjo rgs_spalio spa_lapkričio lap_gruodžio grd'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, Do MMMM YYYY, h:mm:ss a', 'sekmadienis, 14-oji vasario 2010, 3:25:50 pm'], + ['ddd, hA', 'Sek, 3PM'], + ['M Mo MM MMMM MMM', '2 2-oji 02 vasario vas'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14-oji 14'], + ['d do dddd ddd dd', '0 0-oji sekmadienis Sek S'], + ['DDD DDDo DDDD', '45 45-oji 045'], + ['w wo ww', '6 6-oji 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['DDDo [metų diena]', '45-oji metų diena'], + ['L', '2010-02-14'], + ['LL', '2010 m. vasario 14 d.'], + ['LLL', '2010 m. vasario 14 d., 15:25 val.'], + ['LLLL', '2010 m. vasario 14 d., sekmadienis, 15:25 val.'], + ['l', '2010-02-14'], + ['ll', '2010 m. vasario 14 d.'], + ['lll', '2010 m. vasario 14 d., 15:25 val.'], + ['llll', '2010 m. vasario 14 d., Sek, 15:25 val.'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1-oji', '1-oji'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2-oji', '2-oji'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3-oji', '3-oji'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4-oji', '4-oji'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5-oji', '5-oji'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6-oji', '6-oji'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7-oji', '7-oji'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8-oji', '8-oji'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9-oji', '9-oji'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10-oji', '10-oji'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11-oji', '11-oji'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12-oji', '12-oji'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13-oji', '13-oji'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14-oji', '14-oji'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15-oji', '15-oji'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16-oji', '16-oji'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17-oji', '17-oji'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18-oji', '18-oji'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19-oji', '19-oji'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20-oji', '20-oji'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21-oji', '21-oji'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22-oji', '22-oji'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23-oji', '23-oji'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24-oji', '24-oji'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25-oji', '25-oji'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26-oji', '26-oji'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27-oji', '27-oji'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28-oji', '28-oji'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29-oji', '29-oji'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30-oji', '30-oji'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31-oji', '31-oji'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'sausio sau_vasario vas_kovo kov_balandžio bal_gegužės geg_biržėlio bir_liepos lie_rugpjūčio rgp_rugsėjo rgs_spalio spa_lapkričio lap_gruodžio grd'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'sekmadienis Sek S_pirmadienis Pir P_antradienis Ant A_trečiadienis Tre T_ketvirtadienis Ket K_penktadienis Pen Pn_šeštadienis Šeš Š'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(37); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "kelios sekundės", "44 seconds = seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "minutė", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "minutė", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutės", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 10}), true), "10 minučių", "10 minutes = 10 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 11}), true), "11 minučių", "11 minutes = 11 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 19}), true), "19 minučių", "19 minutes = 19 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 20}), true), "20 minučių", "20 minutes = 20 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutės", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "valanda", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "valanda", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 valandos", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 valandos", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 10}), true), "10 valandų", "10 hours = 10 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 valandos", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "diena", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "diena", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dienos", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "diena", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dienos", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 10}), true), "10 dienų", "10 days = 10 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dienos", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "mėnuo", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "mėnuo", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "mėnuo", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mėnesiai", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mėnesiai", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mėnesiai", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "mėnuo", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mėnesiai", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 10}), true), "10 mėnesių", "10 months = 10 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mėnesių", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "metai", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "metai", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 metai", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "metai", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 metai", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "po kelių sekundžių", "prefix"); + test.equal(moment(0).from(30000), "prieš kelias sekundes", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "prieš kelias sekundes", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "po kelių sekundžių", "in seconds"); + test.equal(moment().add({d: 5}).fromNow(), "po 5 dienų", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Šiandien 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Šiandien 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Šiandien 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Rytoj 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Šiandien 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Vakar 02:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[Praėjusį] dddd LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[Praėjusį] dddd LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[Praėjusį] dddd LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52-oji', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1-oji', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1-oji', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2-oji', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2-oji', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/lt'), 'lt', "module should export lt"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/lv.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/lv.js new file mode 100755 index 0000000..66232b0 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/lv.js @@ -0,0 +1,363 @@ +var moment = require("../../moment"); + + + /************************************************** + Latvian + *************************************************/ + +exports["lang:lv"] = { + setUp : function (cb) { + moment.lang('lv'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'janvāris jan_februāris feb_marts mar_aprīlis apr_maijs mai_jūnijs jūn_jūlijs jūl_augusts aug_septembris sep_oktobris okt_novembris nov_decembris dec'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, Do MMMM YYYY, h:mm:ss a', 'svētdiena, 14. februāris 2010, 3:25:50 pm'], + ['ddd, hA', 'Sv, 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 februāris feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. svētdiena Sv Sv'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['L', '14.02.2010'], + ['LL', '2010. gada 14. februāris'], + ['LLL', '2010. gada 14. februāris, 15:25'], + ['LLLL', '2010. gada 14. februāris, svētdiena, 15:25'], + ['l', '14.2.2010'], + ['ll', '2010. gada 14. feb'], + ['lll', '2010. gada 14. feb, 15:25'], + ['llll', '2010. gada 14. feb, Sv, 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'janvāris jan_februāris feb_marts mar_aprīlis apr_maijs mai_jūnijs jūn_jūlijs jūl_augusts aug_septembris sep_oktobris okt_novembris nov_decembris dec'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'svētdiena Sv Sv_pirmdiena P P_otrdiena O O_trešdiena T T_ceturtdiena C C_piektdiena Pk Pk_sestdiena S S'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "dažas sekundes", "44 seconds = seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "minūti", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "minūti", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minūtes", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minūtes", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "stundu", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "stundu", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 stundas", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 stundas", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 stunda", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "dienu", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "dienu", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dienas", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "dienu", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dienas", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dienas", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "mēnesi", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "mēnesi", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "mēnesi", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mēneši", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mēneši", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mēneši", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "mēnesi", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mēneši", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mēneši", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "gadu", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "gadu", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 gadi", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "gadu", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 gadi", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "dažas sekundes vēlāk", "prefix"); + test.equal(moment(0).from(30000), "dažas sekundes agrāk", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "dažas sekundes agrāk", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "dažas sekundes vēlāk", "in seconds"); + test.equal(moment().add({d: 5}).fromNow(), "5 dienas vēlāk", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Šodien pulksten 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Šodien pulksten 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Šodien pulksten 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Rīt pulksten 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Šodien pulksten 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Vakar pulksten 02:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [pulksten] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [pulksten] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [pulksten] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[Pagājušā] dddd [pulksten] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[Pagājušā] dddd [pulksten] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[Pagājušā] dddd [pulksten] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/lv'), 'lv', "module should export lv"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/mk.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/mk.js new file mode 100755 index 0000000..debe32a --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/mk.js @@ -0,0 +1,372 @@ +var moment = require("../../moment"); + + + /************************************************** + Macedonian + *************************************************/ + +exports["lang:mk"] = { + "setUp" : function (cb) { + moment.lang('mk'); + cb(); + }, + + "tearDown" : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + var tests = 'јануари јан_февруари фев_март мар_април апр_мај мај_јуни јун_јули јул_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + var a = [ + ['dddd, MMMM Do YYYY, H:mm:ss', 'недела, февруари 14-ти 2010, 15:25:50'], + ['ddd, hA', 'нед, 3PM'], + ['M Mo MM MMMM MMM', '2 2-ри 02 февруари фев'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14-ти 14'], + ['d do dddd ddd dd', '0 0-ев недела нед нe'], + ['DDD DDDo DDDD', '45 45-ти 045'], + ['w wo ww', '7 7-ми 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45-ти day of the year'], + ['L', '14.02.2010'], + ['LL', '14 февруари 2010'], + ['LLL', '14 февруари 2010 15:25'], + ['LLLL', 'недела, 14 февруари 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14 фев 2010'], + ['lll', '14 фев 2010 15:25'], + ['llll', 'нед, 14 фев 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1-ви', '1-ви'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2-ри', '2-ри'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3-ти', '3-ти'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4-ти', '4-ти'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5-ти', '5-ти'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6-ти', '6-ти'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7-ми', '7-ми'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8-ми', '8-ми'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9-ти', '9-ти'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10-ти', '10-ти'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11-ти', '11-ти'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12-ти', '12-ти'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13-ти', '13-ти'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14-ти', '14-ти'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15-ти', '15-ти'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16-ти', '16-ти'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17-ти', '17-ти'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18-ти', '18-ти'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19-ти', '19-ти'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20-ти', '20-ти'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21-ви', '21-ви'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22-ри', '22-ри'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23-ти', '23-ти'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24-ти', '24-ти'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25-ти', '25-ти'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26-ти', '26-ти'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27-ми', '27-ми'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28-ми', '28-ми'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29-ти', '29-ти'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30-ти', '30-ти'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31-ви', '31-ви'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'јануари јан_февруари фев_март мар_април апр_мај мај_јуни јун_јули јул_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'недела нед нe_понеделник пон пo_вторник вто вт_среда сре ср_четврток чет че_петок пет пе_сабота саб сa'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "неколку секунди", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "минута", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "минута", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 минути", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 минути", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "час", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "час", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 часа", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 часа", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 часа", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "ден", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "ден", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 дена", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "ден", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 дена", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 дена", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "месец", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "месец", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "месец", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 месеци", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 месеци", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 месеци", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "месец", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 месеци", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 месеци", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "година", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "година", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 години", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "година", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 години", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "после неколку секунди", "prefix"); + test.equal(moment(0).from(30000), "пред неколку секунди", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "пред неколку секунди", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "после неколку секунди", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "после 5 дена", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Денес во 2:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Денес во 2:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Денес во 3:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Утре во 2:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Денес во 1:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Вчера во 2:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [во] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [во] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [во] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + case 3: + case 6: + return '[Во изминатата] dddd [во] LT'; + case 1: + case 2: + case 4: + case 5: + return '[Во изминатиот] dddd [во] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); + test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); + test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); + test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); + test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-ви', "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-ви', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-ри', "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-ри', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-ти', "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/mk'), 'mk', "module should export mk"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ml.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ml.js new file mode 100755 index 0000000..efb2d19 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ml.js @@ -0,0 +1,385 @@ +var moment = require("../../moment"); + + + /************************************************** + Malayalam + *************************************************/ + +exports["lang:ml"] = { + setUp : function (cb) { + moment.lang('ml'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'ജനുവരി ജനു._ഫെബ്രുവരി ഫെബ്രു._മാർച്ച് മാർ._ഏപ്രിൽ ഏപ്രി._മേയ് മേയ്_ജൂൺ ജൂൺ_ജൂലൈ ജൂലൈ._ഓഗസ്റ്റ് ഓഗ._സെപ്റ്റംബർ സെപ്റ്റ._ഒക്ടോബർ ഒക്ടോ._നവംബർ നവം._ഡിസംബർ ഡിസം.'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(21); + + var a = [ + ['dddd, Do MMMM YYYY, a h:mm:ss -നു', 'ഞായറാഴ്ച, 14 ഫെബ്രുവരി 2010, ഉച്ച കഴിഞ്ഞ് 3:25:50 -നു'], + ['ddd, a h -നു', 'ഞായർ, ഉച്ച കഴിഞ്ഞ് 3 -നു'], + ['M Mo MM MMMM MMM', '2 2 02 ഫെബ്രുവരി ഫെബ്രു.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 ഞായറാഴ്ച ഞായർ ഞാ'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '8 8 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'ഉച്ച കഴിഞ്ഞ് ഉച്ച കഴിഞ്ഞ്'], + ['L', '14/02/2010'], + ['LL', '14 ഫെബ്രുവരി 2010'], + ['LLL', '14 ഫെബ്രുവരി 2010, ഉച്ച കഴിഞ്ഞ് 3:25 -നു'], + ['LLLL', 'ഞായറാഴ്ച, 14 ഫെബ്രുവരി 2010, ഉച്ച കഴിഞ്ഞ് 3:25 -നു'], + ['l', '14/2/2010'], + ['ll', '14 ഫെബ്രു. 2010'], + ['lll', '14 ഫെബ്രു. 2010, ഉച്ച കഴിഞ്ഞ് 3:25 -നു'], + ['llll', 'ഞായർ, 14 ഫെബ്രു. 2010, ഉച്ച കഴിഞ്ഞ് 3:25 -നു'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'ജനുവരി ജനു._ഫെബ്രുവരി ഫെബ്രു._മാർച്ച് മാർ._ഏപ്രിൽ ഏപ്രി._മേയ് മേയ്_ജൂൺ ജൂൺ_ജൂലൈ ജൂലൈ._ഓഗസ്റ്റ് ഓഗ._സെപ്റ്റംബർ സെപ്റ്റ._ഒക്ടോബർ ഒക്ടോ._നവംബർ നവം._ഡിസംബർ ഡിസം.'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'ഞായറാഴ്ച ഞായർ ഞാ_തിങ്കളാഴ്ച തിങ്കൾ തി_ചൊവ്വാഴ്ച ചൊവ്വ ചൊ_ബുധനാഴ്ച ബുധൻ ബു_വ്യാഴാഴ്ച വ്യാഴം വ്യാ_വെള്ളിയാഴ്ച വെള്ളി വെ_ശനിയാഴ്ച ശനി ശ'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "അൽപ നിമിഷങ്ങൾ", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "ഒരു മിനിറ്റ്", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "ഒരു മിനിറ്റ്", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 മിനിറ്റ്", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 മിനിറ്റ്", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "ഒരു മണിക്കൂർ", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "ഒരു മണിക്കൂർ", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 മണിക്കൂർ", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 മണിക്കൂർ", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 മണിക്കൂർ", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "ഒരു ദിവസം", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "ഒരു ദിവസം", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 ദിവസം", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "ഒരു ദിവസം", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 ദിവസം", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 ദിവസം", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "ഒരു മാസം", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "ഒരു മാസം", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "ഒരു മാസം", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 മാസം", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 മാസം", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 മാസം", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "ഒരു മാസം", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 മാസം", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 മാസം", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "ഒരു വർഷം", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "ഒരു വർഷം", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 വർഷം", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ഒരു വർഷം", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 വർഷം", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "അൽപ നിമിഷങ്ങൾ കഴിഞ്ഞ്", "prefix"); + test.equal(moment(0).from(30000), "അൽപ നിമിഷങ്ങൾ മുൻപ്", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "അൽപ നിമിഷങ്ങൾ മുൻപ്", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "അൽപ നിമിഷങ്ങൾ കഴിഞ്ഞ്", "അൽപ നിമിഷങ്ങൾ കഴിഞ്ഞ്"); + test.equal(moment().add({d: 5}).fromNow(), "5 ദിവസം കഴിഞ്ഞ്", "5 ദിവസം കഴിഞ്ഞ്"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "ഇന്ന് രാത്രി 2:00 -നു", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "ഇന്ന് രാത്രി 2:25 -നു", "Now plus 25 min"); + test.equal(moment(a).add({ h: 3 }).calendar(), "ഇന്ന് രാവിലെ 5:00 -നു", "Now plus 3 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "നാളെ രാത്രി 2:00 -നു", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "ഇന്ന് രാത്രി 1:00 -നു", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "ഇന്നലെ രാത്രി 2:00 -നു", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd[,] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd[,] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd[,] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[കഴിഞ്ഞ] dddd[,] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[കഴിഞ്ഞ] dddd[,] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[കഴിഞ്ഞ] dddd[,] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + "meridiem" : function (test) { + test.expect(12); + + test.equal(moment([2011, 2, 23, 2, 30]).format('a'), "രാത്രി", "before dawn"); + test.equal(moment([2011, 2, 23, 9, 30]).format('a'), "രാവിലെ", "morning"); + test.equal(moment([2011, 2, 23, 14, 30]).format('a'), "ഉച്ച കഴിഞ്ഞ്", "during day"); + test.equal(moment([2011, 2, 23, 17, 30]).format('a'), "വൈകുന്നേരം", "evening"); + test.equal(moment([2011, 2, 23, 19, 30]).format('a'), "വൈകുന്നേരം", "late evening"); + test.equal(moment([2011, 2, 23, 21, 20]).format('a'), "രാത്രി", "night"); + + test.equal(moment([2011, 2, 23, 2, 30]).format('A'), "രാത്രി", "before dawn"); + test.equal(moment([2011, 2, 23, 9, 30]).format('A'), "രാവിലെ", "morning"); + test.equal(moment([2011, 2, 23, 14, 30]).format('A'), "ഉച്ച കഴിഞ്ഞ്", " during day"); + test.equal(moment([2011, 2, 23, 17, 30]).format('A'), "വൈകുന്നേരം", "evening"); + test.equal(moment([2011, 2, 23, 19, 30]).format('A'), "വൈകുന്നേരം", "late evening"); + test.equal(moment([2011, 2, 23, 21, 20]).format('A'), "രാത്രി", "night"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(6); + + test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); + test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); + test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); + test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); + test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); + test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(5); + + test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); + test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/ml'), 'ml', "module should export ml"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/mr.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/mr.js new file mode 100755 index 0000000..5be909d --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/mr.js @@ -0,0 +1,385 @@ +var moment = require("../../moment"); + + + /************************************************** + Marathi + *************************************************/ + +exports["lang:mr"] = { + setUp : function (cb) { + moment.lang('mr'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'जानेवारी जाने._फेब्रुवारी फेब्रु._मार्च मार्च._एप्रिल एप्रि._मे मे._जून जून._जुलै जुलै._ऑगस्ट ऑग._सप्टेंबर सप्टें._ऑक्टोबर ऑक्टो._नोव्हेंबर नोव्हें._डिसेंबर डिसें.'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(21); + + var a = [ + ['dddd, Do MMMM YYYY, a h:mm:ss वाजता', 'रविवार, १४ फेब्रुवारी २०१०, दुपारी ३:२५:५० वाजता'], + ['ddd, a h वाजता', 'रवि, दुपारी ३ वाजता'], + ['M Mo MM MMMM MMM', '२ २ ०२ फेब्रुवारी फेब्रु.'], + ['YYYY YY', '२०१० १०'], + ['D Do DD', '१४ १४ १४'], + ['d do dddd ddd dd', '० ० रविवार रवि र'], + ['DDD DDDo DDDD', '४५ ४५ ०४५'], + ['w wo ww', '८ ८ ०८'], + ['h hh', '३ ०३'], + ['H HH', '१५ १५'], + ['m mm', '२५ २५'], + ['s ss', '५० ५०'], + ['a A', 'दुपारी दुपारी'], + ['L', '१४/०२/२०१०'], + ['LL', '१४ फेब्रुवारी २०१०'], + ['LLL', '१४ फेब्रुवारी २०१०, दुपारी ३:२५ वाजता'], + ['LLLL', 'रविवार, १४ फेब्रुवारी २०१०, दुपारी ३:२५ वाजता'], + ['l', '१४/२/२०१०'], + ['ll', '१४ फेब्रु. २०१०'], + ['lll', '१४ फेब्रु. २०१०, दुपारी ३:२५ वाजता'], + ['llll', 'रवि, १४ फेब्रु. २०१०, दुपारी ३:२५ वाजता'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '१', '१'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '२', '२'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '३', '३'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '४', '४'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '५', '५'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '६', '६'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '७', '७'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '८', '८'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '९', '९'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '१०', '१०'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '११', '११'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '१२', '१२'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '१३', '१३'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '१४', '१४'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '१५', '१५'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '१६', '१६'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '१७', '१७'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '१८', '१८'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '१९', '१९'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '२०', '२०'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '२१', '२१'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '२२', '२२'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '२३', '२३'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '२४', '२४'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '२५', '२५'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '२६', '२६'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '२७', '२७'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '२८', '२८'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '२९', '२९'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '३०', '३०'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '३१', '३१'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'जानेवारी जाने._फेब्रुवारी फेब्रु._मार्च मार्च._एप्रिल एप्रि._मे मे._जून जून._जुलै जुलै._ऑगस्ट ऑग._सप्टेंबर सप्टें._ऑक्टोबर ऑक्टो._नोव्हेंबर नोव्हें._डिसेंबर डिसें.'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'रविवार रवि र_सोमवार सोम सो_मंगळवार मंगळ मं_बुधवार बुध बु_गुरूवार गुरू गु_शुक्रवार शुक्र शु_शनिवार शनि श'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "सेकंद", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "एक मिनिट", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "एक मिनिट", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "२ मिनिटे", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({ m: 44 }), true), "४४ मिनिटे", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "एक तास", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "एक तास", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "२ तास", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "५ तास", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "२१ तास", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "एक दिवस", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "एक दिवस", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "२ दिवस", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "एक दिवस", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "५ दिवस", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "२५ दिवस", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({ d: 26 }), true), "एक महिना", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({ d: 30 }), true), "एक महिना", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({ d: 45 }), true), "एक महिना", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({ d: 46 }), true), "२ महिने", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({ d: 74 }), true), "२ महिने", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({ d: 76 }), true), "३ महिने", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({ M: 1 }), true), "एक महिना", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({ M: 5 }), true), "५ महिने", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({ d: 344 }), true), "११ महिने", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "एक वर्ष", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "एक वर्ष", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "२ वर्षे", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "एक वर्ष", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({ y: 5 }), true), "५ वर्षे", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "सेकंद नंतर", "prefix"); + test.equal(moment(0).from(30000), "सेकंद पूर्वी", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "सेकंद पूर्वी", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({ s: 30 }).fromNow(), "सेकंद नंतर", "सेकंद नंतर"); + test.equal(moment().add({ d: 5 }).fromNow(), "५ दिवस नंतर", "५ दिवस नंतर"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "आज रात्री २:०० वाजता", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "आज रात्री २:२५ वाजता", "Now plus 25 min"); + test.equal(moment(a).add({ h: 3 }).calendar(), "आज सकाळी ५:०० वाजता", "Now plus 3 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "उद्या रात्री २:०० वाजता", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "आज रात्री १:०० वाजता", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "काल रात्री २:०० वाजता", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd[,] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd[,] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd[,] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[मागील] dddd[,] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[मागील] dddd[,] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[मागील] dddd[,] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + "meridiem" : function (test) { + test.expect(12); + + test.equal(moment([2011, 2, 23, 2, 30]).format('a'), "रात्री", "before dawn"); + test.equal(moment([2011, 2, 23, 9, 30]).format('a'), "सकाळी", "morning"); + test.equal(moment([2011, 2, 23, 14, 30]).format('a'), "दुपारी", "during day"); + test.equal(moment([2011, 2, 23, 17, 30]).format('a'), "सायंकाळी", "evening"); + test.equal(moment([2011, 2, 23, 19, 30]).format('a'), "सायंकाळी", "late evening"); + test.equal(moment([2011, 2, 23, 21, 20]).format('a'), "रात्री", "night"); + + test.equal(moment([2011, 2, 23, 2, 30]).format('A'), "रात्री", "before dawn"); + test.equal(moment([2011, 2, 23, 9, 30]).format('A'), "सकाळी", "morning"); + test.equal(moment([2011, 2, 23, 14, 30]).format('A'), "दुपारी", " during day"); + test.equal(moment([2011, 2, 23, 17, 30]).format('A'), "सायंकाळी", "evening"); + test.equal(moment([2011, 2, 23, 19, 30]).format('A'), "सायंकाळी", "late evening"); + test.equal(moment([2011, 2, 23, 21, 20]).format('A'), "रात्री", "night"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(6); + + test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); + test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); + test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); + test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); + test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); + test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(5); + + test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); + test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '१ ०१ १', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).format('w ww wo'), '१ ०१ १', "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '२ ०२ २', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).format('w ww wo'), '२ ०२ २', "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '३ ०३ ३', "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/mr'), 'mr', "module should export mr"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ms-my.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ms-my.js new file mode 100755 index 0000000..4ac521a --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ms-my.js @@ -0,0 +1,385 @@ +var moment = require("../../moment"); + + + /************************************************** + Bahasa Melayu + *************************************************/ + +exports["lang:ms-my"] = { + setUp : function (cb) { + moment.lang('ms-my'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var i, + tests = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split("_"); + + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' sepatutnya bulan ' + (i + 1)); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Ahad, Februari 14 2010, 3:25:50 petang'], + ['ddd, hA', 'Ahd, 3petang'], + ['M Mo MM MMMM MMM', '2 2 02 Februari Feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 Ahad Ahd Ah'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '7 7 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'petang petang'], + ['[hari] [ke] DDDo [tahun] ini', 'hari ke 45 tahun ini'], + ['L', '14/02/2010'], + ['LL', '14 Februari 2010'], + ['LLL', '14 Februari 2010 pukul 15.25'], + ['LLLL', 'Ahad, 14 Februari 2010 pukul 15.25'], + ['l', '14/2/2010'], + ['ll', '14 Feb 2010'], + ['lll', '14 Feb 2010 pukul 15.25'], + ['llll', 'Ahd, 14 Feb 2010 pukul 15.25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var i, + expected = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split("_"); + + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var i, + expected = 'Ahad Ahd Ah_Isnin Isn Is_Selasa Sel Sl_Rabu Rab Rb_Khamis Kha Km_Jumaat Jum Jm_Sabtu Sab Sb'.split("_"); + + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "beberapa saat", "44 saat = beberapa saat"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "seminit", "45 saat = seminit"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "seminit", "89 saat = seminit"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minit", "90 saat = 2 minit"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minit", "44 minit = 44 minit"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "sejam", "45 minit = sejam"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "sejam", "89 minit = sejam"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 jam", "90 minit = 2 jam"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 jam", "5 jam = 5 jam"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 jam", "21 jam = 21 jam"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "sehari", "22 jam = sehari"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "sehari", "35 jam = sehari"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 hari", "36 jam = 2 hari"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "sehari", "1 hari = sehari"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 hari", "5 hari = 5 hari"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 hari", "25 hari = 25 hari"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "sebulan", "26 hari = sebulan"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "sebulan", "30 hari = sebulan"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "sebulan", "45 hari = sebulan"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 bulan", "46 hari = 2 bulan"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 bulan", "75 hari = 2 bulan"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 bulan", "76 hari = 3 bulan"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "sebulan", "1 bulan = sebulan"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 bulan", "5 bulan = 5 bulan"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 bulan", "344 hari = 11 bulan"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "setahun", "345 hari = setahun"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "setahun", "547 hari = setahun"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 tahun", "548 hari = 2 tahun"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "setahun", "1 tahun = setahun"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 tahun", "5 tahun = 5 tahun"); + + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + + test.equal(moment(30000).from(0), "dalam beberapa saat", "prefix"); + test.equal(moment(0).from(30000), "beberapa saat yang lepas", "suffix"); + + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + + test.equal(moment().fromNow(), "beberapa saat yang lepas", "waktu sekarang dari sekarang sepatutnya menunjukkan sebagai telah lepas"); + + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + + test.equal(moment().add({s: 30}).fromNow(), "dalam beberapa saat", "dalam beberapa saat"); + test.equal(moment().add({d: 5}).fromNow(), "dalam 5 hari", "dalam 5 hari"); + + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Hari ini pukul 02.00", "hari ini pada waktu yang sama"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Hari ini pukul 02.25", "Sekarang tambah 25 minit"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Hari ini pukul 03.00", "Sekarang tambah 1 jam"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Esok pukul 02.00", "esok pada waktu yang sama"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Hari ini pukul 01.00", "Sekarang tolak 1 jam"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Kelmarin pukul 02.00", "kelmarin pada waktu yang sama"); + + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [pukul] LT'), "Hari ini + " + i + " hari waktu sekarang"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [pukul] LT'), "Hari ini + " + i + " hari permulaan hari"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [pukul] LT'), "Hari ini + " + i + " hari tamat hari"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), "Hari ini - " + i + " hari waktu sekarang"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), "Hari ini - " + i + " hari permulaan hari"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), "Hari ini - " + i + " hari tamat hari"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 minggu lepas"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "dalam 1 minggu"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 minggu lepas"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "dalam 2 minggu"); + + test.done(); + }, + + // Sunday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 sepatutnya minggu 1"); + test.equal(moment([2012, 0, 7]).week(), 2, "Jan 7 2012 sepatutnya minggu 2"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 sepatutnya minggu 2"); + test.equal(moment([2012, 0, 14]).week(), 3, "Jan 14 2012 sepatutnya minggu 3"); + test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 sepatutnya minggu 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(6); + + test.equal(moment([2006, 11, 31]).week(), 53, "Dec 31 2006 sepatutnya minggu 53"); + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 sepatutnya minggu 1"); + test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 sepatutnya minggu 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 sepatutnya minggu 1"); + test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 sepatutnya minggu 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 sepatutnya minggu 2"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 30]).week(), 52, "Dec 30 2007 sepatutnya minggu 52"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 sepatutnya minggu 1"); + test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 sepatutnya minggu 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 sepatutnya minggu 1"); + test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 sepatutnya minggu 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 sepatutnya minggu 2"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 29]).week(), 52, "Dec 29 2002 sepatutnya minggu 52"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 sepatutnya minggu 1"); + test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 sepatutnya minggu 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 sepatutnya minggu 1"); + test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 sepatutnya minggu 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 sepatutnya minggu 2"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 28]).week(), 52, "Dec 28 2008 sepatutnya minggu 52"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 sepatutnya minggu 1"); + test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 sepatutnya minggu 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 sepatutnya minggu 1"); + test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 sepatutnya minggu 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 sepatutnya minggu 2"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 27]).week(), 52, "Dec 27 2009 sepatutnya minggu 52"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 sepatutnya minggu 1"); + test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 sepatutnya minggu 1"); + test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 sepatutnya minggu 1"); + test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 sepatutnya minggu 2"); + test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 sepatutnya minggu 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(5); + + test.equal(moment([2010, 11, 26]).week(), 52, "Dec 26 2010 sepatutnya minggu 52"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 sepatutnya minggu 1"); + test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 sepatutnya minggu 1"); + test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 sepatutnya minggu 2"); + test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 sepatutnya minggu 2"); + + test.done(); + }, + + "weeks year starting sunday format" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', "Jan 1 2012 sepatutnya minggu 1"); + test.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', "Jan 7 2012 sepatutnya minggu 2"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 sepatutnya minggu 2"); + test.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', "Jan 14 2012 sepatutnya minggu 3"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', "Jan 15 2012 sepatutnya minggu 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/ms-my'), 'ms-my', "module should export ms-my"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/nb.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/nb.js new file mode 100755 index 0000000..5976327 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/nb.js @@ -0,0 +1,364 @@ +var moment = require("../../moment"); + + + /************************************************** + Norwegian bokmål + *************************************************/ + +exports["lang:nb"] = { + setUp : function (cb) { + moment.lang('nb'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'januar jan_februar feb_mars mars_april april_mai mai_juni juni_juli juli_august aug_september sep_oktober okt_november nov_desember des'.split("_"), + i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'søndag, februar 14. 2010, 3:25:50 pm'], + ['ddd, hA', 'sø., 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 februar feb.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. søndag sø. sø'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[den] DDDo [dagen i året]', 'den 45. dagen i året'], + ['L', '14.02.2010'], + ['LL', '14. februar 2010'], + ['LLL', '14. februar 2010 kl. 15.25'], + ['LLLL', 'søndag 14. februar 2010 kl. 15.25'], + ['l', '14.2.2010'], + ['ll', '14. feb. 2010'], + ['lll', '14. feb. 2010 kl. 15.25'], + ['llll', 'sø. 14. feb. 2010 kl. 15.25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'januar jan._februar feb._mars mars_april april_mai mai_juni juni_juli juli_august aug._september sep._oktober okt._november nov._desember des.'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'søndag sø. sø_mandag ma. ma_tirsdag ti. ti_onsdag on. on_torsdag to. to_fredag fr. fr_lørdag lø. lø'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "noen sekunder", "44 sekunder = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "ett minutt", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "ett minutt", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutter", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutter", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "en time", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "en time", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 timer", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 timer", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 timer", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "en dag", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "en dag", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dager", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "en dag", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dager", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dager", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "en måned", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "en måned", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "en måned", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 måneder", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 måneder", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 måneder", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "en måned", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 måneder", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 måneder", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "ett år", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "ett år", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 år", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ett år", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 år", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "om noen sekunder", "prefix"); + test.equal(moment(0).from(30000), "for noen sekunder siden", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "for noen sekunder siden", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "om noen sekunder", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "om 5 dager", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "i dag kl. 2.00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "i dag kl. 2.25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "i dag kl. 3.00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "i morgen kl. 2.00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "i dag kl. 1.00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "i går kl. 2.00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [kl.] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [kl.] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [kl.] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[forrige] dddd [kl.] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[forrige] dddd [kl.] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[forrige] dddd [kl.] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/nb'), 'nb', "module should export nb"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ne.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ne.js new file mode 100755 index 0000000..c1500ff --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ne.js @@ -0,0 +1,383 @@ +var moment = require("../../moment"); + + + /************************************************** + Nepali + *************************************************/ + +exports["lang:ne"] = { + setUp : function (cb) { + moment.lang('ne'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'जनवरी जन._फेब्रुवरी फेब्रु._मार्च मार्च_अप्रिल अप्रि._मई मई_जुन जुन_जुलाई जुलाई._अगष्ट अग._सेप्टेम्बर सेप्ट._अक्टोबर अक्टो._नोभेम्बर नोभे._डिसेम्बर डिसे.'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(21); + + var a = [ + ['dddd, Do MMMM YYYY, aको h:mm:ss बजे', 'आइतबार, १४ फेब्रुवरी २०१०, बेलुकाको ३:२५:५० बजे'], + ['ddd, aको h बजे', 'आइत., बेलुकाको ३ बजे'], + ['M Mo MM MMMM MMM', '२ २ ०२ फेब्रुवरी फेब्रु.'], + ['YYYY YY', '२०१० १०'], + ['D Do DD', '१४ १४ १४'], + ['d do dddd ddd dd', '० ० आइतबार आइत. आइ.'], + ['DDD DDDo DDDD', '४५ ४५ ०४५'], + ['w wo ww', '७ ७ ०७'], + ['h hh', '३ ०३'], + ['H HH', '१५ १५'], + ['m mm', '२५ २५'], + ['s ss', '५० ५०'], + ['a A', 'बेलुका बेलुका'], + ['L', '१४/०२/२०१०'], + ['LL', '१४ फेब्रुवरी २०१०'], + ['LLL', '१४ फेब्रुवरी २०१०, बेलुकाको ३:२५ बजे'], + ['LLLL', 'आइतबार, १४ फेब्रुवरी २०१०, बेलुकाको ३:२५ बजे'], + ['l', '१४/२/२०१०'], + ['ll', '१४ फेब्रु. २०१०'], + ['lll', '१४ फेब्रु. २०१०, बेलुकाको ३:२५ बजे'], + ['llll', 'आइत., १४ फेब्रु. २०१०, बेलुकाको ३:२५ बजे'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '१', '१'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '२', '२'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '३', '३'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '४', '४'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '५', '५'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '६', '६'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '७', '७'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '८', '८'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '९', '९'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '१०', '१०'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '११', '११'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '१२', '१२'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '१३', '१३'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '१४', '१४'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '१५', '१५'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '१६', '१६'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '१७', '१७'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '१८', '१८'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '१९', '१९'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '२०', '२०'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '२१', '२१'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '२२', '२२'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '२३', '२३'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '२४', '२४'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '२५', '२५'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '२६', '२६'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '२७', '२७'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '२८', '२८'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '२९', '२९'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '३०', '३०'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '३१', '३१'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'जनवरी जन._फेब्रुवरी फेब्रु._मार्च मार्च_अप्रिल अप्रि._मई मई_जुन जुन_जुलाई जुलाई._अगष्ट अग._सेप्टेम्बर सेप्ट._अक्टोबर अक्टो._नोभेम्बर नोभे._डिसेम्बर डिसे.'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'आइतबार आइत. आइ._सोमबार सोम. सो._मङ्गलबार मङ्गल. मङ्_बुधबार बुध. बु._बिहिबार बिहि. बि._शुक्रबार शुक्र. शु._शनिबार शनि. श.'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "केही समय", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "एक मिनेट", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "एक मिनेट", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "२ मिनेट", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "४४ मिनेट", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "एक घण्टा", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "एक घण्टा", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "२ घण्टा", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "५ घण्टा", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "२१ घण्टा", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "एक दिन", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "एक दिन", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "२ दिन", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "एक दिन", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "५ दिन", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "२५ दिन", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "एक महिना", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "एक महिना", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "एक महिना", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "२ महिना", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "२ महिना", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "३ महिना", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "एक महिना", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "५ महिना", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "११ महिना", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "एक बर्ष", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "एक बर्ष", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "२ बर्ष", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "एक बर्ष", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "५ बर्ष", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "केही समयमा", "prefix"); + test.equal(moment(0).from(30000), "केही समय अगाडी", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "केही समय अगाडी", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "केही समयमा", "केही समयमा"); + test.equal(moment().add({d: 5}).fromNow(), "५ दिनमा", "५ दिनमा"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "आज रातीको २:०० बजे", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "आज रातीको २:२५ बजे", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "आज बिहानको ३:०० बजे", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "भोली रातीको २:०० बजे", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "आज रातीको १:०० बजे", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "हिजो रातीको २:०० बजे", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('[आउँदो] dddd[,] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[आउँदो] dddd[,] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[आउँदो] dddd[,] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[गएको] dddd[,] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[गएको] dddd[,] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[गएको] dddd[,] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + "meridiem" : function (test) { + test.expect(12); + + test.equal(moment([2011, 2, 23, 2, 30]).format('a'), "राती", "before dawn"); + test.equal(moment([2011, 2, 23, 9, 30]).format('a'), "बिहान", "morning"); + test.equal(moment([2011, 2, 23, 14, 30]).format('a'), "दिउँसो", "during day"); + test.equal(moment([2011, 2, 23, 17, 30]).format('a'), "बेलुका", "evening"); + test.equal(moment([2011, 2, 23, 19, 30]).format('a'), "साँझ", "late evening"); + test.equal(moment([2011, 2, 23, 21, 20]).format('a'), "राती", "night"); + + test.equal(moment([2011, 2, 23, 2, 30]).format('A'), "राती", "before dawn"); + test.equal(moment([2011, 2, 23, 9, 30]).format('A'), "बिहान", "morning"); + test.equal(moment([2011, 2, 23, 14, 30]).format('A'), "दिउँसो", "during day"); + test.equal(moment([2011, 2, 23, 17, 30]).format('A'), "बेलुका", "evening"); + test.equal(moment([2011, 2, 23, 19, 30]).format('A'), "साँझ", "late evening"); + test.equal(moment([2011, 2, 23, 21, 20]).format('A'), "राती", "night"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); + test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); + test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); + test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); + test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).format('w ww wo'), '१ ०१ १', "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).format('w ww wo'), '१ ०१ १', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '२ ०२ २', "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '२ ०२ २', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '३ ०३ ३', "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/ne'), 'ne', "module should export ne"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/nl.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/nl.js new file mode 100755 index 0000000..53c12db --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/nl.js @@ -0,0 +1,374 @@ +var moment = require("../../moment"); + + + /************************************************** + Dutch + *************************************************/ + +exports["lang:nl"] = { + setUp : function (cb) { + moment.lang('nl'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'januari jan._februari feb._maart mrt._april apr._mei mei._juni jun._juli jul._augustus aug._september sep._oktober okt._november nov._december dec.'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, HH:mm:ss', 'zondag, februari 14de 2010, 15:25:50'], + ['ddd, HH', 'zo., 15'], + ['M Mo MM MMMM MMM', '2 2de 02 februari feb.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14de 14'], + ['d do dddd ddd dd', '0 0de zondag zo. Zo'], + ['DDD DDDo DDDD', '45 45ste 045'], + ['w wo ww', '6 6de 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45ste day of the year'], + ['L', '14-02-2010'], + ['LL', '14 februari 2010'], + ['LLL', '14 februari 2010 15:25'], + ['LLLL', 'zondag 14 februari 2010 15:25'], + ['l', '14-2-2010'], + ['ll', '14 feb. 2010'], + ['lll', '14 feb. 2010 15:25'], + ['llll', 'zo. 14 feb. 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1ste', '1ste'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2de', '2de'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3de', '3de'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4de', '4de'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5de', '5de'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6de', '6de'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7de', '7de'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8ste', '8ste'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9de', '9de'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10de', '10de'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11de', '11de'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12de', '12de'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13de', '13de'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14de', '14de'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15de', '15de'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16de', '16de'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17de', '17de'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18de', '18de'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19de', '19de'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20ste', '20ste'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21ste', '21ste'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22ste', '22ste'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23ste', '23ste'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24ste', '24ste'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25ste', '25ste'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26ste', '26ste'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27ste', '27ste'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28ste', '28ste'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29ste', '29ste'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30ste', '30ste'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31ste', '31ste'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'januari jan._februari feb._maart mrt._april apr._mei mei_juni jun._juli jul._augustus aug._september sep._oktober okt._november nov._december dec.'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'zondag zo. Zo_maandag ma. Ma_dinsdag di. Di_woensdag wo. Wo_donderdag do. Do_vrijdag vr. Vr_zaterdag za. Za'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "een paar seconden", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "één minuut", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "één minuut", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minuten", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuten", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "één uur", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "één uur", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 uur", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 uur", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 uur", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "één dag", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "één dag", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dagen", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "één dag", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dagen", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dagen", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "één maand", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "één maand", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "één maand", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 maanden", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 maanden", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 maanden", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "één maand", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 maanden", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 maanden", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "één jaar", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "één jaar", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 jaar", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "één jaar", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 jaar", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "over een paar seconden", "prefix"); + test.equal(moment(0).from(30000), "een paar seconden geleden", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "een paar seconden geleden", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "over een paar seconden", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "over 5 dagen", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "vandaag om 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "vandaag om 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "vandaag om 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "morgen om 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "vandaag om 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "gisteren om 02:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [om] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [om] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [om] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + "month abbreviation" : function (test) { + test.expect(2); + + test.equal(moment([2012, 5, 23]).format('D-MMM-YYYY'), '23-jun-2012', 'format month abbreviation surrounded by dashes should not include a dot'); + test.equal(moment([2012, 5, 23]).format('D MMM YYYY'), '23 jun. 2012', 'format month abbreviation not surrounded by dashes should include a dot'); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52ste', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1ste', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1ste', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2de', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2de', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/nl'), 'nl', "module should export nl"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/nn.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/nn.js new file mode 100755 index 0000000..c9957f4 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/nn.js @@ -0,0 +1,363 @@ +var moment = require("../../moment"); + + + /************************************************** + Norwegian nynorsk + *************************************************/ + +exports["lang:nn"] = { + setUp : function (cb) { + moment.lang('nn'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'januar jan_februar feb_mars mar_april apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'sundag, februar 14. 2010, 3:25:50 pm'], + ['ddd, hA', 'sun, 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 februar feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. sundag sun su'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['L', '14.02.2010'], + ['LL', '14 februar 2010'], + ['LLL', '14 februar 2010 15:25'], + ['LLLL', 'sundag 14 februar 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14 feb 2010'], + ['lll', '14 feb 2010 15:25'], + ['llll', 'sun 14 feb 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'januar jan_februar feb_mars mar_april apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'sundag sun su_måndag mån må_tysdag tys ty_onsdag ons on_torsdag tor to_fredag fre fr_laurdag lau lø'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "noen sekund", "44 sekunder = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "ett minutt", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "ett minutt", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutt", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutt", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "en time", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "en time", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 timar", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 timar", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 timar", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "en dag", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "en dag", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dagar", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "en dag", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dagar", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dagar", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "en månad", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "en månad", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "en månad", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 månader", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 månader", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 månader", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "en månad", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 månader", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 månader", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "ett år", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "ett år", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 år", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ett år", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 år", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "om noen sekund", "prefix"); + test.equal(moment(0).from(30000), "for noen sekund siden", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "for noen sekund siden", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "om noen sekund", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "om 5 dagar", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "I dag klokka 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "I dag klokka 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "I dag klokka 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "I morgon klokka 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "I dag klokka 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "I går klokka 02:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [klokka] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [klokka] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [klokka] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[Føregående] dddd [klokka] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[Føregående] dddd [klokka] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[Føregående] dddd [klokka] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/nn'), 'nn', "module should export nn"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/pl.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/pl.js new file mode 100755 index 0000000..ea747a7 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/pl.js @@ -0,0 +1,386 @@ +var moment = require("../../moment"); + + + /************************************************** + Polish + *************************************************/ + +exports["lang:pl"] = { + setUp : function (cb) { + moment.lang('pl'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'styczeń sty_luty lut_marzec mar_kwiecień kwi_maj maj_czerwiec cze_lipiec lip_sierpień sie_wrzesień wrz_październik paź_listopad lis_grudzień gru'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'niedziela, luty 14. 2010, 3:25:50 pm'], + ['ddd, hA', 'nie, 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 luty lut'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. niedziela nie N'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['L', '14.02.2010'], + ['LL', '14 lutego 2010'], + ['LLL', '14 lutego 2010 15:25'], + ['LLLL', 'niedziela, 14 lutego 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14 lut 2010'], + ['lll', '14 lut 2010 15:25'], + ['llll', 'nie, 14 lut 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'styczeń sty_luty lut_marzec mar_kwiecień kwi_maj maj_czerwiec cze_lipiec lip_sierpień sie_wrzesień wrz_październik paź_listopad lis_grudzień gru'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'niedziela nie N_poniedziałek pon Pn_wtorek wt Wt_środa śr Śr_czwartek czw Cz_piątek pt Pt_sobota sb So'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(34); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "kilka sekund", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "minuta", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "minuta", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minuty", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuty", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "godzina", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "godzina", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 godziny", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 godzin", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 godzin", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "1 dzień", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "1 dzień", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dni", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "1 dzień", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dni", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dni", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "miesiąc", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "miesiąc", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "miesiąc", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 miesiące", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 miesiące", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 miesiące", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "miesiąc", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 miesięcy", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 miesięcy", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "rok", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "rok", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 lata", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "rok", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 lat", "5 years = 5 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 112}), true), "112 lat", "112 years = 112 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 122}), true), "122 lata", "122 years = 122 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 213}), true), "213 lat", "213 years = 213 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 223}), true), "223 lata", "223 years = 223 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "za kilka sekund", "prefix"); + test.equal(moment(0).from(30000), "kilka sekund temu", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "kilka sekund temu", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(3); + test.equal(moment().add({s: 30}).fromNow(), "za kilka sekund", "in a few seconds"); + test.equal(moment().add({h: 1}).fromNow(), "za godzinę", "in an hour"); + test.equal(moment().add({d: 5}).fromNow(), "za 5 dni", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Dziś o 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Dziś o 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Dziś o 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Jutro o 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Dziś o 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Wczoraj o 02:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('[W] dddd [o] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[W] dddd [o] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[W] dddd [o] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + return '[W zeszłą niedzielę o] LT'; + case 3: + return '[W zeszłą środę o] LT'; + case 6: + return '[W zeszłą sobotę o] LT'; + default: + return '[W zeszły] dddd [o] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time"); + + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day"); + + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/pl'), 'pl', "module should export pl"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/pt-br.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/pt-br.js new file mode 100755 index 0000000..3ecfda5 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/pt-br.js @@ -0,0 +1,365 @@ +var moment = require("../../moment"); + + + /************************************************** + Portuguese - Brazilian + *************************************************/ + +exports["lang:pt-br"] = { + setUp : function (cb) { + moment.lang('pt-br'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'Janeiro Jan_Fevereiro Fev_Março Mar_Abril Abr_Maio Mai_Junho Jun_Julho Jul_Agosto Ago_Setembro Set_Outubro Out_Novembro Nov_Dezembro Dez'.split("_"), i; + + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Domingo, Fevereiro 14º 2010, 3:25:50 pm'], + ['ddd, hA', 'Dom, 3PM'], + ['M Mo MM MMMM MMM', '2 2º 02 Fevereiro Fev'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14º 14'], + ['d do dddd ddd', '0 0º Domingo Dom'], + ['DDD DDDo DDDD', '45 45º 045'], + ['w wo ww', '8 8º 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45º day of the year'], + ['L', '14/02/2010'], + ['LL', '14 de Fevereiro de 2010'], + ['LLL', '14 de Fevereiro de 2010 às 15:25'], + ['LLLL', 'Domingo, 14 de Fevereiro de 2010 às 15:25'], + ['l', '14/2/2010'], + ['ll', '14 de Fev de 2010'], + ['lll', '14 de Fev de 2010 às 15:25'], + ['llll', 'Dom, 14 de Fev de 2010 às 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'Janeiro Jan_Fevereiro Fev_Março Mar_Abril Abr_Maio Mai_Junho Jun_Julho Jul_Agosto Ago_Setembro Set_Outubro Out_Novembro Nov_Dezembro Dez'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'Domingo Dom_Segunda-feira Seg_Terça-feira Ter_Quarta-feira Qua_Quinta-feira Qui_Sexta-feira Sex_Sábado Sáb'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "segundos", "44 seconds = seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "um minuto", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "um minuto", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutos", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutos", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "uma hora", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "uma hora", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 horas", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 horas", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 horas", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "um dia", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "um dia", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dias", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "um dia", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dias", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dias", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "um mês", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "um mês", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "um mês", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 meses", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 meses", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 meses", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "um mês", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 meses", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 meses", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "um ano", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "um ano", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 anos", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "um ano", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 anos", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + + test.equal(moment(30000).from(0), "em segundos", "prefix"); + test.equal(moment(0).from(30000), "segundos atrás", "suffix"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + + test.equal(moment().add({s: 30}).fromNow(), "em segundos", "in seconds"); + test.equal(moment().add({d: 5}).fromNow(), "em 5 dias", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Hoje às 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Hoje às 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Hoje às 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Amanhã às 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Hoje às 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Ontem às 02:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [às] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [às] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [às] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Sunday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(6); + + test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); + test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); + test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); + test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); + test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); + test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(5); + + test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); + test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday format" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1º', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1º', "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2º', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2º', "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3º', "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/pt-br'), 'pt-br', "module should export pt-br"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/pt.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/pt.js new file mode 100755 index 0000000..f4478ff --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/pt.js @@ -0,0 +1,355 @@ +var moment = require("../../moment"); + + + /************************************************** + Portuguese + *************************************************/ + +exports["lang:pt"] = { + setUp : function (cb) { + moment.lang('pt'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'Janeiro Jan_Fevereiro Fev_Março Mar_Abril Abr_Maio Mai_Junho Jun_Julho Jul_Agosto Ago_Setembro Set_Outubro Out_Novembro Nov_Dezembro Dez'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Domingo, Fevereiro 14º 2010, 3:25:50 pm'], + ['ddd, hA', 'Dom, 3PM'], + ['M Mo MM MMMM MMM', '2 2º 02 Fevereiro Fev'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14º 14'], + ['d do dddd ddd dd', '0 0º Domingo Dom Dom'], + ['DDD DDDo DDDD', '45 45º 045'], + ['w wo ww', '6 6º 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45º day of the year'], + ['L', '14/02/2010'], + ['LL', '14 de Fevereiro de 2010'], + ['LLL', '14 de Fevereiro de 2010 15:25'], + ['LLLL', 'Domingo, 14 de Fevereiro de 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 de Fev de 2010'], + ['lll', '14 de Fev de 2010 15:25'], + ['llll', 'Dom, 14 de Fev de 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'Janeiro Jan_Fevereiro Fev_Março Mar_Abril Abr_Maio Mai_Junho Jun_Julho Jul_Agosto Ago_Setembro Set_Outubro Out_Novembro Nov_Dezembro Dez'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'Domingo Dom Dom_Segunda-feira Seg 2ª_Terça-feira Ter 3ª_Quarta-feira Qua 4ª_Quinta-feira Qui 5ª_Sexta-feira Sex 6ª_Sábado Sáb Sáb'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "segundos", "44 seconds = seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "um minuto", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "um minuto", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minutos", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minutos", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "uma hora", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "uma hora", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 horas", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 horas", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 horas", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "um dia", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "um dia", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dias", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "um dia", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dias", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dias", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "um mês", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "um mês", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "um mês", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 meses", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 meses", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 meses", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "um mês", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 meses", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 meses", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "um ano", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "um ano", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 anos", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "um ano", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 anos", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "em segundos", "prefix"); + test.equal(moment(0).from(30000), "segundos atrás", "suffix"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "em segundos", "in seconds"); + test.equal(moment().add({d: 5}).fromNow(), "em 5 dias", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Hoje às 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Hoje às 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Hoje às 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Amanhã às 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Hoje às 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Ontem às 02:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [às] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [às] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [às] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52º', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1º', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1º', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2º', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/pt'), 'pt', "module should export pt"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ro.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ro.js new file mode 100755 index 0000000..6841275 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ro.js @@ -0,0 +1,372 @@ +var moment = require("../../moment"); + + + /************************************************** + Romanian + *************************************************/ + +exports["lang:ro"] = { + setUp : function (cb) { + moment.lang('ro'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'ianuarie ian._februarie febr._martie mart._aprilie apr._mai mai_iunie iun._iulie iul._august aug._septembrie sept._octombrie oct._noiembrie nov._decembrie dec.'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss A', 'duminică, februarie 14 2010, 3:25:50 PM'], + ['ddd, hA', 'Dum, 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 februarie febr.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 duminică Dum Du'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '7 7 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[a] DDDo[a zi a anului]', 'a 45a zi a anului'], + ['L', '14.02.2010'], + ['LL', '14 februarie 2010'], + ['LLL', '14 februarie 2010 15:25'], + ['LLLL', 'duminică, 14 februarie 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14 febr. 2010'], + ['lll', '14 febr. 2010 15:25'], + ['llll', 'Dum, 14 febr. 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'ianuarie ian._februarie febr._martie mart._aprilie apr._mai mai_iunie iun._iulie iul._august aug._septembrie sept._octombrie oct._noiembrie nov._decembrie dec.'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'duminică Dum Du_luni Lun Lu_marți Mar Ma_miercuri Mie Mi_joi Joi Jo_vineri Vin Vi_sâmbătă Sâm Sâ'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(38); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "câteva secunde", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "un minut", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "un minut", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minute", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 de minute", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "o oră", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "o oră", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 ore", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 ore", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 de ore", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "o zi", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "o zi", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 zile", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "o zi", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 zile", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 de zile", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "o lună", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "o lună", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "o lună", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 luni", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 luni", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 luni", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "o lună", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 luni", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 luni", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "un an", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "un an", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 ani", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "un an", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 ani", "5 years = 5 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 19}), true), "19 ani", "19 years = 19 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 20}), true), "20 de ani", "20 years = 20 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 100}), true), "100 de ani", "100 years = 100 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 101}), true), "101 ani", "101 years = 101 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 119}), true), "119 ani", "119 years = 119 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 120}), true), "120 de ani", "120 years = 120 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 219}), true), "219 ani", "219 years = 219 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 220}), true), "220 de ani", "220 years = 220 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "peste câteva secunde", "prefix"); + test.equal(moment(0).from(30000), "câteva secunde în urmă", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "câteva secunde în urmă", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "peste câteva secunde", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "peste 5 zile", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "azi la 2:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "azi la 2:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "azi la 3:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "mâine la 2:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "azi la 1:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "ieri la 2:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [la] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [la] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [la] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[fosta] dddd [la] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[fosta] dddd [la] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[fosta] dddd [la] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); + test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); + test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); + test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); + test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1', "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2', "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3', "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/ro'), 'ro', "module should export ro"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/rs.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/rs.js new file mode 100755 index 0000000..dde4135 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/rs.js @@ -0,0 +1,393 @@ +var moment = require("../../moment"); + + + /************************************************** + Serbian + *************************************************/ + +exports["lang:rs"] = { + setUp : function (cb) { + moment.lang('rs'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'januar jan._februar feb._mart mar._april apr._maj maj._jun jun._jul jul._avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + var a = [ + ['dddd, Do MMMM YYYY, h:mm:ss a', 'nedelja, 14. februar 2010, 3:25:50 pm'], + ['ddd, hA', 'ned., 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 februar feb.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. nedelja ned. ne'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '7 7. 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['L', '14. 02. 2010'], + ['LL', '14. februar 2010'], + ['LLL', '14. februar 2010 15:25'], + ['LLLL', 'nedelja, 14. februar 2010 15:25'], + ['l', '14. 2. 2010'], + ['ll', '14. feb. 2010'], + ['lll', '14. feb. 2010 15:25'], + ['llll', 'ned., 14. feb. 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'januar jan._februar feb._mart mar._april apr._maj maj._jun jun._jul jul._avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'nedelja ned. ne_ponedeljak pon. po_utorak uto. ut_sreda sre. sr_četvrtak čet. če_petak pet. pe_subota sub. su'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "par sekundi", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "jedna minuta", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "jedna minuta", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minute", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuta", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "jedan sat", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "jedan sat", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 sata", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 sati", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 sati", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "dan", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "dan", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dana", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "dan", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dana", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dana", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "mesec", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "mesec", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "mesec", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 meseca", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 meseca", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 meseca", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "mesec", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 meseci", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 meseci", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "godinu", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "godinu", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 godine", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "godinu", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 godina", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "za par sekundi", "prefix"); + test.equal(moment(0).from(30000), "pre par sekundi", "prefix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "pre par sekundi", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "za par sekundi", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "za 5 dana", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "danas u 2:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "danas u 2:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "danas u 3:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "sutra u 2:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "danas u 1:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "juče u 2:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + return '[u] [nedelju] [u] LT'; + case 3: + return '[u] [sredu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); + test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); + test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); + test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); + test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/rs'), 'rs', "module should export rs"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ru.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ru.js new file mode 100755 index 0000000..f1aecde --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ru.js @@ -0,0 +1,460 @@ +var moment = require("../../moment"); + + + /************************************************** + Russian + *************************************************/ + +exports["lang:ru"] = { + setUp : function (cb) { + moment.lang('ru'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'январь янв_февраль фев_март мар_апрель апр_май май_июнь июнь_июль июль_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "parse exceptional case" : function (test) { + test.equal(moment('11 мая 1989', ['DD MMMM YYYY']).format('DD-MM-YYYY'), '11-05-1989'); + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, Do MMMM YYYY, HH:mm:ss', 'воскресенье, 14-го февраля 2010, 15:25:50'], + ['ddd, h A', 'вс, 3 дня'], + ['M Mo MM MMMM MMM', '2 2-й 02 февраль фев'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14-го 14'], + ['d do dddd ddd dd', '0 0-й воскресенье вс вс'], + ['DDD DDDo DDDD', '45 45-й 045'], + ['w wo ww', '7 7-я 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'дня дня'], + ['DDDo [день года]', '45-й день года'], + ['L', '14.02.2010'], + ['LL', '14 февраля 2010 г.'], + ['LLL', '14 февраля 2010 г., 15:25'], + ['LLLL', 'воскресенье, 14 февраля 2010 г., 15:25'], + ['l', '14.2.2010'], + ['ll', '14 фев 2010 г.'], + ['lll', '14 фев 2010 г., 15:25'], + ['llll', 'вс, 14 фев 2010 г., 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format meridiem" : function (test) { + test.expect(8); + + test.equal(moment([2012, 11, 28, 0, 0]).format("A"), "ночи", "night"); + test.equal(moment([2012, 11, 28, 3, 59]).format("A"), "ночи", "night"); + test.equal(moment([2012, 11, 28, 4, 0]).format("A"), "утра", "morning"); + test.equal(moment([2012, 11, 28, 11, 59]).format("A"), "утра", "morning"); + test.equal(moment([2012, 11, 28, 12, 0]).format("A"), "дня", "afternoon"); + test.equal(moment([2012, 11, 28, 16, 59]).format("A"), "дня", "afternoon"); + test.equal(moment([2012, 11, 28, 17, 0]).format("A"), "вечера", "evening"); + test.equal(moment([2012, 11, 28, 23, 59]).format("A"), "вечера", "evening"); + + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1-й', '1-й'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2-й', '2-й'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3-й', '3-й'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4-й', '4-й'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5-й', '5-й'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6-й', '6-й'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7-й', '7-й'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8-й', '8-й'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9-й', '9-й'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10-й', '10-й'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11-й', '11-й'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12-й', '12-й'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13-й', '13-й'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14-й', '14-й'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15-й', '15-й'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16-й', '16-й'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17-й', '17-й'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18-й', '18-й'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19-й', '19-й'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20-й', '20-й'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21-й', '21-й'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22-й', '22-й'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23-й', '23-й'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24-й', '24-й'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25-й', '25-й'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26-й', '26-й'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27-й', '27-й'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28-й', '28-й'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29-й', '29-й'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30-й', '30-й'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31-й', '31-й'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'январь янв_февраль фев_март мар_апрель апр_май май_июнь июнь_июль июль_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format month case" : function (test) { + test.expect(24); + + var months = { + 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), + 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_') + }, i; + for (i = 0; i < 12; i++) { + test.equal(moment([2011, i, 1]).format('D MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]); + test.equal(moment([2011, i, 1]).format('MMMM'), months.nominative[i], '1 ' + months.nominative[i]); + } + test.done(); + }, + + "format month short case" : function (test) { + test.expect(24); + + var monthsShort = { + 'nominative': 'янв_фев_мар_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), + 'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_') + }, i; + for (i = 0; i < 12; i++) { + test.equal(moment([2011, i, 1]).format('D MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]); + test.equal(moment([2011, i, 1]).format('MMM'), monthsShort.nominative[i], '1 ' + monthsShort.nominative[i]); + } + test.done(); + }, + + "format month case with escaped symbols" : function (test) { + test.expect(48); + + var months = { + 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), + 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_') + }, i; + for (i = 0; i < 12; i++) { + test.equal(moment([2013, i, 1]).format('D[] MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]); + test.equal(moment([2013, i, 1]).format('[]D[] []MMMM[]'), '1 ' + months.accusative[i] + '', '1 ' + months.accusative[i] + ''); + test.equal(moment([2013, i, 1]).format('D[-й день] MMMM'), '1-й день ' + months.accusative[i], '1-й день ' + months.accusative[i]); + test.equal(moment([2013, i, 1]).format('D, MMMM'), '1, ' + months.nominative[i], '1, ' + months.nominative[i]); + } + test.done(); + }, + + "format month short case with escaped symbols" : function (test) { + test.expect(48); + + var monthsShort = { + 'nominative': 'янв_фев_мар_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), + 'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_') + }, i; + for (i = 0; i < 12; i++) { + test.equal(moment([2013, i, 1]).format('D[] MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]); + test.equal(moment([2013, i, 1]).format('[]D[] []MMM[]'), '1 ' + monthsShort.accusative[i] + '', '1 ' + monthsShort.accusative[i] + ''); + test.equal(moment([2013, i, 1]).format('D[-й день] MMM'), '1-й день ' + monthsShort.accusative[i], '1-й день ' + monthsShort.accusative[i]); + test.equal(moment([2013, i, 1]).format('D, MMM'), '1, ' + monthsShort.nominative[i], '1, ' + monthsShort.nominative[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'воскресенье вс вс_понедельник пн пн_вторник вт вт_среда ср ср_четверг чт чт_пятница пт пт_суббота сб сб'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(32); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "несколько секунд", "44 seconds = seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "минута", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "минута", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 минуты", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 минуты", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "час", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "час", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 часа", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 часов", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 час", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "день", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "день", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 дня", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "день", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 дней", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), "11 дней", "11 days = 11 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), "21 день", "21 days = 21 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 дней", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "месяц", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "месяц", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "месяц", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 месяца", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 месяца", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 месяца", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "месяц", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 месяцев", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 месяцев", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "год", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "год", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 года", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "год", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 лет", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "через несколько секунд", "prefix"); + test.equal(moment(0).from(30000), "несколько секунд назад", "suffix"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "через несколько секунд", "in seconds"); + test.equal(moment().add({d: 5}).fromNow(), "через 5 дней", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Сегодня в 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Сегодня в 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Сегодня в 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Завтра в 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Сегодня в 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Вчера в 02:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + function makeFormat(d) { + return d.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT'; + } + + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + return '[В прошлое] dddd [в] LT'; + case 1: + case 2: + case 4: + return '[В прошлый] dddd [в] LT'; + case 3: + case 5: + case 6: + return '[В прошлую] dddd [в] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); + test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); + test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); + test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); + test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-я', "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-я', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-я', "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-я', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-я', "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/ru'), 'ru', "module should export ru"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/sk.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/sk.js new file mode 100755 index 0000000..3dfbbdf --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/sk.js @@ -0,0 +1,449 @@ +var moment = require("../../moment"); + + + /************************************************** + Slovak + *************************************************/ + +exports["lang:sk"] = { + setUp : function (cb) { + moment.lang('sk'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + var tests = 'január jan._február feb._marec mar._apríl apr._máj máj_jún jún._júl júl._august aug._september sep._október okt._november nov._december dec.'.split("_"), i; + function equalTest(input, mmm, monthIndex) { + test.equal(moment(input, mmm).month(), monthIndex, input + ' should be month ' + (monthIndex + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss', 'nedeľa, február 14. 2010, 3:25:50'], + ['ddd, h', 'ne, 3'], + ['M Mo MM MMMM MMM', '2 2. 02 február feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. nedeľa ne ne'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['DDDo [deň v roku]', '45. deň v roku'], + ['L', '14.02.2010'], + ['LL', '14. február 2010'], + ['LLL', '14. február 2010 15:25'], + ['LLLL', 'nedeľa 14. február 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14. feb 2010'], + ['lll', '14. feb 2010 15:25'], + ['llll', 'ne 14. feb 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'január jan_február feb_marec mar_apríl apr_máj máj_jún jún_júl júl_august aug_september sep_október okt_november nov_december dec'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'nedeľa ne ne_pondelok po po_utorok ut ut_streda st st_štvrtok št št_piatok pi pi_sobota so so'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "pár sekúnd", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "minúta", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "minúta", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minúty", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minút", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "hodina", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "hodina", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 hodiny", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 hodín", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 hodín", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "deň", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "deň", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dni", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "deň", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dní", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dní", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "mesiac", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "mesiac", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "mesiac", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 mesiace", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 mesiace", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mesiace", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "mesiac", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mesiacov", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mesiacov", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "rok", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "rok", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 roky", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "rok", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 rokov", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "za pár sekúnd", "prefix"); + test.equal(moment(0).from(30000), "pred pár sekundami", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "pred pár sekundami", "now from now should display as in the past"); + test.done(); + }, + + "fromNow (future)" : function (test) { + test.expect(16); + test.equal(moment().add({s: 30}).fromNow(), "za pár sekúnd", "in a few seconds"); + test.equal(moment().add({m: 1}).fromNow(), "za minútu", "in a minute"); + test.equal(moment().add({m: 3}).fromNow(), "za 3 minúty", "in 3 minutes"); + test.equal(moment().add({m: 10}).fromNow(), "za 10 minút", "in 10 minutes"); + test.equal(moment().add({h: 1}).fromNow(), "za hodinu", "in an hour"); + test.equal(moment().add({h: 3}).fromNow(), "za 3 hodiny", "in 3 hours"); + test.equal(moment().add({h: 10}).fromNow(), "za 10 hodín", "in 10 hours"); + test.equal(moment().add({d: 1}).fromNow(), "za deň", "in a day"); + test.equal(moment().add({d: 3}).fromNow(), "za 3 dni", "in 3 days"); + test.equal(moment().add({d: 10}).fromNow(), "za 10 dní", "in 10 days"); + test.equal(moment().add({M: 1}).fromNow(), "za mesiac", "in a month"); + test.equal(moment().add({M: 3}).fromNow(), "za 3 mesiace", "in 3 months"); + test.equal(moment().add({M: 10}).fromNow(), "za 10 mesiacov", "in 10 months"); + test.equal(moment().add({y: 1}).fromNow(), "za rok", "in a year"); + test.equal(moment().add({y: 3}).fromNow(), "za 3 roky", "in 3 years"); + test.equal(moment().add({y: 10}).fromNow(), "za 10 rokov", "in 10 years"); + test.done(); + }, + + "fromNow (past)" : function (test) { + test.expect(16); + test.equal(moment().subtract({s: 30}).fromNow(), "pred pár sekundami", "a few seconds ago"); + test.equal(moment().subtract({m: 1}).fromNow(), "pred minútou", "a minute ago"); + test.equal(moment().subtract({m: 3}).fromNow(), "pred 3 minútami", "3 minutes ago"); + test.equal(moment().subtract({m: 10}).fromNow(), "pred 10 minútami", "10 minutes ago"); + test.equal(moment().subtract({h: 1}).fromNow(), "pred hodinou", "an hour ago"); + test.equal(moment().subtract({h: 3}).fromNow(), "pred 3 hodinami", "3 hours ago"); + test.equal(moment().subtract({h: 10}).fromNow(), "pred 10 hodinami", "10 hours ago"); + test.equal(moment().subtract({d: 1}).fromNow(), "pred dňom", "a day ago"); + test.equal(moment().subtract({d: 3}).fromNow(), "pred 3 dňami", "3 days ago"); + test.equal(moment().subtract({d: 10}).fromNow(), "pred 10 dňami", "10 days ago"); + test.equal(moment().subtract({M: 1}).fromNow(), "pred mesiacom", "a month ago"); + test.equal(moment().subtract({M: 3}).fromNow(), "pred 3 mesiacmi", "3 months ago"); + test.equal(moment().subtract({M: 10}).fromNow(), "pred 10 mesiacmi", "10 months ago"); + test.equal(moment().subtract({y: 1}).fromNow(), "pred rokom", "a year ago"); + test.equal(moment().subtract({y: 3}).fromNow(), "pred 3 rokmi", "3 years ago"); + test.equal(moment().subtract({y: 10}).fromNow(), "pred 10 rokmi", "10 years ago"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "dnes o 2:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "dnes o 2:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "dnes o 3:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "zajtra o 2:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "dnes o 1:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "včera o 2:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m, nextDay; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + nextDay = ''; + switch (m.day()) { + case 0: + nextDay = 'v nedeľu'; + break; + case 1: + nextDay = 'v pondelok'; + break; + case 2: + nextDay = 'v utorok'; + break; + case 3: + nextDay = 'v stredu'; + break; + case 4: + nextDay = 'vo štvrtok'; + break; + case 5: + nextDay = 'v piatok'; + break; + case 6: + nextDay = 'v sobotu'; + break; + } + test.equal(m.calendar(), m.format('[' + nextDay + '] [o] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[' + nextDay + '] [o] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[' + nextDay + '] [o] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m, lastDay; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + lastDay = ''; + switch (m.day()) { + case 0: + lastDay = 'minulú nedeľu'; + break; + case 1: + lastDay = 'minulý pondelok'; + break; + case 2: + lastDay = 'minulý utorok'; + break; + case 3: + lastDay = 'minulú stredu'; + break; + case 4: + lastDay = 'minulý štvrtok'; + break; + case 5: + lastDay = 'minulý piatok'; + break; + case 6: + lastDay = 'minulú sobotu'; + break; + } + test.equal(m.calendar(), m.format('[' + lastDay + '] [o] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[' + lastDay + '] [o] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[' + lastDay + '] [o] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + "humanize duration" : function (test) { + test.expect(4); + test.equal(moment.duration(1, "minutes").humanize(), "minúta", "a minute (future)"); + test.equal(moment.duration(1, "minutes").humanize(true), "za minútu", "in a minute"); + test.equal(moment.duration(-1, "minutes").humanize(), "minúta", "a minute (past)"); + test.equal(moment.duration(-1, "minutes").humanize(true), "pred minútou", "a minute ago"); + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/sk'), 'sk', "module should export sk"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/sl.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/sl.js new file mode 100755 index 0000000..bb7b5d2 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/sl.js @@ -0,0 +1,392 @@ +var moment = require("../../moment"); + + + /************************************************** + Slovenian + *************************************************/ + +exports["lang:sl"] = { + setUp : function (cb) { + moment.lang('sl'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'januar jan._februar feb._marec mar._april apr._maj maj_junij jun._julij jul._avgust avg._september sep._oktober okt._november nov._december dec.'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + var a = [ + ['dddd, Do MMMM YYYY, h:mm:ss a', 'nedelja, 14. februar 2010, 3:25:50 pm'], + ['ddd, hA', 'ned., 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 februar feb.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. nedelja ned. ne'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '7 7. 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['L', '14. 02. 2010'], + ['LL', '14. februar 2010'], + ['LLL', '14. februar 2010 15:25'], + ['LLLL', 'nedelja, 14. februar 2010 15:25'], + ['l', '14. 2. 2010'], + ['ll', '14. feb. 2010'], + ['lll', '14. feb. 2010 15:25'], + ['llll', 'ned., 14. feb. 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'januar jan._februar feb._marec mar._april apr._maj maj._junij jun._julij jul._avgust avg._september sep._oktober okt._november nov._december dec.'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'nedelja ned. ne_ponedeljek pon. po_torek tor. to_sreda sre. sr_četrtek čet. če_petek pet. pe_sobota sob. so'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "nekaj sekund", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "ena minuta", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "ena minuta", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minuti", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minut", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "ena ura", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "ena ura", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 uri", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 ur", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 ur", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "en dan", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "en dan", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dni", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "en dan", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dni", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dni", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "en mesec", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "en mesec", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "en mesec", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 meseca", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 meseca", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 mesece", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "en mesec", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 mesecev", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 mesecev", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "eno leto", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "eno leto", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 leti", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "eno leto", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 let", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "čez nekaj sekund", "prefix"); + test.equal(moment(0).from(30000), "nekaj sekund nazaj", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "nekaj sekund nazaj", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "čez nekaj sekund", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "čez 5 dni", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "danes ob 2:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "danes ob 2:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "danes ob 3:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "jutri ob 2:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "danes ob 1:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "včeraj ob 2:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + return '[v] [nedeljo] [ob] LT'; + case 3: + return '[v] [sredo] [ob] LT'; + case 6: + return '[v] [soboto] [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[v] dddd [ob] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + case 3: + case 6: + return '[prejšnja] dddd [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prejšnji] dddd [ob] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); + test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); + test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); + test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); + test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1.', "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1.', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2.', "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2.', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3.', "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/sl'), 'sl', "module should export sl"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/sq.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/sq.js new file mode 100755 index 0000000..63f0f5b --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/sq.js @@ -0,0 +1,395 @@ +var moment = require("../../moment"); + + + /************************************************** + Albanian + *************************************************/ + +exports["lang:sq"] = { + setUp : function (cb) { + moment.lang('sq'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var i, + tests = 'Janar Jan_Shkurt Shk_Mars Mar_Prill Pri_Maj Maj_Qershor Qer_Korrik Kor_Gusht Gus_Shtator Sht_Tetor Tet_Nëntor Nën_Dhjetor Dhj'.split("_"); + + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, HH:mm:ss', 'E Diel, Shkurt 14. 2010, 15:25:50'], + ['ddd, HH', 'Die, 15'], + ['M Mo MM MMMM MMM', '2 2. 02 Shkurt Shk'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. E Diel Die D'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'MD MD'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['L', '14/02/2010'], + ['LL', '14 Shkurt 2010'], + ['LLL', '14 Shkurt 2010 15:25'], + ['LLLL', 'E Diel, 14 Shkurt 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 Shk 2010'], + ['lll', '14 Shk 2010 15:25'], + ['llll', 'Die, 14 Shk 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + + test.done(); + }, + + "meridiem" : function (test) { + test.expect(2); + + test.equal(moment([2011, 2, 23, 0, 0]).format('A'), "PD", "before dawn"); + test.equal(moment([2011, 2, 23, 12, 0]).format('A'), "MD", "noon"); + + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var i, + expected = 'Janar Jan_Shkurt Shk_Mars Mar_Prill Pri_Maj Maj_Qershor Qer_Korrik Kor_Gusht Gus_Shtator Sht_Tetor Tet_Nëntor Nën_Dhjetor Dhj'.split("_"); + + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var i, + expected = 'E Diel Die D_E Hënë Hën H_E Marte Mar Ma_E Mërkure Mër Më_E Enjte Enj E_E Premte Pre P_E Shtunë Sht Sh'.split("_"); + + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "disa sekonda", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "një minut", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "një minut", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minuta", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuta", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "një orë", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "një orë", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 orë", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 orë", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 orë", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "një ditë", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "një ditë", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 ditë", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "një ditë", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 ditë", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 ditë", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "një muaj", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "një muaj", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "një muaj", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 muaj", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 muaj", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 muaj", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "një muaj", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 muaj", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 muaj", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "një vit", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "një vit", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 vite", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "një vit", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 vite", "5 years = 5 years"); + + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + + test.equal(moment(30000).from(0), "në disa sekonda", "prefix"); + test.equal(moment(0).from(30000), "disa sekonda me parë", "suffix"); + + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + + test.equal(moment().fromNow(), "disa sekonda me parë", "now from now should display as in the past"); + + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + + test.equal(moment().add({s: 30}).fromNow(), "në disa sekonda", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "në 5 ditë", "in 5 days"); + + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Sot në 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Sot në 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Sot në 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Neser në 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Sot në 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Dje në 02:00", "yesterday at the same time"); + + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [në] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [në] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [në] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('dddd [e kaluar në] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [e kaluar në] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [e kaluar në] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52.', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1.', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1.', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2.', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/sq'), 'sq', "module should export sq"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/sv.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/sv.js new file mode 100755 index 0000000..f454615 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/sv.js @@ -0,0 +1,357 @@ +var moment = require("../../moment"); + +/************************************************** + Swedish + *************************************************/ + +exports["lang:sv"] = { + setUp : function (cb) { + moment.lang('sv'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + var tests = 'januari jan_februari feb_mars mar_april apr_maj maj_juni jun_juli jul_augusti aug_september sep_oktober okt_november nov_december dec'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'söndag, februari 14e 2010, 3:25:50 pm'], + ['ddd, hA', 'sön, 3PM'], + ['M Mo MM MMMM MMM', '2 2a 02 februari feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14e 14'], + ['d do dddd ddd dd', '0 0e söndag sön sö'], + ['DDD DDDo DDDD', '45 45e 045'], + ['w wo ww', '6 6e 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45e day of the year'], + ['L', '2010-02-14'], + ['LL', '14 februari 2010'], + ['LLL', '14 februari 2010 15:25'], + ['LLLL', 'söndag 14 februari 2010 15:25'], + ['l', '2010-2-14'], + ['ll', '14 feb 2010'], + ['lll', '14 feb 2010 15:25'], + ['llll', 'sön 14 feb 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1a', '1a'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2a', '2a'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3e', '3e'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4e', '4e'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5e', '5e'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6e', '6e'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7e', '7e'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8e', '8e'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9e', '9e'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10e', '10e'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11e', '11e'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12e', '12e'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13e', '13e'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14e', '14e'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15e', '15e'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16e', '16e'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17e', '17e'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18e', '18e'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19e', '19e'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20e', '20e'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21a', '21a'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22a', '22a'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23e', '23e'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24e', '24e'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25e', '25e'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26e', '26e'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27e', '27e'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28e', '28e'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29e', '29e'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30e', '30e'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31a', '31a'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'januari jan_februari feb_mars mar_april apr_maj maj_juni jun_juli jul_augusti aug_september sep_oktober okt_november nov_december dec'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'söndag sön sö_måndag mån må_tisdag tis ti_onsdag ons on_torsdag tor to_fredag fre fr_lördag lör lö'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "några sekunder", "44 sekunder = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "en minut", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "en minut", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minuter", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuter", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "en timme", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "en timme", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 timmar", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 timmar", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 timmar", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "en dag", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "en dag", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 dagar", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "en dag", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 dagar", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 dagar", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "en månad", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "en månad", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "en månad", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 månader", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 månader", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 månader", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "en månad", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 månader", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 månader", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "ett år", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "ett år", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 år", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ett år", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 år", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "om några sekunder", "prefix"); + test.equal(moment(0).from(30000), "för några sekunder sedan", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "för några sekunder sedan", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "om några sekunder", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "om 5 dagar", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Idag 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Idag 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Idag 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Imorgon 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Idag 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Igår 02:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[Förra] dddd[en] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[Förra] dddd[en] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[Förra] dddd[en] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52a', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1a', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1a', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2a', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2a', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/sv'), 'sv', "module should export sv"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ta.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ta.js new file mode 100755 index 0000000..3141cea --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/ta.js @@ -0,0 +1,363 @@ +var moment = require("../../moment"); + + + /************************************************** + Tamil - தமிழ் + *************************************************/ + +exports["lang:ta"] = { + setUp : function (cb) { + moment.lang('ta'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('ta'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + var tests = 'ஜனவரி ஜனவரி_பிப்ரவரி பிப்ரவரி_மார்ச் மார்ச்_ஏப்ரல் ஏப்ரல்_மே மே_ஜூன் ஜூன்_ஜூலை ஜூலை_ஆகஸ்ட் ஆகஸ்ட்_செப்டெம்பர் செப்டெம்பர்_அக்டோபர் அக்டோபர்_நவம்பர் நவம்பர்_டிசம்பர் டிசம்பர்'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'ஞாயிற்றுக்கிழமை, பிப்ரவரி 14வது 2010, 3:25:50 எற்பாடு'], + ['ddd, hA', 'ஞாயிறு, 3 எற்பாடு'], + ['M Mo MM MMMM MMM', '2 2வது 02 பிப்ரவரி பிப்ரவரி'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14வது 14'], + ['d do dddd ddd dd', '0 0வது ஞாயிற்றுக்கிழமை ஞாயிறு ஞா'], + ['DDD DDDo DDDD', '45 45வது 045'], + ['w wo ww', '8 8வது 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', ' எற்பாடு எற்பாடு'], + ['[ஆண்டின்] DDDo [நாள்]', 'ஆண்டின் 45வது நாள்'], + ['L', '14/02/2010'], + ['LL', '14 பிப்ரவரி 2010'], + ['LLL', '14 பிப்ரவரி 2010, 15:25'], + ['LLLL', 'ஞாயிற்றுக்கிழமை, 14 பிப்ரவரி 2010, 15:25'], + ['l', '14/2/2010'], + ['ll', '14 பிப்ரவரி 2010'], + ['lll', '14 பிப்ரவரி 2010, 15:25'], + ['llll', 'ஞாயிறு, 14 பிப்ரவரி 2010, 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1வது', '1வது'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2வது', '2வது'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3வது', '3வது'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4வது', '4வது'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5வது', '5வது'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6வது', '6வது'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7வது', '7வது'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8வது', '8வது'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9வது', '9வது'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10வது', '10வது'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11வது', '11வது'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12வது', '12வது'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13வது', '13வது'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14வது', '14வது'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15வது', '15வது'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16வது', '16வது'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17வது', '17வது'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18வது', '18வது'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19வது', '19வது'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20வது', '20வது'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21வது', '21வது'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22வது', '22வது'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23வது', '23வது'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24வது', '24வது'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25வது', '25வது'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26வது', '26வது'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27வது', '27வது'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28வது', '28வது'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29வது', '29வது'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30வது', '30வது'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31வது', '31வது'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'ஜனவரி ஜனவரி_பிப்ரவரி பிப்ரவரி_மார்ச் மார்ச்_ஏப்ரல் ஏப்ரல்_மே மே_ஜூன் ஜூன்_ஜூலை ஜூலை_ஆகஸ்ட் ஆகஸ்ட்_செப்டெம்பர் செப்டெம்பர்_அக்டோபர் அக்டோபர்_நவம்பர் நவம்பர்_டிசம்பர் டிசம்பர்'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'ஞாயிற்றுக்கிழமை ஞாயிறு ஞா_திங்கட்கிழமை திங்கள் தி_செவ்வாய்கிழமை செவ்வாய் செ_புதன்கிழமை புதன் பு_வியாழக்கிழமை வியாழன் வி_வெள்ளிக்கிழமை வெள்ளி வெ_சனிக்கிழமை சனி ச'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "ஒரு சில விநாடிகள்", "44 விநாடிகள் = ஒரு சில விநாடிகள்"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "ஒரு நிமிடம்", "45 விநாடிகள் = ஒரு நிமிடம்"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "ஒரு நிமிடம்", "89 விநாடிகள் = ஒரு நிமிடம்"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 நிமிடங்கள்", "90 விநாடிகள் = 2 நிமிடங்கள்"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 நிமிடங்கள்", "44 நிமிடங்கள் = 44 நிமிடங்கள்"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "ஒரு மணி நேரம்", "45 நிமிடங்கள் = ஒரு மணி நேரம்"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "ஒரு மணி நேரம்", "89 நிமிடங்கள் = ஒரு மணி நேரம்"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 மணி நேரம்", "90 நிமிடங்கள் = 2 மணி நேரம்"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 மணி நேரம்", "5 மணி நேரம் = 5 மணி நேரம்"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 மணி நேரம்", "21 மணி நேரம் = 21 மணி நேரம்"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "ஒரு நாள்", "22 மணி நேரம் = ஒரு நாள்"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "ஒரு நாள்", "35 மணி நேரம் = ஒரு நாள்"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 நாட்கள்", "36 மணி நேரம் = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "ஒரு நாள்", "1 நாள் = ஒரு நாள்"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 நாட்கள்", "5 நாட்கள் = 5 நாட்கள்"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 நாட்கள்", "25 நாட்கள் = 25 நாட்கள்"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "ஒரு மாதம்", "26 நாட்கள் = ஒரு மாதம்"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "ஒரு மாதம்", "30 நாட்கள் = ஒரு மாதம்"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "ஒரு மாதம்", "45 நாட்கள் = ஒரு மாதம்"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 மாதங்கள்", "46 நாட்கள் = 2 மாதங்கள்"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 மாதங்கள்", "75 நாட்கள் = 2 மாதங்கள்"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 மாதங்கள்", "76 நாட்கள் = 3 மாதங்கள்"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "ஒரு மாதம்", "1 மாதம் = ஒரு மாதம்"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 மாதங்கள்", "5 மாதங்கள் = 5 மாதங்கள்"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 மாதங்கள்", "344 நாட்கள் = 11 மாதங்கள்"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "ஒரு வருடம்", "345 நாட்கள் = ஒரு வருடம்"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "ஒரு வருடம்", "547 நாட்கள் = ஒரு வருடம்"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 ஆண்டுகள்", "548 நாட்கள் = 2 ஆண்டுகள்"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ஒரு வருடம்", "1 வருடம் = ஒரு வருடம்"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 ஆண்டுகள்", "5 ஆண்டுகள் = 5 ஆண்டுகள்"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "ஒரு சில விநாடிகள் இல்", "prefix"); + test.equal(moment(0).from(30000), "ஒரு சில விநாடிகள் முன்", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "ஒரு சில விநாடிகள் முன்", "இப்போது இருந்து கடந்த காலத்தில் காட்ட வேண்டும்"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "ஒரு சில விநாடிகள் இல்", "ஒரு சில விநாடிகள் இல்"); + test.equal(moment().add({d: 5}).fromNow(), "5 நாட்கள் இல்", "5 நாட்கள் இல்"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "இன்று 02:00", "இன்று 02:00"); + test.equal(moment(a).add({ m: 25 }).calendar(), "இன்று 02:25", "இன்று 02:25"); + test.equal(moment(a).add({ h: 1 }).calendar(), "இன்று 03:00", "இன்று 03:00"); + test.equal(moment(a).add({ d: 1 }).calendar(), "நாளை 02:00", "நாளை 02:00"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "இன்று 01:00", "இன்று 01:00"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "நேற்று 02:00", "நேற்று 02:00"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd, LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd, LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd, LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[கடந்த வாரம்] dddd, LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[கடந்த வாரம்] dddd, LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[கடந்த வாரம்] dddd, LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 1th is the first week of the year. + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(6); + + test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); + test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); + test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); + test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); + test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); + test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(5); + + test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); + test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); + + test.done(); + }, + + "meridiem" : function (test) { + test.expect(6); + + test.equal(moment([2011, 2, 23, 2, 30]).format('a'), " வைகறை", "before dawn"); + test.equal(moment([2011, 2, 23, 9, 30]).format('a'), " காலை", "morning"); + test.equal(moment([2011, 2, 23, 14, 30]).format('a'), " நண்பகல்", "during day"); + test.equal(moment([2011, 2, 23, 17, 30]).format('a'), " எற்பாடு", "evening"); + test.equal(moment([2011, 2, 23, 19, 30]).format('a'), " மாலை", "late evening"); + test.equal(moment([2011, 2, 23, 21, 20]).format('a'), " இரவு", "night"); + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/ta'), 'ta', "module should export ta"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/th.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/th.js new file mode 100755 index 0000000..cf64a46 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/th.js @@ -0,0 +1,324 @@ +var moment = require("../../moment"); + + + /************************************************** + Thai + *************************************************/ + +exports["lang:th"] = { + setUp : function (cb) { + moment.lang('th'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'มกราคม มกรา_กุมภาพันธ์ กุมภา_มีนาคม มีนา_เมษายน เมษา_พฤษภาคม พฤษภา_มิถุนายน มิถุนา_กรกฎาคม กรกฎา_สิงหาคม สิงหา_กันยายน กันยา_ตุลาคม ตุลา_พฤศจิกายน พฤศจิกา_ธันวาคม ธันวา'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, Do MMMM YYYY, h:mm:ss a', 'อาทิตย์, 14 กุมภาพันธ์ 2010, 3:25:50 หลังเที่ยง'], + ['ddd, h A', 'อาทิตย์, 3 หลังเที่ยง'], + ['M Mo MM MMMM MMM', '2 2 02 กุมภาพันธ์ กุมภา'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 อาทิตย์ อาทิตย์ อา.'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '8 8 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'หลังเที่ยง หลังเที่ยง'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['L', '2010/02/14'], + ['LL', '14 กุมภาพันธ์ 2010'], + ['LLL', '14 กุมภาพันธ์ 2010 เวลา 15 นาฬิกา 25 นาที'], + ['LLLL', 'วันอาทิตย์ที่ 14 กุมภาพันธ์ 2010 เวลา 15 นาฬิกา 25 นาที'], + ['l', '2010/2/14'], + ['ll', '14 กุมภา 2010'], + ['lll', '14 กุมภา 2010 เวลา 15 นาฬิกา 25 นาที'], + ['llll', 'วันอาทิตย์ที่ 14 กุมภา 2010 เวลา 15 นาฬิกา 25 นาที'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'มกราคม มกรา_กุมภาพันธ์ กุมภา_มีนาคม มีนา_เมษายน เมษา_พฤษภาคม พฤษภา_มิถุนายน มิถุนา_กรกฎาคม กรกฎา_สิงหาคม สิงหา_กันยายน กันยา_ตุลาคม ตุลา_พฤศจิกายน พฤศจิกา_ธันวาคม ธันวา'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'อาทิตย์ อาทิตย์ อา._จันทร์ จันทร์ จ._อังคาร อังคาร อ._พุธ พุธ พ._พฤหัสบดี พฤหัส พฤ._ศุกร์ ศุกร์ ศ._เสาร์ เสาร์ ส.'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "ไม่กี่วินาที", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "1 นาที", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "1 นาที", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 นาที", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 นาที", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "1 ชั่วโมง", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "1 ชั่วโมง", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 ชั่วโมง", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 ชั่วโมง", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 ชั่วโมง", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "1 วัน", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "1 วัน", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 วัน", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "1 วัน", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 วัน", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 วัน", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "1 เดือน", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "1 เดือน", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "1 เดือน", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 เดือน", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 เดือน", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 เดือน", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "1 เดือน", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 เดือน", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 เดือน", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "1 ปี", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "1 ปี", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 ปี", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "1 ปี", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 ปี", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "อีก ไม่กี่วินาที", "prefix"); + test.equal(moment(0).from(30000), "ไม่กี่วินาทีที่แล้ว", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "ไม่กี่วินาทีที่แล้ว", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "อีก ไม่กี่วินาที", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "อีก 5 วัน", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "วันนี้ เวลา 2 นาฬิกา 0 นาที", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "วันนี้ เวลา 2 นาฬิกา 25 นาที", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "วันนี้ เวลา 3 นาฬิกา 0 นาที", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "พรุ่งนี้ เวลา 2 นาฬิกา 0 นาที", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "วันนี้ เวลา 1 นาฬิกา 0 นาที", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "เมื่อวานนี้ เวลา 2 นาฬิกา 0 นาที", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd[หน้า เวลา] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd[หน้า เวลา] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd[หน้า เวลา] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[วัน]dddd[ที่แล้ว เวลา] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[วัน]dddd[ที่แล้ว เวลา] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[วัน]dddd[ที่แล้ว เวลา] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + // Sunday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(6); + + test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); + test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); + test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); + test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); + test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); + test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(5); + + test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); + test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday format" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/th'), 'th', "module should export th"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/tl-ph.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/tl-ph.js new file mode 100755 index 0000000..f2281f2 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/tl-ph.js @@ -0,0 +1,362 @@ +var moment = require("../../moment"); + + + /************************************************** + Tagalog/Filipino + *************************************************/ + +exports["lang:tl-ph"] = { + setUp : function (cb) { + moment.lang('tl-ph'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'Enero Ene_Pebrero Peb_Marso Mar_Abril Abr_Mayo May_Hunyo Hun_Hulyo Hul_Agosto Ago_Setyembre Set_Oktubre Okt_Nobyembre Nob_Disyembre Dis'.split("_"), + i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Linggo, Pebrero 14 2010, 3:25:50 pm'], + ['ddd, hA', 'Lin, 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 Pebrero Peb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 Linggo Lin Li'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '6 6 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['L', '02/14/2010'], + ['LL', 'Pebrero 14, 2010'], + ['LLL', 'Pebrero 14, 2010 15:25'], + ['LLLL', 'Linggo, Pebrero 14, 2010 15:25'], + ['l', '2/14/2010'], + ['ll', 'Peb 14, 2010'], + ['lll', 'Peb 14, 2010 15:25'], + ['llll', 'Lin, Peb 14, 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'Enero Ene_Pebrero Peb_Marso Mar_Abril Abr_Mayo May_Hunyo Hun_Hulyo Hul_Agosto Ago_Setyembre Set_Oktubre Okt_Nobyembre Nob_Disyembre Dis'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'Linggo Lin Li_Lunes Lun Lu_Martes Mar Ma_Miyerkules Miy Mi_Huwebes Huw Hu_Biyernes Biy Bi_Sabado Sab Sab'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "ilang segundo", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "isang minuto", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "isang minuto", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minuto", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuto", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "isang oras", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "isang oras", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 oras", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 oras", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 oras", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "isang araw", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "isang araw", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 araw", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "isang araw", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 araw", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 araw", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "isang buwan", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "isang buwan", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "isang buwan", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 buwan", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 buwan", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 buwan", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "isang buwan", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 buwan", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 buwan", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "isang taon", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "isang taon", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 taon", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "isang taon", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 taon", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + + test.equal(moment(30000).from(0), "sa loob ng ilang segundo", "prefix"); + test.equal(moment(0).from(30000), "ilang segundo ang nakalipas", "suffix"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + + test.equal(moment().add({s: 30}).fromNow(), "sa loob ng ilang segundo", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "sa loob ng 5 araw", "in 5 days"); + test.done(); + }, + + "same day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Ngayon sa 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Ngayon sa 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Ngayon sa 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Bukas sa 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Ngayon sa 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Kahapon sa 02:00", "yesterday at the same time"); + test.done(); + }, + + "same next week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [sa] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [sa] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [sa] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "same last week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('dddd [huling linggo] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [huling linggo] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [huling linggo] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "same all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/tl-ph'), 'tl-ph', "module should export tl-ph"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/tr.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/tr.js new file mode 100755 index 0000000..222b6cb --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/tr.js @@ -0,0 +1,375 @@ +var moment = require("../../moment"); + + + /************************************************** + Turkish + *************************************************/ + +exports["lang:tr"] = { + setUp : function (cb) { + moment.lang('tr'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'Ocak Oca_Şubat Şub_Mart Mar_Nisan Nis_Mayıs May_Haziran Haz_Temmuz Tem_Ağustos Ağu_Eylül Eyl_Ekim Eki_Kasım Kas_Aralık Ara'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'Pazar, Şubat 14\'üncü 2010, 3:25:50 pm'], + ['ddd, hA', 'Paz, 3PM'], + ['M Mo MM MMMM MMM', '2 2\'nci 02 Şubat Şub'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14\'üncü 14'], + ['d do dddd ddd dd', '0 0\'ıncı Pazar Paz Pz'], + ['DDD DDDo DDDD', '45 45\'inci 045'], + ['w wo ww', "7 7'nci 07"], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[yılın] DDDo [günü]', 'yılın 45\'inci günü'], + ['L', '14.02.2010'], + ['LL', '14 Şubat 2010'], + ['LLL', '14 Şubat 2010 15:25'], + ['LLLL', 'Pazar, 14 Şubat 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14 Şub 2010'], + ['lll', '14 Şub 2010 15:25'], + ['llll', 'Paz, 14 Şub 2010 15:25'] + ], + DDDo = [ + [359, '360\'ıncı'], + [199, '200\'üncü'], + [149, '150\'nci'] + ], + dt = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + DDDoDt, + i; + test.expect(a.length + DDDo.length); + + for (i = 0; i < a.length; i++) { + test.equal(dt.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + for (i = 0; i < DDDo.length; i++) { + DDDoDt = moment([2010]); + test.equal(DDDoDt.add('days', DDDo[i][0]).format('DDDo'), DDDo[i][1], DDDo[i][0] + ' ---> ' + DDDo[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1\'inci', '1st'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2\'nci', '2nd'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3\'üncü', '3rd'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4\'üncü', '4th'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5\'inci', '5th'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6\'ncı', '6th'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7\'nci', '7th'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8\'inci', '8th'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9\'uncu', '9th'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10\'uncu', '10th'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11\'inci', '11th'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12\'nci', '12th'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13\'üncü', '13th'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14\'üncü', '14th'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15\'inci', '15th'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16\'ncı', '16th'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17\'nci', '17th'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18\'inci', '18th'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19\'uncu', '19th'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20\'nci', '20th'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21\'inci', '21th'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22\'nci', '22th'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23\'üncü', '23th'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24\'üncü', '24th'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25\'inci', '25th'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26\'ncı', '26th'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27\'nci', '27th'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28\'inci', '28th'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29\'uncu', '29th'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30\'uncu', '30th'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31\'inci', '31st'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'Ocak Oca_Şubat Şub_Mart Mar_Nisan Nis_Mayıs May_Haziran Haz_Temmuz Tem_Ağustos Ağu_Eylül Eyl_Ekim Eki_Kasım Kas_Aralık Ara'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'Pazar Paz Pz_Pazartesi Pts Pt_Salı Sal Sa_Çarşamba Çar Ça_Perşembe Per Pe_Cuma Cum Cu_Cumartesi Cts Ct'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "birkaç saniye", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "bir dakika", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "bir dakika", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 dakika", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 dakika", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "bir saat", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "bir saat", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 saat", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 saat", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 saat", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "bir gün", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "bir gün", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 gün", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "bir gün", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 gün", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 gün", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "bir ay", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "bir ay", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "bir ay", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 ay", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 ay", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 ay", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "bir ay", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 ay", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 ay", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "bir yıl", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "bir yıl", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 yıl", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "bir yıl", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 yıl", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "birkaç saniye sonra", "prefix"); + test.equal(moment(0).from(30000), "birkaç saniye önce", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "birkaç saniye önce", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "birkaç saniye sonra", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "5 gün sonra", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "bugün saat 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "bugün saat 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "bugün saat 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "yarın saat 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "bugün saat 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "dün 02:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('[haftaya] dddd [saat] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[haftaya] dddd [saat] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[haftaya] dddd [saat] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[geçen hafta] dddd [saat] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[geçen hafta] dddd [saat] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[geçen hafta] dddd [saat] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); + test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); + test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); + test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); + test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).format('w ww wo'), "1 01 1'inci", "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).format('w ww wo'), "1 01 1'inci", "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), "2 02 2'nci", "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), "2 02 2'nci", "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), "3 03 3'üncü", "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/tr'), 'tr', "module should export tr"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/tzm-la.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/tzm-la.js new file mode 100755 index 0000000..5498a5d --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/tzm-la.js @@ -0,0 +1,363 @@ +// moment.js Morocco Central Atlas Tamaziɣt in Latin (tzm-la) tests +// author : Abdel Said : https://github.com/abdelsaid +var moment = require("../../moment"); + + +exports["lang:tzm-la"] = { + setUp : function (cb) { + moment.lang('tzm-la'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'innayr innayr_brˤayrˤ brˤayrˤ_marˤsˤ marˤsˤ_ibrir ibrir_mayyw mayyw_ywnyw ywnyw_ywlywz ywlywz_ɣwšt ɣwšt_šwtanbir šwtanbir_ktˤwbrˤ ktˤwbrˤ_nwwanbir nwwanbir_dwjnbir dwjnbir'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'asamas, brˤayrˤ 14 2010, 3:25:50 pm'], + ['ddd, hA', 'asamas, 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 brˤayrˤ brˤayrˤ'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 asamas asamas asamas'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '8 8 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['L', '14/02/2010'], + ['LL', '14 brˤayrˤ 2010'], + ['LLL', '14 brˤayrˤ 2010 15:25'], + ['LLLL', 'asamas 14 brˤayrˤ 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 brˤayrˤ 2010'], + ['lll', '14 brˤayrˤ 2010 15:25'], + ['llll', 'asamas 14 brˤayrˤ 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = 'innayr innayr_brˤayrˤ brˤayrˤ_marˤsˤ marˤsˤ_ibrir ibrir_mayyw mayyw_ywnyw ywnyw_ywlywz ywlywz_ɣwšt ɣwšt_šwtanbir šwtanbir_ktˤwbrˤ ktˤwbrˤ_nwwanbir nwwanbir_dwjnbir dwjnbir'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = 'asamas asamas asamas_aynas aynas aynas_asinas asinas asinas_akras akras akras_akwas akwas akwas_asimwas asimwas asimwas_asiḍyas asiḍyas asiḍyas'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "imik", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "minuḍ", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "minuḍ", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 minuḍ", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 minuḍ", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "saɛa", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "saɛa", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 tassaɛin", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 tassaɛin", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 tassaɛin", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "ass", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "ass", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 ossan", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "ass", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 ossan", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 ossan", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "ayowr", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "ayowr", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "ayowr", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 iyyirn", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 iyyirn", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 iyyirn", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "ayowr", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 iyyirn", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 iyyirn", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "asgas", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "asgas", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 isgasn", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "asgas", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 isgasn", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + + test.equal(moment(30000).from(0), "dadkh s yan imik", "prefix"); + test.equal(moment(0).from(30000), "yan imik", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + + test.equal(moment().fromNow(), "yan imik", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + + test.equal(moment().add({s: 30}).fromNow(), "dadkh s yan imik", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "dadkh s yan 5 ossan", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "asdkh g 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "asdkh g 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "asdkh g 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "aska g 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "asdkh g 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "assant g 02:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [g] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [g] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [g] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('dddd [g] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [g] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [g] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + + // Saturday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 31]).week(), 1, "Dec 31 2011 should be week 1"); + test.equal(moment([2012, 0, 6]).week(), 1, "Jan 6 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).week(), 2, "Jan 7 2012 should be week 2"); + test.equal(moment([2012, 0, 13]).week(), 2, "Jan 13 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).week(), 3, "Jan 14 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2006, 11, 30]).week(), 1, "Dec 30 2006 should be week 1"); + test.equal(moment([2007, 0, 5]).week(), 1, "Jan 5 2007 should be week 1"); + test.equal(moment([2007, 0, 6]).week(), 2, "Jan 6 2007 should be week 2"); + test.equal(moment([2007, 0, 12]).week(), 2, "Jan 12 2007 should be week 2"); + test.equal(moment([2007, 0, 13]).week(), 3, "Jan 13 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 29]).week(), 1, "Dec 29 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 4]).week(), 1, "Jan 4 2008 should be week 1"); + test.equal(moment([2008, 0, 5]).week(), 2, "Jan 5 2008 should be week 2"); + test.equal(moment([2008, 0, 11]).week(), 2, "Jan 11 2008 should be week 2"); + test.equal(moment([2008, 0, 12]).week(), 3, "Jan 12 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 28]).week(), 1, "Dec 28 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 3]).week(), 1, "Jan 3 2003 should be week 1"); + test.equal(moment([2003, 0, 4]).week(), 2, "Jan 4 2003 should be week 2"); + test.equal(moment([2003, 0, 10]).week(), 2, "Jan 10 2003 should be week 2"); + test.equal(moment([2003, 0, 11]).week(), 3, "Jan 11 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 27]).week(), 1, "Dec 27 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 2]).week(), 1, "Jan 2 2009 should be week 1"); + test.equal(moment([2009, 0, 3]).week(), 2, "Jan 3 2009 should be week 2"); + test.equal(moment([2009, 0, 9]).week(), 2, "Jan 9 2009 should be week 2"); + test.equal(moment([2009, 0, 10]).week(), 3, "Jan 10 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(5); + + test.equal(moment([2009, 11, 26]).week(), 1, "Dec 26 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 2]).week(), 2, "Jan 2 2010 should be week 2"); + test.equal(moment([2010, 0, 8]).week(), 2, "Jan 8 2010 should be week 2"); + test.equal(moment([2010, 0, 9]).week(), 3, "Jan 9 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 7]).week(), 1, "Jan 7 2011 should be week 1"); + test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); + test.equal(moment([2011, 0, 14]).week(), 2, "Jan 14 2011 should be week 2"); + test.equal(moment([2011, 0, 15]).week(), 3, "Jan 15 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', "Dec 31 2011 should be week 1"); + test.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', "Jan 6 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', "Jan 7 2012 should be week 2"); + test.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', "Jan 13 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', "Jan 14 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/tzm-la'), 'tzm-la', "module should export tzm-la"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/tzm.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/tzm.js new file mode 100755 index 0000000..79d391c --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/tzm.js @@ -0,0 +1,354 @@ +// moment.js Morocco Central Atlas Tamaziɣt (tzm) tests +// author : Abdel Said : https://github.com/abdelsaid +var moment = require("../../moment"); + + +exports["lang:tzm"] = { + setUp : function (cb) { + moment.lang('tzm'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + var tests = 'ⵉⵏⵏⴰⵢⵔ ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ ⴷⵓⵊⵏⴱⵉⵔ'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'ⴰⵙⴰⵎⴰⵙ, ⴱⵕⴰⵢⵕ 14 2010, 3:25:50 pm'], + ['ddd, hA', 'ⴰⵙⴰⵎⴰⵙ, 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 ⴱⵕⴰⵢⵕ ⴱⵕⴰⵢⵕ'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '8 8 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['L', '14/02/2010'], + ['LL', '14 ⴱⵕⴰⵢⵕ 2010'], + ['LLL', '14 ⴱⵕⴰⵢⵕ 2010 15:25'], + ['LLLL', 'ⴰⵙⴰⵎⴰⵙ 14 ⴱⵕⴰⵢⵕ 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 ⴱⵕⴰⵢⵕ 2010'], + ['lll', '14 ⴱⵕⴰⵢⵕ 2010 15:25'], + ['llll', 'ⴰⵙⴰⵎⴰⵙ 14 ⴱⵕⴰⵢⵕ 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'ⵉⵏⵏⴰⵢⵔ ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ ⴷⵓⵊⵏⴱⵉⵔ'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ ⴰⵢⵏⴰⵙ ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ ⴰⵙⵉⵏⴰⵙ ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ ⴰⴽⵔⴰⵙ ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ ⴰⴽⵡⴰⵙ ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ ⴰⵙⵉⵎⵡⴰⵙ ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ ⴰⵙⵉⴹⵢⴰⵙ ⴰⵙⵉⴹⵢⴰⵙ'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "ⵉⵎⵉⴽ", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "ⵎⵉⵏⵓⴺ", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "ⵎⵉⵏⵓⴺ", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 ⵎⵉⵏⵓⴺ", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 ⵎⵉⵏⵓⴺ", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "ⵙⴰⵄⴰ", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "ⵙⴰⵄⴰ", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 ⵜⴰⵙⵙⴰⵄⵉⵏ", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 ⵜⴰⵙⵙⴰⵄⵉⵏ", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 ⵜⴰⵙⵙⴰⵄⵉⵏ", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "ⴰⵙⵙ", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "ⴰⵙⵙ", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 oⵙⵙⴰⵏ", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "ⴰⵙⵙ", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 oⵙⵙⴰⵏ", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 oⵙⵙⴰⵏ", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "ⴰⵢoⵓⵔ", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "ⴰⵢoⵓⵔ", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "ⴰⵢoⵓⵔ", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 ⵉⵢⵢⵉⵔⵏ", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 ⵉⵢⵢⵉⵔⵏ", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 ⵉⵢⵢⵉⵔⵏ", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "ⴰⵢoⵓⵔ", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 ⵉⵢⵢⵉⵔⵏ", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 ⵉⵢⵢⵉⵔⵏ", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "ⴰⵙⴳⴰⵙ", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "ⴰⵙⴳⴰⵙ", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 ⵉⵙⴳⴰⵙⵏ", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "ⴰⵙⴳⴰⵙ", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 ⵉⵙⴳⴰⵙⵏ", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ ⵉⵎⵉⴽ", "prefix"); + test.equal(moment(0).from(30000), "ⵢⴰⵏ ⵉⵎⵉⴽ", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "ⵢⴰⵏ ⵉⵎⵉⴽ", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ ⵉⵎⵉⴽ", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ 5 oⵙⵙⴰⵏ", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "ⴰⵙⴷⵅ ⴴ 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "ⴰⵙⴷⵅ ⴴ 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "ⴰⵙⴷⵅ ⴴ 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "ⴰⵙⴽⴰ ⴴ 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "ⴰⵙⴷⵅ ⴴ 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "ⴰⵚⴰⵏⵜ ⴴ 02:00", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [ⴴ] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [ⴴ] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [ⴴ] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('dddd [ⴴ] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [ⴴ] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [ⴴ] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + + // Saturday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 31]).week(), 1, "Dec 31 2011 should be week 1"); + test.equal(moment([2012, 0, 6]).week(), 1, "Jan 6 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).week(), 2, "Jan 7 2012 should be week 2"); + test.equal(moment([2012, 0, 13]).week(), 2, "Jan 13 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).week(), 3, "Jan 14 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2006, 11, 30]).week(), 1, "Dec 30 2006 should be week 1"); + test.equal(moment([2007, 0, 5]).week(), 1, "Jan 5 2007 should be week 1"); + test.equal(moment([2007, 0, 6]).week(), 2, "Jan 6 2007 should be week 2"); + test.equal(moment([2007, 0, 12]).week(), 2, "Jan 12 2007 should be week 2"); + test.equal(moment([2007, 0, 13]).week(), 3, "Jan 13 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 29]).week(), 1, "Dec 29 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 4]).week(), 1, "Jan 4 2008 should be week 1"); + test.equal(moment([2008, 0, 5]).week(), 2, "Jan 5 2008 should be week 2"); + test.equal(moment([2008, 0, 11]).week(), 2, "Jan 11 2008 should be week 2"); + test.equal(moment([2008, 0, 12]).week(), 3, "Jan 12 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 28]).week(), 1, "Dec 28 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 3]).week(), 1, "Jan 3 2003 should be week 1"); + test.equal(moment([2003, 0, 4]).week(), 2, "Jan 4 2003 should be week 2"); + test.equal(moment([2003, 0, 10]).week(), 2, "Jan 10 2003 should be week 2"); + test.equal(moment([2003, 0, 11]).week(), 3, "Jan 11 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 27]).week(), 1, "Dec 27 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 2]).week(), 1, "Jan 2 2009 should be week 1"); + test.equal(moment([2009, 0, 3]).week(), 2, "Jan 3 2009 should be week 2"); + test.equal(moment([2009, 0, 9]).week(), 2, "Jan 9 2009 should be week 2"); + test.equal(moment([2009, 0, 10]).week(), 3, "Jan 10 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(5); + + test.equal(moment([2009, 11, 26]).week(), 1, "Dec 26 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 2]).week(), 2, "Jan 2 2010 should be week 2"); + test.equal(moment([2010, 0, 8]).week(), 2, "Jan 8 2010 should be week 2"); + test.equal(moment([2010, 0, 9]).week(), 3, "Jan 9 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 7]).week(), 1, "Jan 7 2011 should be week 1"); + test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); + test.equal(moment([2011, 0, 14]).week(), 2, "Jan 14 2011 should be week 2"); + test.equal(moment([2011, 0, 15]).week(), 3, "Jan 15 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', "Dec 31 2011 should be week 1"); + test.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', "Jan 6 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', "Jan 7 2012 should be week 2"); + test.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', "Jan 13 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', "Jan 14 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/tzm'), 'tzm', "module should export tzm"); + } + test.done(); + } +}; + diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/uk.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/uk.js new file mode 100755 index 0000000..b61b786 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/uk.js @@ -0,0 +1,394 @@ +var moment = require("../../moment"); + + + /************************************************** + Ukrainian + *************************************************/ + +exports["lang:uk"] = { + setUp : function (cb) { + moment.lang('uk'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + var tests = 'січень січ_лютий лют_березень бер_квітень квіт_травень трав_червень черв_липень лип_серпень серп_вересень вер_жовтень жовт_листопад лист_грудень груд'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(18); + var a = [ + ['dddd, Do MMMM YYYY, HH:mm:ss', 'неділя, 14-го лютого 2010, 15:25:50'], + ['ddd, h A', 'нд, 3 дня'], + ['M Mo MM MMMM MMM', '2 2-й 02 лютий лют'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14-го 14'], + ['d do dddd ddd dd', '0 0-й неділя нд нд'], + ['DDD DDDo DDDD', '45 45-й 045'], + ['w wo ww', '7 7-й 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'дня дня'], + ['DDDo [день року]', '45-й день року'], + ['L', '14.02.2010'], + ['LL', '14 лютого 2010 р.'], + ['LLL', '14 лютого 2010 р., 15:25'], + ['LLLL', 'неділя, 14 лютого 2010 р., 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format meridiem" : function (test) { + test.expect(8); + + test.equal(moment([2012, 11, 28, 0, 0]).format("A"), "ночі", "night"); + test.equal(moment([2012, 11, 28, 3, 59]).format("A"), "ночі", "night"); + test.equal(moment([2012, 11, 28, 4, 0]).format("A"), "ранку", "morning"); + test.equal(moment([2012, 11, 28, 11, 59]).format("A"), "ранку", "morning"); + test.equal(moment([2012, 11, 28, 12, 0]).format("A"), "дня", "afternoon"); + test.equal(moment([2012, 11, 28, 16, 59]).format("A"), "дня", "afternoon"); + test.equal(moment([2012, 11, 28, 17, 0]).format("A"), "вечора", "evening"); + test.equal(moment([2012, 11, 28, 23, 59]).format("A"), "вечора", "evening"); + + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1-й', '1-й'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2-й', '2-й'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3-й', '3-й'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4-й', '4-й'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5-й', '5-й'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6-й', '6-й'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7-й', '7-й'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8-й', '8-й'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9-й', '9-й'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10-й', '10-й'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11-й', '11-й'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12-й', '12-й'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13-й', '13-й'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14-й', '14-й'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15-й', '15-й'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16-й', '16-й'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17-й', '17-й'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18-й', '18-й'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19-й', '19-й'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20-й', '20-й'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21-й', '21-й'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22-й', '22-й'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23-й', '23-й'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24-й', '24-й'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25-й', '25-й'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26-й', '26-й'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27-й', '27-й'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28-й', '28-й'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29-й', '29-й'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30-й', '30-й'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31-й', '31-й'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'січень січ_лютий лют_березень бер_квітень квіт_травень трав_червень черв_липень лип_серпень серп_вересень вер_жовтень жовт_листопад лист_грудень груд'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format month case" : function (test) { + test.expect(24); + var months = { + 'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'), + 'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_') + }, i; + for (i = 0; i < 12; i++) { + test.equal(moment([2011, i, 1]).format('D MMMM'), '1 ' + months.accusative[i], '1 ' + months.accusative[i]); + test.equal(moment([2011, i, 1]).format('MMMM'), months.nominative[i], '1 ' + months.nominative[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'неділя нд нд_понеділок пн пн_вівторок вт вт_середа ср ср_четвер чт чт_п’ятниця пт пт_субота сб сб'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(32); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "декілька секунд", "44 seconds = seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "хвилина", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "хвилина", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 хвилини", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 хвилини", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "годину", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "годину", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 години", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 годин", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 година", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "день", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "день", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 дні", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "день", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 днів", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), "11 днів", "11 days = 11 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), "21 день", "21 days = 21 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 днів", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "місяць", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "місяць", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "місяць", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 місяці", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 місяці", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 місяці", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "місяць", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 місяців", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 місяців", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "рік", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "рік", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 роки", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "рік", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 років", "5 years = 5 years"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "за декілька секунд", "prefix"); + test.equal(moment(0).from(30000), "декілька секунд тому", "suffix"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "за декілька секунд", "in seconds"); + test.equal(moment().add({d: 5}).fromNow(), "за 5 днів", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(7); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Сьогодні о 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Сьогодні о 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Сьогодні о 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Завтра о 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Сьогодні о 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Вчора о 02:00", "yesterday at the same time"); + // A special case for Ukrainian since 11 hours have different preposition + test.equal(moment(a).add({ h: 9 }).calendar(), "Сьогодні об 11:00", "same day at 11 o'clock"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('[У] dddd [о' + (m.hours() === 11 ? 'б' : '') + '] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[У] dddd [о] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[У] dddd [о] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + case 3: + case 5: + case 6: + return '[Минулої] dddd [о' + (d.hours() === 11 ? 'б' : '') + '] LT'; + case 1: + case 2: + case 4: + return '[Минулого] dddd [о' + (d.hours() === 11 ? 'б' : '') + '] LT'; + } + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format(makeFormat(m)), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).week(), 1, "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 12]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 1"); + test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 2"); + test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 1"); + test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 2"); + test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2011, 11, 26]).format('w ww wo'), '1 01 1-й', "Dec 26 2011 should be week 1"); + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-й', "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2-й', "Jan 2 2012 should be week 2"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-й', "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3-й', "Jan 9 2012 should be week 3"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/uk'), 'uk', "module should export uk"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/uz.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/uz.js new file mode 100755 index 0000000..6ac3a6a --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/uz.js @@ -0,0 +1,361 @@ +var moment = require("../../moment"); + + + /************************************************** + Uzbek + *************************************************/ + +exports["lang:uz"] = { + setUp : function (cb) { + moment.lang('uz'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = 'январь янв_февраль фев_март мар_апрель апр_май май_июнь июнь_июль июль_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + var a = [ + ['dddd, Do-MMMM YYYY, h:mm:ss', 'Якшанба, 14-февраль 2010, 3:25:50'], + ['ddd, h:mm', 'Якш, 3:25'], + ['M Mo MM MMMM MMM', '2 2 02 февраль фев'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 Якшанба Якш Як'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '7 7 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[йилнинг] DDDo-[куни]', 'йилнинг 45-куни'], + ['L', '14/02/2010'], + ['LL', '14 февраль 2010'], + ['LLL', '14 февраль 2010 15:25'], + ['LLLL', '14 февраль 2010, Якшанба 15:25'], + ['l', '14/2/2010'], + ['ll', '14 фев 2010'], + ['lll', '14 фев 2010 15:25'], + ['llll', '14 фев 2010, Якш 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + var expected = 'январь янв_февраль фев_март мар_апрель апр_май май_июнь июн_июль июл_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + var expected = 'Якшанба Якш Як_Душанба Душ Ду_Сешанба Сеш Се_Чоршанба Чор Чо_Пайшанба Пай Па_Жума Жум Жу_Шанба Шан Ша'.split("_"), i; + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + test.done(); + }, + + "from" : function (test) { + test.expect(30); + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "фурсат", "44 секунд = фурсат"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "бир дакика", "45 секунд = бир дакика"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "бир дакика", "89 секунд = бир дакика"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 дакика", "90 секунд = 2 дакика"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 дакика", "44 дакика = 44 дакика"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "бир соат", "45 минут = бир соат"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "бир соат", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 соат", "90 минут = 2 соат"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 соат", "5 соат = 5 соат"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 соат", "21 соат = 21 соат"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "бир кун", "22 соат = бир кун"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "бир кун", "35 соат = бир кун"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 кун", "36 соат = 2 кун"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "бир кун", "1 кун = 1 кун"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 кун", "5 кун = 5 кун"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 кун", "25 кун = 25 кун"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "бир ой", "26 кун = бир ой"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "бир ой", "30 кун = бир ой"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "бир ой", "45 кун = бир ой"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 ой", "46 кун = 2 ой"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 ой", "75 кун = 2 ой"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 ой", "76 кун = 3 ой"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "бир ой", "бир ой = бир ой"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 ой", "5 ой = 5 ой"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 ой", "344 кун = 11 ой"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "бир йил", "345 кун = бир йил"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "бир йил", "547 кун = бир йил"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 йил", "548 кун = 2 йил"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "бир йил", "1 йил = бир йил"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 йил", "5 йил = 5 йил"); + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + test.equal(moment(30000).from(0), "Якин фурсат ичида", "prefix"); + test.equal(moment(0).from(30000), "Бир неча фурсат олдин", "suffix"); + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + test.equal(moment().fromNow(), "Бир неча фурсат олдин", "now from now should display as in the past"); + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + test.equal(moment().add({s: 30}).fromNow(), "Якин фурсат ичида", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "Якин 5 кун ичида", "in 5 days"); + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Бугун соат 02:00 да", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Бугун соат 02:25 да", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Бугун соат 03:00 да", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Эртага 02:00 да", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Бугун соат 01:00 да", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Кеча соат 02:00 да", "yesterday at the same time"); + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [куни соат] LT [да]'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [куни соат] LT [да]'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [куни соат] LT [да]'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[Утган] dddd [куни соат] LT [да]'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[Утган] dddd [куни соат] LT [да]'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[Утган] dddd [куни соат] LT [да]'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 2, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 3, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 1, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 1, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 2, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 2, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 3, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 1, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 1, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 2, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 2, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 3, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 2', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 3', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/uz'), 'uz', "module should export uz"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/vn.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/vn.js new file mode 100755 index 0000000..cdeca2a --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/vn.js @@ -0,0 +1,387 @@ +var moment = require("../../moment"); + + + /************************************************** + Vietnamese + *************************************************/ + +exports["lang:vn"] = { + setUp : function (cb) { + moment.lang('vn'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var i, + tests = 'tháng 1,Th01_tháng 2,Th02_tháng 3,Th03_tháng 4,Th04_tháng 5,Th05_tháng 6,Th06_tháng 7,Th07_tháng 8,Th08_tháng 9,Th09_tháng 10,Th10_tháng 11,Th11_tháng 12,Th12'.split("_"); + + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + i); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(','); + equalTest(tests[i][0], '[tháng] M', i); + equalTest(tests[i][1], '[Th]M', i); + equalTest(tests[i][0], '[tháng] MM', i); + equalTest(tests[i][1], '[Th]MM', i); + equalTest(tests[i][0].toLocaleLowerCase(), '[THÁNG] M', i); + equalTest(tests[i][1].toLocaleLowerCase(), '[TH]M', i); + equalTest(tests[i][0].toLocaleUpperCase(), '[THÁNG] MM', i); + equalTest(tests[i][1].toLocaleUpperCase(), '[TH]MM', i); + } + + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, h:mm:ss a', 'chủ nhật, tháng 2 14 2010, 3:25:50 pm'], + ['ddd, hA', 'CN, 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 tháng 2 Th02'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 chủ nhật CN CN'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '6 6 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[ngày thứ] DDDo [của năm]', 'ngày thứ 45 của năm'], + ['L', '14/02/2010'], + ['LL', '14 tháng 2 năm 2010'], + ['LLL', '14 tháng 2 năm 2010 15:25'], + ['LLLL', 'chủ nhật, 14 tháng 2 năm 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 Th02 2010'], + ['lll', '14 Th02 2010 15:25'], + ['llll', 'CN, 14 Th02 2010 15:25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + + test.done(); + }, + + "format ordinal" : function (test) { + test.expect(31); + + test.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + test.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + test.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + test.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + test.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + test.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + test.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + test.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + test.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + test.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + + test.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + test.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + test.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + test.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + test.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + test.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + test.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + test.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + test.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + test.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + + test.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + test.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + test.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + test.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + test.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + test.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + test.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + test.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + test.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + test.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + + test.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var i, + expected = 'tháng 1,Th01_tháng 2,Th02_tháng 3,Th03_tháng 4,Th04_tháng 5,Th05_tháng 6,Th06_tháng 7,Th07_tháng 8,Th08_tháng 9,Th09_tháng 10,Th10_tháng 11,Th11_tháng 12,Th12'.split("_"); + + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM,MMM'), expected[i], expected[i]); + } + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var i, + expected = 'chủ nhật CN CN_thứ hai T2 T2_thứ ba T3 T3_thứ tư T4 T4_thứ năm T5 T5_thứ sáu T6 T6_thứ bảy T7 T7'.split("_"); + + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "vài giây", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "một phút", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "một phút", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2 phút", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44 phút", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "một giờ", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "một giờ", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2 giờ", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5 giờ", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21 giờ", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "một ngày", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "một ngày", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2 ngày", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "một ngày", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5 ngày", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25 ngày", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "một tháng", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "một tháng", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "một tháng", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2 tháng", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2 tháng", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3 tháng", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "một tháng", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5 tháng", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11 tháng", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "một năm", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "một năm", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2 năm", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "một năm", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5 năm", "5 years = 5 years"); + + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + + test.equal(moment(30000).from(0), "vài giây tới", "prefix"); + test.equal(moment(0).from(30000), "vài giây trước", "suffix"); + + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + + test.equal(moment().fromNow(), "vài giây trước", "now from now should display as in the past"); + + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + + test.equal(moment().add({s: 30}).fromNow(), "vài giây tới", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "5 ngày tới", "in 5 days"); + + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Hôm nay lúc 02:00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Hôm nay lúc 02:25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Hôm nay lúc 03:00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Ngày mai lúc 02:00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Hôm nay lúc 01:00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Hôm qua lúc 02:00", "yesterday at the same time"); + + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('dddd [tuần tới lúc] LT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [tuần tới lúc] LT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [tuần tới lúc] LT'), "Today + " + i + " days end of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('dddd [tuần rồi lúc] LT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('dddd [tuần rồi lúc] LT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('dddd [tuần rồi lúc] LT'), "Today - " + i + " days end of day"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + // Monday is the first day of the week. + // The week that contains Jan 4th is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 1, "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).week(), 2, "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 2, "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 8]).week(), 2, "Jan 8 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + test.equal(moment([2007, 0, 15]).week(), 3, "Jan 15 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).week(), 1, "Dec 31 2007 should be week 1"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 7]).week(), 2, "Jan 7 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + test.equal(moment([2008, 0, 14]).week(), 3, "Jan 14 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).week(), 1, "Dec 30 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 6]).week(), 2, "Jan 6 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + test.equal(moment([2003, 0, 13]).week(), 3, "Jan 13 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).week(), 1, "Dec 29 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 5]).week(), 2, "Jan 5 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + test.equal(moment([2009, 0, 13]).week(), 3, "Jan 12 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).week(), 53, "Dec 28 2009 should be week 53"); + test.equal(moment([2010, 0, 1]).week(), 53, "Jan 1 2010 should be week 53"); + test.equal(moment([2010, 0, 3]).week(), 53, "Jan 3 2010 should be week 53"); + test.equal(moment([2010, 0, 4]).week(), 1, "Jan 4 2010 should be week 1"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + test.equal(moment([2010, 0, 11]).week(), 2, "Jan 11 2010 should be week 2"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).week(), 52, "Dec 27 2010 should be week 52"); + test.equal(moment([2011, 0, 1]).week(), 52, "Jan 1 2011 should be week 52"); + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 3]).week(), 1, "Jan 3 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + test.equal(moment([2011, 0, 10]).week(), 2, "Jan 10 2011 should be week 2"); + + test.done(); + }, + + "weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52', "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', "Jan 2 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1', "Jan 8 2012 should be week 1"); + test.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2', "Jan 9 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', "Jan 15 2012 should be week 2"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/vn'), 'vn', "module should export vn"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/zh-cn.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/zh-cn.js new file mode 100755 index 0000000..c991c57 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/zh-cn.js @@ -0,0 +1,357 @@ +var moment = require("../../moment"); + + +/************************************************** + Simplified Chinese +**************************************************/ + +exports["lang:zh-cn"] = { + setUp : function (cb) { + moment.lang('zh-cn'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split("_"), i; + + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, a h:mm:ss', '星期日, 二月 14日 2010, 下午 3:25:50'], + ['ddd, Ah', '周日, 下午3'], + ['M Mo MM MMMM MMM', '2 2月 02 二月 2月'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14日 14'], + ['d do dddd ddd dd', '0 0日 星期日 周日 日'], + ['DDD DDDo DDDD', '45 45日 045'], + ['w wo ww', '6 6周 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', '下午 下午'], + ['[这年的第] DDDo', '这年的第 45日'], + ['L', '2010-02-14'], + ['LL', '2010年2月14日'], + ['LLL', '2010年2月14日下午3点25'], + ['LLLL', '2010年2月14日星期日下午3点25'], + ['l', '2010-02-14'], + ['ll', '2010年2月14日'], + ['lll', '2010年2月14日下午3点25'], + ['llll', '2010年2月14日星期日下午3点25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split("_"), i; + + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = '星期日 周日 日_星期一 周一 一_星期二 周二 二_星期三 周三 三_星期四 周四 四_星期五 周五 五_星期六 周六 六'.split("_"), i; + + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "几秒", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "1分钟", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "1分钟", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2分钟", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44分钟", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "1小时", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "1小时", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2小时", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5小时", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21小时", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "1天", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "1天", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2天", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "1天", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5天", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25天", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "1个月", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "1个月", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "1个月", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2个月", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2个月", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3个月", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "1个月", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5个月", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11个月", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "1年", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "1年", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2年", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "1年", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5年", "5 years = 5 years"); + + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + + test.equal(moment(30000).from(0), "几秒内", "prefix"); + test.equal(moment(0).from(30000), "几秒前", "suffix"); + + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + + test.equal(moment().fromNow(), "几秒前", "now from now should display as in the past"); + + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + + test.equal(moment().add({s: 30}).fromNow(), "几秒内", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "5天内", "in 5 days"); + + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "今天凌晨2点整", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "今天凌晨2点25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "今天凌晨3点整", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "明天凌晨2点整", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "今天凌晨1点整", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "昨天凌晨2点整", "yesterday at the same time"); + test.done(); + }, + + "calendar current week": function (test) { + var i, m, + today = moment().startOf('day'); + + for (i = 0; i < 7; i++) { + m = moment().startOf('week').add({ d: i}); + if (Math.abs(m.diff(today, 'days')) <= 1) { + continue; // skip today, yesterday, tomorrow + } + test.equal(m.calendar(), m.format('[本]ddd凌晨12点整'), "Monday + " + i + " days current time"); + } + test.done(); + }, + + "calendar next week" : function (test) { + var i, m, + today = moment().startOf('day'); + + for (i = 7; i < 14; i++) { + m = moment().startOf('week').add({ d: i}); + if (Math.abs(m.diff(today, 'days')) >= 7) { + continue; + } + if (Math.abs(m.diff(today, 'days')) <= 1) { + continue; // skip today, yesterday, tomorrow + } + test.equal(m.calendar(), m.format('[下]ddd凌晨12点整'), "Today + " + i + " days beginning of day"); + } + test.done(); + }, + + "calendar last week" : function (test) { + var i, m, + today = moment().startOf('day'); + + for (i = 1; i < 8; i++) { + m = moment().startOf('week').subtract({ d: i}); + if ((Math.abs(m.diff(today, 'days')) >= 7) || (Math.abs(m.diff(today, 'days')) <= 1)) { + continue; + } + test.equal(m.calendar(), m.format('[上]ddd凌晨12点整'), "Monday - " + i + " days next week"); + } + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('LL'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('LL'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('LL'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('LL'), "in 2 weeks"); + test.done(); + }, + + "meridiem" : function (test) { + test.expect(6); + + test.equal(moment([2011, 2, 23, 0, 0]).format('A'), "凌晨", "before dawn"); + test.equal(moment([2011, 2, 23, 6, 0]).format('A'), "早上", "morning"); + test.equal(moment([2011, 2, 23, 9, 0]).format('A'), "上午", "before noon"); + test.equal(moment([2011, 2, 23, 12, 0]).format('A'), "中午", "noon"); + test.equal(moment([2011, 2, 23, 13, 0]).format('A'), "下午", "afternoon"); + test.equal(moment([2011, 2, 23, 18, 0]).format('A'), "晚上", "night"); + + test.done(); + }, + + // Sunday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(4); + + test.equal(moment([2012, 0, 1]).week(), 52, "Jan 1 2012 should be week 52"); + test.equal(moment([2012, 0, 2]).week(), 1, "Jan 2 2012 should be week 52"); + test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(6); + + test.equal(moment([2006, 11, 31]).week(), 52, "Dec 31 2006 should be week 52"); + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 1, "Jan 7 2007 should be week 1"); + test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 2, "Jan 14 2007 should be week 2"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 1, "Jan 6 2008 should be week 1"); + test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 2, "Jan 13 2008 should be week 2"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 29]).week(), 52, "Dec 29 2002 should be week 52"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 1, "Jan 5 2003 should be week 1"); + test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 2, "Jan 12 2003 should be week 2"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(5); + + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 1, "Jan 4 2009 should be week 1"); + test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 2, "Jan 11 2009 should be week 2"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(2); + + test.equal(moment([2010, 0, 2]).week(), 53, "Jan 2 2010 should be week 53"); + test.equal(moment([2010, 0, 10]).week(), 1, "Jan 10 2010 should be week 1"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(3); + + test.equal(moment([2011, 0, 2]).week(), 52, "Jan 2 2011 should be week 52"); + test.equal(moment([2011, 0, 8]).week(), 1, "Jan 8 2011 should be week 1"); + test.equal(moment([2011, 0, 9]).week(), 1, "Jan 9 2011 should be week 1"); + + test.done(); + }, + + "weeks year starting sunday format" : function (test) { + test.expect(3); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52周', "Jan 1 2012 应该是第52周"); + test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1周', "Jan 7 2012 应该是第 1周"); + test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2周', "Jan 14 2012 应该是第 2周"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/zh-cn'), 'zh-cn', "module should export zh-cn"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/lang/zh-tw.js b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/zh-tw.js new file mode 100755 index 0000000..6ca0fa9 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/lang/zh-tw.js @@ -0,0 +1,359 @@ +var moment = require("../../moment"); + + + /************************************************** + Traditional Chinese + *************************************************/ + +exports["lang:zh-tw"] = { + setUp : function (cb) { + moment.lang('zh-tw'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "parse" : function (test) { + test.expect(96); + + var tests = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split("_"), i; + function equalTest(input, mmm, i) { + test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + } + test.done(); + }, + + "format" : function (test) { + test.expect(22); + + var a = [ + ['dddd, MMMM Do YYYY, a h:mm:ss', '星期日, 二月 14日 2010, 下午 3:25:50'], + ['ddd, Ah', '週日, 下午3'], + ['M Mo MM MMMM MMM', '2 2月 02 二月 2月'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14日 14'], + ['d do dddd ddd dd', '0 0日 星期日 週日 日'], + ['DDD DDDo DDDD', '45 45日 045'], + ['w wo ww', '8 8週 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', '下午 下午'], + ['[這年的第] DDDo', '這年的第 45日'], + ['L', '2010年2月14日'], + ['LL', '2010年2月14日'], + ['LLL', '2010年2月14日下午3點25'], + ['LLLL', '2010年2月14日星期日下午3點25'], + ['l', '2010年2月14日'], + ['ll', '2010年2月14日'], + ['lll', '2010年2月14日下午3點25'], + ['llll', '2010年2月14日星期日下午3點25'] + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + + for (i = 0; i < a.length; i++) { + test.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + + test.done(); + }, + + "format month" : function (test) { + test.expect(12); + + var expected = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split("_"), i; + + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + } + + test.done(); + }, + + "format week" : function (test) { + test.expect(7); + + var expected = '星期日 週日 日_星期一 週一 一_星期二 週二 二_星期三 週三 三_星期四 週四 四_星期五 週五 五_星期六 週六 六'.split("_"), i; + + for (i = 0; i < expected.length; i++) { + test.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + } + + test.done(); + }, + + "from" : function (test) { + test.expect(30); + + var start = moment([2007, 1, 28]); + test.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), "幾秒", "44 seconds = a few seconds"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), "一分鐘", "45 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), "一分鐘", "89 seconds = a minute"); + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "2分鐘", "90 seconds = 2 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), "44分鐘", "44 minutes = 44 minutes"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), "一小時", "45 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), "一小時", "89 minutes = an hour"); + test.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), "2小時", "90 minutes = 2 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), "5小時", "5 hours = 5 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), "21小時", "21 hours = 21 hours"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), "一天", "22 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), "一天", "35 hours = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), "2天", "36 hours = 2 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), "一天", "1 day = a day"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), "5天", "5 days = 5 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), "25天", "25 days = 25 days"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), "一個月", "26 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), "一個月", "30 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 45}), true), "一個月", "45 days = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), "2個月", "46 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), "2個月", "75 days = 2 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), "3個月", "76 days = 3 months"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), "一個月", "1 month = a month"); + test.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), "5個月", "5 months = 5 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 344}), true), "11個月", "344 days = 11 months"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), "一年", "345 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 547}), true), "一年", "547 days = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), "2年", "548 days = 2 years"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), "一年", "1 year = a year"); + test.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), "5年", "5 years = 5 years"); + + test.done(); + }, + + "suffix" : function (test) { + test.expect(2); + + test.equal(moment(30000).from(0), "幾秒內", "prefix"); + test.equal(moment(0).from(30000), "幾秒前", "suffix"); + + test.done(); + }, + + "now from now" : function (test) { + test.expect(1); + + test.equal(moment().fromNow(), "幾秒前", "now from now should display as in the past"); + + test.done(); + }, + + "fromNow" : function (test) { + test.expect(2); + + test.equal(moment().add({s: 30}).fromNow(), "幾秒內", "in a few seconds"); + test.equal(moment().add({d: 5}).fromNow(), "5天內", "in 5 days"); + + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "今天早上2點00", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "今天早上2點25", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "今天早上3點00", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "明天早上2點00", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "今天早上1點00", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "昨天早上2點00", "yesterday at the same time"); + + test.done(); + }, + + "calendar next week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + test.equal(m.calendar(), m.format('[下]ddddLT'), "Today + " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[下]ddddLT'), "Today + " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[下]ddddLT'), "Today + " + i + " days end of day"); + } + + test.done(); + }, + + "calendar last week" : function (test) { + test.expect(15); + + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + test.equal(m.calendar(), m.format('[上]ddddLT'), "Today - " + i + " days current time"); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + test.equal(m.calendar(), m.format('[上]ddddLT'), "Today - " + i + " days beginning of day"); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + test.equal(m.calendar(), m.format('[上]ddddLT'), "Today - " + i + " days end of day"); + } + + test.done(); + }, + + "calendar all else" : function (test) { + test.expect(4); + + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "1 week ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 1 week"); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + test.equal(weeksAgo.calendar(), weeksAgo.format('L'), "2 weeks ago"); + test.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), "in 2 weeks"); + + test.done(); + }, + + "meridiem" : function (test) { + test.expect(10); + + test.equal(moment([2011, 2, 23, 0, 0]).format('a'), "早上", "morning"); + test.equal(moment([2011, 2, 23, 9, 0]).format('a'), "上午", "before noon"); + test.equal(moment([2011, 2, 23, 12, 0]).format('a'), "中午", "noon"); + test.equal(moment([2011, 2, 23, 13, 0]).format('a'), "下午", "after noon"); + test.equal(moment([2011, 2, 23, 18, 0]).format('a'), "晚上", "night"); + + test.equal(moment([2011, 2, 23, 0, 0]).format('A'), "早上", "morning"); + test.equal(moment([2011, 2, 23, 9, 0]).format('A'), "上午", "before noon"); + test.equal(moment([2011, 2, 23, 12, 0]).format('A'), "中午", "noon"); + test.equal(moment([2011, 2, 23, 13, 0]).format('A'), "下午", "afternoon"); + test.equal(moment([2011, 2, 23, 18, 0]).format('A'), "晚上", "night"); + + test.done(); + }, + + // Sunday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + "weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).week(), 1, "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).week(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).week(), 2, "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).week(), 3, "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "weeks year starting monday" : function (test) { + test.expect(6); + + test.equal(moment([2006, 11, 31]).week(), 1, "Dec 31 2006 should be week 1"); + test.equal(moment([2007, 0, 1]).week(), 1, "Jan 1 2007 should be week 1"); + test.equal(moment([2007, 0, 6]).week(), 1, "Jan 6 2007 should be week 1"); + test.equal(moment([2007, 0, 7]).week(), 2, "Jan 7 2007 should be week 2"); + test.equal(moment([2007, 0, 13]).week(), 2, "Jan 13 2007 should be week 2"); + test.equal(moment([2007, 0, 14]).week(), 3, "Jan 14 2007 should be week 3"); + + test.done(); + }, + + "weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 29]).week(), 52, "Dec 29 2007 should be week 52"); + test.equal(moment([2008, 0, 1]).week(), 1, "Jan 1 2008 should be week 1"); + test.equal(moment([2008, 0, 5]).week(), 1, "Jan 5 2008 should be week 1"); + test.equal(moment([2008, 0, 6]).week(), 2, "Jan 6 2008 should be week 2"); + test.equal(moment([2008, 0, 12]).week(), 2, "Jan 12 2008 should be week 2"); + test.equal(moment([2008, 0, 13]).week(), 3, "Jan 13 2008 should be week 3"); + + test.done(); + }, + + "weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 29]).week(), 1, "Dec 29 2002 should be week 1"); + test.equal(moment([2003, 0, 1]).week(), 1, "Jan 1 2003 should be week 1"); + test.equal(moment([2003, 0, 4]).week(), 1, "Jan 4 2003 should be week 1"); + test.equal(moment([2003, 0, 5]).week(), 2, "Jan 5 2003 should be week 2"); + test.equal(moment([2003, 0, 11]).week(), 2, "Jan 11 2003 should be week 2"); + test.equal(moment([2003, 0, 12]).week(), 3, "Jan 12 2003 should be week 3"); + + test.done(); + }, + + "weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 28]).week(), 1, "Dec 28 2008 should be week 1"); + test.equal(moment([2009, 0, 1]).week(), 1, "Jan 1 2009 should be week 1"); + test.equal(moment([2009, 0, 3]).week(), 1, "Jan 3 2009 should be week 1"); + test.equal(moment([2009, 0, 4]).week(), 2, "Jan 4 2009 should be week 2"); + test.equal(moment([2009, 0, 10]).week(), 2, "Jan 10 2009 should be week 2"); + test.equal(moment([2009, 0, 11]).week(), 3, "Jan 11 2009 should be week 3"); + + test.done(); + }, + + "weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 27]).week(), 1, "Dec 27 2009 should be week 1"); + test.equal(moment([2010, 0, 1]).week(), 1, "Jan 1 2010 should be week 1"); + test.equal(moment([2010, 0, 2]).week(), 1, "Jan 2 2010 should be week 1"); + test.equal(moment([2010, 0, 3]).week(), 2, "Jan 3 2010 should be week 2"); + test.equal(moment([2010, 0, 9]).week(), 2, "Jan 9 2010 should be week 2"); + test.equal(moment([2010, 0, 10]).week(), 3, "Jan 10 2010 should be week 3"); + + test.done(); + }, + + "weeks year starting saturday" : function (test) { + test.expect(5); + + test.equal(moment([2010, 11, 26]).week(), 1, "Dec 26 2010 should be week 1"); + test.equal(moment([2011, 0, 1]).week(), 1, "Jan 1 2011 should be week 1"); + test.equal(moment([2011, 0, 2]).week(), 2, "Jan 2 2011 should be week 2"); + test.equal(moment([2011, 0, 8]).week(), 2, "Jan 8 2011 should be week 2"); + test.equal(moment([2011, 0, 9]).week(), 3, "Jan 9 2011 should be week 3"); + + test.done(); + }, + + "weeks year starting sunday format" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1週', "Jan 1 2012 應該是第 1週"); + test.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1週', "Jan 7 2012 應該是第 1週"); + test.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2週', "Jan 8 2012 應該是第 2週"); + test.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2週', "Jan 14 2012 應該是第 2週"); + test.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3週', "Jan 15 2012 應該是第 3週"); + + test.done(); + }, + + "returns the name of the language" : function (test) { + if (typeof module !== 'undefined' && module.exports) { + test.equal(require('../../lang/zh-tw'), 'zh-tw', "module should export zh-tw"); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/add_subtract.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/add_subtract.js new file mode 100755 index 0000000..85b4046 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/add_subtract.js @@ -0,0 +1,251 @@ +var moment = require("../../moment"); + +exports.add = { + "add short" : function (test) { + test.expect(12); + + var a = moment(), b, c; + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + test.equal(a.add({ms: 50}).milliseconds(), 550, 'Add milliseconds'); + test.equal(a.add({s: 1}).seconds(), 9, 'Add seconds'); + test.equal(a.add({m: 1}).minutes(), 8, 'Add minutes'); + test.equal(a.add({h: 1}).hours(), 7, 'Add hours'); + test.equal(a.add({d: 1}).date(), 13, 'Add date'); + test.equal(a.add({w: 1}).date(), 20, 'Add week'); + test.equal(a.add({M: 1}).month(), 10, 'Add month'); + test.equal(a.add({y: 1}).year(), 2012, 'Add year'); + + b = moment([2010, 0, 31]).add({M: 1}); + c = moment([2010, 1, 28]).subtract({M: 1}); + + test.equal(b.month(), 1, 'add month, jan 31st to feb 28th'); + test.equal(b.date(), 28, 'add month, jan 31st to feb 28th'); + test.equal(c.month(), 0, 'subtract month, feb 28th to jan 28th'); + test.equal(c.date(), 28, 'subtract month, feb 28th to jan 28th'); + test.done(); + }, + + "add long" : function (test) { + test.expect(8); + + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + test.equal(a.add({milliseconds: 50}).milliseconds(), 550, 'Add milliseconds'); + test.equal(a.add({seconds: 1}).seconds(), 9, 'Add seconds'); + test.equal(a.add({minutes: 1}).minutes(), 8, 'Add minutes'); + test.equal(a.add({hours: 1}).hours(), 7, 'Add hours'); + test.equal(a.add({days: 1}).date(), 13, 'Add date'); + test.equal(a.add({weeks: 1}).date(), 20, 'Add week'); + test.equal(a.add({months: 1}).month(), 10, 'Add month'); + test.equal(a.add({years: 1}).year(), 2012, 'Add year'); + test.done(); + }, + + "add long singular" : function (test) { + test.expect(8); + + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + test.equal(a.add({millisecond: 50}).milliseconds(), 550, 'Add milliseconds'); + test.equal(a.add({second: 1}).seconds(), 9, 'Add seconds'); + test.equal(a.add({minute: 1}).minutes(), 8, 'Add minutes'); + test.equal(a.add({hour: 1}).hours(), 7, 'Add hours'); + test.equal(a.add({day: 1}).date(), 13, 'Add date'); + test.equal(a.add({week: 1}).date(), 20, 'Add week'); + test.equal(a.add({month: 1}).month(), 10, 'Add month'); + test.equal(a.add({year: 1}).year(), 2012, 'Add year'); + test.done(); + }, + + "add string long" : function (test) { + test.expect(9); + + var a = moment(), b; + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + b = a.clone(); + + test.equal(a.add('millisecond', 50).milliseconds(), 550, 'Add milliseconds'); + test.equal(a.add('second', 1).seconds(), 9, 'Add seconds'); + test.equal(a.add('minute', 1).minutes(), 8, 'Add minutes'); + test.equal(a.add('hour', 1).hours(), 7, 'Add hours'); + test.equal(a.add('day', 1).date(), 13, 'Add date'); + test.equal(a.add('week', 1).date(), 20, 'Add week'); + test.equal(a.add('month', 1).month(), 10, 'Add month'); + test.equal(a.add('year', 1).year(), 2012, 'Add year'); + test.equal(b.add('day', '01').date(), 13, 'Add date'); + test.done(); + }, + + "add string long singular" : function (test) { + test.expect(9); + + var a = moment(), b; + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + b = a.clone(); + + test.equal(a.add('milliseconds', 50).milliseconds(), 550, 'Add milliseconds'); + test.equal(a.add('seconds', 1).seconds(), 9, 'Add seconds'); + test.equal(a.add('minutes', 1).minutes(), 8, 'Add minutes'); + test.equal(a.add('hours', 1).hours(), 7, 'Add hours'); + test.equal(a.add('days', 1).date(), 13, 'Add date'); + test.equal(a.add('weeks', 1).date(), 20, 'Add week'); + test.equal(a.add('months', 1).month(), 10, 'Add month'); + test.equal(a.add('years', 1).year(), 2012, 'Add year'); + test.equal(b.add('days', '01').date(), 13, 'Add date'); + test.done(); + }, + + "add string short" : function (test) { + test.expect(8); + + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + test.equal(a.add('ms', 50).milliseconds(), 550, 'Add milliseconds'); + test.equal(a.add('s', 1).seconds(), 9, 'Add seconds'); + test.equal(a.add('m', 1).minutes(), 8, 'Add minutes'); + test.equal(a.add('h', 1).hours(), 7, 'Add hours'); + test.equal(a.add('d', 1).date(), 13, 'Add date'); + test.equal(a.add('w', 1).date(), 20, 'Add week'); + test.equal(a.add('M', 1).month(), 10, 'Add month'); + test.equal(a.add('y', 1).year(), 2012, 'Add year'); + test.done(); + }, + + "add string long reverse args" : function (test) { + test.expect(8); + + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + test.equal(a.add(50, 'millisecond').milliseconds(), 550, 'Add milliseconds'); + test.equal(a.add(1, 'second', 1).seconds(), 9, 'Add seconds'); + test.equal(a.add(1, 'minute', 1).minutes(), 8, 'Add minutes'); + test.equal(a.add(1, 'hour', 1).hours(), 7, 'Add hours'); + test.equal(a.add(1, 'day', 1).date(), 13, 'Add date'); + test.equal(a.add(1, 'week', 1).date(), 20, 'Add week'); + test.equal(a.add(1, 'month', 1).month(), 10, 'Add month'); + test.equal(a.add(1, 'year', 1).year(), 2012, 'Add year'); + test.done(); + }, + + "add string long singular reverse args" : function (test) { + test.expect(8); + + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + test.equal(a.add(50, 'milliseconds').milliseconds(), 550, 'Add milliseconds'); + test.equal(a.add(1, 'seconds').seconds(), 9, 'Add seconds'); + test.equal(a.add(1, 'minutes').minutes(), 8, 'Add minutes'); + test.equal(a.add(1, 'hours').hours(), 7, 'Add hours'); + test.equal(a.add(1, 'days').date(), 13, 'Add date'); + test.equal(a.add(1, 'weeks').date(), 20, 'Add week'); + test.equal(a.add(1, 'months').month(), 10, 'Add month'); + test.equal(a.add(1, 'years').year(), 2012, 'Add year'); + test.done(); + }, + + "add string short reverse args" : function (test) { + test.expect(8); + + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + test.equal(a.add(50, 'ms').milliseconds(), 550, 'Add milliseconds'); + test.equal(a.add(1, 's').seconds(), 9, 'Add seconds'); + test.equal(a.add(1, 'm').minutes(), 8, 'Add minutes'); + test.equal(a.add(1, 'h').hours(), 7, 'Add hours'); + test.equal(a.add(1, 'd').date(), 13, 'Add date'); + test.equal(a.add(1, 'w').date(), 20, 'Add week'); + test.equal(a.add(1, 'M').month(), 10, 'Add month'); + test.equal(a.add(1, 'y').year(), 2012, 'Add year'); + test.done(); + }, + + "add across DST" : function (test) { + // Detect Safari bug and bail. Hours on 13th March 2011 are shifted + // with 1 ahead. + if (new Date(2011, 2, 13, 5, 0, 0).getHours() !== 5) { + test.done(); + return; + } + + var a = moment(new Date(2011, 2, 12, 5, 0, 0)), + b = moment(new Date(2011, 2, 12, 5, 0, 0)), + c = moment(new Date(2011, 2, 12, 5, 0, 0)), + d = moment(new Date(2011, 2, 12, 5, 0, 0)); + a.add('days', 1); + b.add('hours', 24); + c.add('months', 1); + test.equal(a.hours(), 5, 'adding days over DST difference should result in the same hour'); + if (b.isDST() && !d.isDST()) { + test.equal(b.hours(), 6, 'adding hours over DST difference should result in a different hour'); + } else if (!b.isDST() && d.isDST()) { + test.equal(b.hours(), 4, 'adding hours over DST difference should result in a different hour'); + } else { + test.equal(b.hours(), 5, 'adding hours over DST difference should result in a same hour if the timezone does not have daylight savings time'); + } + test.equal(c.hours(), 5, 'adding months over DST difference should result in the same hour'); + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/create.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/create.js new file mode 100755 index 0000000..c0a3a60 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/create.js @@ -0,0 +1,815 @@ +var moment = require("../../moment"); + +var getVerifier = function (test) { + return function (input, format, expected, description, asymetrical) { + var m = moment(input, format); + test.equal(m.format('YYYY MM DD'), expected, 'compare: ' + description); + + //test round trip + if (!asymetrical) { + test.equal(m.format(format), input, 'round trip: ' + description); + } + }; +}; + +exports.create = { + "array" : function (test) { + test.expect(8); + test.ok(moment([2010]).toDate() instanceof Date, "[2010]"); + test.ok(moment([2010, 1]).toDate() instanceof Date, "[2010, 1]"); + test.ok(moment([2010, 1, 12]).toDate() instanceof Date, "[2010, 1, 12]"); + test.ok(moment([2010, 1, 12, 1]).toDate() instanceof Date, "[2010, 1, 12, 1]"); + test.ok(moment([2010, 1, 12, 1, 1]).toDate() instanceof Date, "[2010, 1, 12, 1, 1]"); + test.ok(moment([2010, 1, 12, 1, 1, 1]).toDate() instanceof Date, "[2010, 1, 12, 1, 1, 1]"); + test.ok(moment([2010, 1, 12, 1, 1, 1, 1]).toDate() instanceof Date, "[2010, 1, 12, 1, 1, 1, 1]"); + test.equal(+moment(new Date(2010, 1, 14, 15, 25, 50, 125)), +moment([2010, 1, 14, 15, 25, 50, 125]), "constructing with array === constructing with new Date()"); + test.done(); + }, + + "array copying": function (test) { + var importantArray = [2009, 11]; + test.expect(1); + moment(importantArray); + test.deepEqual(importantArray, [2009, 11], "initializer should not mutate the original array"); + test.done(); + }, + + "object" : function (test) { + test.expect(10); + test.ok(moment({year: 2010}).toDate() instanceof Date, "{year: 2010}"); + test.ok(moment({year: 2010, month: 1}).toDate() instanceof Date, "{year: 2010, month: 1}"); + test.ok(moment({year: 2010, month: 1, day: 12}).toDate() instanceof Date, "{year: 2010, month: 1, day: 12}"); + test.ok(moment({year: 2010, month: 1, day: 12, hours: 1}).toDate() instanceof Date, "{year: 2010, month: 1, day: 12, hours: 1}"); + test.ok(moment({year: 2010, month: 1, day: 12, hours: 1, minutes: 1}).toDate() instanceof Date, "{year: 2010, month: 1, hours: 12, minutes: 1, seconds: 1}"); + test.ok(moment({year: 2010, month: 1, day: 12, hours: 1, minutes: 1, seconds: 1}).toDate() instanceof Date, "{year: 2010, month: 1, day: 12, hours: 1, minutes: 1, seconds: 1}"); + test.ok(moment({year: 2010, month: 1, day: 12, hours: 1, minutes: 1, seconds: 1, milliseconds: 1}).toDate() instanceof Date, "{year: 2010, month: 1, day: 12, hours: 1, minutes: 1, seconds: 1, milliseconds: 1}"); + test.equal(+moment(new Date(2010, 1, 14, 15, 25, 50, 125)), +moment({years: 2010, months: 1, days: 14, hours: 15, minutes: 25, seconds: 50, milliseconds: 125}), "constructing with object (long plural) === constructing with new Date()"); + test.equal(+moment(new Date(2010, 1, 14, 15, 25, 50, 125)), +moment({year: 2010, month: 1, day: 14, hour: 15, minute: 25, second: 50, millisecond: 125}), "constructing with object (long) === constructing with new Date()"); + test.equal(+moment(new Date(2010, 1, 14, 15, 25, 50, 125)), +moment({y: 2010, M: 1, d: 14, h: 15, m: 25, s: 50, ms: 125}), "constructing with object (short) === constructing with new Date()"); + test.done(); + }, + + "multi format array copying": function (test) { + var importantArray = ['MM/DD/YYYY', 'YYYY-MM-DD', 'MM-DD-YYYY']; + test.expect(1); + moment('1999-02-13', importantArray); + test.deepEqual(importantArray, ['MM/DD/YYYY', 'YYYY-MM-DD', 'MM-DD-YYYY'], "initializer should not mutate the original array"); + test.done(); + }, + + "number" : function (test) { + test.expect(3); + test.ok(moment(1000).toDate() instanceof Date, "1000"); + test.ok((moment(1000).valueOf() === 1000), "testing valueOf"); + test.ok((moment.utc(1000).valueOf() === 1000), "testing valueOf"); + test.done(); + }, + + "unix" : function (test) { + test.expect(8); + test.equal(moment.unix(1).valueOf(), 1000, "1 unix timestamp == 1000 Date.valueOf"); + test.equal(moment(1000).unix(), 1, "1000 Date.valueOf == 1 unix timestamp"); + test.equal(moment.unix(1000).valueOf(), 1000000, "1000 unix timestamp == 1000000 Date.valueOf"); + test.equal(moment(1500).unix(), 1, "1500 Date.valueOf == 1 unix timestamp"); + test.equal(moment(1900).unix(), 1, "1900 Date.valueOf == 1 unix timestamp"); + test.equal(moment(2100).unix(), 2, "2100 Date.valueOf == 2 unix timestamp"); + test.equal(moment(1333129333524).unix(), 1333129333, "1333129333524 Date.valueOf == 1333129333 unix timestamp"); + test.equal(moment(1333129333524000).unix(), 1333129333524, "1333129333524000 Date.valueOf == 1333129333524 unix timestamp"); + test.done(); + }, + + "date" : function (test) { + test.expect(1); + test.ok(moment(new Date()).toDate() instanceof Date, "new Date()"); + test.done(); + }, + + "date mutation" : function (test) { + test.expect(1); + var a = new Date(); + test.ok(moment(a).toDate() !== a, "the date moment uses should not be the date passed in"); + test.done(); + }, + + "moment" : function (test) { + test.expect(2); + test.ok(moment(moment()).toDate() instanceof Date, "moment(moment())"); + test.ok(moment(moment(moment())).toDate() instanceof Date, "moment(moment(moment()))"); + test.done(); + }, + + "cloning moment should only copy own properties" : function (test) { + test.expect(2); + test.ok(!moment().clone().hasOwnProperty('month'), "Should not clone prototype methods"); + test.ok(!moment().clone().hasOwnProperty('_lang'), "Should not clone prototype objects"); + test.done(); + }, + + "cloning moment works with weird clones" : function (test) { + var extend = function (a, b) { + var i; + for (i in b) { + a[i] = b[i]; + } + return a; + }, + now = moment(), + nowu = moment.utc(); + + test.expect(2); + test.equal(+extend({}, now).clone(), +now, "cloning extend-ed now is now"); + test.equal(+extend({}, nowu).clone(), +nowu, "cloning extend-ed utc now is utc now"); + test.done(); + }, + + "undefined" : function (test) { + test.expect(1); + test.ok(moment().toDate() instanceof Date, "undefined"); + test.done(); + }, + + "string without format" : function (test) { + test.expect(2); + test.ok(moment("Aug 9, 1995").toDate() instanceof Date, "Aug 9, 1995"); + test.ok(moment("Mon, 25 Dec 1995 13:30:00 GMT").toDate() instanceof Date, "Mon, 25 Dec 1995 13:30:00 GMT"); + test.done(); + }, + + "string without format - json" : function (test) { + test.expect(5); + test.equal(moment("Date(1325132654000)").valueOf(), 1325132654000, "Date(1325132654000)"); + test.equal(moment("Date(-1325132654000)").valueOf(), -1325132654000, "Date(-1325132654000)"); + test.equal(moment("/Date(1325132654000)/").valueOf(), 1325132654000, "/Date(1325132654000)/"); + test.equal(moment("/Date(1325132654000+0700)/").valueOf(), 1325132654000, "/Date(1325132654000+0700)/"); + test.equal(moment("/Date(1325132654000-0700)/").valueOf(), 1325132654000, "/Date(1325132654000-0700)/"); + test.done(); + }, + + "string with format dropped am/pm bug" : function (test) { + moment.lang('en'); + test.expect(6); + + test.equal(moment('05/1/2012 12:25:00', 'MM/DD/YYYY h:m:s a').format('MM/DD/YYYY'), '05/01/2012', 'should not break if am/pm is left off from the parsing tokens'); + test.equal(moment('05/1/2012 12:25:00 am', 'MM/DD/YYYY h:m:s a').format('MM/DD/YYYY'), '05/01/2012', 'should not break if am/pm is left off from the parsing tokens'); + test.equal(moment('05/1/2012 12:25:00 pm', 'MM/DD/YYYY h:m:s a').format('MM/DD/YYYY'), '05/01/2012', 'should not break if am/pm is left off from the parsing tokens'); + + test.ok(moment('05/1/2012 12:25:00', 'MM/DD/YYYY h:m:s a').isValid()); + test.ok(moment('05/1/2012 12:25:00 am', 'MM/DD/YYYY h:m:s a').isValid()); + test.ok(moment('05/1/2012 12:25:00 pm', 'MM/DD/YYYY h:m:s a').isValid()); + + test.done(); + }, + + "empty string with formats" : function (test) { + test.expect(8); + + test.equal(moment('', 'MM').format('YYYY-MM-DD HH:mm:ss'), 'Invalid date'); + test.equal(moment(' ', 'MM').format('YYYY-MM-DD HH:mm:ss'), 'Invalid date'); + test.equal(moment(' ', 'DD').format('YYYY-MM-DD HH:mm:ss'), 'Invalid date'); + test.equal(moment(' ', ['MM', "DD"]).format('YYYY-MM-DD HH:mm:ss'), 'Invalid date'); + + test.ok(!moment('', 'MM').isValid()); + test.ok(!moment(' ', 'MM').isValid()); + test.ok(!moment(' ', 'DD').isValid()); + test.ok(!moment(' ', ['MM', "DD"]).isValid()); + + test.done(); + }, + + "defaulting to current date" : function (test) { + test.expect(4); + + var now = moment(); + test.equal(moment('12:13:14', 'hh:mm:ss').format('YYYY-MM-DD hh:mm:ss'), + now.clone().hour(12).minute(13).second(14).format('YYYY-MM-DD hh:mm:ss'), + 'given only time default to current date'); + test.equal(moment('05', 'DD').format('YYYY-MM-DD'), + now.clone().date(5).format('YYYY-MM-DD'), + 'given day of month default to current month, year'); + test.equal(moment('05', 'MM').format('YYYY-MM-DD'), + now.clone().month(4).date(1).format('YYYY-MM-DD'), + 'given month default to current year'); + test.equal(moment('1996', 'YYYY').format('YYYY-MM-DD'), + now.clone().year(1996).month(0).date(1).format('YYYY-MM-DD'), + 'given year do not default'); + test.done(); + }, + + "matching am/pm" : function (test) { + test.expect(13); + + test.equal(moment('2012-09-03T03:00PM', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for PM'); + test.equal(moment('2012-09-03T03:00P.M.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for P.M.'); + test.equal(moment('2012-09-03T03:00P', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for P'); + test.equal(moment('2012-09-03T03:00pm', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for pm'); + test.equal(moment('2012-09-03T03:00p.m.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for p.m.'); + test.equal(moment('2012-09-03T03:00p', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for p'); + + test.equal(moment('2012-09-03T03:00AM', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for AM'); + test.equal(moment('2012-09-03T03:00A.M.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for A.M.'); + test.equal(moment('2012-09-03T03:00A', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for A'); + test.equal(moment('2012-09-03T03:00am', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for am'); + test.equal(moment('2012-09-03T03:00a.m.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for a.m.'); + test.equal(moment('2012-09-03T03:00a', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for a'); + + test.equal(moment('5:00p.m.March 4 2012', 'h:mmAMMMM D YYYY').format('YYYY-MM-DDThh:mmA'), '2012-03-04T05:00PM', 'am/pm should parse correctly before month names'); + + test.done(); + }, + + "string with format" : function (test) { + moment.lang('en'); + var a = [ + ['MM-DD-YYYY', '12-02-1999'], + ['DD-MM-YYYY', '12-02-1999'], + ['DD/MM/YYYY', '12/02/1999'], + ['DD_MM_YYYY', '12_02_1999'], + ['DD:MM:YYYY', '12:02:1999'], + ['D-M-YY', '2-2-99'], + ['YY', '99'], + ['DDD-YYYY', '300-1999'], + ['DD-MM-YYYY h:m:s', '12-02-1999 2:45:10'], + ['DD-MM-YYYY h:m:s a', '12-02-1999 2:45:10 am'], + ['DD-MM-YYYY h:m:s a', '12-02-1999 2:45:10 pm'], + ['h:mm a', '12:00 pm'], + ['h:mm a', '12:30 pm'], + ['h:mm a', '12:00 am'], + ['h:mm a', '12:30 am'], + ['HH:mm', '12:00'], + ['YYYY-MM-DDTHH:mm:ss', '2011-11-11T11:11:11'], + ['MM-DD-YYYY [M]', '12-02-1999 M'], + ['ddd MMM DD HH:mm:ss YYYY', 'Tue Apr 07 22:52:51 2009'], + ['HH:mm:ss', '12:00:00'], + ['HH:mm:ss', '12:30:00'], + ['HH:mm:ss', '00:00:00'], + ['HH:mm:ss S', '00:30:00 1'], + ['HH:mm:ss SS', '00:30:00 12'], + ['HH:mm:ss SSS', '00:30:00 123'], + ['HH:mm:ss S', '00:30:00 7'], + ['HH:mm:ss SS', '00:30:00 78'], + ['HH:mm:ss SSS', '00:30:00 789'], + ['X', '1234567890'], + ['LT', '12:30 AM'], + ['L', '09/02/1999'], + ['l', '9/2/1999'], + ['LL', 'September 2 1999'], + ['ll', 'Sep 2 1999'], + ['LLL', 'September 2 1999 12:30 AM'], + ['lll', 'Sep 2 1999 12:30 AM'], + ['LLLL', 'Thursday, September 2 1999 12:30 AM'], + ['llll', 'Thu, Sep 2 1999 12:30 AM'] + ], + m, + i; + + test.expect(2 * a.length); + for (i = 0; i < a.length; i++) { + m = moment(a[i][1], a[i][0]); + test.ok(m.isValid()); + test.equal(m.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + test.done(); + }, + + "unix timestamp format" : function (test) { + var formats = ['X', 'X.S', 'X.SS', 'X.SSS'], i, format; + + test.expect(formats.length * 4); + for (i = 0; i < formats.length; i++) { + format = formats[i]; + test.equal(moment('1234567890', format).valueOf(), 1234567890 * 1000, format + " matches timestamp without milliseconds"); + test.equal(moment('1234567890.1', format).valueOf(), 1234567890 * 1000 + 100, format + " matches timestamp with deciseconds"); + test.equal(moment('1234567890.12', format).valueOf(), 1234567890 * 1000 + 120, format + " matches timestamp with centiseconds"); + test.equal(moment('1234567890.123', format).valueOf(), 1234567890 * 1000 + 123, format + " matches timestamp with milliseconds"); + } + + test.done(); + }, + + "milliseconds format" : function (test) { + test.expect(5); + test.equal(moment('1', 'S').get('ms'), 100, 'deciseconds'); + // test.equal(moment('10', 'S', true).isValid(), false, 'deciseconds with two digits'); + // test.equal(moment('1', 'SS', true).isValid(), false, 'centiseconds with one digits'); + test.equal(moment('12', 'SS').get('ms'), 120, 'centiseconds'); + // test.equal(moment('123', 'SS', true).isValid(), false, 'centiseconds with three digits'); + test.equal(moment('123', 'SSS').get('ms'), 123, 'milliseconds'); + test.equal(moment('1234', 'SSSS').get('ms'), 123, 'milliseconds with SSSS'); + test.equal(moment('123456789101112', 'SSSS').get('ms'), 123, 'milliseconds with SSSS'); + test.done(); + }, + + "string with format no separators" : function (test) { + moment.lang('en'); + var a = [ + ['MMDDYYYY', '12021999'], + ['DDMMYYYY', '12021999'], + ['YYYYMMDD', '19991202'], + ['DDMMMYYYY', '10Sep2001'] + ], i; + + test.expect(a.length); + + for (i = 0; i < a.length; i++) { + test.equal(moment(a[i][1], a[i][0]).format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + + test.done(); + }, + + "string with format (timezone)" : function (test) { + test.expect(8); + test.equal(moment('5 -0700', 'H ZZ').toDate().getUTCHours(), 12, 'parse hours "5 -0700" ---> "H ZZ"'); + test.equal(moment('5 -07:00', 'H Z').toDate().getUTCHours(), 12, 'parse hours "5 -07:00" ---> "H Z"'); + test.equal(moment('5 -0730', 'H ZZ').toDate().getUTCMinutes(), 30, 'parse hours "5 -0730" ---> "H ZZ"'); + test.equal(moment('5 -07:30', 'H Z').toDate().getUTCMinutes(), 30, 'parse hours "5 -07:0" ---> "H Z"'); + test.equal(moment('5 +0100', 'H ZZ').toDate().getUTCHours(), 4, 'parse hours "5 +0100" ---> "H ZZ"'); + test.equal(moment('5 +01:00', 'H Z').toDate().getUTCHours(), 4, 'parse hours "5 +01:00" ---> "H Z"'); + test.equal(moment('5 +0130', 'H ZZ').toDate().getUTCMinutes(), 30, 'parse hours "5 +0130" ---> "H ZZ"'); + test.equal(moment('5 +01:30', 'H Z').toDate().getUTCMinutes(), 30, 'parse hours "5 +01:30" ---> "H Z"'); + test.done(); + }, + + "string with format (timezone offset)" : function (test) { + var a, b, c, d, e, f; + test.expect(4); + a = new Date(Date.UTC(2011, 0, 1, 1)); + b = moment('2011 1 1 0 -01:00', 'YYYY MM DD HH Z'); + test.equal(a.getHours(), b.hours(), 'date created with utc == parsed string with timezone offset'); + test.equal(+a, +b, 'date created with utc == parsed string with timezone offset'); + c = moment('2011 2 1 10 -05:00', 'YYYY MM DD HH Z'); + d = moment('2011 2 1 8 -07:00', 'YYYY MM DD HH Z'); + test.equal(c.hours(), d.hours(), '10 am central time == 8 am pacific time'); + e = moment.utc('Fri, 20 Jul 2012 17:15:00', 'ddd, DD MMM YYYY HH:mm:ss'); + f = moment.utc('Fri, 20 Jul 2012 10:15:00 -0700', 'ddd, DD MMM YYYY HH:mm:ss ZZ'); + test.equal(e.hours(), f.hours(), 'parse timezone offset in utc'); + test.done(); + }, + + "string with array of formats" : function (test) { + + test.equal(moment('11-02-1999', ['MM-DD-YYYY', 'DD-MM-YYYY']).format('MM DD YYYY'), '11 02 1999', 'switching month and day'); + test.equal(moment('02-11-1999', ['MM/DD/YYYY', 'YYYY MM DD', 'MM-DD-YYYY']).format('MM DD YYYY'), '02 11 1999', 'year last'); + test.equal(moment('1999-02-11', ['MM/DD/YYYY', 'YYYY MM DD', 'MM-DD-YYYY']).format('MM DD YYYY'), '02 11 1999', 'year first'); + + test.equal(moment('02-11-1999', ['MM/DD/YYYY', 'YYYY MM DD']).format('MM DD YYYY'), '02 11 1999', 'year last'); + test.equal(moment('1999-02-11', ['MM/DD/YYYY', 'YYYY MM DD']).format('MM DD YYYY'), '02 11 1999', 'year first'); + test.equal(moment('02-11-1999', ['YYYY MM DD', 'MM/DD/YYYY']).format('MM DD YYYY'), '02 11 1999', 'year last'); + test.equal(moment('1999-02-11', ['YYYY MM DD', 'MM/DD/YYYY']).format('MM DD YYYY'), '02 11 1999', 'year first'); + + test.equal(moment('13-11-1999', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), '11 13 1999', 'second must be month'); + test.equal(moment('11-13-1999', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), '11 13 1999', 'first must be month'); + test.equal(moment('01-02-2000', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), '01 02 2000', 'either can be a month, month first format'); + test.equal(moment('02-01-2000', ['DD/MM/YYYY', 'MM/DD/YYYY']).format('MM DD YYYY'), '01 02 2000', 'either can be a month, day first format'); + + test.equal(moment('11-02-10', ['MM/DD/YY', 'YY MM DD', 'DD-MM-YY']).format('MM DD YYYY'), '02 11 2010', 'all unparsed substrings have influence on format penalty'); + test.equal(moment('11-02-10', ['MM-DD-YY HH:mm', 'YY MM DD']).format('MM DD YYYY'), '02 10 2011', 'prefer formats without extra tokens'); + test.equal(moment('11-02-10 junk', ['MM-DD-YY', 'YY.MM.DD junk']).format('MM DD YYYY'), '02 10 2011', 'prefer formats that dont result in extra characters'); + test.equal(moment('11-22-10', ['YY-MM-DD', 'YY-DD-MM']).format('MM DD YYYY'), '10 22 2011', 'prefer valid results'); + + test.equal(moment('gibberish', ['YY-MM-DD', 'YY-DD-MM']).format('MM DD YYYY'), 'Invalid date', 'doest throw for invalid strings'); + test.equal(moment('gibberish', []).format('MM DD YYYY'), 'Invalid date', 'doest throw for an empty array'); + + //https://github.com/moment/moment/issues/1143 + test.equal(moment( + "System Administrator and Database Assistant (7/1/2011), System Administrator and Database Assistant (7/1/2011), Database Coordinator (7/1/2011), Vice President (7/1/2011), System Administrator and Database Assistant (5/31/2012), Database Coordinator (7/1/2012), System Administrator and Database Assistant (7/1/2013)", + ["MM/DD/YYYY", "MM-DD-YYYY", "YYYY-MM-DD", "YYYY-MM-DDTHH:mm:ssZ"]) + .format('YYYY-MM-DD'), '2011-07-01', 'Works for long strings'); + + test.equal(moment('11-02-10', ['MM.DD.YY', 'DD-MM-YY']).format('MM DD YYYY'), '02 11 2010', 'escape RegExp special characters on comparing'); + + test.equal(moment('13-10-98', ['DD MM YY', 'DD MM YYYY'])._f, 'DD MM YY', 'use two digit year'); + test.equal(moment('13-10-1998', ['DD MM YY', 'DD MM YYYY'])._f, 'DD MM YYYY', 'use four digit year'); + + test.equal(moment('01', ["MM", "DD"])._f, "MM", "Should use first valid format"); + + test.done(); + }, + + "string with format - years" : function (test) { + test.expect(4); + test.equal(moment('67', 'YY').format('YYYY'), '2067', '67 > 2067'); + test.equal(moment('68', 'YY').format('YYYY'), '2068', '68 > 2068'); + test.equal(moment('69', 'YY').format('YYYY'), '1969', '69 > 1969'); + test.equal(moment('70', 'YY').format('YYYY'), '1970', '70 > 1970'); + test.done(); + }, + + "implicit cloning" : function (test) { + test.expect(2); + var momentA = moment([2011, 10, 10]), + momentB = moment(momentA); + momentA.month(5); + test.equal(momentB.month(), 10, "Calling moment() on a moment will create a clone"); + test.equal(momentA.month(), 5, "Calling moment() on a moment will create a clone"); + test.done(); + }, + + "explicit cloning" : function (test) { + test.expect(2); + var momentA = moment([2011, 10, 10]), + momentB = momentA.clone(); + momentA.month(5); + test.equal(momentB.month(), 10, "Calling moment() on a moment will create a clone"); + test.equal(momentA.month(), 5, "Calling moment() on a moment will create a clone"); + test.done(); + }, + + "cloning carrying over utc mode" : function (test) { + test.expect(8); + + test.equal(moment().local().clone()._isUTC, false, "An explicit cloned local moment should have _isUTC == false"); + test.equal(moment().utc().clone()._isUTC, true, "An cloned utc moment should have _isUTC == true"); + test.equal(moment().clone()._isUTC, false, "An explicit cloned local moment should have _isUTC == false"); + test.equal(moment.utc().clone()._isUTC, true, "An explicit cloned utc moment should have _isUTC == true"); + test.equal(moment(moment().local())._isUTC, false, "An implicit cloned local moment should have _isUTC == false"); + test.equal(moment(moment().utc())._isUTC, true, "An implicit cloned utc moment should have _isUTC == true"); + test.equal(moment(moment())._isUTC, false, "An implicit cloned local moment should have _isUTC == false"); + test.equal(moment(moment.utc())._isUTC, true, "An implicit cloned utc moment should have _isUTC == true"); + + test.done(); + }, + + "parsing iso" : function (test) { + var offset = moment([2011, 9, 08]).zone(), + pad = function (input) { + if (input < 10) { + return '0' + input; + } + return '' + input; + }, + hourOffset = (offset > 0) ? Math.floor(offset / 60) : Math.ceil(offset / 60), + minOffset = offset - (hourOffset * 60), + tz = (offset > 0) ? '-' + pad(hourOffset) + ':' + pad(minOffset) : '+' + pad(-hourOffset) + ':' + pad(-minOffset), + tz2 = tz.replace(':', ''), + tz3 = tz2.slice(0, 3), + formats = [ + ['2011-10-08', '2011-10-08T00:00:00.000' + tz], + ['2011-10-08T18', '2011-10-08T18:00:00.000' + tz], + ['2011-10-08T18:04', '2011-10-08T18:04:00.000' + tz], + ['2011-10-08T18:04:20', '2011-10-08T18:04:20.000' + tz], + ['2011-10-08T18:04' + tz, '2011-10-08T18:04:00.000' + tz], + ['2011-10-08T18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], + ['2011-10-08T18:04' + tz2, '2011-10-08T18:04:00.000' + tz], + ['2011-10-08T18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], + ['2011-10-08T18:04' + tz3, '2011-10-08T18:04:00.000' + tz], + ['2011-10-08T18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz], + ['2011-10-08T18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['2011-10-08T18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['2011-10-08T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], + ['2011-10-08 18', '2011-10-08T18:00:00.000' + tz], + ['2011-10-08 18:04', '2011-10-08T18:04:00.000' + tz], + ['2011-10-08 18:04:20', '2011-10-08T18:04:20.000' + tz], + ['2011-10-08 18:04' + tz, '2011-10-08T18:04:00.000' + tz], + ['2011-10-08 18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], + ['2011-10-08 18:04' + tz2, '2011-10-08T18:04:00.000' + tz], + ['2011-10-08 18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], + ['2011-10-08 18:04' + tz3, '2011-10-08T18:04:00.000' + tz], + ['2011-10-08 18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz], + ['2011-10-08 18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['2011-10-08 18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['2011-10-08 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], + ['2011-W40', '2011-10-03T00:00:00.000' + tz], + ['2011-W40-6', '2011-10-08T00:00:00.000' + tz], + ['2011-W40-6T18', '2011-10-08T18:00:00.000' + tz], + ['2011-W40-6T18:04', '2011-10-08T18:04:00.000' + tz], + ['2011-W40-6T18:04:20', '2011-10-08T18:04:20.000' + tz], + ['2011-W40-6T18:04' + tz, '2011-10-08T18:04:00.000' + tz], + ['2011-W40-6T18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], + ['2011-W40-6T18:04' + tz2, '2011-10-08T18:04:00.000' + tz], + ['2011-W40-6T18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], + ['2011-W40-6T18:04' + tz3, '2011-10-08T18:04:00.000' + tz], + ['2011-W40-6T18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz], + ['2011-W40-6T18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['2011-W40-6T18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['2011-W40-6T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], + ['2011-W40-6 18', '2011-10-08T18:00:00.000' + tz], + ['2011-W40-6 18:04', '2011-10-08T18:04:00.000' + tz], + ['2011-W40-6 18:04:20', '2011-10-08T18:04:20.000' + tz], + ['2011-W40-6 18:04' + tz, '2011-10-08T18:04:00.000' + tz], + ['2011-W40-6 18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], + ['2011-W40-6 18:04' + tz2, '2011-10-08T18:04:00.000' + tz], + ['2011-W40-6 18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], + ['2011-W40-6 18:04' + tz3, '2011-10-08T18:04:00.000' + tz], + ['2011-W40-6 18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz], + ['2011-W40-6 18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['2011-W40-6 18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['2011-W40-6 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], + ['2011-281', '2011-10-08T00:00:00.000' + tz], + ['2011-281T18', '2011-10-08T18:00:00.000' + tz], + ['2011-281T18:04', '2011-10-08T18:04:00.000' + tz], + ['2011-281T18:04:20', '2011-10-08T18:04:20.000' + tz], + ['2011-281T18:04' + tz, '2011-10-08T18:04:00.000' + tz], + ['2011-281T18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], + ['2011-281T18:04' + tz2, '2011-10-08T18:04:00.000' + tz], + ['2011-281T18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], + ['2011-281T18:04' + tz3, '2011-10-08T18:04:00.000' + tz], + ['2011-281T18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz], + ['2011-281T18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['2011-281T18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['2011-281T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], + ['2011-281 18', '2011-10-08T18:00:00.000' + tz], + ['2011-281 18:04', '2011-10-08T18:04:00.000' + tz], + ['2011-281 18:04:20', '2011-10-08T18:04:20.000' + tz], + ['2011-281 18:04' + tz, '2011-10-08T18:04:00.000' + tz], + ['2011-281 18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], + ['2011-281 18:04' + tz2, '2011-10-08T18:04:00.000' + tz], + ['2011-281 18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], + ['2011-281 18:04' + tz3, '2011-10-08T18:04:00.000' + tz], + ['2011-281 18:04:20' + tz3, '2011-10-08T18:04:20.000' + tz], + ['2011-281 18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['2011-281 18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['2011-281 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz] + ], i; + test.expect(formats.length); + for (i = 0; i < formats.length; i++) { + test.equal(moment(formats[i][0]).format('YYYY-MM-DDTHH:mm:ss.SSSZ'), formats[i][1], "moment should be able to parse ISO " + formats[i][0]); + } + test.done(); + }, + + "parsing ISO with Z" : function (test) { + var i, mom, formats = [ + ['2011-10-08T18:04', '2011-10-08T18:04:00.000'], + ['2011-10-08T18:04:20', '2011-10-08T18:04:20.000'], + ['2011-10-08T18:04:20.1', '2011-10-08T18:04:20.100'], + ['2011-10-08T18:04:20.11', '2011-10-08T18:04:20.110'], + ['2011-10-08T18:04:20.111', '2011-10-08T18:04:20.111'], + ['2011-W40-6T18', '2011-10-08T18:00:00.000'], + ['2011-W40-6T18:04', '2011-10-08T18:04:00.000'], + ['2011-W40-6T18:04:20', '2011-10-08T18:04:20.000'], + ['2011-W40-6T18:04:20.1', '2011-10-08T18:04:20.100'], + ['2011-W40-6T18:04:20.11', '2011-10-08T18:04:20.110'], + ['2011-W40-6T18:04:20.111', '2011-10-08T18:04:20.111'], + ['2011-281T18', '2011-10-08T18:00:00.000'], + ['2011-281T18:04', '2011-10-08T18:04:00.000'], + ['2011-281T18:04:20', '2011-10-08T18:04:20.000'], + ['2011-281T18:04:20', '2011-10-08T18:04:20.000'], + ['2011-281T18:04:20.1', '2011-10-08T18:04:20.100'], + ['2011-281T18:04:20.11', '2011-10-08T18:04:20.110'], + ['2011-281T18:04:20.111', '2011-10-08T18:04:20.111'] + ]; + + for (i = 0; i < formats.length; i++) { + mom = moment(formats[i][0] + 'Z').utc(); + test.equal(mom.format('YYYY-MM-DDTHH:mm:ss.SSS'), formats[i][1], "moment should be able to parse ISO in UTC " + formats[i][0] + 'Z'); + + mom = moment(formats[i][0] + ' Z').utc(); + test.equal(mom.format('YYYY-MM-DDTHH:mm:ss.SSS'), formats[i][1], "moment should be able to parse ISO in UTC " + formats[i][0] + ' Z'); + } + test.done(); + }, + + "parsing iso with T" : function (test) { + test.expect(8); + + test.equal(moment('2011-10-08T18')._f, "YYYY-MM-DDTHH", "should include 'T' in the format"); + test.equal(moment('2011-10-08T18:20')._f, "YYYY-MM-DDTHH:mm", "should include 'T' in the format"); + test.equal(moment('2011-10-08T18:20:13')._f, "YYYY-MM-DDTHH:mm:ss", "should include 'T' in the format"); + test.equal(moment('2011-10-08T18:20:13.321')._f, "YYYY-MM-DDTHH:mm:ss.SSSS", "should include 'T' in the format"); + + test.equal(moment('2011-10-08 18')._f, "YYYY-MM-DD HH", "should not include 'T' in the format"); + test.equal(moment('2011-10-08 18:20')._f, "YYYY-MM-DD HH:mm", "should not include 'T' in the format"); + test.equal(moment('2011-10-08 18:20:13')._f, "YYYY-MM-DD HH:mm:ss", "should not include 'T' in the format"); + test.equal(moment('2011-10-08 18:20:13.321')._f, "YYYY-MM-DD HH:mm:ss.SSSS", "should not include 'T' in the format"); + + test.done(); + }, + + "parsing iso Z timezone" : function (test) { + var i, + formats = [ + ['2011-10-08T18:04Z', '2011-10-08T18:04:00.000+00:00'], + ['2011-10-08T18:04:20Z', '2011-10-08T18:04:20.000+00:00'], + ['2011-10-08T18:04:20.111Z', '2011-10-08T18:04:20.111+00:00'] + ]; + test.expect(formats.length); + for (i = 0; i < formats.length; i++) { + test.equal(moment.utc(formats[i][0]).format('YYYY-MM-DDTHH:mm:ss.SSSZ'), formats[i][1], "moment should be able to parse ISO " + formats[i][0]); + } + test.done(); + }, + + "parsing iso Z timezone into local" : function (test) { + test.expect(1); + + var m = moment('2011-10-08T18:04:20.111Z'); + + test.equal(m.utc().format('YYYY-MM-DDTHH:mm:ss.SSS'), '2011-10-08T18:04:20.111', "moment should be able to parse ISO 2011-10-08T18:04:20.111Z"); + + test.done(); + }, + + "null or empty" : function (test) { + test.expect(8); + test.equal(moment('').isValid(), false, "moment('') is not valid"); + test.equal(moment(null).isValid(), false, "moment(null) is not valid"); + test.equal(moment(null, 'YYYY-MM-DD').isValid(), false, "moment('', 'format') is not valid"); + test.equal(moment('', 'YYYY-MM-DD').isValid(), false, "moment('', 'format') is not valid"); + test.equal(moment.utc('').isValid(), false, "moment.utc('') is not valid"); + test.equal(moment.utc(null).isValid(), false, "moment.utc(null) is not valid"); + test.equal(moment.utc(null, 'YYYY-MM-DD').isValid(), false, "moment.utc(null) is not valid"); + test.equal(moment.utc('', 'YYYY-MM-DD').isValid(), false, "moment.utc('', 'YYYY-MM-DD') is not valid"); + test.done(); + }, + + "first century" : function (test) { + test.expect(9); + test.equal(moment([0, 0, 1]).format("YYYY-MM-DD"), "0000-01-01", "Year AD 0"); + test.equal(moment([99, 0, 1]).format("YYYY-MM-DD"), "0099-01-01", "Year AD 99"); + test.equal(moment([999, 0, 1]).format("YYYY-MM-DD"), "0999-01-01", "Year AD 999"); + test.equal(moment('0 1 1', 'YYYY MM DD').format("YYYY-MM-DD"), "0000-01-01", "Year AD 0"); + test.equal(moment('99 1 1', 'YYYY MM DD').format("YYYY-MM-DD"), "0099-01-01", "Year AD 99"); + test.equal(moment('999 1 1', 'YYYY MM DD').format("YYYY-MM-DD"), "0999-01-01", "Year AD 999"); + test.equal(moment('0 1 1', 'YYYYY MM DD').format("YYYYY-MM-DD"), "00000-01-01", "Year AD 0"); + test.equal(moment('99 1 1', 'YYYYY MM DD').format("YYYYY-MM-DD"), "00099-01-01", "Year AD 99"); + test.equal(moment('999 1 1', 'YYYYY MM DD').format("YYYYY-MM-DD"), "00999-01-01", "Year AD 999"); + test.done(); + }, + + "six digit years" : function (test) { + test.expect(8); + test.equal(moment([-270000, 0, 1]).format("YYYYY-MM-DD"), "-270000-01-01", "format BC 270,001"); + test.equal(moment([ 270000, 0, 1]).format("YYYYY-MM-DD"), "270000-01-01", "format AD 270,000"); + test.equal(moment("-270000-01-01", "YYYYY-MM-DD").toDate().getFullYear(), -270000, "parse BC 270,001"); + test.equal(moment("270000-01-01", "YYYYY-MM-DD").toDate().getFullYear(), 270000, "parse AD 270,000"); + test.equal(moment("+270000-01-01", "YYYYY-MM-DD").toDate().getFullYear(), 270000, "parse AD +270,000"); + test.equal(moment.utc("-270000-01-01", "YYYYY-MM-DD").toDate().getUTCFullYear(), -270000, "parse utc BC 270,001"); + test.equal(moment.utc("270000-01-01", "YYYYY-MM-DD").toDate().getUTCFullYear(), 270000, "parse utc AD 270,000"); + test.equal(moment.utc("+270000-01-01", "YYYYY-MM-DD").toDate().getUTCFullYear(), 270000, "parse utc AD +270,000"); + test.done(); + }, + + "negative four digit years" : function (test) { + test.expect(2); + test.equal(moment("-1000-01-01", "YYYYY-MM-DD").toDate().getFullYear(), -1000, "parse BC 1,001"); + test.equal(moment.utc("-1000-01-01", "YYYYY-MM-DD").toDate().getUTCFullYear(), -1000, "parse utc BC 1,001"); + test.done(); + }, + + "strict parsing" : function (test) { + test.equal(moment("2012-05", "YYYY-MM", true).format("YYYY-MM"), "2012-05", "parse correct string"); + test.equal(moment(" 2012-05", "YYYY-MM", true).isValid(), false, "fail on extra whitespace"); + test.equal(moment("foo 2012-05", "[foo] YYYY-MM", true).format('YYYY-MM'), "2012-05", "handle fixed text"); + test.equal(moment("2012 05", "YYYY-MM", true).isValid(), false, "fail on different separator"); + test.equal(moment("2012 05", "YYYY MM DD", true).isValid(), false, "fail on too many tokens"); + + test.equal(moment("05 30 2010", ["DD MM YYYY", "MM DD YYYY"], true).format("MM DD YYYY"), "05 30 2010", "array with bad date"); + test.equal(moment("05 30 2010", ["", "MM DD YYYY"], true).format("MM DD YYYY"), "05 30 2010", "array with invalid format"); + test.equal(moment("05 30 2010", [" DD MM YYYY", "MM DD YYYY"], true).format("MM DD YYYY"), "05 30 2010", "array with non-matching format"); + + test.equal(moment("2010.*...", "YYYY.*", true).isValid(), false, "invalid format with regex chars"); + test.equal(moment("2010.*", "YYYY.*", true).year(), 2010, "valid format with regex chars"); + test.equal(moment(".*2010.*", ".*YYYY.*", true).year(), 2010, "valid format with regex chars on both sides"); + + //strict tokens + test.equal(moment("-5-05-25", 'YYYY-MM-DD', true).isValid(), false, "invalid negative year"); + test.equal(moment("2-05-25", 'YYYY-MM-DD', true).isValid(), false, "invalid one-digit year"); + test.equal(moment("20-05-25", 'YYYY-MM-DD', true).isValid(), false, "invalid two-digit year"); + test.equal(moment("201-05-25", 'YYYY-MM-DD', true).isValid(), false, "invalid three-digit year"); + test.equal(moment("2010-05-25", 'YYYY-MM-DD', true).isValid(), true, "valid four-digit year"); + test.equal(moment("22010-05-25", 'YYYY-MM-DD', true).isValid(), false, "invalid five-digit year"); + + test.equal(moment("12-05-25", 'YY-MM-DD', true).isValid(), true, "valid two-digit year"); + test.equal(moment("2012-05-25", 'YY-MM-DD', true).isValid(), false, "invalid four-digit year"); + + test.equal(moment("-5-05-25", 'Y-MM-DD', true).isValid(), true, "valid negative year"); + test.equal(moment("2-05-25", 'Y-MM-DD', true).isValid(), true, "valid one-digit year"); + test.equal(moment("20-05-25", 'Y-MM-DD', true).isValid(), true, "valid two-digit year"); + test.equal(moment("201-05-25", 'Y-MM-DD', true).isValid(), true, "valid three-digit year"); + + test.equal(moment("2012-5-25", 'YYYY-M-DD', true).isValid(), true, "valid one-digit month"); + test.equal(moment("2012-5-25", 'YYYY-MM-DD', true).isValid(), false, "invalid one-digit month"); + test.equal(moment("2012-05-25", 'YYYY-M-DD', true).isValid(), true, "valid one-digit month"); + test.equal(moment("2012-05-25", 'YYYY-MM-DD', true).isValid(), true, "valid one-digit month"); + + test.equal(moment("2012-05-2", 'YYYY-MM-D', true).isValid(), true, "valid one-digit day"); + test.equal(moment("2012-05-2", 'YYYY-MM-DD', true).isValid(), false, "invalid one-digit day"); + test.equal(moment("2012-05-02", 'YYYY-MM-D', true).isValid(), true, "valid two-digit day"); + test.equal(moment("2012-05-02", 'YYYY-MM-DD', true).isValid(), true, "valid two-digit day"); + + test.equal(moment("+002012-05-25", 'YYYYY-MM-DD', true).isValid(), true, "valid six-digit year"); + test.equal(moment("+2012-05-25", 'YYYYY-MM-DD', true).isValid(), false, "invalid four-digit year"); + + //thse are kinda pointless, but they should work as expected + test.equal(moment("1", 'S', true).isValid(), true, "valid one-digit milisecond"); + test.equal(moment("12", 'S', true).isValid(), false, "invalid two-digit milisecond"); + test.equal(moment("123", 'S', true).isValid(), false, "invalid three-digit milisecond"); + + test.equal(moment("1", 'SS', true).isValid(), false, "invalid one-digit milisecond"); + test.equal(moment("12", 'SS', true).isValid(), true, "valid two-digit milisecond"); + test.equal(moment("123", 'SS', true).isValid(), false, "invalid three-digit milisecond"); + + test.equal(moment("1", 'SSS', true).isValid(), false, "invalid one-digit milisecond"); + test.equal(moment("12", 'SSS', true).isValid(), false, "invalid two-digit milisecond"); + test.equal(moment("123", 'SSS', true).isValid(), true, "valid three-digit milisecond"); + + test.done(); + }, + + "parsing into a language" : function (test) { + test.expect(2); + + moment.lang('parselang', { + months : "one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve".split('_'), + monthsShort : "one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve".split("_") + }); + + moment.lang('en'); + + test.equal(moment('2012 seven', 'YYYY MMM', 'parselang').month(), 6, "should be able to parse in a specific language"); + + moment.lang('parselang'); + + test.equal(moment('2012 july', 'YYYY MMM', 'en').month(), 6, "should be able to parse in a specific language"); + + moment.lang('parselang', null); + test.done(); + }, + + "parsing week and weekday information" : function (test) { + var ver = getVerifier(test); + + //year + ver('12', 'gg', "2012 01 01", 'week-year two digits'); + ver('2012', 'gggg', "2012 01 01", 'week-year four digits'); + + ver('99', 'gg', "1998 12 27", 'week-year two digits previous year'); + ver('1999', 'gggg', "1998 12 27", 'week-year four digits previous year'); + + ver('99', 'GG', "1999 01 04", 'iso week-year two digits'); + ver('1999', 'GGGG', "1999 01 04", 'iso week-year four digits'); + + ver('13', 'GG', "2012 12 31", 'iso week-year two digits previous year'); + ver('2013', 'GGGG', "2012 12 31", 'iso week-year four digits previous year'); + + //yer + week + ver('1999 37', 'gggg w', "1999 09 05", 'week'); + ver('1999 37', 'gggg ww', "1999 09 05", 'week double'); + ver('1999 37', 'GGGG W', "1999 09 13", 'iso week'); + ver('1999 37', 'GGGG WW', "1999 09 13", 'iso week double'); + + ver('1999 37 4', 'GGGG WW E', "1999 09 16", 'iso day'); + ver('1999 37 04', 'GGGG WW E', "1999 09 16", 'iso day wide', true); + + ver('1999 37 4', 'gggg ww e', "1999 09 09", 'day'); + ver('1999 37 04', 'gggg ww e', "1999 09 09", 'day wide', true); + + //yer + week + day + ver('1999 37 4', 'gggg ww d', "1999 09 09", 'd'); + ver('1999 37 Th', 'gggg ww dd', "1999 09 09", 'dd'); + ver('1999 37 Thu', 'gggg ww ddd', "1999 09 09", 'ddd'); + ver('1999 37 Thursday', 'gggg ww dddd', "1999 09 09", 'dddd'); + + //lower-order only + test.equal(moment('22', 'ww').week(), 22, "week sets the week by itself"); + test.equal(moment('22', 'ww').weekYear(), moment().weekYear(), "week keeps this year"); + test.equal(moment('2012 22', 'YYYY ww').weekYear(), 2012, "week keeps parsed year"); + + test.equal(moment('22', 'WW').isoWeek(), 22, "iso week sets the week by itself"); + test.equal(moment('2012 22', 'YYYY WW').weekYear(), 2012, "iso week keeps parsed year"); + test.equal(moment('22', 'WW').weekYear(), moment().weekYear(), "iso week keeps this year"); + + //order + ver('6 2013 2', 'e gggg w', "2013 01 12", "order doesn't matter"); + ver('6 2013 2', 'E GGGG W', "2013 01 12", "iso order doesn't matter"); + + //can parse other stuff too + test.equal(moment('1999-W37-4 3:30', 'GGGG-[W]WW-E HH:mm').format('YYYY MM DD HH:mm'), '1999 09 16 03:30', "parsing weeks and hours"); + + // In safari, all years before 1300 are shifted back with one day. + // http://stackoverflow.com/questions/20768975/safari-subtracts-1-day-from-dates-before-1300 + if (new Date("1300-01-01").getUTCFullYear() === 1300) { + // Years less than 100 + ver('0098-06', 'GGGG-WW', "0098 02 03", "small years work", true); + } + + test.done(); + }, + + 'parsing localized weekdays' : function (test) { + var ver = getVerifier(test); + try { + moment.lang('fr'); //french uses doy = 4, dow = 1 + ver('1999 37 4', 'GGGG WW E', "1999 09 16", 'iso ignores language'); + ver('1999 37 7', 'GGGG WW E', "1999 09 19", 'iso ignores language'); + + ver('1999 37 0', 'gggg ww e', "1999 09 13", 'localized e uses local doy and dow: 0 = monday'); + ver('1999 37 4', 'gggg ww e', "1999 09 17", 'localized e uses local doy and dow: 4 = friday'); + + ver('1999 37 1', 'gggg ww d', "1999 09 13", 'localized d uses 0-indexed days: 1 = monday'); + ver('1999 37 Lu', 'gggg ww dd', "1999 09 13", 'localized d uses 0-indexed days: Mo'); + ver('1999 37 lun.', 'gggg ww ddd', "1999 09 13", 'localized d uses 0-indexed days: Mon'); + ver('1999 37 lundi', 'gggg ww dddd', "1999 09 13", 'localized d uses 0-indexed days: Monday'); + ver('1999 37 4', 'gggg ww d', "1999 09 16", 'localized d uses 0-indexed days: 4'); + + //sunday goes at the end of the week + ver('1999 37 0', 'gggg ww d', "1999 09 19", 'localized d uses 0-indexed days: 0 = sund'); + ver('1999 37 Di', 'gggg ww dd', "1999 09 19", 'localized d uses 0-indexed days: 0 = sund'); + } + finally { + moment.lang('en'); + test.done(); + } + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/days_in_month.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/days_in_month.js new file mode 100755 index 0000000..2b78655 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/days_in_month.js @@ -0,0 +1,28 @@ +var moment = require("../../moment"); + +exports.days_in_month = { + "days in month" : function (test) { + test.expect(24); + var months = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], i; + for (i = 0; i < 12; i++) { + test.equal(moment([2012, i]).daysInMonth(), + months[i], + moment([2012, i]).format('L') + " should have " + months[i] + " days. (beginning of month " + i + ')'); + } + for (i = 0; i < 12; i++) { + test.equal(moment([2012, i, months[i]]).daysInMonth(), + months[i], + moment([2012, i, months[i]]).format('L') + " should have " + months[i] + " days. (end of month " + i + ')'); + } + test.done(); + }, + + "days in month leap years" : function (test) { + test.expect(4); + test.equal(moment([2010, 1]).daysInMonth(), 28, "Feb 2010 should have 28 days"); + test.equal(moment([2100, 1]).daysInMonth(), 28, "Feb 2100 should have 28 days"); + test.equal(moment([2008, 1]).daysInMonth(), 29, "Feb 2008 should have 29 days"); + test.equal(moment([2000, 1]).daysInMonth(), 29, "Feb 2000 should have 29 days"); + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/diff.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/diff.js new file mode 100755 index 0000000..ea12d78 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/diff.js @@ -0,0 +1,238 @@ +var moment = require("../../moment"); + +function equal(test, a, b, message) { + test.ok(Math.abs(a - b) < 0.00000001, "(" + a + " === " + b + ") " + message); +} + +function dstForYear(year) { + var start = moment([year]), + end = moment([year + 1]), + current = start.clone(), + last; + + while (current < end) { + last = current.clone(); + current.add(24, 'hour'); + if (last.zone() !== current.zone()) { + end = current.clone(); + current = last.clone(); + break; + } + } + + while (current < end) { + last = current.clone(); + current.add(1, 'hour'); + if (last.zone() !== current.zone()) { + return { + moment : last, + diff : (current.zone() - last.zone()) / 60 + }; + } + } +} + +exports.diff = { + "diff" : function (test) { + test.expect(5); + + test.equal(moment(1000).diff(0), 1000, "1 second - 0 = 1000"); + test.equal(moment(1000).diff(500), 500, "1 second - 0.5 seconds = 500"); + test.equal(moment(0).diff(1000), -1000, "0 - 1 second = -1000"); + test.equal(moment(new Date(1000)).diff(1000), 0, "1 second - 1 second = 0"); + var oneHourDate = new Date(), + nowDate = new Date(+oneHourDate); + oneHourDate.setHours(oneHourDate.getHours() + 1); + test.equal(moment(oneHourDate).diff(nowDate), 60 * 60 * 1000, "1 hour from now = 3600000"); + test.done(); + }, + + "diff key after" : function (test) { + test.expect(10); + + test.equal(moment([2010]).diff([2011], 'years'), -1, "year diff"); + test.equal(moment([2010]).diff([2010, 2], 'months'), -2, "month diff"); + test.equal(moment([2010]).diff([2010, 0, 7], 'weeks'), 0, "week diff"); + test.equal(moment([2010]).diff([2010, 0, 8], 'weeks'), -1, "week diff"); + test.equal(moment([2010]).diff([2010, 0, 21], 'weeks'), -2, "week diff"); + test.equal(moment([2010]).diff([2010, 0, 22], 'weeks'), -3, "week diff"); + test.equal(moment([2010]).diff([2010, 0, 4], 'days'), -3, "day diff"); + test.equal(moment([2010]).diff([2010, 0, 1, 4], 'hours'), -4, "hour diff"); + test.equal(moment([2010]).diff([2010, 0, 1, 0, 5], 'minutes'), -5, "minute diff"); + test.equal(moment([2010]).diff([2010, 0, 1, 0, 0, 6], 'seconds'), -6, "second diff"); + test.done(); + }, + + "diff key before" : function (test) { + test.expect(10); + + test.equal(moment([2011]).diff([2010], 'years'), 1, "year diff"); + test.equal(moment([2010, 2]).diff([2010], 'months'), 2, "month diff"); + test.equal(moment([2010, 0, 4]).diff([2010], 'days'), 3, "day diff"); + test.equal(moment([2010, 0, 7]).diff([2010], 'weeks'), 0, "week diff"); + test.equal(moment([2010, 0, 8]).diff([2010], 'weeks'), 1, "week diff"); + test.equal(moment([2010, 0, 21]).diff([2010], 'weeks'), 2, "week diff"); + test.equal(moment([2010, 0, 22]).diff([2010], 'weeks'), 3, "week diff"); + test.equal(moment([2010, 0, 1, 4]).diff([2010], 'hours'), 4, "hour diff"); + test.equal(moment([2010, 0, 1, 0, 5]).diff([2010], 'minutes'), 5, "minute diff"); + test.equal(moment([2010, 0, 1, 0, 0, 6]).diff([2010], 'seconds'), 6, "second diff"); + test.done(); + }, + + "diff key before singular" : function (test) { + test.expect(10); + + test.equal(moment([2011]).diff([2010], 'year'), 1, "year diff singular"); + test.equal(moment([2010, 2]).diff([2010], 'month'), 2, "month diff singular"); + test.equal(moment([2010, 0, 4]).diff([2010], 'day'), 3, "day diff singular"); + test.equal(moment([2010, 0, 7]).diff([2010], 'week'), 0, "week diff singular"); + test.equal(moment([2010, 0, 8]).diff([2010], 'week'), 1, "week diff singular"); + test.equal(moment([2010, 0, 21]).diff([2010], 'week'), 2, "week diff singular"); + test.equal(moment([2010, 0, 22]).diff([2010], 'week'), 3, "week diff singular"); + test.equal(moment([2010, 0, 1, 4]).diff([2010], 'hour'), 4, "hour diff singular"); + test.equal(moment([2010, 0, 1, 0, 5]).diff([2010], 'minute'), 5, "minute diff singular"); + test.equal(moment([2010, 0, 1, 0, 0, 6]).diff([2010], 'second'), 6, "second diff singular"); + test.done(); + }, + + "diff key before abbreviated" : function (test) { + test.expect(10); + + test.equal(moment([2011]).diff([2010], 'y'), 1, "year diff abbreviated"); + test.equal(moment([2010, 2]).diff([2010], 'M'), 2, "month diff abbreviated"); + test.equal(moment([2010, 0, 4]).diff([2010], 'd'), 3, "day diff abbreviated"); + test.equal(moment([2010, 0, 7]).diff([2010], 'w'), 0, "week diff abbreviated"); + test.equal(moment([2010, 0, 8]).diff([2010], 'w'), 1, "week diff abbreviated"); + test.equal(moment([2010, 0, 21]).diff([2010], 'w'), 2, "week diff abbreviated"); + test.equal(moment([2010, 0, 22]).diff([2010], 'w'), 3, "week diff abbreviated"); + test.equal(moment([2010, 0, 1, 4]).diff([2010], 'h'), 4, "hour diff abbreviated"); + test.equal(moment([2010, 0, 1, 0, 5]).diff([2010], 'm'), 5, "minute diff abbreviated"); + test.equal(moment([2010, 0, 1, 0, 0, 6]).diff([2010], 's'), 6, "second diff abbreviated"); + test.done(); + }, + + "diff month" : function (test) { + test.expect(1); + + test.equal(moment([2011, 0, 31]).diff([2011, 2, 1], 'months'), -1, "month diff"); + test.done(); + }, + + "diff across DST" : function (test) { + var dst = dstForYear(2012), a, b, daysInMonth; + if (!dst) { + test.done(); + return; + } + + test.expect(16); + + a = dst.moment; + b = a.clone().utc().add(12, 'hours').local(); + daysInMonth = (a.daysInMonth() + b.daysInMonth()) / 2; + equal(test, b.diff(a, 'ms', true), 12 * 60 * 60 * 1000, "ms diff across DST"); + equal(test, b.diff(a, 's', true), 12 * 60 * 60, "second diff across DST"); + equal(test, b.diff(a, 'm', true), 12 * 60, "minute diff across DST"); + equal(test, b.diff(a, 'h', true), 12, "hour diff across DST"); + equal(test, b.diff(a, 'd', true), (12 - dst.diff) / 24, "day diff across DST"); + equal(test, b.diff(a, 'w', true), (12 - dst.diff) / 24 / 7, "week diff across DST"); + equal(test, b.diff(a, 'M', true), (12 - dst.diff) / 24 / daysInMonth, "month diff across DST"); + equal(test, b.diff(a, 'y', true), (12 - dst.diff) / 24 / daysInMonth / 12, "year diff across DST"); + + + a = dst.moment; + b = a.clone().utc().add(12 + dst.diff, 'hours').local(); + daysInMonth = (a.daysInMonth() + b.daysInMonth()) / 2; + + equal(test, b.diff(a, 'ms', true), (12 + dst.diff) * 60 * 60 * 1000, "ms diff across DST"); + equal(test, b.diff(a, 's', true), (12 + dst.diff) * 60 * 60, "second diff across DST"); + equal(test, b.diff(a, 'm', true), (12 + dst.diff) * 60, "minute diff across DST"); + equal(test, b.diff(a, 'h', true), (12 + dst.diff), "hour diff across DST"); + equal(test, b.diff(a, 'd', true), 12 / 24, "day diff across DST"); + equal(test, b.diff(a, 'w', true), 12 / 24 / 7, "week diff across DST"); + equal(test, b.diff(a, 'M', true), 12 / 24 / daysInMonth, "month diff across DST"); + equal(test, b.diff(a, 'y', true), 12 / 24 / daysInMonth / 12, "year diff across DST"); + + test.done(); + }, + + "diff overflow" : function (test) { + test.expect(4); + + test.equal(moment([2011]).diff([2010], 'months'), 12, "month diff"); + test.equal(moment([2010, 0, 2]).diff([2010], 'hours'), 24, "hour diff"); + test.equal(moment([2010, 0, 1, 2]).diff([2010], 'minutes'), 120, "minute diff"); + test.equal(moment([2010, 0, 1, 0, 4]).diff([2010], 'seconds'), 240, "second diff"); + test.done(); + }, + + "diff between utc and local" : function (test) { + test.expect(7); + + test.equal(moment([2012]).utc().diff([2011], 'years'), 1, "year diff"); + test.equal(moment([2010, 2, 2]).utc().diff([2010, 0, 2], 'months'), 2, "month diff"); + test.equal(moment([2010, 0, 4]).utc().diff([2010], 'days'), 3, "day diff"); + test.equal(moment([2010, 0, 22]).utc().diff([2010], 'weeks'), 3, "week diff"); + test.equal(moment([2010, 0, 1, 4]).utc().diff([2010], 'hours'), 4, "hour diff"); + test.equal(moment([2010, 0, 1, 0, 5]).utc().diff([2010], 'minutes'), 5, "minute diff"); + test.equal(moment([2010, 0, 1, 0, 0, 6]).utc().diff([2010], 'seconds'), 6, "second diff"); + + test.done(); + }, + + "diff floored" : function (test) { + test.expect(7); + + test.equal(moment([2010, 0, 1, 23]).diff([2010], 'day'), 0, "23 hours = 0 days"); + test.equal(moment([2010, 0, 1, 23, 59]).diff([2010], 'day'), 0, "23:59 hours = 0 days"); + test.equal(moment([2010, 0, 1, 24]).diff([2010], 'day'), 1, "24 hours = 1 day"); + test.equal(moment([2010, 0, 2]).diff([2011, 0, 1], 'year'), 0, "year rounded down"); + test.equal(moment([2011, 0, 1]).diff([2010, 0, 2], 'year'), 0, "year rounded down"); + test.equal(moment([2010, 0, 2]).diff([2011, 0, 2], 'year'), -1, "year rounded down"); + test.equal(moment([2011, 0, 2]).diff([2010, 0, 2], 'year'), 1, "year rounded down"); + + test.done(); + }, + + "year diffs include dates" : function (test) { + test.expect(1); + + test.ok(moment([2012, 1, 19]).diff(moment([2002, 1, 20]), 'years', true) < 10, "year diff should include date of month"); + + test.done(); + }, + + "month diffs" : function (test) { + test.expect(8); + + // due to floating point math errors, these tests just need to be accurate within 0.00000001 + equal(test, moment([2012, 0, 1]).diff([2012, 1, 1], 'months', true), -1, 'Jan 1 to Feb 1 should be 1 month'); + equal(test, moment([2012, 0, 1]).diff([2012, 0, 1, 12], 'months', true), -0.5 / 31, 'Jan 1 to Jan 1 noon should be 0.5 / 31 months'); + equal(test, moment([2012, 0, 15]).diff([2012, 1, 15], 'months', true), -1, 'Jan 15 to Feb 15 should be 1 month'); + equal(test, moment([2012, 0, 28]).diff([2012, 1, 28], 'months', true), -1, 'Jan 28 to Feb 28 should be 1 month'); + equal(test, moment([2012, 0, 31]).diff([2012, 1, 29], 'months', true), -1 + (2 / 30), 'Jan 31 to Feb 29 should be 1 - (2 / 30) months'); + equal(test, moment([2012, 0, 31]).diff([2012, 2, 1], 'months', true), -2 + (30 / 31), 'Jan 31 to Mar 1 should be 2 - (30 / 31) months'); + equal(test, moment([2012, 0, 31]).diff([2012, 2, 1, 12], 'months', true), -2 + (29.5 / 31), 'Jan 31 to Mar 1 should be 2 - (29.5 / 31) months'); + equal(test, moment([2012, 0, 1]).diff([2012, 0, 31], 'months', true), -(30 / 31), 'Jan 1 to Jan 31 should be 30 / 31 months'); + + test.done(); + }, + + "year diffs" : function (test) { + test.expect(10); + + // due to floating point math errors, these tests just need to be accurate within 0.00000001 + equal(test, moment([2012, 0, 1]).diff([2013, 0, 1], 'years', true), -1, 'Jan 1 2012 to Jan 1 2013 should be 1 year'); + equal(test, moment([2012, 1, 28]).diff([2013, 1, 28], 'years', true), -1, 'Feb 28 2012 to Feb 28 2013 should be 1 year'); + equal(test, moment([2012, 2, 1]).diff([2013, 2, 1], 'years', true), -1, 'Mar 1 2012 to Mar 1 2013 should be 1 year'); + equal(test, moment([2012, 11, 1]).diff([2013, 11, 1], 'years', true), -1, 'Dec 1 2012 to Dec 1 2013 should be 1 year'); + equal(test, moment([2012, 11, 31]).diff([2013, 11, 31], 'years', true), -1, 'Dec 31 2012 to Dec 31 2013 should be 1 year'); + equal(test, moment([2012, 0, 1]).diff([2013, 6, 1], 'years', true), -1.5, 'Jan 1 2012 to Jul 1 2013 should be 1.5 years'); + equal(test, moment([2012, 0, 31]).diff([2013, 6, 31], 'years', true), -1.5, 'Jan 31 2012 to Jul 31 2013 should be 1.5 years'); + equal(test, moment([2012, 0, 1]).diff([2013, 0, 1, 12], 'years', true), -1 - (0.5 / 31) / 12, 'Jan 1 2012 to Jan 1 2013 noon should be 1+(0.5 / 31) / 12 years'); + equal(test, moment([2012, 0, 1]).diff([2013, 6, 1, 12], 'years', true), -1.5 - (0.5 / 31) / 12, 'Jan 1 2012 to Jul 1 2013 noon should be 1.5+(0.5 / 31) / 12 years'); + equal(test, moment([2012, 1, 29]).diff([2013, 1, 28], 'years', true), -1 + (1 / 28.5) / 12, 'Feb 29 2012 to Feb 28 2013 should be 1-(1 / 28.5) / 12 years'); + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/duration.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/duration.js new file mode 100755 index 0000000..e037705 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/duration.js @@ -0,0 +1,539 @@ +var moment = require("../../moment"); + +exports.duration = { + "object instantiation" : function (test) { + var d = moment.duration({ + years: 2, + months: 3, + weeks: 2, + days: 1, + hours: 8, + minutes: 9, + seconds: 20, + milliseconds: 12 + }); + + test.expect(8); + test.equal(d.years(), 2, "years"); + test.equal(d.months(), 3, "months"); + test.equal(d.weeks(), 2, "weeks"); + test.equal(d.days(), 15, "days"); // two weeks + 1 day + test.equal(d.hours(), 8, "hours"); + test.equal(d.minutes(), 9, "minutes"); + test.equal(d.seconds(), 20, "seconds"); + test.equal(d.milliseconds(), 12, "milliseconds"); + test.done(); + }, + + "object instantiation with strings" : function (test) { + var d = moment.duration({ + years: '2', + months: '3', + weeks: '2', + days: '1', + hours: '8', + minutes: '9', + seconds: '20', + milliseconds: '12' + }); + + test.expect(8); + test.equal(d.years(), 2, "years"); + test.equal(d.months(), 3, "months"); + test.equal(d.weeks(), 2, "weeks"); + test.equal(d.days(), 15, "days"); // two weeks + 1 day + test.equal(d.hours(), 8, "hours"); + test.equal(d.minutes(), 9, "minutes"); + test.equal(d.seconds(), 20, "seconds"); + test.equal(d.milliseconds(), 12, "milliseconds"); + test.done(); + }, + + "milliseconds instantiation" : function (test) { + test.expect(1); + test.equal(moment.duration(72).milliseconds(), 72, "milliseconds"); + test.done(); + }, + + "instantiation by type" : function (test) { + test.expect(16); + test.equal(moment.duration(1, "years").years(), 1, "years"); + test.equal(moment.duration(1, "y").years(), 1, "y"); + test.equal(moment.duration(2, "months").months(), 2, "months"); + test.equal(moment.duration(2, "M").months(), 2, "M"); + test.equal(moment.duration(3, "weeks").weeks(), 3, "weeks"); + test.equal(moment.duration(3, "w").weeks(), 3, "weeks"); + test.equal(moment.duration(4, "days").days(), 4, "days"); + test.equal(moment.duration(4, "d").days(), 4, "d"); + test.equal(moment.duration(5, "hours").hours(), 5, "hours"); + test.equal(moment.duration(5, "h").hours(), 5, "h"); + test.equal(moment.duration(6, "minutes").minutes(), 6, "minutes"); + test.equal(moment.duration(6, "m").minutes(), 6, "m"); + test.equal(moment.duration(7, "seconds").seconds(), 7, "seconds"); + test.equal(moment.duration(7, "s").seconds(), 7, "s"); + test.equal(moment.duration(8, "milliseconds").milliseconds(), 8, "milliseconds"); + test.equal(moment.duration(8, "ms").milliseconds(), 8, "ms"); + test.done(); + }, + + "shortcuts" : function (test) { + test.expect(8); + test.equal(moment.duration({y: 1}).years(), 1, "years = y"); + test.equal(moment.duration({M: 2}).months(), 2, "months = M"); + test.equal(moment.duration({w: 3}).weeks(), 3, "weeks = w"); + test.equal(moment.duration({d: 4}).days(), 4, "days = d"); + test.equal(moment.duration({h: 5}).hours(), 5, "hours = h"); + test.equal(moment.duration({m: 6}).minutes(), 6, "minutes = m"); + test.equal(moment.duration({s: 7}).seconds(), 7, "seconds = s"); + test.equal(moment.duration({ms: 8}).milliseconds(), 8, "milliseconds = ms"); + test.done(); + }, + + "generic getter" : function (test) { + test.expect(24); + test.equal(moment.duration(1, "years").get("years"), 1, "years"); + test.equal(moment.duration(1, "years").get("year"), 1, "years = year"); + test.equal(moment.duration(1, "years").get("y"), 1, "years = y"); + test.equal(moment.duration(2, "months").get("months"), 2, "months"); + test.equal(moment.duration(2, "months").get("month"), 2, "months = month"); + test.equal(moment.duration(2, "months").get("M"), 2, "months = M"); + test.equal(moment.duration(3, "weeks").get("weeks"), 3, "weeks"); + test.equal(moment.duration(3, "weeks").get("week"), 3, "weeks = week"); + test.equal(moment.duration(3, "weeks").get("w"), 3, "weeks = w"); + test.equal(moment.duration(4, "days").get("days"), 4, "days"); + test.equal(moment.duration(4, "days").get("day"), 4, "days = day"); + test.equal(moment.duration(4, "days").get("d"), 4, "days = d"); + test.equal(moment.duration(5, "hours").get("hours"), 5, "hours"); + test.equal(moment.duration(5, "hours").get("hour"), 5, "hours = hour"); + test.equal(moment.duration(5, "hours").get("h"), 5, "hours = h"); + test.equal(moment.duration(6, "minutes").get("minutes"), 6, "minutes"); + test.equal(moment.duration(6, "minutes").get("minute"), 6, "minutes = minute"); + test.equal(moment.duration(6, "minutes").get("m"), 6, "minutes = m"); + test.equal(moment.duration(7, "seconds").get("seconds"), 7, "seconds"); + test.equal(moment.duration(7, "seconds").get("second"), 7, "seconds = second"); + test.equal(moment.duration(7, "seconds").get("s"), 7, "seconds = s"); + test.equal(moment.duration(8, "milliseconds").get("milliseconds"), 8, "milliseconds"); + test.equal(moment.duration(8, "milliseconds").get("millisecond"), 8, "milliseconds = millisecond"); + test.equal(moment.duration(8, "milliseconds").get("ms"), 8, "milliseconds = ms"); + test.done(); + }, + + "instantiation from another duration" : function (test) { + var simple = moment.duration(1234), + lengthy = moment.duration(60 * 60 * 24 * 360 * 1e3), + complicated = moment.duration({ + years: 2, + months: 3, + weeks: 4, + days: 1, + hours: 8, + minutes: 9, + seconds: 20, + milliseconds: 12 + }), + modified = moment.duration(1, 'day').add(moment.duration(1, 'day')); + + test.expect(4); + test.deepEqual(moment.duration(simple), simple, "simple clones are equal"); + test.deepEqual(moment.duration(lengthy), lengthy, "lengthy clones are equal"); + test.deepEqual(moment.duration(complicated), complicated, "complicated clones are equal"); + test.deepEqual(moment.duration(modified), modified, "cloning modified duration works"); + test.done(); + }, + + "instantiation from 24-hour time zero" : function (test) { + test.expect(6); + test.equal(moment.duration("00:00").years(), 0, "0 years"); + test.equal(moment.duration("00:00").days(), 0, "0 days"); + test.equal(moment.duration("00:00").hours(), 0, "0 hours"); + test.equal(moment.duration("00:00").minutes(), 0, "0 minutes"); + test.equal(moment.duration("00:00").seconds(), 0, "0 seconds"); + test.equal(moment.duration("00:00").milliseconds(), 0, "0 milliseconds"); + test.done(); + }, + + "instantiation from 24-hour time <24 hours" : function (test) { + test.expect(6); + test.equal(moment.duration("06:45").years(), 0, "0 years"); + test.equal(moment.duration("06:45").days(), 0, "0 days"); + test.equal(moment.duration("06:45").hours(), 6, "6 hours"); + test.equal(moment.duration("06:45").minutes(), 45, "45 minutes"); + test.equal(moment.duration("06:45").seconds(), 0, "0 seconds"); + test.equal(moment.duration("06:45").milliseconds(), 0, "0 milliseconds"); + test.done(); + }, + + "instantiation from 24-hour time >24 hours" : function (test) { + test.expect(6); + test.equal(moment.duration("26:45").years(), 0, "0 years"); + test.equal(moment.duration("26:45").days(), 1, "0 days"); + test.equal(moment.duration("26:45").hours(), 2, "2 hours"); + test.equal(moment.duration("26:45").minutes(), 45, "45 minutes"); + test.equal(moment.duration("26:45").seconds(), 0, "0 seconds"); + test.equal(moment.duration("26:45").milliseconds(), 0, "0 milliseconds"); + test.done(); + }, + + "instatiation from serialized C# TimeSpan zero" : function (test) { + test.expect(6); + test.equal(moment.duration("00:00:00").years(), 0, "0 years"); + test.equal(moment.duration("00:00:00").days(), 0, "0 days"); + test.equal(moment.duration("00:00:00").hours(), 0, "0 hours"); + test.equal(moment.duration("00:00:00").minutes(), 0, "0 minutes"); + test.equal(moment.duration("00:00:00").seconds(), 0, "0 seconds"); + test.equal(moment.duration("00:00:00").milliseconds(), 0, "0 milliseconds"); + test.done(); + }, + + "instatiation from serialized C# TimeSpan with days" : function (test) { + test.expect(6); + test.equal(moment.duration("1.02:03:04.9999999").years(), 0, "0 years"); + test.equal(moment.duration("1.02:03:04.9999999").days(), 1, "1 day"); + test.equal(moment.duration("1.02:03:04.9999999").hours(), 2, "2 hours"); + test.equal(moment.duration("1.02:03:04.9999999").minutes(), 3, "3 minutes"); + test.equal(moment.duration("1.02:03:04.9999999").seconds(), 4, "4 seconds"); + test.equal(moment.duration("1.02:03:04.9999999").milliseconds(), 999, "999 milliseconds"); + test.done(); + }, + + "instatiation from serialized C# TimeSpan without days" : function (test) { + test.expect(10); + test.equal(moment.duration("01:02:03.9999999").years(), 0, "0 years"); + test.equal(moment.duration("01:02:03.9999999").days(), 0, "0 days"); + test.equal(moment.duration("01:02:03.9999999").hours(), 1, "1 hour"); + test.equal(moment.duration("01:02:03.9999999").minutes(), 2, "2 minutes"); + test.equal(moment.duration("01:02:03.9999999").seconds(), 3, "3 seconds"); + test.equal(moment.duration("01:02:03.9999999").milliseconds(), 999, "999 milliseconds"); + + test.equal(moment.duration("23:59:59.9999999").days(), 0, "0 days"); + test.equal(moment.duration("23:59:59.9999999").hours(), 23, "23 hours"); + + test.equal(moment.duration("500:59:59.9999999").days(), 20, "500 hours overflows to 20 days"); + test.equal(moment.duration("500:59:59.9999999").hours(), 20, "500 hours overflows to 20 hours"); + test.done(); + }, + + "instatiation from serialized C# TimeSpan without days or milliseconds" : function (test) { + test.expect(6); + test.equal(moment.duration("01:02:03").years(), 0, "0 years"); + test.equal(moment.duration("01:02:03").days(), 0, "0 days"); + test.equal(moment.duration("01:02:03").hours(), 1, "1 hour"); + test.equal(moment.duration("01:02:03").minutes(), 2, "2 minutes"); + test.equal(moment.duration("01:02:03").seconds(), 3, "3 seconds"); + test.equal(moment.duration("01:02:03").milliseconds(), 0, "0 milliseconds"); + test.done(); + }, + + "instatiation from serialized C# TimeSpan without milliseconds" : function (test) { + test.expect(6); + test.equal(moment.duration("1.02:03:04").years(), 0, "0 years"); + test.equal(moment.duration("1.02:03:04").days(), 1, "1 day"); + test.equal(moment.duration("1.02:03:04").hours(), 2, "2 hours"); + test.equal(moment.duration("1.02:03:04").minutes(), 3, "3 minutes"); + test.equal(moment.duration("1.02:03:04").seconds(), 4, "4 seconds"); + test.equal(moment.duration("1.02:03:04").milliseconds(), 0, "0 milliseconds"); + test.done(); + }, + + "instatiation from serialized C# TimeSpan maxValue" : function (test) { + test.expect(6); + test.equal(moment.duration("10675199.02:48:05.4775807").years(), 29653, "29653 years"); + test.equal(moment.duration("10675199.02:48:05.4775807").days(), 29, "29 day"); + test.equal(moment.duration("10675199.02:48:05.4775807").hours(), 2, "2 hours"); + test.equal(moment.duration("10675199.02:48:05.4775807").minutes(), 48, "48 minutes"); + test.equal(moment.duration("10675199.02:48:05.4775807").seconds(), 5, "5 seconds"); + test.equal(moment.duration("10675199.02:48:05.4775807").milliseconds(), 477, "477 milliseconds"); + test.done(); + }, + + "instatiation from serialized C# TimeSpan minValue" : function (test) { + test.expect(6); + test.equal(moment.duration("-10675199.02:48:05.4775808").years(), -29653, "29653 years"); + test.equal(moment.duration("-10675199.02:48:05.4775808").days(), -29, "29 day"); + test.equal(moment.duration("-10675199.02:48:05.4775808").hours(), -2, "2 hours"); + test.equal(moment.duration("-10675199.02:48:05.4775808").minutes(), -48, "48 minutes"); + test.equal(moment.duration("-10675199.02:48:05.4775808").seconds(), -5, "5 seconds"); + test.equal(moment.duration("-10675199.02:48:05.4775808").milliseconds(), -477, "477 milliseconds"); + test.done(); + }, + + "instantiation from ISO 8601 duration" : function (test) { + test.expect(7); + test.equal(moment.duration("P1Y2M3DT4H5M6S").asSeconds(), moment.duration({y: 1, M: 2, d: 3, h: 4, m: 5, s: 6}).asSeconds(), "all fields"); + test.equal(moment.duration("P1M").asSeconds(), moment.duration({M: 1}).asSeconds(), "single month field"); + test.equal(moment.duration("PT1M").asSeconds(), moment.duration({m: 1}).asSeconds(), "single minute field"); + test.equal(moment.duration("P1MT2H").asSeconds(), moment.duration({M: 1, h: 2}).asSeconds(), "random fields missing"); + test.equal(moment.duration("-P60D").asSeconds(), moment.duration({d: -60}).asSeconds(), "negative days"); + test.equal(moment.duration("PT0.5S").asSeconds(), moment.duration({s: 0.5}).asSeconds(), "fractional seconds"); + test.equal(moment.duration("PT0,5S").asSeconds(), moment.duration({s: 0.5}).asSeconds(), "fractional seconds (comma)"); + test.done(); + }, + + "serialization to ISO 8601 duration strings" : function (test) { + test.expect(6); + test.equal(moment.duration({y: 1, M: 2, d: 3, h: 4, m: 5, s: 6}).toIsoString(), "P1Y2M3DT4H5M6S", "all fields"); + test.equal(moment.duration({M: -1}).toIsoString(), "-P1M", "one month ago"); + test.equal(moment.duration({m: -1}).toIsoString(), "-PT1M", "one minute ago"); + test.equal(moment.duration({s: -0.5}).toIsoString(), "-PT0.5S", "one half second ago"); + test.equal(moment.duration({y: -0.5, M: 1}).toIsoString(), "-P5M", "a month after half a year ago"); + test.equal(moment.duration({}).toIsoString(), "P0D", "zero duration"); + test.done(); + }, + + "`isodate` (python) test cases" : function (test) { + test.expect(24); + test.equal(moment.duration("P18Y9M4DT11H9M8S").asSeconds(), moment.duration({y: 18, M: 9, d: 4, h: 11, m: 9, s: 8}).asSeconds(), "python isodate 1"); + test.equal(moment.duration("P2W").asSeconds(), moment.duration({w: 2}).asSeconds(), "python isodate 2"); + test.equal(moment.duration("P3Y6M4DT12H30M5S").asSeconds(), moment.duration({y: 3, M: 6, d: 4, h: 12, m: 30, s: 5}).asSeconds(), "python isodate 3"); + test.equal(moment.duration("P23DT23H").asSeconds(), moment.duration({d: 23, h: 23}).asSeconds(), "python isodate 4"); + test.equal(moment.duration("P4Y").asSeconds(), moment.duration({y: 4}).asSeconds(), "python isodate 5"); + test.equal(moment.duration("P1M").asSeconds(), moment.duration({M: 1}).asSeconds(), "python isodate 6"); + test.equal(moment.duration("PT1M").asSeconds(), moment.duration({m: 1}).asSeconds(), "python isodate 7"); + test.equal(moment.duration("P0.5Y").asSeconds(), moment.duration({y: 0.5}).asSeconds(), "python isodate 8"); + test.equal(moment.duration("PT36H").asSeconds(), moment.duration({h: 36}).asSeconds(), "python isodate 9"); + test.equal(moment.duration("P1DT12H").asSeconds(), moment.duration({d: 1, h: 12}).asSeconds(), "python isodate 10"); + test.equal(moment.duration("-P2W").asSeconds(), moment.duration({w: -2}).asSeconds(), "python isodate 11"); + test.equal(moment.duration("-P2.2W").asSeconds(), moment.duration({w: -2.2}).asSeconds(), "python isodate 12"); + test.equal(moment.duration("P1DT2H3M4S").asSeconds(), moment.duration({d: 1, h: 2, m: 3, s: 4}).asSeconds(), "python isodate 13"); + test.equal(moment.duration("P1DT2H3M").asSeconds(), moment.duration({d: 1, h: 2, m: 3}).asSeconds(), "python isodate 14"); + test.equal(moment.duration("P1DT2H").asSeconds(), moment.duration({d: 1, h: 2}).asSeconds(), "python isodate 15"); + test.equal(moment.duration("PT2H").asSeconds(), moment.duration({h: 2}).asSeconds(), "python isodate 16"); + test.equal(moment.duration("PT2.3H").asSeconds(), moment.duration({h: 2.3}).asSeconds(), "python isodate 17"); + test.equal(moment.duration("PT2H3M4S").asSeconds(), moment.duration({h: 2, m: 3, s: 4}).asSeconds(), "python isodate 18"); + test.equal(moment.duration("PT3M4S").asSeconds(), moment.duration({m: 3, s: 4}).asSeconds(), "python isodate 19"); + test.equal(moment.duration("PT22S").asSeconds(), moment.duration({s: 22}).asSeconds(), "python isodate 20"); + test.equal(moment.duration("PT22.22S").asSeconds(), moment.duration({s: 22.22}).asSeconds(), "python isodate 21"); + test.equal(moment.duration("-P2Y").asSeconds(), moment.duration({y: -2}).asSeconds(), "python isodate 22"); + test.equal(moment.duration("-P3Y6M4DT12H30M5S").asSeconds(), moment.duration({y: -3, M: -6, d: -4, h: -12, m: -30, s: -5}).asSeconds(), "python isodate 23"); + test.equal(moment.duration("-P1DT2H3M4S").asSeconds(), moment.duration({d: -1, h: -2, m: -3, s: -4}).asSeconds(), "python isodate 24"); + test.done(); + }, + + "ISO 8601 misuse cases" : function (test) { + test.expect(8); + test.equal(moment.duration("P").asSeconds(), 0, "lonely P"); + test.equal(moment.duration("PT").asSeconds(), 0, "just P and T"); + test.equal(moment.duration("P1H").asSeconds(), 0, "missing T"); + test.equal(moment.duration("P1D1Y").asSeconds(), 0, "out of order"); + test.equal(moment.duration("PT.5S").asSeconds(), 0.5, "accept no leading zero for decimal"); + test.equal(moment.duration("PT1,S").asSeconds(), 1, "accept trailing decimal separator"); + test.equal(moment.duration("PT1M0,,5S").asSeconds(), 60, "extra decimal separators are ignored as 0"); + test.equal(moment.duration("P-1DS").asSeconds(), 0, "wrong position of negative"); + test.done(); + }, + + "humanize" : function (test) { + test.expect(32); + moment.lang('en'); + test.equal(moment.duration({seconds: 44}).humanize(), "a few seconds", "44 seconds = a few seconds"); + test.equal(moment.duration({seconds: 45}).humanize(), "a minute", "45 seconds = a minute"); + test.equal(moment.duration({seconds: 89}).humanize(), "a minute", "89 seconds = a minute"); + test.equal(moment.duration({seconds: 90}).humanize(), "2 minutes", "90 seconds = 2 minutes"); + test.equal(moment.duration({minutes: 44}).humanize(), "44 minutes", "44 minutes = 44 minutes"); + test.equal(moment.duration({minutes: 45}).humanize(), "an hour", "45 minutes = an hour"); + test.equal(moment.duration({minutes: 89}).humanize(), "an hour", "89 minutes = an hour"); + test.equal(moment.duration({minutes: 90}).humanize(), "2 hours", "90 minutes = 2 hours"); + test.equal(moment.duration({hours: 5}).humanize(), "5 hours", "5 hours = 5 hours"); + test.equal(moment.duration({hours: 21}).humanize(), "21 hours", "21 hours = 21 hours"); + test.equal(moment.duration({hours: 22}).humanize(), "a day", "22 hours = a day"); + test.equal(moment.duration({hours: 35}).humanize(), "a day", "35 hours = a day"); + test.equal(moment.duration({hours: 36}).humanize(), "2 days", "36 hours = 2 days"); + test.equal(moment.duration({days: 1}).humanize(), "a day", "1 day = a day"); + test.equal(moment.duration({days: 5}).humanize(), "5 days", "5 days = 5 days"); + test.equal(moment.duration({weeks: 1}).humanize(), "7 days", "1 week = 7 days"); + test.equal(moment.duration({days: 25}).humanize(), "25 days", "25 days = 25 days"); + test.equal(moment.duration({days: 26}).humanize(), "a month", "26 days = a month"); + test.equal(moment.duration({days: 30}).humanize(), "a month", "30 days = a month"); + test.equal(moment.duration({days: 45}).humanize(), "a month", "45 days = a month"); + test.equal(moment.duration({days: 46}).humanize(), "2 months", "46 days = 2 months"); + test.equal(moment.duration({days: 74}).humanize(), "2 months", "75 days = 2 months"); + test.equal(moment.duration({days: 76}).humanize(), "3 months", "76 days = 3 months"); + test.equal(moment.duration({months: 1}).humanize(), "a month", "1 month = a month"); + test.equal(moment.duration({months: 5}).humanize(), "5 months", "5 months = 5 months"); + test.equal(moment.duration({days: 344}).humanize(), "11 months", "344 days = 11 months"); + test.equal(moment.duration({days: 345}).humanize(), "a year", "345 days = a year"); + test.equal(moment.duration({days: 547}).humanize(), "a year", "547 days = a year"); + test.equal(moment.duration({days: 548}).humanize(), "2 years", "548 days = 2 years"); + test.equal(moment.duration({years: 1}).humanize(), "a year", "1 year = a year"); + test.equal(moment.duration({years: 5}).humanize(), "5 years", "5 years = 5 years"); + test.equal(moment.duration(7200000).humanize(), "2 hours", "7200000 = 2 minutes"); + test.done(); + }, + + "humanize duration with suffix" : function (test) { + test.expect(2); + moment.lang('en'); + test.equal(moment.duration({seconds: 44}).humanize(true), "in a few seconds", "44 seconds = a few seconds"); + test.equal(moment.duration({seconds: -44}).humanize(true), "a few seconds ago", "44 seconds = a few seconds"); + test.done(); + }, + + "bubble value up" : function (test) { + test.expect(5); + test.equal(moment.duration({milliseconds: 61001}).milliseconds(), 1, "61001 milliseconds has 1 millisecond left over"); + test.equal(moment.duration({milliseconds: 61001}).seconds(), 1, "61001 milliseconds has 1 second left over"); + test.equal(moment.duration({milliseconds: 61001}).minutes(), 1, "61001 milliseconds has 1 minute left over"); + + test.equal(moment.duration({minutes: 350}).minutes(), 50, "350 minutes has 50 minutes left over"); + test.equal(moment.duration({minutes: 350}).hours(), 5, "350 minutes has 5 hours left over"); + test.done(); + }, + + "clipping" : function (test) { + test.expect(18); + test.equal(moment.duration({months: 11}).months(), 11, "11 months is 11 months"); + test.equal(moment.duration({months: 11}).years(), 0, "11 months makes no year"); + test.equal(moment.duration({months: 12}).months(), 0, "12 months is 0 months left over"); + test.equal(moment.duration({months: 12}).years(), 1, "12 months makes 1 year"); + test.equal(moment.duration({months: 13}).months(), 1, "13 months is 1 month left over"); + test.equal(moment.duration({months: 13}).years(), 1, "13 months makes 1 year"); + + test.equal(moment.duration({days: 29}).days(), 29, "29 days is 29 days"); + test.equal(moment.duration({days: 29}).months(), 0, "29 days makes no month"); + test.equal(moment.duration({days: 30}).days(), 0, "30 days is 0 days left over"); + test.equal(moment.duration({days: 30}).months(), 1, "30 days is a month"); + test.equal(moment.duration({days: 31}).days(), 1, "31 days is 1 day left over"); + test.equal(moment.duration({days: 31}).months(), 1, "31 days is a month"); + + test.equal(moment.duration({hours: 23}).hours(), 23, "23 hours is 23 hours"); + test.equal(moment.duration({hours: 23}).days(), 0, "23 hours makes no day"); + test.equal(moment.duration({hours: 24}).hours(), 0, "24 hours is 0 hours left over"); + test.equal(moment.duration({hours: 24}).days(), 1, "24 hours makes 1 day"); + test.equal(moment.duration({hours: 25}).hours(), 1, "25 hours is 1 hour left over"); + test.equal(moment.duration({hours: 25}).days(), 1, "25 hours makes 1 day"); + test.done(); + }, + + "effective equivalency" : function (test) { + test.expect(7); + test.deepEqual(moment.duration({seconds: 1})._data, moment.duration({milliseconds: 1000})._data, "1 second is the same as 1000 milliseconds"); + test.deepEqual(moment.duration({seconds: 60})._data, moment.duration({minutes: 1})._data, "1 minute is the same as 60 seconds"); + test.deepEqual(moment.duration({minutes: 60})._data, moment.duration({hours: 1})._data, "1 hour is the same as 60 minutes"); + test.deepEqual(moment.duration({hours: 24})._data, moment.duration({days: 1})._data, "1 day is the same as 24 hours"); + test.deepEqual(moment.duration({days: 7})._data, moment.duration({weeks: 1})._data, "1 week is the same as 7 days"); + test.deepEqual(moment.duration({days: 30})._data, moment.duration({months: 1})._data, "1 month is the same as 30 days"); + test.deepEqual(moment.duration({months: 12})._data, moment.duration({years: 1})._data, "1 years is the same as 12 months"); + test.done(); + }, + + "asGetters" : function (test) { + var d = moment.duration({ + years: 2, + months: 3, + weeks: 2, + days: 1, + hours: 8, + minutes: 9, + seconds: 20, + milliseconds: 12 + }); + + test.expect(8); + test.equal(d.asYears().toFixed(2), "2.29", "years"); + test.equal(d.asMonths().toFixed(2), "27.51", "months"); + test.equal(d.asWeeks().toFixed(2), "119.33", "weeks"); + test.equal(d.asDays().toFixed(2), "835.34", "days"); + test.equal(d.asHours().toFixed(2), "20048.16", "hours"); + test.equal(d.asMinutes().toFixed(2), "1202889.33", "minutes"); + test.equal(d.asSeconds().toFixed(2), "72173360.01", "seconds"); + test.equal(d.asMilliseconds(), 72173360012, "milliseconds"); + test.done(); + }, + + "generic as getter" : function (test) { + var d = moment.duration({ + years: 2, + months: 3, + weeks: 2, + days: 1, + hours: 8, + minutes: 9, + seconds: 20, + milliseconds: 12 + }); + + test.expect(24); + test.equal(d.as("years").toFixed(2), "2.29", "years"); + test.equal(d.as("year").toFixed(2), "2.29", "years = year"); + test.equal(d.as("y").toFixed(2), "2.29", "years = y"); + test.equal(d.as("months").toFixed(2), "27.51", "months"); + test.equal(d.as("month").toFixed(2), "27.51", "months = month"); + test.equal(d.as("M").toFixed(2), "27.51", "months = M"); + test.equal(d.as("weeks").toFixed(2), "119.33", "weeks"); + test.equal(d.as("week").toFixed(2), "119.33", "weeks = week"); + test.equal(d.as("w").toFixed(2), "119.33", "weeks = w"); + test.equal(d.as("days").toFixed(2), "835.34", "days"); + test.equal(d.as("day").toFixed(2), "835.34", "days = day"); + test.equal(d.as("d").toFixed(2), "835.34", "days = d"); + test.equal(d.as("hours").toFixed(2), "20048.16", "hours"); + test.equal(d.as("hour").toFixed(2), "20048.16", "hours = hour"); + test.equal(d.as("h").toFixed(2), "20048.16", "hours = h"); + test.equal(d.as("minutes").toFixed(2), "1202889.33", "minutes"); + test.equal(d.as("minute").toFixed(2), "1202889.33", "minutes = minute"); + test.equal(d.as("m").toFixed(2), "1202889.33", "minutes = m"); + test.equal(d.as("seconds").toFixed(2), "72173360.01", "seconds"); + test.equal(d.as("second").toFixed(2), "72173360.01", "seconds = second"); + test.equal(d.as("s").toFixed(2), "72173360.01", "seconds = s"); + test.equal(d.as("milliseconds"), 72173360012, "milliseconds"); + test.equal(d.as("millisecond"), 72173360012, "milliseconds = millisecond"); + test.equal(d.as("ms"), 72173360012, "milliseconds = ms"); + test.done(); + }, + + "isDuration" : function (test) { + test.expect(3); + test.ok(moment.isDuration(moment.duration(12345678)), "correctly says true"); + test.ok(!moment.isDuration(moment()), "moment object is not a duration"); + test.ok(!moment.isDuration({milliseconds: 1}), "plain object is not a duration"); + test.done(); + }, + + "add" : function (test) { + test.expect(4); + + var d = moment.duration({months: 4, weeks: 3, days: 2}); + // for some reason, d._data._months does not get updated; use d._months instead. + test.equal(d.add(1, 'month')._months, 5, 'Add months'); + test.equal(d.add(5, 'days')._days, 28, 'Add days'); + test.equal(d.add(10000)._milliseconds, 10000, 'Add milliseconds'); + test.equal(d.add({h: 23, m: 59})._milliseconds, 23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 10000, 'Add hour:minute'); + + test.done(); + }, + + "add and bubble" : function (test) { + test.expect(4); + + test.equal(moment.duration(1, 'second').add(1000, 'milliseconds').seconds(), 2, 'Adding milliseconds should bubble up to seconds'); + test.equal(moment.duration(1, 'minute').add(60, 'second').minutes(), 2, 'Adding seconds should bubble up to minutes'); + test.equal(moment.duration(1, 'hour').add(60, 'minutes').hours(), 2, 'Adding minutes should bubble up to hours'); + test.equal(moment.duration(1, 'day').add(24, 'hours').days(), 2, 'Adding hours should bubble up to days'); + + test.done(); + }, + + "subtract and bubble" : function (test) { + test.expect(4); + + test.equal(moment.duration(2, 'second').subtract(1000, 'milliseconds').seconds(), 1, 'Subtracting milliseconds should bubble up to seconds'); + test.equal(moment.duration(2, 'minute').subtract(60, 'second').minutes(), 1, 'Subtracting seconds should bubble up to minutes'); + test.equal(moment.duration(2, 'hour').subtract(60, 'minutes').hours(), 1, 'Subtracting minutes should bubble up to hours'); + test.equal(moment.duration(2, 'day').subtract(24, 'hours').days(), 1, 'Subtracting hours should bubble up to days'); + + test.done(); + }, + + "subtract" : function (test) { + test.expect(4); + + var d = moment.duration({months: 2, weeks: 2, days: 0, hours: 5}); + // for some reason, d._data._months does not get updated; use d._months instead. + test.equal(d.subtract(1, 'months')._months, 1, 'Subtract months'); + test.equal(d.subtract(14, 'days')._days, 0, 'Subtract days'); + test.equal(d.subtract(10000)._milliseconds, 5 * 60 * 60 * 1000 - 10000, 'Subtract milliseconds'); + test.equal(d.subtract({h: 1, m: 59})._milliseconds, 3 * 60 * 60 * 1000 + 1 * 60 * 1000 - 10000, 'Subtract hour:minute'); + + test.done(); + } + +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/format.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/format.js new file mode 100755 index 0000000..e855719 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/format.js @@ -0,0 +1,409 @@ +var moment = require("../../moment"); + +exports.format = { + "format YY" : function (test) { + test.expect(1); + + var b = moment(new Date(2009, 1, 14, 15, 25, 50, 125)); + test.equal(b.format('YY'), '09', 'YY ---> 09'); + test.done(); + }, + + "format escape brackets" : function (test) { + test.expect(10); + + moment.lang('en'); + + var b = moment(new Date(2009, 1, 14, 15, 25, 50, 125)); + test.equal(b.format('[day]'), 'day', 'Single bracket'); + test.equal(b.format('[day] YY [YY]'), 'day 09 YY', 'Double bracket'); + test.equal(b.format('[YY'), '[09', 'Un-ended bracket'); + test.equal(b.format('[[YY]]'), '[YY]', 'Double nested brackets'); + test.equal(b.format('[[]'), '[', 'Escape open bracket'); + test.equal(b.format('[Last]'), 'Last', 'localized tokens'); + test.equal(b.format('[L] L'), 'L 02/14/2009', 'localized tokens with escaped localized tokens'); + test.equal(b.format('[L LL LLL LLLL aLa]'), 'L LL LLL LLLL aLa', 'localized tokens with escaped localized tokens'); + test.equal(b.format('[LLL] LLL'), 'LLL February 14 2009 3:25 PM', 'localized tokens with escaped localized tokens (recursion)'); + test.equal(b.format('YYYY[\n]DD[\n]'), '2009\n14\n', 'Newlines'); + test.done(); + }, + + "handle negative years" : function (test) { + test.expect(10); + + moment.lang('en'); + test.equal(moment.utc().year(-1).format('YY'), '-01', 'YY with negative year'); + test.equal(moment.utc().year(-1).format('YYYY'), '-0001', 'YYYY with negative year'); + test.equal(moment.utc().year(-12).format('YY'), '-12', 'YY with negative year'); + test.equal(moment.utc().year(-12).format('YYYY'), '-0012', 'YYYY with negative year'); + test.equal(moment.utc().year(-123).format('YY'), '-23', 'YY with negative year'); + test.equal(moment.utc().year(-123).format('YYYY'), '-0123', 'YYYY with negative year'); + test.equal(moment.utc().year(-1234).format('YY'), '-34', 'YY with negative year'); + test.equal(moment.utc().year(-1234).format('YYYY'), '-1234', 'YYYY with negative year'); + test.equal(moment.utc().year(-12345).format('YY'), '-45', 'YY with negative year'); + test.equal(moment.utc().year(-12345).format('YYYY'), '-12345', 'YYYY with negative year'); + + test.done(); + }, + + "format milliseconds" : function (test) { + test.expect(6); + var b = moment(new Date(2009, 1, 14, 15, 25, 50, 123)); + test.equal(b.format('S'), '1', 'Deciseconds'); + test.equal(b.format('SS'), '12', 'Centiseconds'); + test.equal(b.format('SSS'), '123', 'Milliseconds'); + b.milliseconds(789); + test.equal(b.format('S'), '7', 'Deciseconds'); + test.equal(b.format('SS'), '78', 'Centiseconds'); + test.equal(b.format('SSS'), '789', 'Milliseconds'); + test.done(); + }, + + "format timezone" : function (test) { + test.expect(2); + + var b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + explanation = 'moment().format("z") = ' + b.format('z') + ' It should be something like "PST"'; + if (moment().zone() === -60) { + explanation += "For UTC+1 this is a known issue, see https://github.com/timrwood/moment/issues/162"; + } + test.ok(b.format('Z').match(/^[\+\-]\d\d:\d\d$/), b.format('Z') + ' should be something like "+07:30"'); + test.ok(b.format('ZZ').match(/^[\+\-]\d{4}$/), b.format('ZZ') + ' should be something like "+0700"'); + test.done(); + }, + + "format multiple with zone" : function (test) { + test.expect(1); + + var b = moment('2012-10-08 -1200', ['YYYY-MM-DD HH:mm ZZ', 'YYYY-MM-DD ZZ', 'YYYY-MM-DD']); + test.equals(b.format('YYYY-MM'), '2012-10', 'Parsing multiple formats should not crash with different sized formats'); + test.done(); + }, + + "isDST" : function (test) { + test.expect(2); + + var janOffset = new Date(2011, 0, 1).getTimezoneOffset(), + julOffset = new Date(2011, 6, 1).getTimezoneOffset(), + janIsDst = janOffset < julOffset, + julIsDst = julOffset < janOffset, + jan1 = moment([2011]), + jul1 = moment([2011, 6]); + + if (janIsDst && julIsDst) { + test.ok(0, 'January and July cannot both be in DST'); + test.ok(0, 'January and July cannot both be in DST'); + } else if (janIsDst) { + test.ok(jan1.isDST(), 'January 1 is DST'); + test.ok(!jul1.isDST(), 'July 1 is not DST'); + } else if (julIsDst) { + test.ok(!jan1.isDST(), 'January 1 is not DST'); + test.ok(jul1.isDST(), 'July 1 is DST'); + } else { + test.ok(!jan1.isDST(), 'January 1 is not DST'); + test.ok(!jul1.isDST(), 'July 1 is not DST'); + } + test.done(); + }, + + "unix timestamp" : function (test) { + test.expect(5); + + var m = moment('1234567890.123', 'X'); + test.equals(m.format('X'), '1234567890', 'unix timestamp without milliseconds'); + test.equals(m.format('X.S'), '1234567890.1', 'unix timestamp with deciseconds'); + test.equals(m.format('X.SS'), '1234567890.12', 'unix timestamp with centiseconds'); + test.equals(m.format('X.SSS'), '1234567890.123', 'unix timestamp with milliseconds'); + + m = moment(1234567890.123, 'X'); + test.equals(m.format('X'), '1234567890', 'unix timestamp as integer'); + + test.done(); + }, + + "zone" : function (test) { + test.expect(3); + + if (moment().zone() > 0) { + test.ok(moment().format('ZZ').indexOf('-') > -1, 'When the zone() offset is greater than 0, the ISO offset should be less than zero'); + } + if (moment().zone() < 0) { + test.ok(moment().format('ZZ').indexOf('+') > -1, 'When the zone() offset is less than 0, the ISO offset should be greater than zero'); + } + if (moment().zone() === 0) { + test.ok(moment().format('ZZ').indexOf('+') > -1, 'When the zone() offset is equal to 0, the ISO offset should be positive zero'); + } + if (moment().zone() === 0) { + test.equal(moment().zone(), 0, 'moment.fn.zone should be a multiple of 15 (was ' + moment().zone() + ')'); + } else { + test.equal(moment().zone() % 15, 0, 'moment.fn.zone should be a multiple of 15 (was ' + moment().zone() + ')'); + } + test.equal(moment().zone(), new Date().getTimezoneOffset(), 'zone should equal getTimezoneOffset'); + test.done(); + }, + + "default format" : function (test) { + test.expect(1); + var isoRegex = /\d{4}.\d\d.\d\dT\d\d.\d\d.\d\d[\+\-]\d\d:\d\d/; + test.ok(isoRegex.exec(moment().format()), "default format (" + moment().format() + ") should match ISO"); + test.done(); + }, + + "escaping quotes" : function (test) { + test.expect(4); + moment.lang('en'); + var date = moment([2012, 0]); + test.equal(date.format('MMM \'YY'), "Jan '12", "Should be able to format with single parenthesis"); + test.equal(date.format('MMM "YY'), 'Jan "12', "Should be able to format with double parenthesis"); + test.equal(date.format("MMM 'YY"), "Jan '12", "Should be able to format with single parenthesis"); + test.equal(date.format("MMM \"YY"), 'Jan "12', "Should be able to format with double parenthesis"); + test.done(); + }, + + "toJSON" : function (test) { + var supportsJson = typeof JSON !== "undefined" && JSON.stringify && JSON.stringify.call, + date = moment("2012-10-09T21:30:40.678+0100"); + + test.expect(supportsJson ? 2 : 1); + + test.equal(date.toJSON(), "2012-10-09T20:30:40.678Z", "should output ISO8601 on moment.fn.toJSON"); + + if (supportsJson) { + test.equal(JSON.stringify({ + date : date + }), '{"date":"2012-10-09T20:30:40.678Z"}', "should output ISO8601 on JSON.stringify"); + } + + test.done(); + }, + + "toISOString" : function (test) { + test.expect(4); + var date = moment.utc("2012-10-09T20:30:40.678"); + + test.equal(date.toISOString(), "2012-10-09T20:30:40.678Z", "should output ISO8601 on moment.fn.toISOString"); + + // big years + date = moment.utc("+020123-10-09T20:30:40.678"); + test.equal(date.toISOString(), "+020123-10-09T20:30:40.678Z", "ISO8601 format on big positive year"); + // negative years + date = moment.utc("-000001-10-09T20:30:40.678"); + test.equal(date.toISOString(), "-000001-10-09T20:30:40.678Z", "ISO8601 format on negative year"); + // big negative years + date = moment.utc("-020123-10-09T20:30:40.678"); + test.equal(date.toISOString(), "-020123-10-09T20:30:40.678Z", "ISO8601 format on big negative year"); + + test.done(); + }, + + "long years" : function (test) { + test.expect(6); + test.equal(moment.utc().year(2).format('YYYYYY'), '+000002', 'small year with YYYYYY'); + test.equal(moment.utc().year(2012).format('YYYYYY'), '+002012', 'regular year with YYYYYY'); + test.equal(moment.utc().year(20123).format('YYYYYY'), '+020123', 'big year with YYYYYY'); + + test.equal(moment.utc().year(-1).format('YYYYYY'), '-000001', 'small negative year with YYYYYY'); + test.equal(moment.utc().year(-2012).format('YYYYYY'), '-002012', 'negative year with YYYYYY'); + test.equal(moment.utc().year(-20123).format('YYYYYY'), '-020123', 'big negative year with YYYYYY'); + + test.done(); + }, + + "iso week formats" : function (test) { + + // http://en.wikipedia.org/wiki/ISO_week_date + var cases = { + "2005-01-02": "2004-53", + "2005-12-31": "2005-52", + "2007-01-01": "2007-01", + "2007-12-30": "2007-52", + "2007-12-31": "2008-01", + "2008-01-01": "2008-01", + "2008-12-28": "2008-52", + "2008-12-29": "2009-01", + "2008-12-30": "2009-01", + "2008-12-31": "2009-01", + "2009-01-01": "2009-01", + "2009-12-31": "2009-53", + "2010-01-01": "2009-53", + "2010-01-02": "2009-53", + "2010-01-03": "2009-53", + "404-12-31": "0404-53", + "405-12-31": "0405-52" + }, i, isoWeek, formatted2, formatted1; + + for (i in cases) { + isoWeek = cases[i].split('-').pop(); + formatted2 = moment(i, 'YYYY-MM-DD').format('WW'); + test.equal(isoWeek, formatted2, i + ": WW should be " + isoWeek + ", but " + formatted2); + isoWeek = isoWeek.replace(/^0+/, ''); + formatted1 = moment(i, 'YYYY-MM-DD').format('W'); + test.equal(isoWeek, formatted1, i + ": W should be " + isoWeek + ", but " + formatted1); + } + + test.done(); + }, + + "iso week year formats" : function (test) { + + // http://en.wikipedia.org/wiki/ISO_week_date + var cases = { + "2005-01-02": "2004-53", + "2005-12-31": "2005-52", + "2007-01-01": "2007-01", + "2007-12-30": "2007-52", + "2007-12-31": "2008-01", + "2008-01-01": "2008-01", + "2008-12-28": "2008-52", + "2008-12-29": "2009-01", + "2008-12-30": "2009-01", + "2008-12-31": "2009-01", + "2009-01-01": "2009-01", + "2009-12-31": "2009-53", + "2010-01-01": "2009-53", + "2010-01-02": "2009-53", + "2010-01-03": "2009-53", + "404-12-31": "0404-53", + "405-12-31": "0405-52" + }, i, isoWeekYear, formatted5, formatted4, formatted2; + + for (i in cases) { + isoWeekYear = cases[i].split('-')[0]; + formatted5 = moment(i, 'YYYY-MM-DD').format('GGGGG'); + test.equal('0' + isoWeekYear, formatted5, i + ": GGGGG should be " + isoWeekYear + ", but " + formatted5); + formatted4 = moment(i, 'YYYY-MM-DD').format('GGGG'); + test.equal(isoWeekYear, formatted4, i + ": GGGG should be " + isoWeekYear + ", but " + formatted4); + formatted2 = moment(i, 'YYYY-MM-DD').format('GG'); + test.equal(isoWeekYear.slice(2, 4), formatted2, i + ": GG should be " + isoWeekYear + ", but " + formatted2); + } + + test.done(); + }, + + "week year formats" : function (test) { + + // http://en.wikipedia.org/wiki/ISO_week_date + var cases = { + "2005-01-02": "2004-53", + "2005-12-31": "2005-52", + "2007-01-01": "2007-01", + "2007-12-30": "2007-52", + "2007-12-31": "2008-01", + "2008-01-01": "2008-01", + "2008-12-28": "2008-52", + "2008-12-29": "2009-01", + "2008-12-30": "2009-01", + "2008-12-31": "2009-01", + "2009-01-01": "2009-01", + "2009-12-31": "2009-53", + "2010-01-01": "2009-53", + "2010-01-02": "2009-53", + "2010-01-03": "2009-53", + "404-12-31": "0404-53", + "405-12-31": "0405-52" + }, i, isoWeekYear, formatted5, formatted4, formatted2; + + moment.lang('en-gb'); // 1, 4 + for (i in cases) { + isoWeekYear = cases[i].split('-')[0]; + formatted5 = moment(i, 'YYYY-MM-DD').format('ggggg'); + test.equal('0' + isoWeekYear, formatted5, i + ": ggggg should be " + isoWeekYear + ", but " + formatted5); + formatted4 = moment(i, 'YYYY-MM-DD').format('gggg'); + test.equal(isoWeekYear, formatted4, i + ": gggg should be " + isoWeekYear + ", but " + formatted4); + formatted2 = moment(i, 'YYYY-MM-DD').format('gg'); + test.equal(isoWeekYear.slice(2, 4), formatted2, i + ": gg should be " + isoWeekYear + ", but " + formatted2); + } + + test.done(); + }, + + "iso weekday formats" : function (test) { + test.expect(7); + + test.equal(moment([1985, 1, 4]).format('E'), '1', "Feb 4 1985 is Monday -- 1st day"); + test.equal(moment([2029, 8, 18]).format('E'), '2', "Sep 18 2029 is Tuesday -- 2nd day"); + test.equal(moment([2013, 3, 24]).format('E'), '3', "Apr 24 2013 is Wednesday -- 3rd day"); + test.equal(moment([2015, 2, 5]).format('E'), '4', "Mar 5 2015 is Thursday -- 4th day"); + test.equal(moment([1970, 0, 2]).format('E'), '5', "Jan 2 1970 is Friday -- 5th day"); + test.equal(moment([2001, 4, 12]).format('E'), '6', "May 12 2001 is Saturday -- 6th day"); + test.equal(moment([2000, 0, 2]).format('E'), '7', "Jan 2 2000 is Sunday -- 7th day"); + + test.done(); + }, + + "weekday formats" : function (test) { + test.expect(7); + + moment.lang('dow: 3,doy: 5', {week: {dow: 3, doy: 5}}); + test.equal(moment([1985, 1, 6]).format('e'), '0', "Feb 6 1985 is Wednesday -- 0th day"); + test.equal(moment([2029, 8, 20]).format('e'), '1', "Sep 20 2029 is Thursday -- 1st day"); + test.equal(moment([2013, 3, 26]).format('e'), '2', "Apr 26 2013 is Friday -- 2nd day"); + test.equal(moment([2015, 2, 7]).format('e'), '3', "Mar 7 2015 is Saturday -- 3nd day"); + test.equal(moment([1970, 0, 4]).format('e'), '4', "Jan 4 1970 is Sunday -- 4th day"); + test.equal(moment([2001, 4, 14]).format('e'), '5', "May 14 2001 is Monday -- 5th day"); + test.equal(moment([2000, 0, 4]).format('e'), '6', "Jan 4 2000 is Tuesday -- 6th day"); + + test.done(); + }, + + "toString is just human readable format" : function (test) { + test.expect(1); + + var b = moment(new Date(2009, 1, 5, 15, 25, 50, 125)); + test.equal(b.toString(), b.format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ')); + test.done(); + }, + + "toJSON skips postformat" : function (test) { + test.expect(1); + + moment.lang('postformat', {postformat: function (s) { s.replace(/./g, 'X'); }}); + test.equal(moment.utc([2000, 0, 1]).toJSON(), "2000-01-01T00:00:00.000Z", "toJSON doesn't postformat"); + moment.lang('postformat', null); + test.done(); + }, + + "calendar day timezone" : function (test) { + test.expect(10); + + moment.lang('en'); + var zones = [60, -60, 90, -90, 360, -360, 720, -720], + b = moment().utc().startOf('day').subtract({ m : 1 }), + c = moment().local().startOf('day').subtract({ m : 1 }), + i, z, a; + + for (i = 0; i < zones.length; ++i) { + z = zones[i]; + a = moment().zone(z).startOf('day').subtract({ m: 1 }); + test.equal(moment(a).zone(z).calendar(), "Yesterday at 11:59 PM", "Yesterday at 11:59 PM, not Today, or the wrong time"); + } + + test.equal(moment(b).utc().calendar(), "Yesterday at 11:59 PM", "Yesterday at 11:59 PM, not Today, or the wrong time"); + test.equal(moment(c).local().calendar(), "Yesterday at 11:59 PM", "Yesterday at 11:59 PM, not Today, or the wrong time"); + + test.done(); + }, + + "invalid" : function (test) { + moment.lang('en'); + + test.equal(moment.invalid().format(), "Invalid date"); + test.equal(moment.invalid().format('YYYY-MM-DD'), "Invalid date"); + + test.done(); + }, + + "quarter formats" : function (test) { + test.expect(7); + + test.equal(moment([1985, 1, 4]).format('Q'), '1', "Feb 4 1985 is Q1"); + test.equal(moment([2029, 8, 18]).format('Q'), '3', "Sep 18 2029 is Q3"); + test.equal(moment([2013, 3, 24]).format('Q'), '2', "Apr 24 2013 is Q2"); + test.equal(moment([2015, 2, 5]).format('Q'), '1', "Mar 5 2015 is Q1"); + test.equal(moment([1970, 0, 2]).format('Q'), '1', "Jan 2 1970 is Q1"); + test.equal(moment([2001, 11, 12]).format('Q'), '4', "Dec 12 2001 is Q4"); + test.equal(moment([2000, 0, 2]).format('[Q]Q-YYYY'), 'Q1-2000', "Jan 2 2000 is Q1"); + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/getters_setters.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/getters_setters.js new file mode 100755 index 0000000..62c25ef --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/getters_setters.js @@ -0,0 +1,244 @@ +var moment = require("../../moment"); + +exports.getters_setters = { + "getters" : function (test) { + test.expect(8); + + var a = moment([2011, 9, 12, 6, 7, 8, 9]); + test.equal(a.year(), 2011, 'year'); + test.equal(a.month(), 9, 'month'); + test.equal(a.date(), 12, 'date'); + test.equal(a.day(), 3, 'day'); + test.equal(a.hours(), 6, 'hour'); + test.equal(a.minutes(), 7, 'minute'); + test.equal(a.seconds(), 8, 'second'); + test.equal(a.milliseconds(), 9, 'milliseconds'); + test.done(); + }, + + "getters programmatic" : function (test) { + var a = moment([2011, 9, 12, 6, 7, 8, 9]); + test.equal(a.get('year'), 2011, 'year'); + test.equal(a.get('month'), 9, 'month'); + test.equal(a.get('date'), 12, 'date'); + test.equal(a.get('day'), 3, 'day'); + test.equal(a.get('hour'), 6, 'hour'); + test.equal(a.get('minute'), 7, 'minute'); + test.equal(a.get('second'), 8, 'second'); + test.equal(a.get('milliseconds'), 9, 'milliseconds'); + + //actual getters tested elsewhere + test.equal(a.get('weekday'), a.weekday(), 'weekday'); + test.equal(a.get('isoWeekday'), a.isoWeekday(), 'isoWeekday'); + test.equal(a.get('week'), a.week(), 'week'); + test.equal(a.get('isoWeek'), a.isoWeek(), 'isoWeek'); + test.equal(a.get('dayOfYear'), a.dayOfYear(), 'dayOfYear'); + test.done(); + }, + + "setters plural" : function (test) { + test.expect(8); + + var a = moment(); + a.years(2011); + a.months(9); + a.dates(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(9); + test.equal(a.years(), 2011, 'years'); + test.equal(a.months(), 9, 'months'); + test.equal(a.dates(), 12, 'dates'); + test.equal(a.days(), 3, 'days'); + test.equal(a.hours(), 6, 'hours'); + test.equal(a.minutes(), 7, 'minutes'); + test.equal(a.seconds(), 8, 'seconds'); + test.equal(a.milliseconds(), 9, 'milliseconds'); + test.done(); + }, + + "setters singular" : function (test) { + test.expect(8); + + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hour(6); + a.minute(7); + a.second(8); + a.millisecond(9); + test.equal(a.year(), 2011, 'year'); + test.equal(a.month(), 9, 'month'); + test.equal(a.date(), 12, 'date'); + test.equal(a.day(), 3, 'day'); + test.equal(a.hour(), 6, 'hour'); + test.equal(a.minute(), 7, 'minute'); + test.equal(a.second(), 8, 'second'); + test.equal(a.millisecond(), 9, 'milliseconds'); + test.done(); + }, + + "setters" : function (test) { + test.expect(9); + + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(9); + test.equal(a.year(), 2011, 'year'); + test.equal(a.month(), 9, 'month'); + test.equal(a.date(), 12, 'date'); + test.equal(a.day(), 3, 'day'); + test.equal(a.hours(), 6, 'hour'); + test.equal(a.minutes(), 7, 'minute'); + test.equal(a.seconds(), 8, 'second'); + test.equal(a.milliseconds(), 9, 'milliseconds'); + + // Test month() behavior. See https://github.com/timrwood/moment/pull/822 + a = moment('20130531', 'YYYYMMDD'); + a.month(3); + test.equal(a.month(), 3, 'month edge case'); + + test.done(); + }, + + "setter programmatic" : function (test) { + var a = moment(); + a.set('year', 2011); + a.set('month', 9); + a.set('date', 12); + a.set('hours', 6); + a.set('minutes', 7); + a.set('seconds', 8); + a.set('milliseconds', 9); + test.equal(a.year(), 2011, 'year'); + test.equal(a.month(), 9, 'month'); + test.equal(a.date(), 12, 'date'); + test.equal(a.day(), 3, 'day'); + test.equal(a.hours(), 6, 'hour'); + test.equal(a.minutes(), 7, 'minute'); + test.equal(a.seconds(), 8, 'second'); + test.equal(a.milliseconds(), 9, 'milliseconds'); + + // Test month() behavior. See https://github.com/timrwood/moment/pull/822 + a = moment('20130531', 'YYYYMMDD'); + a.month(3); + test.equal(a.month(), 3, 'month edge case'); + + test.done(); + }, + + // Disable this, until we weekYear setter is fixed. + // https://github.com/moment/moment/issues/1379 + // "setters programatic with weeks" : function (test) { + // var a = moment(); + // a.set('weekYear', 2001); + // a.set('week', 49); + // a.set('day', 4); + // test.equals(a.weekYear(), 2001); + // test.equals(a.week(), 49); + // test.equals(a.day(), 4); + + // a.set('weekday', 1); + // test.equals(a.weekday(), 1); + + // test.done(); + // }, + + // I think this suffers from the same issue as the non-iso version. + // "setters programatic with weeks ISO" : function (test) { + // var a = moment(); + // a.set('isoWeekYear', 2001); + // a.set('isoWeek', 49); + // a.set('isoWeekday', 4); + + // test.equals(a.weekYear(), 2001); + // test.equals(a.week(), 49); + // test.equals(a.day(), 4); + + // test.done(); + // }, + + "setters strings" : function (test) { + test.expect(7); + + var a = moment([2012]).lang('en'); + test.equal(a.clone().day(0).day('Wednesday').day(), 3, 'day full name'); + test.equal(a.clone().day(0).day('Wed').day(), 3, 'day short name'); + test.equal(a.clone().day(0).day('We').day(), 3, 'day minimal name'); + test.equal(a.clone().day(0).day('invalid').day(), 0, 'invalid day name'); + test.equal(a.clone().month(0).month('April').month(), 3, 'month full name'); + test.equal(a.clone().month(0).month('Apr').month(), 3, 'month short name'); + test.equal(a.clone().month(0).month('invalid').month(), 0, 'invalid month name'); + test.done(); + }, + + "setters - falsey values" : function (test) { + test.expect(1); + + var a = moment(); + // ensure minutes wasn't coincidentally 0 already + a.minutes(1); + a.minutes(0); + test.equal(a.minutes(), 0, 'falsey value'); + test.done(); + }, + + "chaining setters" : function (test) { + test.expect(7); + + var a = moment(); + a.year(2011) + .month(9) + .date(12) + .hours(6) + .minutes(7) + .seconds(8); + test.equal(a.year(), 2011, 'year'); + test.equal(a.month(), 9, 'month'); + test.equal(a.date(), 12, 'date'); + test.equal(a.day(), 3, 'day'); + test.equal(a.hours(), 6, 'hour'); + test.equal(a.minutes(), 7, 'minute'); + test.equal(a.seconds(), 8, 'second'); + test.done(); + }, + + "day setter" : function (test) { + test.expect(18); + + var a = moment([2011, 0, 15]); + test.equal(moment(a).day(0).date(), 9, 'set from saturday to sunday'); + test.equal(moment(a).day(6).date(), 15, 'set from saturday to saturday'); + test.equal(moment(a).day(3).date(), 12, 'set from saturday to wednesday'); + + a = moment([2011, 0, 9]); + test.equal(moment(a).day(0).date(), 9, 'set from sunday to sunday'); + test.equal(moment(a).day(6).date(), 15, 'set from sunday to saturday'); + test.equal(moment(a).day(3).date(), 12, 'set from sunday to wednesday'); + + a = moment([2011, 0, 12]); + test.equal(moment(a).day(0).date(), 9, 'set from wednesday to sunday'); + test.equal(moment(a).day(6).date(), 15, 'set from wednesday to saturday'); + test.equal(moment(a).day(3).date(), 12, 'set from wednesday to wednesday'); + + test.equal(moment(a).day(-7).date(), 2, 'set from wednesday to last sunday'); + test.equal(moment(a).day(-1).date(), 8, 'set from wednesday to last saturday'); + test.equal(moment(a).day(-4).date(), 5, 'set from wednesday to last wednesday'); + + test.equal(moment(a).day(7).date(), 16, 'set from wednesday to next sunday'); + test.equal(moment(a).day(13).date(), 22, 'set from wednesday to next saturday'); + test.equal(moment(a).day(10).date(), 19, 'set from wednesday to next wednesday'); + + test.equal(moment(a).day(14).date(), 23, 'set from wednesday to second next sunday'); + test.equal(moment(a).day(20).date(), 29, 'set from wednesday to second next saturday'); + test.equal(moment(a).day(17).date(), 26, 'set from wednesday to second next wednesday'); + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/invalid.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/invalid.js new file mode 100755 index 0000000..494a489 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/invalid.js @@ -0,0 +1,29 @@ +var moment = require("../../moment"); + +exports.invalid = { + "invalid" : function (test) { + var m = moment.invalid(); + test.equals(m.isValid(), false); + test.equals(m.parsingFlags().userInvalidated, true); + test.ok(isNaN(m.valueOf())); + test.done(); + }, + + "invalid with existing flag" : function (test) { + var m = moment.invalid({invalidMonth : 'whatchamacallit'}); + test.equals(m.isValid(), false); + test.equals(m.parsingFlags().userInvalidated, false); + test.equals(m.parsingFlags().invalidMonth, 'whatchamacallit'); + test.ok(isNaN(m.valueOf())); + test.done(); + }, + + "invalid with custom flag" : function (test) { + var m = moment.invalid({tooBusyWith : 'reiculating splines'}); + test.equals(m.isValid(), false); + test.equals(m.parsingFlags().userInvalidated, false); + test.equals(m.parsingFlags().tooBusyWith, 'reiculating splines'); + test.ok(isNaN(m.valueOf())); + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/is_after.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/is_after.js new file mode 100755 index 0000000..7991132 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/is_after.js @@ -0,0 +1,188 @@ +var moment = require("../../moment"); + +exports.is_after = { + "is after without units" : function (test) { + test.expect(17); + + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); + test.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), false, "year is later"); + test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), true, "year is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), false, "month is later"); + test.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), true, "month is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), false, "day is later"); + test.equal(m.isAfter(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), true, "day is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), false, "hour is later"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), true, "hour is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), false, "minute is later"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), true, "minute is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), false, "second is later"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), true, "second is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, "millisecond match"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), false, "millisecond is later"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), true, "millisecond is earlier"); + test.equal(m.isAfter(m), false, "moments are not after themselves"); + test.equal(+m, +mCopy, "isAfter second should not change moment"); + test.done(); + }, + + "is after year" : function (test) { + test.expect(11); + + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); + test.equal(m.isAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), false, "year match"); + test.equal(m.isAfter(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'years'), true, "plural should work"); + test.equal(m.isAfter(moment(new Date(2013, 5, 6, 7, 8, 9, 10)), 'year'), false, "year is later"); + test.equal(m.isAfter(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'year'), true, "year is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), false, "exact start of year"); + test.equal(m.isAfter(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), false, "exact end of year"); + test.equal(m.isAfter(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), false, "start of next year"); + test.equal(m.isAfter(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), true, "end of previous year"); + test.equal(m.isAfter(moment(new Date(1980, 11, 31, 23, 59, 59, 999)), 'year'), true, "end of year far before"); + test.equal(m.isAfter(m, 'year'), false, "same moments are not after the same year"); + test.equal(+m, +mCopy, "isAfter year should not change moment"); + test.done(); + }, + + "is after month" : function (test) { + test.expect(13); + + var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m); + test.equal(m.isAfter(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), false, "month match"); + test.equal(m.isAfter(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'months'), true, "plural should work"); + test.equal(m.isAfter(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), false, "year is later"); + test.equal(m.isAfter(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'month'), true, "year is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), false, "month is later"); + test.equal(m.isAfter(moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), true, "month is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), false, "exact start of month"); + test.equal(m.isAfter(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), false, "exact end of month"); + test.equal(m.isAfter(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), false, "start of next month"); + test.equal(m.isAfter(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), true, "end of previous month"); + test.equal(m.isAfter(moment(new Date(2010, 12, 31, 23, 59, 59, 999)), 'month'), true, "later month but earlier year"); + test.equal(m.isAfter(m, 'month'), false, "same moments are not after the same month"); + test.equal(+m, +mCopy, "isAfter month should not change moment"); + test.done(); + }, + + "is after day" : function (test) { + test.expect(15); + + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 7, 8, 9, 10)), 'day'), false, "day match"); + test.equal(m.isAfter(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'days'), true, "plural should work"); + test.equal(m.isAfter(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'day'), false, "year is later"); + test.equal(m.isAfter(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'day'), true, "year is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 4, 2, 7, 8, 9, 10)), 'day'), false, "month is later"); + test.equal(m.isAfter(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), true, "month is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 3, 3, 7, 8, 9, 10)), 'day'), false, "day is later"); + test.equal(m.isAfter(moment(new Date(2011, 3, 1, 7, 8, 9, 10)), 'day'), true, "day is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 0, 0, 0, 0)), 'day'), false, "exact start of day"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 23, 59, 59, 999)), 'day'), false, "exact end of day"); + test.equal(m.isAfter(moment(new Date(2011, 3, 3, 0, 0, 0, 0)), 'day'), false, "start of next day"); + test.equal(m.isAfter(moment(new Date(2011, 3, 1, 23, 59, 59, 999)), 'day'), true, "end of previous day"); + test.equal(m.isAfter(moment(new Date(2010, 3, 10, 0, 0, 0, 0)), 'day'), true, "later day but earlier year"); + test.equal(m.isAfter(m, 'day'), false, "same moments are not after the same day"); + test.equal(+m, +mCopy, "isAfter day should not change moment"); + test.done(); + }, + + "is after hour" : function (test) { + test.expect(16); + + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, "hour match"); + test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hours'), true, "plural should work"); + test.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hour'), false, "year is later"); + test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hour'), true, "year is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 8, 9, 10)), 'hour'), false, "month is later"); + test.equal(m.isAfter(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), true, "month is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 8, 9, 10)), 'hour'), false, "day is later"); + test.equal(m.isAfter(moment(new Date(2011, 3, 1, 3, 8, 9, 10)), 'hour'), true, "day is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 8, 9, 10)), 'hour'), false, "hour is later"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, "hour is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 0, 0, 0)), 'hour'), false, "exact start of hour"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 59, 59, 999)), 'hour'), false, "exact end of hour"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 0, 0, 0)), 'hour'), false, "start of next hour"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 2, 59, 59, 999)), 'hour'), true, "end of previous hour"); + test.equal(m.isAfter(m, 'hour'), false, "same moments are not after the same hour"); + test.equal(+m, +mCopy, "isAfter hour should not change moment"); + test.done(); + }, + + "is after minute" : function (test) { + test.expect(18); + + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 9, 10)), 'minute'), false, "minute match"); + test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minutes'), true, "plural should work"); + test.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minute'), false, "year is later"); + test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minute'), true, "year is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 9, 10)), 'minute'), false, "month is later"); + test.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), true, "month is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 9, 10)), 'minute'), false, "day is later"); + test.equal(m.isAfter(moment(new Date(2011, 3, 1, 3, 4, 9, 10)), 'minute'), true, "day is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 9, 10)), 'minute'), false, "hour is later"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 2, 4, 9, 10)), 'minute'), true, "hour is earler"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 9, 10)), 'minute'), false, "minute is later"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 9, 10)), 'minute'), true, "minute is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 0, 0)), 'minute'), false, "exact start of minute"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 59, 999)), 'minute'), false, "exact end of minute"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 0, 0)), 'minute'), false, "start of next minute"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 59, 999)), 'minute'), true, "end of previous minute"); + test.equal(m.isAfter(m, 'minute'), false, "same moments are not after the same minute"); + test.equal(+m, +mCopy, "isAfter minute should not change moment"); + test.done(); + }, + + "is after second" : function (test) { + test.expect(20); + + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'second'), false, "second match"); + test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'seconds'), true, "plural should work"); + test.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'second'), false, "year is later"); + test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'second'), true, "year is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'second'), false, "month is later"); + test.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), true, "month is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'second'), false, "day is later"); + test.equal(m.isAfter(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'second'), true, "day is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'second'), false, "hour is later"); + test.equal(m.isAfter(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'second'), true, "hour is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'second'), false, "minute is later"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'second'), true, "minute is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'second'), false, "second is later"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'second'), true, "second is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 0)), 'second'), false, "exact start of second"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 999)), 'second'), false, "exact end of second"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 0)), 'second'), false, "start of next second"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 999)), 'second'), true, "end of previous second"); + test.equal(m.isAfter(m, 'second'), false, "same moments are not after the same second"); + test.equal(+m, +mCopy, "isAfter second should not change moment"); + test.done(); + }, + + "is after millisecond" : function (test) { + test.expect(18); + + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, "millisecond match"); + test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds'), true, "plural should work"); + test.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, "year is later"); + test.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, "year is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), false, "month is later"); + test.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), true, "month is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), false, "day is later"); + test.equal(m.isAfter(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), true, "day is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), false, "hour is later"); + test.equal(m.isAfter(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), true, "hour is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), false, "minute is later"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), true, "minute is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), false, "second is later"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), true, "second is earlier"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), false, "millisecond is later"); + test.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), true, "millisecond is earlier"); + test.equal(m.isAfter(m, 'millisecond'), false, "same moments are not after the same millisecond"); + test.equal(+m, +mCopy, "isAfter millisecond should not change moment"); + test.done(); + } + +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/is_before.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/is_before.js new file mode 100755 index 0000000..c3b0a4f --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/is_before.js @@ -0,0 +1,187 @@ +var moment = require("../../moment"); + +exports.is_before = { + "is after without units" : function (test) { + test.expect(17); + + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); + test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), true, "year is later"); + test.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), false, "year is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), true, "month is later"); + test.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), false, "month is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), true, "day is later"); + test.equal(m.isBefore(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), false, "day is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), true, "hour is later"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), false, "hour is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), true, "minute is later"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), false, "minute is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), true, "second is later"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), false, "second is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, "millisecond match"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), true, "millisecond is later"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), false, "millisecond is earlier"); + test.equal(m.isBefore(m), false, "moments are not before themselves"); + test.equal(+m, +mCopy, "isBefore second should not change moment"); + test.done(); + }, + + "is before year" : function (test) { + test.expect(11); + + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); + test.equal(m.isBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), false, "year match"); + test.equal(m.isBefore(moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'years'), true, "plural should work"); + test.equal(m.isBefore(moment(new Date(2013, 5, 6, 7, 8, 9, 10)), 'year'), true, "year is later"); + test.equal(m.isBefore(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'year'), false, "year is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), false, "exact start of year"); + test.equal(m.isBefore(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), false, "exact end of year"); + test.equal(m.isBefore(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), true, "start of next year"); + test.equal(m.isBefore(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), false, "end of previous year"); + test.equal(m.isBefore(moment(new Date(1980, 11, 31, 23, 59, 59, 999)), 'year'), false, "end of year far before"); + test.equal(m.isBefore(m, 'year'), false, "same moments are not before the same year"); + test.equal(+m, +mCopy, "isBefore year should not change moment"); + test.done(); + }, + + "is before month" : function (test) { + test.expect(13); + + var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m); + test.equal(m.isBefore(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), false, "month match"); + test.equal(m.isBefore(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'months'), true, "plural should work"); + test.equal(m.isBefore(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), true, "year is later"); + test.equal(m.isBefore(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'month'), false, "year is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), true, "month is later"); + test.equal(m.isBefore(moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), false, "month is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), false, "exact start of month"); + test.equal(m.isBefore(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), false, "exact end of month"); + test.equal(m.isBefore(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), true, "start of next month"); + test.equal(m.isBefore(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), false, "end of previous month"); + test.equal(m.isBefore(moment(new Date(2010, 12, 31, 23, 59, 59, 999)), 'month'), false, "later month but earlier year"); + test.equal(m.isBefore(m, 'month'), false, "same moments are not before the same month"); + test.equal(+m, +mCopy, "isBefore month should not change moment"); + test.done(); + }, + + "is before day" : function (test) { + test.expect(15); + + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 7, 8, 9, 10)), 'day'), false, "day match"); + test.equal(m.isBefore(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'days'), true, "plural should work"); + test.equal(m.isBefore(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'day'), true, "year is later"); + test.equal(m.isBefore(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'day'), false, "year is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 4, 2, 7, 8, 9, 10)), 'day'), true, "month is later"); + test.equal(m.isBefore(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), false, "month is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 3, 3, 7, 8, 9, 10)), 'day'), true, "day is later"); + test.equal(m.isBefore(moment(new Date(2011, 3, 1, 7, 8, 9, 10)), 'day'), false, "day is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 0, 0, 0, 0)), 'day'), false, "exact start of day"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 23, 59, 59, 999)), 'day'), false, "exact end of day"); + test.equal(m.isBefore(moment(new Date(2011, 3, 3, 0, 0, 0, 0)), 'day'), true, "start of next day"); + test.equal(m.isBefore(moment(new Date(2011, 3, 1, 23, 59, 59, 999)), 'day'), false, "end of previous day"); + test.equal(m.isBefore(moment(new Date(2010, 3, 10, 0, 0, 0, 0)), 'day'), false, "later day but earlier year"); + test.equal(m.isBefore(m, 'day'), false, "same moments are not before the same day"); + test.equal(+m, +mCopy, "isBefore day should not change moment"); + test.done(); + }, + + "is before hour" : function (test) { + test.expect(16); + + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, "hour match"); + test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hours'), true, "plural should work"); + test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hour'), true, "year is later"); + test.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hour'), false, "year is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 8, 9, 10)), 'hour'), true, "month is later"); + test.equal(m.isBefore(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), false, "month is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 8, 9, 10)), 'hour'), true, "day is later"); + test.equal(m.isBefore(moment(new Date(2011, 3, 1, 3, 8, 9, 10)), 'hour'), false, "day is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 8, 9, 10)), 'hour'), true, "hour is later"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, "hour is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 0, 0, 0)), 'hour'), false, "exact start of hour"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 59, 59, 999)), 'hour'), false, "exact end of hour"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 0, 0, 0)), 'hour'), true, "start of next hour"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 2, 59, 59, 999)), 'hour'), false, "end of previous hour"); + test.equal(m.isBefore(m, 'hour'), false, "same moments are not before the same hour"); + test.equal(+m, +mCopy, "isBefore hour should not change moment"); + test.done(); + }, + + "is before minute" : function (test) { + test.expect(18); + + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 9, 10)), 'minute'), false, "minute match"); + test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minutes'), true, "plural should work"); + test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minute'), true, "year is later"); + test.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minute'), false, "year is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 9, 10)), 'minute'), true, "month is later"); + test.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), false, "month is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 9, 10)), 'minute'), true, "day is later"); + test.equal(m.isBefore(moment(new Date(2011, 3, 1, 3, 4, 9, 10)), 'minute'), false, "day is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 9, 10)), 'minute'), true, "hour is later"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 2, 4, 9, 10)), 'minute'), false, "hour is earler"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 9, 10)), 'minute'), true, "minute is later"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 9, 10)), 'minute'), false, "minute is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 0, 0)), 'minute'), false, "exact start of minute"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 59, 999)), 'minute'), false, "exact end of minute"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 0, 0)), 'minute'), true, "start of next minute"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 59, 999)), 'minute'), false, "end of previous minute"); + test.equal(m.isBefore(m, 'minute'), false, "same moments are not before the same minute"); + test.equal(+m, +mCopy, "isBefore minute should not change moment"); + test.done(); + }, + + "is before second" : function (test) { + test.expect(20); + + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'second'), false, "second match"); + test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'seconds'), true, "plural should work"); + test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'second'), true, "year is later"); + test.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'second'), false, "year is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'second'), true, "month is later"); + test.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), false, "month is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'second'), true, "day is later"); + test.equal(m.isBefore(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'second'), false, "day is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'second'), true, "hour is later"); + test.equal(m.isBefore(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'second'), false, "hour is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'second'), true, "minute is later"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'second'), false, "minute is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'second'), true, "second is later"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'second'), false, "second is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 0)), 'second'), false, "exact start of second"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 999)), 'second'), false, "exact end of second"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 0)), 'second'), true, "start of next second"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 999)), 'second'), false, "end of previous second"); + test.equal(m.isBefore(m, 'second'), false, "same moments are not before the same second"); + test.equal(+m, +mCopy, "isBefore second should not change moment"); + test.done(); + }, + + "is before millisecond" : function (test) { + test.expect(18); + + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, "millisecond match"); + test.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds'), false, "plural should work"); + test.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, "year is later"); + test.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, "year is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), true, "month is later"); + test.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), false, "month is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), true, "day is later"); + test.equal(m.isBefore(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), false, "day is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), true, "hour is later"); + test.equal(m.isBefore(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), false, "hour is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), true, "minute is later"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), false, "minute is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), true, "second is later"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), false, "second is earlier"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), true, "millisecond is later"); + test.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), false, "millisecond is earlier"); + test.equal(m.isBefore(m, 'millisecond'), false, "same moments are not before the same millisecond"); + test.equal(+m, +mCopy, "isBefore millisecond should not change moment"); + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/is_moment.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/is_moment.js new file mode 100755 index 0000000..b73521b --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/is_moment.js @@ -0,0 +1,36 @@ +var moment = require('../../moment'); + +exports.is_moment = { + "is moment object": function (test) { + test.expect(13); + + var MyObj = function () {}, + extend = function (a, b) { + var i; + for (i in b) { + a[i] = b[i]; + } + return a; + }; + MyObj.prototype.toDate = function () { + return new Date(); + }; + + test.ok(moment.isMoment(moment()), 'simple moment object'); + test.ok(moment.isMoment(moment('invalid date')), 'invalid moment object'); + test.ok(moment.isMoment(extend({}, moment())), 'externally cloned moments are moments'); + test.ok(moment.isMoment(extend({}, moment.utc())), 'externally cloned utc moments are moments'); + + test.ok(!moment.isMoment(new MyObj()), 'myObj is not moment object'); + test.ok(!moment.isMoment(moment), 'moment function is not moment object'); + test.ok(!moment.isMoment(new Date()), 'date object is not moment object'); + test.ok(!moment.isMoment(Object), 'Object is not moment object'); + test.ok(!moment.isMoment('foo'), 'string is not moment object'); + test.ok(!moment.isMoment(1), 'number is not moment object'); + test.ok(!moment.isMoment(NaN), 'NaN is not moment object'); + test.ok(!moment.isMoment(null), 'null is not moment object'); + test.ok(!moment.isMoment(undefined), 'undefined is not moment object'); + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/is_same.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/is_same.js new file mode 100755 index 0000000..9611382 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/is_same.js @@ -0,0 +1,172 @@ +var moment = require("../../moment"); + +exports.is_same = { + "is same without units" : function (test) { + test.expect(17); + + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); + test.equal(m.isSame(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), false, "year is later"); + test.equal(m.isSame(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), false, "year is earlier"); + test.equal(m.isSame(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), false, "month is later"); + test.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), false, "month is earlier"); + test.equal(m.isSame(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), false, "day is later"); + test.equal(m.isSame(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), false, "day is earlier"); + test.equal(m.isSame(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), false, "hour is later"); + test.equal(m.isSame(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), false, "hour is earlier"); + test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), false, "minute is later"); + test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), false, "minute is earlier"); + test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), false, "second is later"); + test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), false, "second is earlier"); + test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), true, "millisecond match"); + test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), false, "millisecond is later"); + test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), false, "millisecond is earlier"); + test.equal(m.isSame(m), true, "moments are the same as themselves"); + test.equal(+m, +mCopy, "isSame second should not change moment"); + test.done(); + }, + + "is same year" : function (test) { + test.expect(9); + + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); + test.equal(m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), true, "year match"); + test.equal(m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'years'), true, "plural should work"); + test.equal(m.isSame(moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'year'), false, "year mismatch"); + test.equal(m.isSame(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), true, "exact start of year"); + test.equal(m.isSame(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), true, "exact end of year"); + test.equal(m.isSame(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), false, "start of next year"); + test.equal(m.isSame(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), false, "end of previous year"); + test.equal(m.isSame(m, 'year'), true, "same moments are in the same year"); + test.equal(+m, +mCopy, "isSame year should not change moment"); + test.done(); + }, + + "is same month" : function (test) { + test.expect(10); + + var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m); + test.equal(m.isSame(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), true, "month match"); + test.equal(m.isSame(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'months'), true, "plural should work"); + test.equal(m.isSame(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), false, "year mismatch"); + test.equal(m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), false, "month mismatch"); + test.equal(m.isSame(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), true, "exact start of month"); + test.equal(m.isSame(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), true, "exact end of month"); + test.equal(m.isSame(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), false, "start of next month"); + test.equal(m.isSame(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), false, "end of previous month"); + test.equal(m.isSame(m, 'month'), true, "same moments are in the same month"); + test.equal(+m, +mCopy, "isSame month should not change moment"); + test.done(); + }, + + "is same day" : function (test) { + test.expect(11); + + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'day'), true, "day match"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'days'), true, "plural should work"); + test.equal(m.isSame(moment(new Date(2012, 1, 2, 7, 8, 9, 10)), 'day'), false, "year mismatch"); + test.equal(m.isSame(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), false, "month mismatch"); + test.equal(m.isSame(moment(new Date(2011, 1, 3, 7, 8, 9, 10)), 'day'), false, "day mismatch"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 0, 0, 0, 0)), 'day'), true, "exact start of day"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 23, 59, 59, 999)), 'day'), true, "exact end of day"); + test.equal(m.isSame(moment(new Date(2011, 1, 3, 0, 0, 0, 0)), 'day'), false, "start of next day"); + test.equal(m.isSame(moment(new Date(2011, 1, 1, 23, 59, 59, 999)), 'day'), false, "end of previous day"); + test.equal(m.isSame(m, 'day'), true, "same moments are in the same day"); + test.equal(+m, +mCopy, "isSame day should not change moment"); + test.done(); + }, + + "is same hour" : function (test) { + test.expect(12); + + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), true, "hour match"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hours'), true, "plural should work"); + test.equal(m.isSame(moment(new Date(2012, 1, 2, 3, 8, 9, 10)), 'hour'), false, "year mismatch"); + test.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 8, 9, 10)), 'hour'), false, "month mismatch"); + test.equal(m.isSame(moment(new Date(2011, 1, 3, 3, 8, 9, 10)), 'hour'), false, "day mismatch"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 8, 9, 10)), 'hour'), false, "hour mismatch"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 0, 0, 0)), 'hour'), true, "exact start of hour"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 59, 59, 999)), 'hour'), true, "exact end of hour"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 0, 0, 0)), 'hour'), false, "start of next hour"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 2, 59, 59, 999)), 'hour'), false, "end of previous hour"); + test.equal(m.isSame(m, 'hour'), true, "same moments are in the same hour"); + test.equal(+m, +mCopy, "isSame hour should not change moment"); + test.done(); + }, + + "is same minute" : function (test) { + test.expect(13); + + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minute'), true, "minute match"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minutes'), true, "plural should work"); + test.equal(m.isSame(moment(new Date(2012, 1, 2, 3, 4, 9, 10)), 'minute'), false, "year mismatch"); + test.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), false, "month mismatch"); + test.equal(m.isSame(moment(new Date(2011, 1, 3, 3, 4, 9, 10)), 'minute'), false, "day mismatch"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 4, 9, 10)), 'minute'), false, "hour mismatch"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 5, 9, 10)), 'minute'), false, "minute mismatch"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 0, 0)), 'minute'), true, "exact start of minute"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 59, 999)), 'minute'), true, "exact end of minute"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 5, 0, 0)), 'minute'), false, "start of next minute"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 3, 59, 999)), 'minute'), false, "end of previous minute"); + test.equal(m.isSame(m, 'minute'), true, "same moments are in the same minute"); + test.equal(+m, +mCopy, "isSame minute should not change moment"); + test.done(); + }, + + "is same second" : function (test) { + test.expect(14); + + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'second'), true, "second match"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'seconds'), true, "plural should work"); + test.equal(m.isSame(moment(new Date(2012, 1, 2, 3, 4, 5, 10)), 'second'), false, "year mismatch"); + test.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), false, "month mismatch"); + test.equal(m.isSame(moment(new Date(2011, 1, 3, 3, 4, 5, 10)), 'second'), false, "day mismatch"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 4, 5, 10)), 'second'), false, "hour mismatch"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 5, 5, 10)), 'second'), false, "minute mismatch"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 6, 10)), 'second'), false, "second mismatch"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 0)), 'second'), true, "exact start of second"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 999)), 'second'), true, "exact end of second"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 6, 0)), 'second'), false, "start of next second"); + test.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 4, 999)), 'second'), false, "end of previous second"); + test.equal(m.isSame(m, 'second'), true, "same moments are in the same second"); + test.equal(+m, +mCopy, "isSame second should not change moment"); + test.done(); + }, + + "is same millisecond" : function (test) { + test.expect(18); + + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); + test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, "millisecond match"); + test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds'), true, "plural should work"); + test.equal(m.isSame(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, "year is later"); + test.equal(m.isSame(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, "year is earlier"); + test.equal(m.isSame(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), false, "month is later"); + test.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), false, "month is earlier"); + test.equal(m.isSame(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), false, "day is later"); + test.equal(m.isSame(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), false, "day is earlier"); + test.equal(m.isSame(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), false, "hour is later"); + test.equal(m.isSame(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), false, "hour is earlier"); + test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), false, "minute is later"); + test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), false, "minute is earlier"); + test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), false, "second is later"); + test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), false, "second is earlier"); + test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), false, "millisecond is later"); + test.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), false, "millisecond is earlier"); + test.equal(m.isSame(m, 'millisecond'), true, "same moments are in the same millisecond"); + test.equal(+m, +mCopy, "isSame millisecond should not change moment"); + test.done(); + }, + + "is same with zone'd moments" : function (test) { + test.expect(3); + test.ok(moment.parseZone('2013-02-01T-05:00').isSame(moment('2013-02-01'), 'year'), "zoned vs local moment"); + test.ok(moment('2013-02-01').isSame(moment('2013-02-01').zone('-05:00'), 'year'), "local vs zoned moment"); + test.ok(moment.parseZone('2013-02-01T-05:00').isSame(moment.parseZone('2013-02-01T-06:30'), 'year'), + "zoned vs (differently) zoned moment"); + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/is_valid.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/is_valid.js new file mode 100755 index 0000000..728a2b9 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/is_valid.js @@ -0,0 +1,263 @@ +var moment = require("../../moment"); + +exports.is_valid = { + "array bad month" : function (test) { + test.expect(2); + test.equal(moment([2010, -1]).isValid(), false, 'month -1 invalid'); + test.equal(moment([2100, 12]).isValid(), false, 'month 12 invalid'); + + test.done(); + }, + + "array good month" : function (test) { + test.expect(12 * 2); + + for (var i = 0; i < 12; i++) { + test.equal(moment([2010, i]).isValid(), true, 'month ' + i); + test.equal(moment.utc([2010, i]).isValid(), true, 'month ' + i); + } + + test.done(); + }, + + "array bad date" : function (test) { + var tests = [ + moment([2010, 0, 0]), + moment([2100, 0, 32]), + moment.utc([2010, 0, 0]), + moment.utc([2100, 0, 32]) + ], + i, m; + + test.expect(tests.length); + + for (i in tests) { + m = tests[i]; + test.equal(m.isValid(), false); + } + + test.done(); + }, + + "array bad date leap year" : function (test) { + test.expect(8); + + test.equal(moment([2010, 1, 29]).isValid(), false, '2010 feb 29'); + test.equal(moment([2100, 1, 29]).isValid(), false, '2100 feb 29'); + test.equal(moment([2008, 1, 30]).isValid(), false, '2008 feb 30'); + test.equal(moment([2000, 1, 30]).isValid(), false, '2000 feb 30'); + + test.equal(moment.utc([2010, 1, 29]).isValid(), false, 'utc 2010 feb 29'); + test.equal(moment.utc([2100, 1, 29]).isValid(), false, 'utc 2100 feb 29'); + test.equal(moment.utc([2008, 1, 30]).isValid(), false, 'utc 2008 feb 30'); + test.equal(moment.utc([2000, 1, 30]).isValid(), false, 'utc 2000 feb 30'); + + test.done(); + }, + + "string + formats bad date" : function (test) { + test.equal(moment('2020-00-00', []).isValid(), false, 'invalid on empty array'); + test.equal(moment('2020-00-00', ['YYYY-MM-DD', 'DD-MM-YYYY']).isValid(), false, 'invalid on all in array'); + test.equal(moment('2020-00-00', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), false, 'invalid on all in array'); + test.equal(moment('2020-01-01', ['YYYY-MM-DD', 'DD-MM-YYYY']).isValid(), true, 'valid on first'); + test.equal(moment('2020-01-01', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), true, 'valid on last'); + test.equal(moment('2020-01-01', ['YYYY-MM-DD', 'YYYY-DD-MM']).isValid(), true, 'valid on both'); + test.equal(moment('2020-13-01', ['YYYY-MM-DD', 'YYYY-DD-MM']).isValid(), true, 'valid on last'); + + test.equal(moment('12-13-2012', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), false, 'month rollover'); + test.equal(moment('12-13-2012', ['DD-MM-YYYY', 'DD-MM-YYYY']).isValid(), false, 'month rollover'); + test.equal(moment('38-12-2012', ['DD-MM-YYYY']).isValid(), false, 'day rollover'); + + test.done(); + }, + + "string nonsensical" : function (test) { + test.expect(1); + + test.equal(moment('fail').isValid(), false, 'string "fail"'); + test.done(); + }, + + "string nonsensical with format" : function (test) { + test.expect(2); + + test.equal(moment('fail', "MM-DD-YYYY").isValid(), false, 'string "fail" with format "MM-DD-YYYY"'); + test.equal(moment("xx-xx-2001", 'DD-MM-YYY').isValid(), true, 'string "xx-xx-2001" with format "MM-DD-YYYY"'); + test.done(); + }, + + "string with bad month name" : function (test) { + test.expect(2); + + moment.lang('en'); + + test.equal(moment('01-Nam-2012', 'DD-MMM-YYYY').isValid(), false, '"Nam" is an invalid month'); + test.equal(moment('01-Aug-2012', 'DD-MMM-YYYY').isValid(), true, '"Aug" is a valid month'); + + test.done(); + }, + + "string with spaceless format" : function (test) { + test.expect(1); + + test.equal(moment('10Sep2001', 'DDMMMYYYY').isValid(), true, "Parsing 10Sep2001 should result in a valid date"); + + test.done(); + }, + + "invalid string iso 8601" : function (test) { + + var tests = [ + '2010-00-00', + '2010-01-00', + '2010-01-40', + '2010-01-01T24', + '2010-01-01T23:60', + '2010-01-01T23:59:60' + ], i; + + test.expect(tests.length * 2); + + for (i = 0; i < tests.length; i++) { + test.equal(moment(tests[i]).isValid(), false, tests[i] + ' should be invalid'); + test.equal(moment.utc(tests[i]).isValid(), false, tests[i] + ' should be invalid'); + } + test.done(); + }, + + "invalid string iso 8601 + timezone" : function (test) { + + var tests = [ + '2010-00-00T+00:00', + '2010-01-00T+00:00', + '2010-01-40T+00:00', + '2010-01-40T24+00:00', + '2010-01-40T23:60+00:00', + '2010-01-40T23:59:60+00:00', + '2010-01-40T23:59:59.9999+00:00' + ], i; + + test.expect(tests.length * 2); + + for (i = 0; i < tests.length; i++) { + test.equal(moment(tests[i]).isValid(), false, tests[i] + ' should be invalid'); + test.equal(moment.utc(tests[i]).isValid(), false, tests[i] + ' should be invalid'); + } + test.done(); + }, + + "valid string iso 8601 + timezone" : function (test) { + var tests = [ + '2010-01-01', + '2010-01-30', + '2010-01-30T23+00:00', + '2010-01-30T23:59+00:00', + '2010-01-30T23:59:59+00:00', + '2010-01-30T23:59:59.999+00:00', + '2010-01-30T23:59:59.999-07:00', + '2010-01-30T00:00:00.000+07:00', + '2010-01-30T00:00:00.000+07' + ], i; + + test.expect(tests.length * 2); + + for (i = 0; i < tests.length; i++) { + test.equal(moment(tests[i]).isValid(), true, tests[i] + ' should be valid'); + test.equal(moment.utc(tests[i]).isValid(), true, tests[i] + ' should be valid'); + } + test.done(); + }, + + "invalidAt" : function (test) { + test.expect(7); + test.equal(moment([2000, 12]).invalidAt(), 1, 'month 12 is invalid: 0-11'); + test.equal(moment([2000, 1, 30]).invalidAt(), 2, '30 is not a valid february day'); + test.equal(moment([2000, 1, 29, 24]).invalidAt(), 3, '24 is invalid hour'); + test.equal(moment([2000, 1, 29, 23, 60]).invalidAt(), 4, '60 is invalid minute'); + test.equal(moment([2000, 1, 29, 23, 59, 60]).invalidAt(), 5, '60 is invalid second'); + test.equal(moment([2000, 1, 29, 23, 59, 59, 1000]).invalidAt(), 6, '1000 is invalid millisecond'); + test.equal(moment([2000, 1, 29, 23, 59, 59, 999]).invalidAt(), -1, '-1 if everything is fine'); + test.done(); + }, + + "valid Unix timestamp" : function (test) { + test.expect(21); + test.equal(moment(1371065286, "X").isValid(), true, 'number integer'); + test.equal(moment(1379066897.0, "X").isValid(), true, 'number whole 1dp'); + test.equal(moment(1379066897.7, "X").isValid(), true, 'number 1dp'); + test.equal(moment(1379066897.00, "X").isValid(), true, 'number whole 2dp'); + test.equal(moment(1379066897.07, "X").isValid(), true, 'number 2dp'); + test.equal(moment(1379066897.17, "X").isValid(), true, 'number 2dp'); + test.equal(moment(1379066897.000, "X").isValid(), true, 'number whole 3dp'); + test.equal(moment(1379066897.007, "X").isValid(), true, 'number 3dp'); + test.equal(moment(1379066897.017, "X").isValid(), true, 'number 3dp'); + test.equal(moment(1379066897.157, "X").isValid(), true, 'number 3dp'); + test.equal(moment("1371065286", "X").isValid(), true, 'string integer'); + test.equal(moment("1379066897.", "X").isValid(), true, 'string trailing .'); + test.equal(moment("1379066897.0", "X").isValid(), true, 'string whole 1dp'); + test.equal(moment("1379066897.7", "X").isValid(), true, 'string 1dp'); + test.equal(moment("1379066897.00", "X").isValid(), true, 'string whole 2dp'); + test.equal(moment("1379066897.07", "X").isValid(), true, 'string 2dp'); + test.equal(moment("1379066897.17", "X").isValid(), true, 'string 2dp'); + test.equal(moment("1379066897.000", "X").isValid(), true, 'string whole 3dp'); + test.equal(moment("1379066897.007", "X").isValid(), true, 'string 3dp'); + test.equal(moment("1379066897.017", "X").isValid(), true, 'string 3dp'); + test.equal(moment("1379066897.157", "X").isValid(), true, 'string 3dp'); + test.done(); + }, + + "invalid Unix timestamp" : function (test) { + test.expect(8); + test.equal(moment(undefined, "X").isValid(), false, 'undefined'); + test.equal(moment("undefined", "X").isValid(), false, 'string undefined'); + try { + test.equal(moment(null, "X").isValid(), false, 'null'); + } catch (e) { + test.ok(true, 'null'); + } + + test.equal(moment("null", "X").isValid(), false, 'string null'); + test.equal(moment([], "X").isValid(), false, 'array'); + test.equal(moment("{}", "X").isValid(), false, 'object'); + try { + test.equal(moment("", "X").isValid(), false, 'string empty'); + } catch (e) { + test.ok(true, 'string empty'); + } + + test.equal(moment(" ", "X").isValid(), false, 'string space'); + test.done(); + }, + + "empty" : function (test) { + test.equal(moment(null).isValid(), false, 'null'); + test.equal(moment('').isValid(), false, 'empty string'); + test.equal(moment(' ').isValid(), false, 'empty when trimmed'); + + test.equal(moment(null, 'YYYY').isValid(), false, 'format + null'); + test.equal(moment('', 'YYYY').isValid(), false, 'format + empty string'); + test.equal(moment(' ', 'YYYY').isValid(), false, 'format + empty when trimmed'); + test.done(); + }, + + "days of the year" : function (test) { + test.equal(moment('2010 300', 'YYYY DDDD').isValid(), true, 'day 300 of year valid'); + test.equal(moment('2010 365', 'YYYY DDDD').isValid(), true, 'day 365 of year valid'); + test.equal(moment('2010 366', 'YYYY DDDD').isValid(), false, 'day 366 of year invalid'); + test.equal(moment('2012 365', 'YYYY DDDD').isValid(), true, 'day 365 of leap year valid'); + test.equal(moment('2012 366', 'YYYY DDDD').isValid(), true, 'day 366 of leap year valid'); + test.equal(moment('2012 367', 'YYYY DDDD').isValid(), false, 'day 367 of leap year invalid'); + + test.done(); + }, + + "oddball permissiveness" : function (test) { + //https://github.com/moment/moment/issues/1128 + test.ok(moment("2010-10-3199", ["MM/DD/YYYY", "MM-DD-YYYY", "YYYY-MM-DD"]).isValid()); + + //https://github.com/moment/moment/issues/1122 + test.ok(moment("3:25", ["h:mma", "hh:mma", "H:mm", "HH:mm"]).isValid()); + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/lang.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/lang.js new file mode 100755 index 0000000..c624fc1 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/lang.js @@ -0,0 +1,310 @@ +var moment = require("../../moment"); + +exports.lang = { + "library getter" : function (test) { + var r; + test.expect(8); + + r = moment.lang('en'); + test.equal(r, 'en', 'Lang should return en by default'); + test.equal(moment.lang(), 'en', 'Lang should return en by default'); + + moment.lang('fr'); + test.equal(moment.lang(), 'fr', 'Lang should return the changed language'); + + moment.lang('en-gb'); + test.equal(moment.lang(), 'en-gb', 'Lang should return the changed language'); + + moment.lang('en'); + test.equal(moment.lang(), 'en', 'Lang should reset'); + + moment.lang('does-not-exist'); + test.equal(moment.lang(), 'en', 'Lang should reset'); + + moment.lang('EN'); + test.equal(moment.lang(), 'en', 'Normalize language key case'); + + moment.lang('EN_gb'); + test.equal(moment.lang(), 'en-gb', 'Normalize language key underscore'); + + test.done(); + }, + + "library getter array of langs" : function (test) { + test.equal(moment.lang(['non-existent', 'fr', 'also-non-existent']), 'fr', "passing an array uses the first valid language"); + test.equal(moment.lang(['es', 'fr', 'also-non-existent']), 'es', "passing an array uses the first valid language"); + test.done(); + }, + + "library getter language substrings" : function (test) { + test.equal(moment.lang('fr-crap'), 'fr', "use substrings"); + test.equal(moment.lang('fr-does-not-exist'), 'fr', "uses deep substrings"); + test.equal(moment.lang('fr-CA-does-not-exist'), 'fr-ca', "uses deepest substring"); + test.done(); + }, + + "library getter language array and substrings" : function (test) { + test.equal(moment.lang(['en-CH', 'fr']), 'en', "prefer root languages to shallower ones"); + test.equal(moment.lang(['en-gb-leeds', 'en-CA']), 'en-gb', "prefer root languages to shallower ones"); + test.equal(moment.lang(['en-fake', 'en-CA']), 'en-ca', "prefer alternatives with shared roots"); + test.equal(moment.lang(['en-fake', 'en-fake2', 'en-ca']), 'en-ca', "prefer alternatives with shared roots"); + test.equals(moment.lang(['fake-CA', 'fake-MX', 'fr']), 'fr', "always find something if possible"); + test.equals(moment.lang(['fake-CA', 'fake-MX', 'fr']), 'fr', "always find something if possible"); + test.equals(moment.lang(['fake-CA', 'fake-MX', 'fr-fake-fake-fake']), 'fr', "always find something if possible"); + test.equals(moment.lang(['en', 'en-CA']), 'en', "prefer earlier if it works"); + test.done(); + }, + + "library ensure inheritance" : function (test) { + test.expect(2); + + moment.lang('made-up', { + // I put them out of order + months : "February_March_April_May_June_July_August_September_October_November_December_January".split("_") + // the rest of the properties should be inherited. + }); + + test.equal(moment([2012, 5, 6]).format('MMMM'), 'July', 'Override some of the configs'); + test.equal(moment([2012, 5, 6]).format('MMM'), 'Jun', 'But not all of them'); + + test.done(); + }, + + "library ensure inheritance LT L LL LLL LLLL" : function (test) { + test.expect(5); + + var lang = 'test-inherit-lt'; + + moment.lang(lang, { + longDateFormat : { + LT : "-[LT]-", + L : "-[L]-", + LL : "-[LL]-", + LLL : "-[LLL]-", + LLLL : "-[LLLL]-" + }, + calendar : { + sameDay : '[sameDay] LT', + nextDay : '[nextDay] L', + nextWeek : '[nextWeek] LL', + lastDay : '[lastDay] LLL', + lastWeek : '[lastWeek] LLLL', + sameElse : 'L' + } + }); + + moment.lang('es'); + + test.equal(moment().lang(lang).calendar(), "sameDay -LT-", "Should use instance lang in LT formatting"); + test.equal(moment().add('days', 1).lang(lang).calendar(), "nextDay -L-", "Should use instance lang in L formatting"); + test.equal(moment().add('days', -1).lang(lang).calendar(), "lastDay -LLL-", "Should use instance lang in LL formatting"); + test.equal(moment().add('days', 4).lang(lang).calendar(), "nextWeek -LL-", "Should use instance lang in LLL formatting"); + test.equal(moment().add('days', -4).lang(lang).calendar(), "lastWeek -LLLL-", "Should use instance lang in LLLL formatting"); + + test.done(); + }, + + "library langData" : function (test) { + test.expect(3); + moment.lang('en'); + + var jan = moment([2000, 0]); + + test.equal(moment.langData().months(jan), 'January', 'no arguments returns global'); + test.equal(moment.langData('zh-cn').months(jan), '一月', 'a string returns the language based on key'); + test.equal(moment.langData(moment().lang('es')).months(jan), 'enero', "if you pass in a moment it uses the moment's language"); + + test.done(); + }, + + "instance lang method" : function (test) { + test.expect(3); + moment.lang('en'); + + test.equal(moment([2012, 5, 6]).format('MMMM'), 'June', 'Normally default to global'); + test.equal(moment([2012, 5, 6]).lang('es').format('MMMM'), 'junio', 'Use the instance specific language'); + test.equal(moment([2012, 5, 6]).format('MMMM'), 'June', 'Using an instance specific language does not affect other moments'); + + test.done(); + }, + + "instance lang method with array" : function (test) { + var m = moment().lang(['non-existent', 'fr', 'also-non-existent']); + test.equal(m.lang()._abbr, 'fr', "passing an array uses the first valid language"); + m = moment().lang(['es', 'fr', 'also-non-existent']); + test.equal(m.lang()._abbr, 'es', "passing an array uses the first valid language"); + test.done(); + }, + + "instance getter language substrings" : function (test) { + var m = moment(); + + m.lang('fr-crap'); + test.equal(m.lang()._abbr, 'fr', "use substrings"); + + m.lang('fr-does-not-exist'); + test.equal(m.lang()._abbr, 'fr', "uses deep substrings"); + + test.done(); + }, + + "instance lang persists with manipulation" : function (test) { + test.expect(3); + moment.lang('en'); + + test.equal(moment([2012, 5, 6]).lang('es').add({days: 1}).format('MMMM'), 'junio', 'With addition'); + test.equal(moment([2012, 5, 6]).lang('es').day(0).format('MMMM'), 'junio', 'With day getter'); + test.equal(moment([2012, 5, 6]).lang('es').endOf('day').format('MMMM'), 'junio', 'With endOf'); + + test.done(); + }, + + "instance lang persists with cloning" : function (test) { + test.expect(2); + moment.lang('en'); + + var a = moment([2012, 5, 6]).lang('es'), + b = a.clone(), + c = moment(a); + + test.equal(b.format('MMMM'), 'junio', 'using moment.fn.clone()'); + test.equal(b.format('MMMM'), 'junio', 'using moment()'); + + test.done(); + }, + + "duration lang method" : function (test) { + test.expect(3); + moment.lang('en'); + + test.equal(moment.duration({seconds: 44}).humanize(), 'a few seconds', 'Normally default to global'); + test.equal(moment.duration({seconds: 44}).lang('es').humanize(), 'unos segundos', 'Use the instance specific language'); + test.equal(moment.duration({seconds: 44}).humanize(), 'a few seconds', 'Using an instance specific language does not affect other durations'); + + test.done(); + }, + + "duration lang persists with cloning" : function (test) { + test.expect(1); + moment.lang('en'); + + var a = moment.duration({seconds: 44}).lang('es'), + b = moment.duration(a); + + test.equal(b.humanize(), 'unos segundos', 'using moment.duration()'); + test.done(); + }, + + "instance lang used with from" : function (test) { + test.expect(2); + moment.lang('en'); + + var a = moment([2012, 5, 6]).lang('es'), + b = moment([2012, 5, 7]); + + test.equal(a.from(b), 'hace un día', 'preserve language of first moment'); + test.equal(b.from(a), 'in a day', 'do not preserve language of second moment'); + + test.done(); + }, + + "month name callback function" : function (test) { + test.expect(3); + + function fakeReplace(m, format) { + if (/test/.test(format)) { + return "test"; + } + if (m.date() === 1) { + return "date"; + } + return 'default'; + } + + moment.lang('made-up-2', { + months : fakeReplace, + monthsShort : fakeReplace, + weekdays : fakeReplace, + weekdaysShort : fakeReplace, + weekdaysMin : fakeReplace + }); + + test.equal(moment().format('[test] dd ddd dddd MMM MMMM'), 'test test test test test test', 'format month name function should be able to access the format string'); + test.equal(moment([2011, 0, 1]).format('dd ddd dddd MMM MMMM'), 'date date date date date', 'format month name function should be able to access the moment object'); + test.equal(moment([2011, 0, 2]).format('dd ddd dddd MMM MMMM'), 'default default default default default', 'format month name function should be able to access the moment object'); + + test.done(); + }, + + "changing parts of a language config" : function (test) { + test.expect(2); + + moment.lang('partial-lang', { + months : 'a b c d e f g h i j k l'.split(' ') + }); + + test.equal(moment([2011, 0, 1]).format('MMMM'), 'a', 'should be able to set language values when creating the language'); + + moment.lang('partial-lang', { + monthsShort : 'A B C D E F G H I J K L'.split(' ') + }); + + test.equal(moment([2011, 0, 1]).format('MMMM MMM'), 'a A', 'should be able to set language values after creating the language'); + + test.done(); + }, + + "start/endOf week feature for first-day-is-monday langs" : function (test) { + test.expect(2); + + moment.lang('monday-lang', { + week : { + dow : 1 // Monday is the first day of the week + } + }); + + moment.lang('monday-lang'); + test.equal(moment([2013, 0, 1]).startOf('week').day(), 1, 'for lang monday-lang first day of the week should be monday'); + test.equal(moment([2013, 0, 1]).endOf('week').day(), 0, 'for lang monday-lang last day of the week should be sunday'); + + test.done(); + }, + + "meridiem parsing" : function (test) { + test.expect(2); + + moment.lang('meridiem-parsing', { + meridiemParse : /[bd]/i, + isPM : function (input) { + return input === 'b'; + } + }); + + moment.lang('meridiem-parsing'); + test.equal(moment('2012-01-01 3b', 'YYYY-MM-DD ha').hour(), 15, 'Custom parsing of meridiem should work'); + test.equal(moment('2012-01-01 3d', 'YYYY-MM-DD ha').hour(), 3, 'Custom parsing of meridiem should work'); + + test.done(); + }, + + "invalid date formatting" : function (test) { + moment.lang('has-invalid', { + invalidDate: 'KHAAAAAAAAAAAN!' + }); + + test.equal(moment.invalid().format(), "KHAAAAAAAAAAAN!"); + test.equal(moment.invalid().format('YYYY-MM-DD'), "KHAAAAAAAAAAAN!"); + + test.done(); + }, + + "return lang name" : function (test) { + test.expect(1); + + var registered = moment.lang('return-this', {}); + + test.equal(registered, 'return-this', 'returns the language configured'); + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/leapyear.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/leapyear.js new file mode 100755 index 0000000..84d67ab --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/leapyear.js @@ -0,0 +1,13 @@ +var moment = require("../../moment"); + +exports.leapyear = { + "leap year" : function (test) { + test.expect(4); + + test.equal(moment([2010, 0, 1]).isLeapYear(), false, '2010'); + test.equal(moment([2100, 0, 1]).isLeapYear(), false, '2100'); + test.equal(moment([2008, 0, 1]).isLeapYear(), true, '2008'); + test.equal(moment([2000, 0, 1]).isLeapYear(), true, '2000'); + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/listers.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/listers.js new file mode 100755 index 0000000..86fbbd2 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/listers.js @@ -0,0 +1,97 @@ +var moment = require("../../moment"); + +exports.listers = { + setUp : function (cb) { + moment.lang('en'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "default" : function (test) { + test.expect(5); + test.deepEqual(moment.months(), ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]); + test.deepEqual(moment.monthsShort(), ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]); + test.deepEqual(moment.weekdays(), ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]); + test.deepEqual(moment.weekdaysShort(), ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]); + test.deepEqual(moment.weekdaysMin(), ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]); + test.done(); + }, + + "index" : function (test) { + test.equal(moment.months(0), "January"); + test.equal(moment.months(2), "March"); + test.equal(moment.monthsShort(0), "Jan"); + test.equal(moment.monthsShort(2), "Mar"); + test.equal(moment.weekdays(0), "Sunday"); + test.equal(moment.weekdays(2), "Tuesday"); + test.equal(moment.weekdaysShort(0), "Sun"); + test.equal(moment.weekdaysShort(2), "Tue"); + test.equal(moment.weekdaysMin(0), "Su"); + test.equal(moment.weekdaysMin(2), "Tu"); + test.done(); + }, + + "localized" : function (test) { + var months = "one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve".split('_'), + monthsShort = "on_tw_th_fo_fi_si_se_ei_ni_te_el_tw".split("_"), + weekdays = "one_two_three_four_five_six_seven".split("_"), + weekdaysShort = "on_tw_th_fo_fi_si_se".split("_"), + weekdaysMin = "1_2_3_4_5_6_7".split("_"); + + moment.lang('numerologists', { + months : months, + monthsShort : monthsShort, + weekdays : weekdays, + weekdaysShort: weekdaysShort, + weekdaysMin: weekdaysMin + }); + + test.deepEqual(moment.months(), months); + test.deepEqual(moment.monthsShort(), monthsShort); + test.deepEqual(moment.weekdays(), weekdays); + test.deepEqual(moment.weekdaysShort(), weekdaysShort); + test.deepEqual(moment.weekdaysMin(), weekdaysMin); + + test.equal(moment.months(0), "one"); + test.equal(moment.monthsShort(0), "on"); + test.equal(moment.weekdays(0), "one"); + test.equal(moment.weekdaysShort(0), "on"); + test.equal(moment.weekdaysMin(0), "1"); + + test.equal(moment.months(2), "three"); + test.equal(moment.monthsShort(2), "th"); + test.equal(moment.weekdays(2), "three"); + test.equal(moment.weekdaysShort(2), "th"); + test.equal(moment.weekdaysMin(2), "3"); + + test.done(); + }, + + "with functions" : function (test) { + var monthsShort = "one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve".split('_'), + monthsShortWeird = "onesy_twosy_threesy_foursy_fivesy_sixsy_sevensy_eightsy_ninesy_tensy_elevensy_twelvesy".split('_'); + + moment.lang("difficult", { + + monthsShort: function (m, format) { + var arr = format.match(/-MMM-/) ? monthsShortWeird : monthsShort; + return arr[m.month()]; + } + }); + + test.expect(6); + test.deepEqual(moment.monthsShort(), monthsShort); + test.deepEqual(moment.monthsShort('MMM'), monthsShort); + test.deepEqual(moment.monthsShort('-MMM-'), monthsShortWeird); + + test.deepEqual(moment.monthsShort('MMM', 2), 'three'); + test.deepEqual(moment.monthsShort('-MMM-', 2), 'threesy'); + test.deepEqual(moment.monthsShort(2), 'three'); + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/min_max.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/min_max.js new file mode 100755 index 0000000..5f74bc7 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/min_max.js @@ -0,0 +1,56 @@ +var moment = require("../../moment"); + +var equalMoment = function (test, a, b, msg) { + test.equal(a.valueOf(), b.valueOf(), msg); +}; + +exports.min_max = { + setUp : function (cb) { + moment.lang('en'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "min" : function (test) { + test.expect(6); + + var now = moment(), + future = now.clone().add(1, 'month'), + past = now.clone().subtract(1, 'month'); + + equalMoment(test, past.min(now), now, "A past date with the minimum of now should be now"); + equalMoment(test, past.min(future), future, "A past date with the minimum of the future should be the future date"); + + equalMoment(test, future.min(now), future, "A future date with the minimum of now should be the future"); + equalMoment(test, future.min(past), future, "A future date with the minimum of the past should be the future"); + + equalMoment(test, now.min(past), now, "Now with the minimum of the past should be now"); + equalMoment(test, now.min(future), future, "Now with the minimum of the future should be the future"); + + test.done(); + }, + + "max" : function (test) { + test.expect(6); + + var now = moment(), + future = now.clone().add(1, 'month'), + past = now.clone().subtract(1, 'month'); + + equalMoment(test, past.max(now), past, "A past date with the maximum of now should be the past"); + equalMoment(test, past.max(future), past, "A past date with the maximum of the future should be the past"); + + equalMoment(test, future.max(now), now, "A future date with the maximum of now should be now"); + equalMoment(test, future.max(past), past, "A future date with the maximum of the past should be the past"); + + equalMoment(test, now.max(past), past, "Now with the maximum of the past should be the past"); + equalMoment(test, now.max(future), now, "Now with the maximum of the future should be now"); + + test.done(); + } + +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/mutable.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/mutable.js new file mode 100755 index 0000000..ea46b93 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/mutable.js @@ -0,0 +1,55 @@ +var moment = require("../../moment"); + +exports.mutable = { + "manipulation methods" : function (test) { + + var mutableMethods = { + 'year': function (m) { return m.year(2011); }, + 'month': function (m) { return m.month(1); }, + 'date': function (m) { return m.date(9); }, + 'hours': function (m) { return m.hours(7); }, + 'minutes': function (m) { return m.minutes(33); }, + 'seconds': function (m) { return m.seconds(44); }, + 'milliseconds': function (m) { return m.milliseconds(55); }, + 'day': function (m) { return m.day(2); }, + 'startOf': function (m) { return m.startOf('week'); }, + 'endOf': function (m) { return m.endOf('week'); }, + 'add': function (m) { return m.add('days', 1); }, + 'subtract': function (m) { return m.subtract('years', 2); }, + 'local': function (m) { return m.local(); }, + 'utc': function (m) { return m.utc(); } + }, method, d, d2; + + test.expect(14); + + for (method in mutableMethods) { + if (mutableMethods.hasOwnProperty(method)) { + d = moment(); + d2 = mutableMethods[method](d); + test.equal(d, d2, method + "() should be mutable"); + } + } + + test.done(); + }, + + "non mutable methods" : function (test) { + + var nonMutableMethods = { + 'clone': function (m) { return m.clone(); } + }, method, d, d2; + + test.expect(1); + + for (method in nonMutableMethods) { + if (nonMutableMethods.hasOwnProperty(method)) { + d = new Date(); + d2 = nonMutableMethods[method](moment(d)).toDate(); + test.notEqual(d, d2, method + "() should not be mutable"); + } + } + + test.done(); + } + +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/normalizeUnits.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/normalizeUnits.js new file mode 100755 index 0000000..0982127 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/normalizeUnits.js @@ -0,0 +1,34 @@ +/*global require, exports */ + +var moment = require("../../moment"); + +exports.normalizeUnits = { + "normalize units" : function (test) { + var fullKeys = ["year", "month", "isoWeek", "week", "day", "hour", "minute", "second", "millisecond", "date", 'dayOfYear', 'weekday', 'isoWeekday', 'weekYear', 'isoWeekYear'], + aliases = ["y", "M", "W", "w", "d", "h", "m", "s", "ms", "D", 'DDD', 'e', 'E', 'gg', 'GG'], + length = fullKeys.length, + fullKey, + fullKeyCaps, + fullKeyPlural, + fullKeyCapsPlural, + fullKeyLower, + alias, + index; + + for (index = 0; index < length; index += 1) { + fullKey = fullKeys[index]; + fullKeyCaps = fullKey.toUpperCase(); + fullKeyLower = fullKey.toLowerCase(); + fullKeyPlural = fullKey + "s"; + fullKeyCapsPlural = fullKeyCaps + "s"; + alias = aliases[index]; + test.equal(moment.normalizeUnits(fullKey), fullKey, "Testing full key " + fullKey); + test.equal(moment.normalizeUnits(fullKeyCaps), fullKey, "Testing full key capitalised " + fullKey); + test.equal(moment.normalizeUnits(fullKeyPlural), fullKey, "Testing full key plural " + fullKey); + test.equal(moment.normalizeUnits(fullKeyCapsPlural), fullKey, "Testing full key capitalised and plural " + fullKey); + test.equal(moment.normalizeUnits(alias), fullKey, "Testing alias " + fullKey); + } + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/parsing_flags.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/parsing_flags.js new file mode 100755 index 0000000..180db69 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/parsing_flags.js @@ -0,0 +1,184 @@ +var moment = require('../../moment'), + flags = function () { + return moment.apply(null, arguments).parsingFlags(); + }; + +exports.parsing_flags = { + + 'overflow with array' : function (test) { + + //months + test.equal(flags([2010, 0]).overflow, -1, 'month 0 valid'); + test.equal(flags([2010, 1]).overflow, -1, 'month 1 valid'); + test.equal(flags([2010, -1]).overflow, 1, 'month -1 invalid'); + test.equal(flags([2100, 12]).overflow, 1, 'month 12 invalid'); + + //days + test.equal(flags([2010, 1, 16]).overflow, -1, 'date valid'); + test.equal(flags([2010, 1, -1]).overflow, 2, 'date -1 invalid'); + test.equal(flags([2010, 1, 0]).overflow, 2, 'date 0 invalid'); + test.equal(flags([2010, 1, 32]).overflow, 2, 'date 32 invalid'); + test.equal(flags([2012, 1, 29]).overflow, -1, 'date leap year valid'); + test.equal(flags([2010, 1, 29]).overflow, 2, 'date leap year invalid'); + + //hours + test.equal(flags([2010, 1, 1, 8]).overflow, -1, 'hour valid'); + test.equal(flags([2010, 1, 1, 0]).overflow, -1, 'hour 0 valid'); + test.equal(flags([2010, 1, 1, -1]).overflow, 3, 'hour -1 invalid'); + test.equal(flags([2010, 1, 1, 24]).overflow, 3, 'hour 24 invalid'); + + //minutes + test.equal(flags([2010, 1, 1, 8, 15]).overflow, -1, 'minute valid'); + test.equal(flags([2010, 1, 1, 8, 0]).overflow, -1, 'minute 0 valid'); + test.equal(flags([2010, 1, 1, 8, -1]).overflow, 4, 'minute -1 invalid'); + test.equal(flags([2010, 1, 1, 8, 60]).overflow, 4, 'minute 60 invalid'); + + //seconds + test.equal(flags([2010, 1, 1, 8, 15, 12]).overflow, -1, 'second valid'); + test.equal(flags([2010, 1, 1, 8, 15, 0]).overflow, -1, 'second 0 valid'); + test.equal(flags([2010, 1, 1, 8, 15, -1]).overflow, 5, 'second -1 invalid'); + test.equal(flags([2010, 1, 1, 8, 15, 60]).overflow, 5, 'second 60 invalid'); + + //milliseconds + test.equal(flags([2010, 1, 1, 8, 15, 12, 345]).overflow, -1, 'millisecond valid'); + test.equal(flags([2010, 1, 1, 8, 15, 12, 0]).overflow, -1, 'millisecond 0 valid'); + test.equal(flags([2010, 1, 1, 8, 15, 12, -1]).overflow, 6, 'millisecond -1 invalid'); + test.equal(flags([2010, 1, 1, 8, 15, 12, 1000]).overflow, 6, 'millisecond 1000 invalid'); + + test.done(); + }, + + 'overflow without format' : function (test) { + + //months + test.equal(flags('2001-01', 'YYYY-MM').overflow, -1, 'month 1 valid'); + test.equal(flags('2001-12', 'YYYY-MM').overflow, -1, 'month 12 valid'); + test.equal(flags('2001-13', 'YYYY-MM').overflow, 1, 'month 13 invalid'); + + //days + test.equal(flags('2010-01-16', 'YYYY-MM-DD').overflow, -1, 'date 16 valid'); + test.equal(flags('2010-01-0', 'YYYY-MM-DD').overflow, 2, 'date 0 invalid'); + test.equal(flags('2010-01-32', 'YYYY-MM-DD').overflow, 2, 'date 32 invalid'); + test.equal(flags('2012-02-29', 'YYYY-MM-DD').overflow, -1, 'date leap year valid'); + test.equal(flags('2010-02-29', 'YYYY-MM-DD').overflow, 2, 'date leap year invalid'); + + //days of the year + test.equal(flags('2010 300', 'YYYY DDDD').overflow, -1, 'day 300 of year valid'); + test.equal(flags('2010 365', 'YYYY DDDD').overflow, -1, 'day 365 of year valid'); + test.equal(flags('2010 366', 'YYYY DDDD').overflow, 2, 'day 366 of year invalid'); + test.equal(flags('2012 366', 'YYYY DDDD').overflow, -1, 'day 366 of leap year valid'); + test.equal(flags('2012 367', 'YYYY DDDD').overflow, 2, 'day 367 of leap year invalid'); + + //hours + test.equal(flags('08', 'HH').overflow, -1, 'hour valid'); + test.equal(flags('00', 'HH').overflow, -1, 'hour 0 valid'); + test.equal(flags('24', 'HH').overflow, 3, 'hour 24 invalid'); + + //minutes + test.equal(flags('08:15', 'HH:mm').overflow, -1, 'minute valid'); + test.equal(flags('08:00', 'HH:mm').overflow, -1, 'minute 0 valid'); + test.equal(flags('08:60', 'HH:mm').overflow, 4, 'minute 60 invalid'); + + //seconds + test.equal(flags('08:15:12', 'HH:mm:ss').overflow, -1, 'second valid'); + test.equal(flags('08:15:00', 'HH:mm:ss').overflow, -1, 'second 0 valid'); + test.equal(flags('08:15:60', 'HH:mm:ss').overflow, 5, 'second 60 invalid'); + + //milliseconds + test.equal(flags('08:15:12:345', 'HH:mm:ss:SSSS').overflow, -1, 'millisecond valid'); + test.equal(flags('08:15:12:000', 'HH:mm:ss:SSSS').overflow, -1, 'millisecond 0 valid'); + + //this is OK because we don't match the last digit, so it's 100 ms + test.equal(flags('08:15:12:1000', 'HH:mm:ss:SSSS').overflow, -1, 'millisecond 1000 actually valid'); + + test.done(); + }, + + 'extra tokens' : function (test) { + + test.deepEqual(flags('1982-05-25', 'YYYY-MM-DD').unusedTokens, [], 'nothing extra'); + test.deepEqual(flags('1982-05', 'YYYY-MM-DD').unusedTokens, ['DD'], 'extra formatting token'); + test.deepEqual(flags('1982', 'YYYY-MM-DD').unusedTokens, ['MM', 'DD'], 'multiple extra formatting tokens'); + test.deepEqual(flags('1982-05', 'YYYY-MM-').unusedTokens, [], 'extra non-formatting token'); + test.deepEqual(flags('1982-05-', 'YYYY-MM-DD').unusedTokens, ['DD'], 'non-extra non-formatting token'); + test.deepEqual(flags('1982 05 1982', 'YYYY-MM-DD').unusedTokens, [], 'different non-formatting token'); + + test.done(); + }, + + 'extra tokens strict' : function (test) { + + test.deepEqual(flags('1982-05-25', 'YYYY-MM-DD', true).unusedTokens, [], 'nothing extra'); + test.deepEqual(flags('1982-05', 'YYYY-MM-DD', true).unusedTokens, ['-', 'DD'], 'extra formatting token'); + test.deepEqual(flags('1982', 'YYYY-MM-DD', true).unusedTokens, ['-', 'MM', '-', 'DD'], 'multiple extra formatting tokens'); + test.deepEqual(flags('1982-05', 'YYYY-MM-', true).unusedTokens, ['-'], 'extra non-formatting token'); + test.deepEqual(flags('1982-05-', 'YYYY-MM-DD', true).unusedTokens, ['DD'], 'non-extra non-formatting token'); + test.deepEqual(flags('1982 05 1982', 'YYYY-MM-DD', true).unusedTokens, ['-', '-'], 'different non-formatting token'); + + test.done(); + }, + + 'unused input' : function (test) { + test.deepEqual(flags('1982-05-25', 'YYYY-MM-DD').unusedInput, [], 'normal input'); + test.deepEqual(flags('1982-05-25 this is more stuff', 'YYYY-MM-DD').unusedInput, [' this is more stuff'], 'trailing nonsense'); + test.deepEqual(flags('1982-05-25 09:30', 'YYYY-MM-DD').unusedInput, [' 09:30'], ['trailing legit-looking input']); + test.deepEqual(flags('1982-05-25 some junk', 'YYYY-MM-DD [some junk]').unusedInput, [], 'junk that actually gets matched'); + test.deepEqual(flags('stuff at beginning 1982-05-25', 'YYYY-MM-DD').unusedInput, ['stuff at beginning '], 'leading junk'); + test.deepEqual(flags('junk 1982 more junk 05 yet more junk25', 'YYYY-MM-DD').unusedInput, ['junk ', ' more junk ', ' yet more junk'], 'interstitial junk'); + + test.done(); + }, + + 'unused input strict' : function (test) { + test.deepEqual(flags('1982-05-25', 'YYYY-MM-DD', true).unusedInput, [], 'normal input'); + test.deepEqual(flags('1982-05-25 this is more stuff', 'YYYY-MM-DD', true).unusedInput, [' this is more stuff'], 'trailing nonsense'); + test.deepEqual(flags('1982-05-25 09:30', 'YYYY-MM-DD', true).unusedInput, [' 09:30'], ['trailing legit-looking input']); + test.deepEqual(flags('1982-05-25 some junk', 'YYYY-MM-DD [some junk]', true).unusedInput, [], 'junk that actually gets matched'); + test.deepEqual(flags('stuff at beginning 1982-05-25', 'YYYY-MM-DD', true).unusedInput, ['stuff at beginning '], 'leading junk'); + test.deepEqual(flags('junk 1982 more junk 05 yet more junk25', 'YYYY-MM-DD', true).unusedInput, ['junk ', ' more junk ', ' yet more junk'], 'interstitial junk'); + + test.done(); + }, + + 'chars left over' : function (test) { + test.equal(flags('1982-05-25', 'YYYY-MM-DD').charsLeftOver, 0, 'normal input'); + test.equal(flags('1982-05-25 this is more stuff', 'YYYY-MM-DD').charsLeftOver, ' this is more stuff'.length, 'trailing nonsense'); + test.equal(flags('1982-05-25 09:30', 'YYYY-MM-DD').charsLeftOver, ' 09:30'.length, 'trailing legit-looking input'); + test.equal(flags('stuff at beginning 1982-05-25', 'YYYY-MM-DD').charsLeftOver, 'stuff at beginning '.length, 'leading junk'); + test.equal(flags('1982 junk 05 more junk25', 'YYYY-MM-DD').charsLeftOver, [' junk ', ' more junk'].join('').length, 'interstitial junk'); + test.equal(flags('stuff at beginning 1982 junk 05 more junk25', 'YYYY-MM-DD').charsLeftOver, ['stuff at beginning ', ' junk ', ' more junk'].join('').length, 'leading and interstitial junk'); + + test.done(); + }, + + 'empty' : function (test) { + test.equal(flags('1982-05-25', 'YYYY-MM-DD').empty, false, 'normal input'); + test.equal(flags('nothing here', 'YYYY-MM-DD').empty, true, 'pure garbage'); + test.equal(flags('junk but has the number 2000 in it', 'YYYY-MM-DD').empty, false, 'only mostly garbage'); + test.equal(flags('', 'YYYY-MM-DD').empty, true, 'empty string'); + test.equal(flags('', 'YYYY-MM-DD').empty, true, 'blank string'); + + test.done(); + }, + + 'null' : function (test) { + test.equal(flags('1982-05-25', 'YYYY-MM-DD').nullInput, false, 'normal input'); + test.equal(flags(null).nullInput, true, 'just null'); + test.equal(flags(null, 'YYYY-MM-DD').nullInput, true, 'null with format'); + + test.done(); + }, + + 'invalid month' : function (test) { + test.equal(flags('1982 May', 'YYYY MMMM').invalidMonth, null, 'normal input'); + test.equal(flags('1982 Laser', 'YYYY MMMM').invalidMonth, 'Laser', 'bad month name'); + + test.done(); + }, + + 'empty format array' : function (test) { + test.equal(flags('1982 May', ['YYYY MMM']).invalidFormat, false, 'empty format array'); + test.equal(flags('1982 May', []).invalidFormat, true, 'empty format array'); + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/preparse_postformat.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/preparse_postformat.js new file mode 100755 index 0000000..b7dd8f1 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/preparse_postformat.js @@ -0,0 +1,91 @@ +var moment = require("../../moment"); + + +var symbolMap = { + '1': '!', + '2': '@', + '3': '#', + '4': '$', + '5': '%', + '6': '^', + '7': '&', + '8': '*', + '9': '(', + '0': ')' +}; + +var numberMap = { + '!': '1', + '@': '2', + '#': '3', + '$': '4', + '%': '5', + '^': '6', + '&': '7', + '*': '8', + '(': '9', + ')': '0' +}; + +var symbolLang = { + preparse: function (string) { + return string.replace(/[!@#$%\^&*()]/g, function (match) { + return numberMap[match]; + }); + }, + + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + } +}; + +exports.preparse_postformat = { + setUp: function (cb) { + moment.lang('symbol', symbolLang); + cb(); + }, + + tearDown: function (cb) { + moment.lang('en-gb'); + cb(); + }, + + "transform": function (test) { + test.expect(3); + + test.equal(moment.utc('@)!@-)*-@&', 'YYYY-MM-DD').unix(), 1346025600, "preparse string + format"); + test.equal(moment.utc('@)!@-)*-@&').unix(), 1346025600, "preparse ISO8601 string"); + test.equal(moment.unix(1346025600).utc().format('YYYY-MM-DD'), '@)!@-)*-@&', "postformat"); + + test.done(); + }, + + "transform from": function (test) { + test.expect(3); + + var start = moment([2007, 1, 28]); + + test.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), "@ minutes", "postformat should work on moment.fn.from"); + test.equal(moment().add('d', 6).fromNow(true), "^ days", "postformat should work on moment.fn.fromNow"); + test.equal(moment.duration(10, "h").humanize(), "!) hours", "postformat should work on moment.duration.fn.humanize"); + + test.done(); + }, + + "calendar day" : function (test) { + test.expect(6); + + var a = moment().hours(2).minutes(0).seconds(0); + + test.equal(moment(a).calendar(), "Today at @:)) AM", "today at the same time"); + test.equal(moment(a).add({ m: 25 }).calendar(), "Today at @:@% AM", "Now plus 25 min"); + test.equal(moment(a).add({ h: 1 }).calendar(), "Today at #:)) AM", "Now plus 1 hour"); + test.equal(moment(a).add({ d: 1 }).calendar(), "Tomorrow at @:)) AM", "tomorrow at the same time"); + test.equal(moment(a).subtract({ h: 1 }).calendar(), "Today at !:)) AM", "Now minus 1 hour"); + test.equal(moment(a).subtract({ d: 1 }).calendar(), "Yesterday at @:)) AM", "yesterday at the same time"); + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/quarter.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/quarter.js new file mode 100755 index 0000000..a98de1b --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/quarter.js @@ -0,0 +1,17 @@ +var moment = require("../../moment"); + +exports.quarter = { + "library quarter" : function (test) { + test.expect(7); + + test.equal(moment([1985, 1, 4]).quarter(), 1, "Feb 4 1985 is Q1"); + test.equal(moment([2029, 8, 18]).quarter(), 3, "Sep 18 2029 is Q3"); + test.equal(moment([2013, 3, 24]).quarter(), 2, "Apr 24 2013 is Q2"); + test.equal(moment([2015, 2, 5]).quarter(), 1, "Mar 5 2015 is Q1"); + test.equal(moment([1970, 0, 2]).quarter(), 1, "Jan 2 1970 is Q1"); + test.equal(moment([2001, 11, 12]).quarter(), 4, "Dec 12 2001 is Q4"); + test.equal(moment([2000, 0, 2]).quarter(), 1, "Jan 2 2000 is Q1"); + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/sod_eod.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/sod_eod.js new file mode 100755 index 0000000..17b9289 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/sod_eod.js @@ -0,0 +1,305 @@ +var moment = require("../../moment"); + +exports.end_start_of = { + setUp : function (cb) { + moment.lang('en'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "start of year" : function (test) { + test.expect(9); + + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('year'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('years'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('y'); + test.equal(+m, +ms, "Plural or singular should work"); + test.equal(+m, +ma, "Full or abbreviated should work"); + test.equal(m.year(), 2011, "keep the year"); + test.equal(m.month(), 0, "strip out the month"); + test.equal(m.date(), 1, "strip out the day"); + test.equal(m.hours(), 0, "strip out the hours"); + test.equal(m.minutes(), 0, "strip out the minutes"); + test.equal(m.seconds(), 0, "strip out the seconds"); + test.equal(m.milliseconds(), 0, "strip out the milliseconds"); + test.done(); + }, + + "end of year" : function (test) { + test.expect(9); + + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('year'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('years'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('y'); + test.equal(+m, +ms, "Plural or singular should work"); + test.equal(+m, +ma, "Full or abbreviated should work"); + test.equal(m.year(), 2011, "keep the year"); + test.equal(m.month(), 11, "set the month"); + test.equal(m.date(), 31, "set the day"); + test.equal(m.hours(), 23, "set the hours"); + test.equal(m.minutes(), 59, "set the minutes"); + test.equal(m.seconds(), 59, "set the seconds"); + test.equal(m.milliseconds(), 999, "set the seconds"); + test.done(); + }, + + "start of month" : function (test) { + test.expect(9); + + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('month'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('months'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('M'); + test.equal(+m, +ms, "Plural or singular should work"); + test.equal(+m, +ma, "Full or abbreviated should work"); + test.equal(m.year(), 2011, "keep the year"); + test.equal(m.month(), 1, "keep the month"); + test.equal(m.date(), 1, "strip out the day"); + test.equal(m.hours(), 0, "strip out the hours"); + test.equal(m.minutes(), 0, "strip out the minutes"); + test.equal(m.seconds(), 0, "strip out the seconds"); + test.equal(m.milliseconds(), 0, "strip out the milliseconds"); + test.done(); + }, + + "end of month" : function (test) { + test.expect(9); + + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('month'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('months'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('M'); + test.equal(+m, +ms, "Plural or singular should work"); + test.equal(+m, +ma, "Full or abbreviated should work"); + test.equal(m.year(), 2011, "keep the year"); + test.equal(m.month(), 1, "keep the month"); + test.equal(m.date(), 28, "set the day"); + test.equal(m.hours(), 23, "set the hours"); + test.equal(m.minutes(), 59, "set the minutes"); + test.equal(m.seconds(), 59, "set the seconds"); + test.equal(m.milliseconds(), 999, "set the seconds"); + test.done(); + }, + + "start of week" : function (test) { + test.expect(10); + + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('week'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('weeks'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('w'); + test.equal(+m, +ms, "Plural or singular should work"); + test.equal(+m, +ma, "Full or abbreviated should work"); + test.equal(m.year(), 2011, "keep the year"); + test.equal(m.month(), 0, "rolls back to January"); + test.equal(m.day(), 0, "set day of week"); + test.equal(m.date(), 30, "set correct date"); + test.equal(m.hours(), 0, "strip out the hours"); + test.equal(m.minutes(), 0, "strip out the minutes"); + test.equal(m.seconds(), 0, "strip out the seconds"); + test.equal(m.milliseconds(), 0, "strip out the milliseconds"); + test.done(); + }, + + "end of week" : function (test) { + test.expect(10); + + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('week'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('weeks'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('weeks'); + test.equal(+m, +ms, "Plural or singular should work"); + test.equal(+m, +ma, "Full or abbreviated should work"); + test.equal(m.year(), 2011, "keep the year"); + test.equal(m.month(), 1, "keep the month"); + test.equal(m.day(), 6, "set the day of the week"); + test.equal(m.date(), 5, "set the day"); + test.equal(m.hours(), 23, "set the hours"); + test.equal(m.minutes(), 59, "set the minutes"); + test.equal(m.seconds(), 59, "set the seconds"); + test.equal(m.milliseconds(), 999, "set the seconds"); + test.done(); + }, + + "start of iso-week" : function (test) { + test.expect(10); + + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('isoWeek'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('isoWeeks'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('W'); + test.equal(+m, +ms, "Plural or singular should work"); + test.equal(+m, +ma, "Full or abbreviated should work"); + test.equal(m.year(), 2011, "keep the year"); + test.equal(m.month(), 0, "rollback to January"); + test.equal(m.isoWeekday(), 1, "set day of iso-week"); + test.equal(m.date(), 31, "set correct date"); + test.equal(m.hours(), 0, "strip out the hours"); + test.equal(m.minutes(), 0, "strip out the minutes"); + test.equal(m.seconds(), 0, "strip out the seconds"); + test.equal(m.milliseconds(), 0, "strip out the milliseconds"); + test.done(); + }, + + "end of iso-week" : function (test) { + test.expect(10); + + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('isoWeek'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('isoWeeks'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('W'); + test.equal(+m, +ms, "Plural or singular should work"); + test.equal(+m, +ma, "Full or abbreviated should work"); + test.equal(m.year(), 2011, "keep the year"); + test.equal(m.month(), 1, "keep the month"); + test.equal(m.isoWeekday(), 7, "set the day of the week"); + test.equal(m.date(), 6, "set the day"); + test.equal(m.hours(), 23, "set the hours"); + test.equal(m.minutes(), 59, "set the minutes"); + test.equal(m.seconds(), 59, "set the seconds"); + test.equal(m.milliseconds(), 999, "set the seconds"); + test.done(); + }, + + "start of day" : function (test) { + test.expect(9); + + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('day'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('days'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('d'); + test.equal(+m, +ms, "Plural or singular should work"); + test.equal(+m, +ma, "Full or abbreviated should work"); + test.equal(m.year(), 2011, "keep the year"); + test.equal(m.month(), 1, "keep the month"); + test.equal(m.date(), 2, "keep the day"); + test.equal(m.hours(), 0, "strip out the hours"); + test.equal(m.minutes(), 0, "strip out the minutes"); + test.equal(m.seconds(), 0, "strip out the seconds"); + test.equal(m.milliseconds(), 0, "strip out the milliseconds"); + test.done(); + }, + + "end of day" : function (test) { + test.expect(9); + + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('day'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('days'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('d'); + test.equal(+m, +ms, "Plural or singular should work"); + test.equal(+m, +ma, "Full or abbreviated should work"); + test.equal(m.year(), 2011, "keep the year"); + test.equal(m.month(), 1, "keep the month"); + test.equal(m.date(), 2, "keep the day"); + test.equal(m.hours(), 23, "set the hours"); + test.equal(m.minutes(), 59, "set the minutes"); + test.equal(m.seconds(), 59, "set the seconds"); + test.equal(m.milliseconds(), 999, "set the seconds"); + test.done(); + }, + + "start of hour" : function (test) { + test.expect(9); + + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('hour'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('hours'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('h'); + test.equal(+m, +ms, "Plural or singular should work"); + test.equal(+m, +ma, "Full or abbreviated should work"); + test.equal(m.year(), 2011, "keep the year"); + test.equal(m.month(), 1, "keep the month"); + test.equal(m.date(), 2, "keep the day"); + test.equal(m.hours(), 3, "keep the hours"); + test.equal(m.minutes(), 0, "strip out the minutes"); + test.equal(m.seconds(), 0, "strip out the seconds"); + test.equal(m.milliseconds(), 0, "strip out the milliseconds"); + test.done(); + }, + + "end of hour" : function (test) { + test.expect(9); + + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('hour'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('hours'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('h'); + test.equal(+m, +ms, "Plural or singular should work"); + test.equal(+m, +ma, "Full or abbreviated should work"); + test.equal(m.year(), 2011, "keep the year"); + test.equal(m.month(), 1, "keep the month"); + test.equal(m.date(), 2, "keep the day"); + test.equal(m.hours(), 3, "keep the hours"); + test.equal(m.minutes(), 59, "set the minutes"); + test.equal(m.seconds(), 59, "set the seconds"); + test.equal(m.milliseconds(), 999, "set the seconds"); + test.done(); + }, + + "start of minute" : function (test) { + test.expect(9); + + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('minute'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('minutes'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('m'); + test.equal(+m, +ms, "Plural or singular should work"); + test.equal(+m, +ma, "Full or abbreviated should work"); + test.equal(m.year(), 2011, "keep the year"); + test.equal(m.month(), 1, "keep the month"); + test.equal(m.date(), 2, "keep the day"); + test.equal(m.hours(), 3, "keep the hours"); + test.equal(m.minutes(), 4, "keep the minutes"); + test.equal(m.seconds(), 0, "strip out the seconds"); + test.equal(m.milliseconds(), 0, "strip out the milliseconds"); + test.done(); + }, + + "end of minute" : function (test) { + test.expect(9); + + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('minute'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('minutes'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('m'); + test.equal(+m, +ms, "Plural or singular should work"); + test.equal(+m, +ma, "Full or abbreviated should work"); + test.equal(m.year(), 2011, "keep the year"); + test.equal(m.month(), 1, "keep the month"); + test.equal(m.date(), 2, "keep the day"); + test.equal(m.hours(), 3, "keep the hours"); + test.equal(m.minutes(), 4, "keep the minutes"); + test.equal(m.seconds(), 59, "set the seconds"); + test.equal(m.milliseconds(), 999, "set the seconds"); + test.done(); + }, + + "start of second" : function (test) { + test.expect(9); + + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('second'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('seconds'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('s'); + test.equal(+m, +ms, "Plural or singular should work"); + test.equal(+m, +ma, "Full or abbreviated should work"); + test.equal(m.year(), 2011, "keep the year"); + test.equal(m.month(), 1, "keep the month"); + test.equal(m.date(), 2, "keep the day"); + test.equal(m.hours(), 3, "keep the hours"); + test.equal(m.minutes(), 4, "keep the minutes"); + test.equal(m.seconds(), 5, "keep the the seconds"); + test.equal(m.milliseconds(), 0, "strip out the milliseconds"); + test.done(); + }, + + "end of second" : function (test) { + test.expect(9); + + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('second'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('seconds'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('s'); + test.equal(+m, +ms, "Plural or singular should work"); + test.equal(+m, +ma, "Full or abbreviated should work"); + test.equal(m.year(), 2011, "keep the year"); + test.equal(m.month(), 1, "keep the month"); + test.equal(m.date(), 2, "keep the day"); + test.equal(m.hours(), 3, "keep the hours"); + test.equal(m.minutes(), 4, "keep the minutes"); + test.equal(m.seconds(), 5, "keep the seconds"); + test.equal(m.milliseconds(), 999, "set the seconds"); + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/string_prototype.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/string_prototype.js new file mode 100755 index 0000000..07cde9c --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/string_prototype.js @@ -0,0 +1,18 @@ +var moment = require("../../moment"); + +exports.string_prototype = { + "string prototype overrides call" : function (test) { + test.expect(1); + + moment.lang('en'); + var prior = String.prototype.call, b; + String.prototype.call = function () { return null; }; + + b = moment(new Date(2011, 7, 28, 15, 25, 50, 125)); + test.equal(b.format('MMMM Do YYYY, h:mm a'), 'August 28th 2011, 3:25 pm'); + + String.prototype.call = prior; + test.done(); + } + +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/utc.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/utc.js new file mode 100755 index 0000000..09c2de1 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/utc.js @@ -0,0 +1,111 @@ +var moment = require("../../moment"); + +exports.utc = { + setUp : function (cb) { + moment.lang('en'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "utc and local" : function (test) { + test.expect(7); + + var m = moment(Date.UTC(2011, 1, 2, 3, 4, 5, 6)), zone, expected; + m.utc(); + // utc + test.equal(m.date(), 2, "the day should be correct for utc"); + test.equal(m.day(), 3, "the date should be correct for utc"); + test.equal(m.hours(), 3, "the hours should be correct for utc"); + + // local + m.local(); + if (m.zone() > 180) { + test.equal(m.date(), 1, "the date should be correct for local"); + test.equal(m.day(), 2, "the day should be correct for local"); + } else { + test.equal(m.date(), 2, "the date should be correct for local"); + test.equal(m.day(), 3, "the day should be correct for local"); + } + zone = Math.ceil(m.zone() / 60); + expected = (24 + 3 - zone) % 24; + test.equal(m.hours(), expected, "the hours (" + m.hours() + ") should be correct for local"); + test.equal(moment().utc().zone(), 0, "timezone in utc should always be zero"); + + test.done(); + }, + + "creating with utc and no arguments" : function (test) { + test.expect(2); + + var startOfTest = new Date().valueOf(), + momentDefaultUtcTime = moment.utc().valueOf(), + afterMomentCreationTime = new Date().valueOf(); + + test.ok(startOfTest <= momentDefaultUtcTime, "moment UTC default time should be now, not in the past"); + test.ok(momentDefaultUtcTime <= afterMomentCreationTime, "moment UTC default time should be now, not in the future"); + + test.done(); + }, + + "creating with utc and a date parameter array" : function (test) { + test.expect(6); + + var m = moment.utc([2011, 1, 2, 3, 4, 5, 6]); + test.equal(m.date(), 2, "the day should be correct for utc array"); + test.equal(m.hours(), 3, "the hours should be correct for utc array"); + + m = moment.utc("2011-02-02 3:04:05", "YYYY-MM-DD HH:mm:ss"); + test.equal(m.date(), 2, "the day should be correct for utc parsing format"); + test.equal(m.hours(), 3, "the hours should be correct for utc parsing format"); + + m = moment.utc("2011-02-02T03:04:05+00:00"); + test.equal(m.date(), 2, "the day should be correct for utc parsing iso"); + test.equal(m.hours(), 3, "the hours should be correct for utc parsing iso"); + + test.done(); + }, + + "creating with utc without timezone" : function (test) { + test.expect(4); + + var m = moment.utc("2012-01-02T08:20:00"); + test.equal(m.date(), 2, "the day should be correct for utc parse without timezone"); + test.equal(m.hours(), 8, "the hours should be correct for utc parse without timezone"); + + m = moment.utc("2012-01-02T08:20:00+09:00"); + test.equal(m.date(), 1, "the day should be correct for utc parse with timezone"); + test.equal(m.hours(), 23, "the hours should be correct for utc parse with timezone"); + + test.done(); + }, + + "cloning with utc" : function (test) { + test.expect(4); + + var m = moment.utc("2012-01-02T08:20:00"); + test.equal(moment.utc(m)._isUTC, true, "the local zone should be converted to UTC"); + test.equal(moment.utc(m.clone().utc())._isUTC, true, "the local zone should stay in UTC"); + + m.zone(120); + test.equal(moment.utc(m)._isUTC, true, "the explicit zone should stay in UTC"); + test.equal(moment.utc(m).zone(), 0, "the explicit zone should have an offset of 0"); + + test.done(); + }, + + "weekday with utc" : function (test) { + test.expect(1); + + test.equal( + moment('2013-09-15T00:00:00Z').utc().weekday(), // first minute of the day + moment('2013-09-15T23:59:00Z').utc().weekday(), // last minute of the day + "a UTC-moment's .weekday() should not be affected by the local timezone" + ); + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/week_year.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/week_year.js new file mode 100755 index 0000000..345c386 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/week_year.js @@ -0,0 +1,72 @@ +var moment = require("../../moment"); + +exports.week_year = { + "iso week year": function (test) { + test.expect(19); + + // Some examples taken from http://en.wikipedia.org/wiki/ISO_week + test.equal(moment([2005, 0, 1]).isoWeekYear(), 2004); + test.equal(moment([2005, 0, 2]).isoWeekYear(), 2004); + test.equal(moment([2005, 0, 3]).isoWeekYear(), 2005); + test.equal(moment([2005, 11, 31]).isoWeekYear(), 2005); + test.equal(moment([2006, 0, 1]).isoWeekYear(), 2005); + test.equal(moment([2006, 0, 2]).isoWeekYear(), 2006); + test.equal(moment([2007, 0, 1]).isoWeekYear(), 2007); + test.equal(moment([2007, 11, 30]).isoWeekYear(), 2007); + test.equal(moment([2007, 11, 31]).isoWeekYear(), 2008); + test.equal(moment([2008, 0, 1]).isoWeekYear(), 2008); + test.equal(moment([2008, 11, 28]).isoWeekYear(), 2008); + test.equal(moment([2008, 11, 29]).isoWeekYear(), 2009); + test.equal(moment([2008, 11, 30]).isoWeekYear(), 2009); + test.equal(moment([2008, 11, 31]).isoWeekYear(), 2009); + test.equal(moment([2009, 0, 1]).isoWeekYear(), 2009); + test.equal(moment([2010, 0, 1]).isoWeekYear(), 2009); + test.equal(moment([2010, 0, 2]).isoWeekYear(), 2009); + test.equal(moment([2010, 0, 3]).isoWeekYear(), 2009); + test.equal(moment([2010, 0, 4]).isoWeekYear(), 2010); + + test.done(); + }, + + "week year": function (test) { + test.expect(31); + + // Some examples taken from http://en.wikipedia.org/wiki/ISO_week + moment.lang('dow: 1,doy: 4', {week: {dow: 1, doy: 4}}); // like iso + test.equal(moment([2005, 0, 1]).weekYear(), 2004); + test.equal(moment([2005, 0, 2]).weekYear(), 2004); + test.equal(moment([2005, 0, 3]).weekYear(), 2005); + test.equal(moment([2005, 11, 31]).weekYear(), 2005); + test.equal(moment([2006, 0, 1]).weekYear(), 2005); + test.equal(moment([2006, 0, 2]).weekYear(), 2006); + test.equal(moment([2007, 0, 1]).weekYear(), 2007); + test.equal(moment([2007, 11, 30]).weekYear(), 2007); + test.equal(moment([2007, 11, 31]).weekYear(), 2008); + test.equal(moment([2008, 0, 1]).weekYear(), 2008); + test.equal(moment([2008, 11, 28]).weekYear(), 2008); + test.equal(moment([2008, 11, 29]).weekYear(), 2009); + test.equal(moment([2008, 11, 30]).weekYear(), 2009); + test.equal(moment([2008, 11, 31]).weekYear(), 2009); + test.equal(moment([2009, 0, 1]).weekYear(), 2009); + test.equal(moment([2010, 0, 1]).weekYear(), 2009); + test.equal(moment([2010, 0, 2]).weekYear(), 2009); + test.equal(moment([2010, 0, 3]).weekYear(), 2009); + test.equal(moment([2010, 0, 4]).weekYear(), 2010); + + moment.lang('dow: 1,doy: 7', {week: {dow: 1, doy: 7}}); + test.equal(moment([2004, 11, 26]).weekYear(), 2004); + test.equal(moment([2004, 11, 27]).weekYear(), 2005); + test.equal(moment([2005, 11, 25]).weekYear(), 2005); + test.equal(moment([2005, 11, 26]).weekYear(), 2006); + test.equal(moment([2006, 11, 31]).weekYear(), 2006); + test.equal(moment([2007, 0, 1]).weekYear(), 2007); + test.equal(moment([2007, 11, 30]).weekYear(), 2007); + test.equal(moment([2007, 11, 31]).weekYear(), 2008); + test.equal(moment([2008, 11, 28]).weekYear(), 2008); + test.equal(moment([2008, 11, 29]).weekYear(), 2009); + test.equal(moment([2009, 11, 27]).weekYear(), 2009); + test.equal(moment([2009, 11, 28]).weekYear(), 2010); + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/weekday.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/weekday.js new file mode 100755 index 0000000..a6eb6de --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/weekday.js @@ -0,0 +1,159 @@ +var moment = require("../../moment"); + +exports.week_year = { + "iso weekday": function (test) { + var i; + test.expect(7 * 7); + + for (i = 0; i < 7; ++i) { + moment.lang('dow:' + i + ',doy: 6', {week: {dow: i, doy: 6}}); + test.equal(moment([1985, 1, 4]).isoWeekday(), 1, "Feb 4 1985 is Monday -- 1st day"); + test.equal(moment([2029, 8, 18]).isoWeekday(), 2, "Sep 18 2029 is Tuesday -- 2nd day"); + test.equal(moment([2013, 3, 24]).isoWeekday(), 3, "Apr 24 2013 is Wednesday -- 3rd day"); + test.equal(moment([2015, 2, 5]).isoWeekday(), 4, "Mar 5 2015 is Thursday -- 4th day"); + test.equal(moment([1970, 0, 2]).isoWeekday(), 5, "Jan 2 1970 is Friday -- 5th day"); + test.equal(moment([2001, 4, 12]).isoWeekday(), 6, "May 12 2001 is Saturday -- 6th day"); + test.equal(moment([2000, 0, 2]).isoWeekday(), 7, "Jan 2 2000 is Sunday -- 7th day"); + } + test.done(); + }, + + "iso weekday setter" : function (test) { + test.expect(27); + + var a = moment([2011, 0, 10]); + test.equal(moment(a).isoWeekday(1).date(), 10, 'set from mon to mon'); + test.equal(moment(a).isoWeekday(4).date(), 13, 'set from mon to thu'); + test.equal(moment(a).isoWeekday(7).date(), 16, 'set from mon to sun'); + test.equal(moment(a).isoWeekday(-6).date(), 3, 'set from mon to last mon'); + test.equal(moment(a).isoWeekday(-3).date(), 6, 'set from mon to last thu'); + test.equal(moment(a).isoWeekday(0).date(), 9, 'set from mon to last sun'); + test.equal(moment(a).isoWeekday(8).date(), 17, 'set from mon to next mon'); + test.equal(moment(a).isoWeekday(11).date(), 20, 'set from mon to next thu'); + test.equal(moment(a).isoWeekday(14).date(), 23, 'set from mon to next sun'); + + a = moment([2011, 0, 13]); + test.equal(moment(a).isoWeekday(1).date(), 10, 'set from thu to mon'); + test.equal(moment(a).isoWeekday(4).date(), 13, 'set from thu to thu'); + test.equal(moment(a).isoWeekday(7).date(), 16, 'set from thu to sun'); + test.equal(moment(a).isoWeekday(-6).date(), 3, 'set from thu to last mon'); + test.equal(moment(a).isoWeekday(-3).date(), 6, 'set from thu to last thu'); + test.equal(moment(a).isoWeekday(0).date(), 9, 'set from thu to last sun'); + test.equal(moment(a).isoWeekday(8).date(), 17, 'set from thu to next mon'); + test.equal(moment(a).isoWeekday(11).date(), 20, 'set from thu to next thu'); + test.equal(moment(a).isoWeekday(14).date(), 23, 'set from thu to next sun'); + + a = moment([2011, 0, 16]); + test.equal(moment(a).isoWeekday(1).date(), 10, 'set from sun to mon'); + test.equal(moment(a).isoWeekday(4).date(), 13, 'set from sun to thu'); + test.equal(moment(a).isoWeekday(7).date(), 16, 'set from sun to sun'); + test.equal(moment(a).isoWeekday(-6).date(), 3, 'set from sun to last mon'); + test.equal(moment(a).isoWeekday(-3).date(), 6, 'set from sun to last thu'); + test.equal(moment(a).isoWeekday(0).date(), 9, 'set from sun to last sun'); + test.equal(moment(a).isoWeekday(8).date(), 17, 'set from sun to next mon'); + test.equal(moment(a).isoWeekday(11).date(), 20, 'set from sun to next thu'); + test.equal(moment(a).isoWeekday(14).date(), 23, 'set from sun to next sun'); + + test.done(); + }, + + "weekday first day of week Sunday (dow 0)": function (test) { + test.expect(7); + + moment.lang('dow: 0,doy: 6', {week: {dow: 0, doy: 6}}); + test.equal(moment([1985, 1, 3]).weekday(), 0, "Feb 3 1985 is Sunday -- 0th day"); + test.equal(moment([2029, 8, 17]).weekday(), 1, "Sep 17 2029 is Monday -- 1st day"); + test.equal(moment([2013, 3, 23]).weekday(), 2, "Apr 23 2013 is Tuesday -- 2nd day"); + test.equal(moment([2015, 2, 4]).weekday(), 3, "Mar 4 2015 is Wednesday -- 3nd day"); + test.equal(moment([1970, 0, 1]).weekday(), 4, "Jan 1 1970 is Thursday -- 4th day"); + test.equal(moment([2001, 4, 11]).weekday(), 5, "May 11 2001 is Friday -- 5th day"); + test.equal(moment([2000, 0, 1]).weekday(), 6, "Jan 1 2000 is Saturday -- 6th day"); + test.done(); + }, + + "weekday first day of week Monday (dow 1)": function (test) { + test.expect(7); + + moment.lang('dow: 1,doy: 6', {week: {dow: 1, doy: 6}}); + test.equal(moment([1985, 1, 4]).weekday(), 0, "Feb 4 1985 is Monday -- 0th day"); + test.equal(moment([2029, 8, 18]).weekday(), 1, "Sep 18 2029 is Tuesday -- 1st day"); + test.equal(moment([2013, 3, 24]).weekday(), 2, "Apr 24 2013 is Wednesday -- 2nd day"); + test.equal(moment([2015, 2, 5]).weekday(), 3, "Mar 5 2015 is Thursday -- 3nd day"); + test.equal(moment([1970, 0, 2]).weekday(), 4, "Jan 2 1970 is Friday -- 4th day"); + test.equal(moment([2001, 4, 12]).weekday(), 5, "May 12 2001 is Saturday -- 5th day"); + test.equal(moment([2000, 0, 2]).weekday(), 6, "Jan 2 2000 is Sunday -- 6th day"); + test.done(); + }, + + "weekday first day of week Tuesday (dow 2)": function (test) { + test.expect(7); + + moment.lang('dow: 2,doy: 6', {week: {dow: 2, doy: 6}}); + test.equal(moment([1985, 1, 5]).weekday(), 0, "Feb 5 1985 is Tuesday -- 0th day"); + test.equal(moment([2029, 8, 19]).weekday(), 1, "Sep 19 2029 is Wednesday -- 1st day"); + test.equal(moment([2013, 3, 25]).weekday(), 2, "Apr 25 2013 is Thursday -- 2nd day"); + test.equal(moment([2015, 2, 6]).weekday(), 3, "Mar 6 2015 is Friday -- 3nd day"); + test.equal(moment([1970, 0, 3]).weekday(), 4, "Jan 3 1970 is Staturday -- 4th day"); + test.equal(moment([2001, 4, 13]).weekday(), 5, "May 13 2001 is Sunday -- 5th day"); + test.equal(moment([2000, 0, 3]).weekday(), 6, "Jan 3 2000 is Monday -- 6th day"); + test.done(); + }, + + "weekday first day of week Wednesday (dow 3)": function (test) { + test.expect(7); + + moment.lang('dow: 3,doy: 6', {week: {dow: 3, doy: 6}}); + test.equal(moment([1985, 1, 6]).weekday(), 0, "Feb 6 1985 is Wednesday -- 0th day"); + test.equal(moment([2029, 8, 20]).weekday(), 1, "Sep 20 2029 is Thursday -- 1st day"); + test.equal(moment([2013, 3, 26]).weekday(), 2, "Apr 26 2013 is Friday -- 2nd day"); + test.equal(moment([2015, 2, 7]).weekday(), 3, "Mar 7 2015 is Saturday -- 3nd day"); + test.equal(moment([1970, 0, 4]).weekday(), 4, "Jan 4 1970 is Sunday -- 4th day"); + test.equal(moment([2001, 4, 14]).weekday(), 5, "May 14 2001 is Monday -- 5th day"); + test.equal(moment([2000, 0, 4]).weekday(), 6, "Jan 4 2000 is Tuesday -- 6th day"); + moment.lang('dow:3,doy:6', null); + test.done(); + }, + + "weekday first day of week Thursday (dow 4)": function (test) { + test.expect(7); + + moment.lang('dow: 4,doy: 6', {week: {dow: 4, doy: 6}}); + + test.equal(moment([1985, 1, 7]).weekday(), 0, "Feb 7 1985 is Thursday -- 0th day"); + test.equal(moment([2029, 8, 21]).weekday(), 1, "Sep 21 2029 is Friday -- 1st day"); + test.equal(moment([2013, 3, 27]).weekday(), 2, "Apr 27 2013 is Saturday -- 2nd day"); + test.equal(moment([2015, 2, 8]).weekday(), 3, "Mar 8 2015 is Sunday -- 3nd day"); + test.equal(moment([1970, 0, 5]).weekday(), 4, "Jan 5 1970 is Monday -- 4th day"); + test.equal(moment([2001, 4, 15]).weekday(), 5, "May 15 2001 is Tuesday -- 5th day"); + test.equal(moment([2000, 0, 5]).weekday(), 6, "Jan 5 2000 is Wednesday -- 6th day"); + test.done(); + }, + + "weekday first day of week Friday (dow 5)": function (test) { + test.expect(7); + + moment.lang('dow: 5,doy: 6', {week: {dow: 5, doy: 6}}); + test.equal(moment([1985, 1, 8]).weekday(), 0, "Feb 8 1985 is Friday -- 0th day"); + test.equal(moment([2029, 8, 22]).weekday(), 1, "Sep 22 2029 is Staturday -- 1st day"); + test.equal(moment([2013, 3, 28]).weekday(), 2, "Apr 28 2013 is Sunday -- 2nd day"); + test.equal(moment([2015, 2, 9]).weekday(), 3, "Mar 9 2015 is Monday -- 3nd day"); + test.equal(moment([1970, 0, 6]).weekday(), 4, "Jan 6 1970 is Tuesday -- 4th day"); + test.equal(moment([2001, 4, 16]).weekday(), 5, "May 16 2001 is Wednesday -- 5th day"); + test.equal(moment([2000, 0, 6]).weekday(), 6, "Jan 6 2000 is Thursday -- 6th day"); + test.done(); + }, + + "weekday first day of week Saturday (dow 6)": function (test) { + test.expect(7); + + moment.lang('dow: 6,doy: 6', {week: {dow: 6, doy: 6}}); + test.equal(moment([1985, 1, 9]).weekday(), 0, "Feb 9 1985 is Staturday -- 0th day"); + test.equal(moment([2029, 8, 23]).weekday(), 1, "Sep 23 2029 is Sunday -- 1st day"); + test.equal(moment([2013, 3, 29]).weekday(), 2, "Apr 29 2013 is Monday -- 2nd day"); + test.equal(moment([2015, 2, 10]).weekday(), 3, "Mar 10 2015 is Tuesday -- 3nd day"); + test.equal(moment([1970, 0, 7]).weekday(), 4, "Jan 7 1970 is Wednesday -- 4th day"); + test.equal(moment([2001, 4, 17]).weekday(), 5, "May 17 2001 is Thursday -- 5th day"); + test.equal(moment([2000, 0, 7]).weekday(), 6, "Jan 7 2000 is Friday -- 6th day"); + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/weeks.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/weeks.js new file mode 100755 index 0000000..272f49d --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/weeks.js @@ -0,0 +1,301 @@ +var moment = require("../../moment"); + +exports.weeks = { + setUp : function (cb) { + moment.lang('en'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "day of year" : function (test) { + test.expect(8); + + test.equal(moment([2000, 0, 1]).dayOfYear(), 1, "Jan 1 2000 should be day 1 of the year"); + test.equal(moment([2000, 1, 28]).dayOfYear(), 59, "Feb 28 2000 should be day 59 of the year"); + test.equal(moment([2000, 1, 29]).dayOfYear(), 60, "Feb 28 2000 should be day 60 of the year"); + test.equal(moment([2000, 11, 31]).dayOfYear(), 366, "Dec 31 2000 should be day 366 of the year"); + test.equal(moment([2001, 0, 1]).dayOfYear(), 1, "Jan 1 2001 should be day 1 of the year"); + test.equal(moment([2001, 1, 28]).dayOfYear(), 59, "Feb 28 2001 should be day 59 of the year"); + test.equal(moment([2001, 2, 1]).dayOfYear(), 60, "Mar 1 2001 should be day 60 of the year"); + test.equal(moment([2001, 11, 31]).dayOfYear(), 365, "Dec 31 2001 should be day 365 of the year"); + + test.done(); + }, + + "day of year setters" : function (test) { + test.expect(8); + + test.equal(moment([2000, 0, 1]).dayOfYear(200).dayOfYear(), 200, "Setting Jan 1 2000 day of the year to 200 should work"); + test.equal(moment([2000, 1, 28]).dayOfYear(200).dayOfYear(), 200, "Setting Feb 28 2000 day of the year to 200 should work"); + test.equal(moment([2000, 1, 29]).dayOfYear(200).dayOfYear(), 200, "Setting Feb 28 2000 day of the year to 200 should work"); + test.equal(moment([2000, 11, 31]).dayOfYear(200).dayOfYear(), 200, "Setting Dec 31 2000 day of the year to 200 should work"); + test.equal(moment().dayOfYear(1).dayOfYear(), 1, "Setting day of the year to 1 should work"); + test.equal(moment().dayOfYear(59).dayOfYear(), 59, "Setting day of the year to 59 should work"); + test.equal(moment().dayOfYear(60).dayOfYear(), 60, "Setting day of the year to 60 should work"); + test.equal(moment().dayOfYear(365).dayOfYear(), 365, "Setting day of the year to 365 should work"); + + test.done(); + }, + + "iso weeks year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).isoWeek(), 52, "Jan 1 2012 should be iso week 52"); + test.equal(moment([2012, 0, 2]).isoWeek(), 1, "Jan 2 2012 should be iso week 1"); + test.equal(moment([2012, 0, 8]).isoWeek(), 1, "Jan 8 2012 should be iso week 1"); + test.equal(moment([2012, 0, 9]).isoWeek(), 2, "Jan 9 2012 should be iso week 2"); + test.equal(moment([2012, 0, 15]).isoWeek(), 2, "Jan 15 2012 should be iso week 2"); + + test.done(); + }, + + "iso weeks year starting monday" : function (test) { + test.expect(5); + + test.equal(moment([2007, 0, 1]).isoWeek(), 1, "Jan 1 2007 should be iso week 1"); + test.equal(moment([2007, 0, 7]).isoWeek(), 1, "Jan 7 2007 should be iso week 1"); + test.equal(moment([2007, 0, 8]).isoWeek(), 2, "Jan 8 2007 should be iso week 2"); + test.equal(moment([2007, 0, 14]).isoWeek(), 2, "Jan 14 2007 should be iso week 2"); + test.equal(moment([2007, 0, 15]).isoWeek(), 3, "Jan 15 2007 should be iso week 3"); + + test.done(); + }, + + "iso weeks year starting tuesday" : function (test) { + test.expect(6); + + test.equal(moment([2007, 11, 31]).isoWeek(), 1, "Dec 31 2007 should be iso week 1"); + test.equal(moment([2008, 0, 1]).isoWeek(), 1, "Jan 1 2008 should be iso week 1"); + test.equal(moment([2008, 0, 6]).isoWeek(), 1, "Jan 6 2008 should be iso week 1"); + test.equal(moment([2008, 0, 7]).isoWeek(), 2, "Jan 7 2008 should be iso week 2"); + test.equal(moment([2008, 0, 13]).isoWeek(), 2, "Jan 13 2008 should be iso week 2"); + test.equal(moment([2008, 0, 14]).isoWeek(), 3, "Jan 14 2008 should be iso week 3"); + + test.done(); + }, + + "iso weeks year starting wednesday" : function (test) { + test.expect(6); + + test.equal(moment([2002, 11, 30]).isoWeek(), 1, "Dec 30 2002 should be iso week 1"); + test.equal(moment([2003, 0, 1]).isoWeek(), 1, "Jan 1 2003 should be iso week 1"); + test.equal(moment([2003, 0, 5]).isoWeek(), 1, "Jan 5 2003 should be iso week 1"); + test.equal(moment([2003, 0, 6]).isoWeek(), 2, "Jan 6 2003 should be iso week 2"); + test.equal(moment([2003, 0, 12]).isoWeek(), 2, "Jan 12 2003 should be iso week 2"); + test.equal(moment([2003, 0, 13]).isoWeek(), 3, "Jan 13 2003 should be iso week 3"); + + test.done(); + }, + + "iso weeks year starting thursday" : function (test) { + test.expect(6); + + test.equal(moment([2008, 11, 29]).isoWeek(), 1, "Dec 29 2008 should be iso week 1"); + test.equal(moment([2009, 0, 1]).isoWeek(), 1, "Jan 1 2009 should be iso week 1"); + test.equal(moment([2009, 0, 4]).isoWeek(), 1, "Jan 4 2009 should be iso week 1"); + test.equal(moment([2009, 0, 5]).isoWeek(), 2, "Jan 5 2009 should be iso week 2"); + test.equal(moment([2009, 0, 11]).isoWeek(), 2, "Jan 11 2009 should be iso week 2"); + test.equal(moment([2009, 0, 13]).isoWeek(), 3, "Jan 12 2009 should be iso week 3"); + + test.done(); + }, + + "iso weeks year starting friday" : function (test) { + test.expect(6); + + test.equal(moment([2009, 11, 28]).isoWeek(), 53, "Dec 28 2009 should be iso week 53"); + test.equal(moment([2010, 0, 1]).isoWeek(), 53, "Jan 1 2010 should be iso week 53"); + test.equal(moment([2010, 0, 3]).isoWeek(), 53, "Jan 3 2010 should be iso week 53"); + test.equal(moment([2010, 0, 4]).isoWeek(), 1, "Jan 4 2010 should be iso week 1"); + test.equal(moment([2010, 0, 10]).isoWeek(), 1, "Jan 10 2010 should be iso week 1"); + test.equal(moment([2010, 0, 11]).isoWeek(), 2, "Jan 11 2010 should be iso week 2"); + + test.done(); + }, + + "iso weeks year starting saturday" : function (test) { + test.expect(6); + + test.equal(moment([2010, 11, 27]).isoWeek(), 52, "Dec 27 2010 should be iso week 52"); + test.equal(moment([2011, 0, 1]).isoWeek(), 52, "Jan 1 2011 should be iso week 52"); + test.equal(moment([2011, 0, 2]).isoWeek(), 52, "Jan 2 2011 should be iso week 52"); + test.equal(moment([2011, 0, 3]).isoWeek(), 1, "Jan 3 2011 should be iso week 1"); + test.equal(moment([2011, 0, 9]).isoWeek(), 1, "Jan 9 2011 should be iso week 1"); + test.equal(moment([2011, 0, 10]).isoWeek(), 2, "Jan 10 2011 should be iso week 2"); + + test.done(); + }, + + "iso weeks year starting sunday formatted" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).format('W WW Wo'), '52 52 52nd', "Jan 1 2012 should be iso week 52"); + test.equal(moment([2012, 0, 2]).format('W WW Wo'), '1 01 1st', "Jan 2 2012 should be iso week 1"); + test.equal(moment([2012, 0, 8]).format('W WW Wo'), '1 01 1st', "Jan 8 2012 should be iso week 1"); + test.equal(moment([2012, 0, 9]).format('W WW Wo'), '2 02 2nd', "Jan 9 2012 should be iso week 2"); + test.equal(moment([2012, 0, 15]).format('W WW Wo'), '2 02 2nd', "Jan 15 2012 should be iso week 2"); + + test.done(); + }, + + "weeks plural year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).weeks(), 1, "Jan 1 2012 should be week 1"); + test.equal(moment([2012, 0, 7]).weeks(), 1, "Jan 7 2012 should be week 1"); + test.equal(moment([2012, 0, 8]).weeks(), 2, "Jan 8 2012 should be week 2"); + test.equal(moment([2012, 0, 14]).weeks(), 2, "Jan 14 2012 should be week 2"); + test.equal(moment([2012, 0, 15]).weeks(), 3, "Jan 15 2012 should be week 3"); + + test.done(); + }, + + "iso weeks plural year starting sunday" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).isoWeeks(), 52, "Jan 1 2012 should be iso week 52"); + test.equal(moment([2012, 0, 2]).isoWeeks(), 1, "Jan 2 2012 should be iso week 1"); + test.equal(moment([2012, 0, 8]).isoWeeks(), 1, "Jan 8 2012 should be iso week 1"); + test.equal(moment([2012, 0, 9]).isoWeeks(), 2, "Jan 9 2012 should be iso week 2"); + test.equal(moment([2012, 0, 15]).isoWeeks(), 2, "Jan 15 2012 should be iso week 2"); + + test.done(); + }, + + "weeks setter" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).week(30).week(), 30, "Setting Jan 1 2012 to week 30 should work"); + test.equal(moment([2012, 0, 7]).week(30).week(), 30, "Setting Jan 7 2012 to week 30 should work"); + test.equal(moment([2012, 0, 8]).week(30).week(), 30, "Setting Jan 8 2012 to week 30 should work"); + test.equal(moment([2012, 0, 14]).week(30).week(), 30, "Setting Jan 14 2012 to week 30 should work"); + test.equal(moment([2012, 0, 15]).week(30).week(), 30, "Setting Jan 15 2012 to week 30 should work"); + + test.done(); + }, + + "iso weeks setter" : function (test) { + test.expect(5); + + test.equal(moment([2012, 0, 1]).isoWeeks(25).isoWeeks(), 25, "Setting Jan 1 2012 to week 25 should work"); + test.equal(moment([2012, 0, 2]).isoWeeks(24).isoWeeks(), 24, "Setting Jan 2 2012 to week 24 should work"); + test.equal(moment([2012, 0, 8]).isoWeeks(23).isoWeeks(), 23, "Setting Jan 8 2012 to week 23 should work"); + test.equal(moment([2012, 0, 9]).isoWeeks(22).isoWeeks(), 22, "Setting Jan 9 2012 to week 22 should work"); + test.equal(moment([2012, 0, 15]).isoWeeks(21).isoWeeks(), 21, "Setting Jan 15 2012 to week 21 should work"); + + test.done(); + }, + + "iso weeks setter day of year" : function (test) { + test.expect(6); + + test.equal(moment([2012, 0, 1]).isoWeek(1).dayOfYear(), 9, "Setting Jan 1 2012 to week 1 should be day of year 8"); + test.equal(moment([2012, 0, 1]).isoWeek(1).year(), 2011, "Setting Jan 1 2012 to week 1 should be year 2011"); + test.equal(moment([2012, 0, 2]).isoWeek(1).dayOfYear(), 2, "Setting Jan 2 2012 to week 1 should be day of year 2"); + test.equal(moment([2012, 0, 8]).isoWeek(1).dayOfYear(), 8, "Setting Jan 8 2012 to week 1 should be day of year 8"); + test.equal(moment([2012, 0, 9]).isoWeek(1).dayOfYear(), 2, "Setting Jan 9 2012 to week 1 should be day of year 2"); + test.equal(moment([2012, 0, 15]).isoWeek(1).dayOfYear(), 8, "Setting Jan 15 2012 to week 1 should be day of year 8"); + + test.done(); + }, + + "years with iso week 53" : function (test) { + test.expect(71); + + // Based on a table taken from http://en.wikipedia.org/wiki/ISO_week_date + // (as downloaded on 2014-01-06) listing the 71 years in a 400-year cycle + // that have 53 weeks; in this case reflecting the 2000 based cycle + test.equal(moment([2004, 11, 31]).isoWeek(), 53, "Dec 31 2004 should be iso week 53"); + test.equal(moment([2009, 11, 31]).isoWeek(), 53, "Dec 31 2009 should be iso week 53"); + test.equal(moment([2015, 11, 31]).isoWeek(), 53, "Dec 31 2015 should be iso week 53"); + test.equal(moment([2020, 11, 31]).isoWeek(), 53, "Dec 31 2020 should be iso week 53"); + test.equal(moment([2026, 11, 31]).isoWeek(), 53, "Dec 31 2026 should be iso week 53"); + test.equal(moment([2032, 11, 31]).isoWeek(), 53, "Dec 31 2032 should be iso week 53"); + test.equal(moment([2037, 11, 31]).isoWeek(), 53, "Dec 31 2037 should be iso week 53"); + test.equal(moment([2043, 11, 31]).isoWeek(), 53, "Dec 31 2043 should be iso week 53"); + test.equal(moment([2048, 11, 31]).isoWeek(), 53, "Dec 31 2048 should be iso week 53"); + test.equal(moment([2054, 11, 31]).isoWeek(), 53, "Dec 31 2054 should be iso week 53"); + test.equal(moment([2060, 11, 31]).isoWeek(), 53, "Dec 31 2060 should be iso week 53"); + test.equal(moment([2065, 11, 31]).isoWeek(), 53, "Dec 31 2065 should be iso week 53"); + test.equal(moment([2071, 11, 31]).isoWeek(), 53, "Dec 31 2071 should be iso week 53"); + test.equal(moment([2076, 11, 31]).isoWeek(), 53, "Dec 31 2076 should be iso week 53"); + test.equal(moment([2082, 11, 31]).isoWeek(), 53, "Dec 31 2082 should be iso week 53"); + test.equal(moment([2088, 11, 31]).isoWeek(), 53, "Dec 31 2088 should be iso week 53"); + test.equal(moment([2093, 11, 31]).isoWeek(), 53, "Dec 31 2093 should be iso week 53"); + test.equal(moment([2099, 11, 31]).isoWeek(), 53, "Dec 31 2099 should be iso week 53"); + test.equal(moment([2105, 11, 31]).isoWeek(), 53, "Dec 31 2105 should be iso week 53"); + test.equal(moment([2111, 11, 31]).isoWeek(), 53, "Dec 31 2111 should be iso week 53"); + test.equal(moment([2116, 11, 31]).isoWeek(), 53, "Dec 31 2116 should be iso week 53"); + test.equal(moment([2122, 11, 31]).isoWeek(), 53, "Dec 31 2122 should be iso week 53"); + test.equal(moment([2128, 11, 31]).isoWeek(), 53, "Dec 31 2128 should be iso week 53"); + test.equal(moment([2133, 11, 31]).isoWeek(), 53, "Dec 31 2133 should be iso week 53"); + test.equal(moment([2139, 11, 31]).isoWeek(), 53, "Dec 31 2139 should be iso week 53"); + test.equal(moment([2144, 11, 31]).isoWeek(), 53, "Dec 31 2144 should be iso week 53"); + test.equal(moment([2150, 11, 31]).isoWeek(), 53, "Dec 31 2150 should be iso week 53"); + test.equal(moment([2156, 11, 31]).isoWeek(), 53, "Dec 31 2156 should be iso week 53"); + test.equal(moment([2161, 11, 31]).isoWeek(), 53, "Dec 31 2161 should be iso week 53"); + test.equal(moment([2167, 11, 31]).isoWeek(), 53, "Dec 31 2167 should be iso week 53"); + test.equal(moment([2172, 11, 31]).isoWeek(), 53, "Dec 31 2172 should be iso week 53"); + test.equal(moment([2178, 11, 31]).isoWeek(), 53, "Dec 31 2178 should be iso week 53"); + test.equal(moment([2184, 11, 31]).isoWeek(), 53, "Dec 31 2184 should be iso week 53"); + test.equal(moment([2189, 11, 31]).isoWeek(), 53, "Dec 31 2189 should be iso week 53"); + test.equal(moment([2195, 11, 31]).isoWeek(), 53, "Dec 31 2195 should be iso week 53"); + test.equal(moment([2201, 11, 31]).isoWeek(), 53, "Dec 31 2201 should be iso week 53"); + test.equal(moment([2207, 11, 31]).isoWeek(), 53, "Dec 31 2207 should be iso week 53"); + test.equal(moment([2212, 11, 31]).isoWeek(), 53, "Dec 31 2212 should be iso week 53"); + test.equal(moment([2218, 11, 31]).isoWeek(), 53, "Dec 31 2218 should be iso week 53"); + test.equal(moment([2224, 11, 31]).isoWeek(), 53, "Dec 31 2224 should be iso week 53"); + test.equal(moment([2229, 11, 31]).isoWeek(), 53, "Dec 31 2229 should be iso week 53"); + test.equal(moment([2235, 11, 31]).isoWeek(), 53, "Dec 31 2235 should be iso week 53"); + test.equal(moment([2240, 11, 31]).isoWeek(), 53, "Dec 31 2240 should be iso week 53"); + test.equal(moment([2246, 11, 31]).isoWeek(), 53, "Dec 31 2246 should be iso week 53"); + test.equal(moment([2252, 11, 31]).isoWeek(), 53, "Dec 31 2252 should be iso week 53"); + test.equal(moment([2257, 11, 31]).isoWeek(), 53, "Dec 31 2257 should be iso week 53"); + test.equal(moment([2263, 11, 31]).isoWeek(), 53, "Dec 31 2263 should be iso week 53"); + test.equal(moment([2268, 11, 31]).isoWeek(), 53, "Dec 31 2268 should be iso week 53"); + test.equal(moment([2274, 11, 31]).isoWeek(), 53, "Dec 31 2274 should be iso week 53"); + test.equal(moment([2280, 11, 31]).isoWeek(), 53, "Dec 31 2280 should be iso week 53"); + test.equal(moment([2285, 11, 31]).isoWeek(), 53, "Dec 31 2285 should be iso week 53"); + test.equal(moment([2291, 11, 31]).isoWeek(), 53, "Dec 31 2291 should be iso week 53"); + test.equal(moment([2296, 11, 31]).isoWeek(), 53, "Dec 31 2296 should be iso week 53"); + test.equal(moment([2303, 11, 31]).isoWeek(), 53, "Dec 31 2303 should be iso week 53"); + test.equal(moment([2308, 11, 31]).isoWeek(), 53, "Dec 31 2308 should be iso week 53"); + test.equal(moment([2314, 11, 31]).isoWeek(), 53, "Dec 31 2314 should be iso week 53"); + test.equal(moment([2320, 11, 31]).isoWeek(), 53, "Dec 31 2320 should be iso week 53"); + test.equal(moment([2325, 11, 31]).isoWeek(), 53, "Dec 31 2325 should be iso week 53"); + test.equal(moment([2331, 11, 31]).isoWeek(), 53, "Dec 31 2331 should be iso week 53"); + test.equal(moment([2336, 11, 31]).isoWeek(), 53, "Dec 31 2336 should be iso week 53"); + test.equal(moment([2342, 11, 31]).isoWeek(), 53, "Dec 31 2342 should be iso week 53"); + test.equal(moment([2348, 11, 31]).isoWeek(), 53, "Dec 31 2348 should be iso week 53"); + test.equal(moment([2353, 11, 31]).isoWeek(), 53, "Dec 31 2353 should be iso week 53"); + test.equal(moment([2359, 11, 31]).isoWeek(), 53, "Dec 31 2359 should be iso week 53"); + test.equal(moment([2364, 11, 31]).isoWeek(), 53, "Dec 31 2364 should be iso week 53"); + test.equal(moment([2370, 11, 31]).isoWeek(), 53, "Dec 31 2370 should be iso week 53"); + test.equal(moment([2376, 11, 31]).isoWeek(), 53, "Dec 31 2376 should be iso week 53"); + test.equal(moment([2381, 11, 31]).isoWeek(), 53, "Dec 31 2381 should be iso week 53"); + test.equal(moment([2387, 11, 31]).isoWeek(), 53, "Dec 31 2387 should be iso week 53"); + test.equal(moment([2392, 11, 31]).isoWeek(), 53, "Dec 31 2392 should be iso week 53"); + test.equal(moment([2398, 11, 31]).isoWeek(), 53, "Dec 31 2398 should be iso week 53"); + + test.done(); + }, + + "count years with iso week 53" : function (test) { + test.expect(1); + + // Based on http://en.wikipedia.org/wiki/ISO_week_date (as seen on 2014-01-06) + // stating that there are 71 years in a 400-year cycle that have 53 weeks; + // in this case reflecting the 2000 based cycle + var count = 0, i; + for (i = 0; i < 400; i++) { + count += (moment([2000 + i, 11, 31]).isoWeek() === 53) ? 1 : 0; + } + test.equal(count, 71, "Should have 71 years in 400-year cycle with iso week 53"); + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/weeks_in_year.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/weeks_in_year.js new file mode 100755 index 0000000..2261540 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/weeks_in_year.js @@ -0,0 +1,96 @@ +var moment = require("../../moment"); + +exports.weeks_in_year = { + "isoWeeksInYear": function (test) { + test.equal(moment([2004]).isoWeeksInYear(), 53, "2004 has 53 iso weeks"); + test.equal(moment([2005]).isoWeeksInYear(), 52, "2005 has 53 iso weeks"); + test.equal(moment([2006]).isoWeeksInYear(), 52, "2006 has 53 iso weeks"); + test.equal(moment([2007]).isoWeeksInYear(), 52, "2007 has 52 iso weeks"); + test.equal(moment([2008]).isoWeeksInYear(), 52, "2008 has 53 iso weeks"); + test.equal(moment([2009]).isoWeeksInYear(), 53, "2009 has 53 iso weeks"); + test.equal(moment([2010]).isoWeeksInYear(), 52, "2010 has 52 iso weeks"); + test.equal(moment([2011]).isoWeeksInYear(), 52, "2011 has 52 iso weeks"); + test.equal(moment([2012]).isoWeeksInYear(), 52, "2012 has 52 iso weeks"); + test.equal(moment([2013]).isoWeeksInYear(), 52, "2013 has 52 iso weeks"); + test.equal(moment([2014]).isoWeeksInYear(), 52, "2014 has 52 iso weeks"); + test.equal(moment([2015]).isoWeeksInYear(), 53, "2015 has 53 iso weeks"); + + test.done(); + }, + + "weeksInYear doy/dow = 1/4": function (test) { + moment.lang('1/4', {week: {dow: 1, doy: 4}}); + + test.equal(moment([2004]).weeksInYear(), 53, "2004 has 53 weeks"); + test.equal(moment([2005]).weeksInYear(), 52, "2005 has 53 weeks"); + test.equal(moment([2006]).weeksInYear(), 52, "2006 has 53 weeks"); + test.equal(moment([2007]).weeksInYear(), 52, "2007 has 52 weeks"); + test.equal(moment([2008]).weeksInYear(), 52, "2008 has 53 weeks"); + test.equal(moment([2009]).weeksInYear(), 53, "2009 has 53 weeks"); + test.equal(moment([2010]).weeksInYear(), 52, "2010 has 52 weeks"); + test.equal(moment([2011]).weeksInYear(), 52, "2011 has 52 weeks"); + test.equal(moment([2012]).weeksInYear(), 52, "2012 has 52 weeks"); + test.equal(moment([2013]).weeksInYear(), 52, "2013 has 52 weeks"); + test.equal(moment([2014]).weeksInYear(), 52, "2014 has 52 weeks"); + test.equal(moment([2015]).weeksInYear(), 53, "2015 has 53 weeks"); + + test.done(); + }, + + "weeksInYear doy/dow = 6/12": function (test) { + moment.lang('6/12', {week: {dow: 6, doy: 12}}); + + test.equal(moment([2004]).weeksInYear(), 53, "2004 has 53 weeks"); + test.equal(moment([2005]).weeksInYear(), 52, "2005 has 53 weeks"); + test.equal(moment([2006]).weeksInYear(), 52, "2006 has 53 weeks"); + test.equal(moment([2007]).weeksInYear(), 52, "2007 has 52 weeks"); + test.equal(moment([2008]).weeksInYear(), 52, "2008 has 53 weeks"); + test.equal(moment([2009]).weeksInYear(), 52, "2009 has 53 weeks"); + test.equal(moment([2010]).weeksInYear(), 53, "2010 has 52 weeks"); + test.equal(moment([2011]).weeksInYear(), 52, "2011 has 52 weeks"); + test.equal(moment([2012]).weeksInYear(), 52, "2012 has 52 weeks"); + test.equal(moment([2013]).weeksInYear(), 52, "2013 has 52 weeks"); + test.equal(moment([2014]).weeksInYear(), 52, "2014 has 52 weeks"); + test.equal(moment([2015]).weeksInYear(), 52, "2015 has 53 weeks"); + + test.done(); + }, + + "weeksInYear doy/dow = 1/7": function (test) { + moment.lang('1/7', {week: {dow: 1, doy: 7}}); + + test.equal(moment([2004]).weeksInYear(), 52, "2004 has 53 weeks"); + test.equal(moment([2005]).weeksInYear(), 52, "2005 has 53 weeks"); + test.equal(moment([2006]).weeksInYear(), 53, "2006 has 53 weeks"); + test.equal(moment([2007]).weeksInYear(), 52, "2007 has 52 weeks"); + test.equal(moment([2008]).weeksInYear(), 52, "2008 has 53 weeks"); + test.equal(moment([2009]).weeksInYear(), 52, "2009 has 53 weeks"); + test.equal(moment([2010]).weeksInYear(), 52, "2010 has 52 weeks"); + test.equal(moment([2011]).weeksInYear(), 52, "2011 has 52 weeks"); + test.equal(moment([2012]).weeksInYear(), 53, "2012 has 52 weeks"); + test.equal(moment([2013]).weeksInYear(), 52, "2013 has 52 weeks"); + test.equal(moment([2014]).weeksInYear(), 52, "2014 has 52 weeks"); + test.equal(moment([2015]).weeksInYear(), 52, "2015 has 53 weeks"); + + test.done(); + }, + + "weeksInYear doy/dow = 0/6": function (test) { + moment.lang('0/6', {week: {dow: 0, doy: 6}}); + + test.equal(moment([2004]).weeksInYear(), 52, "2004 has 53 weeks"); + test.equal(moment([2005]).weeksInYear(), 53, "2005 has 53 weeks"); + test.equal(moment([2006]).weeksInYear(), 52, "2006 has 53 weeks"); + test.equal(moment([2007]).weeksInYear(), 52, "2007 has 52 weeks"); + test.equal(moment([2008]).weeksInYear(), 52, "2008 has 53 weeks"); + test.equal(moment([2009]).weeksInYear(), 52, "2009 has 53 weeks"); + test.equal(moment([2010]).weeksInYear(), 52, "2010 has 52 weeks"); + test.equal(moment([2011]).weeksInYear(), 53, "2011 has 52 weeks"); + test.equal(moment([2012]).weeksInYear(), 52, "2012 has 52 weeks"); + test.equal(moment([2013]).weeksInYear(), 52, "2013 has 52 weeks"); + test.equal(moment([2014]).weeksInYear(), 52, "2014 has 52 weeks"); + test.equal(moment([2015]).weeksInYear(), 52, "2015 has 53 weeks"); + + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/moment-develop/test/moment/zones.js b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/zones.js new file mode 100755 index 0000000..cd203f6 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/moment-develop/test/moment/zones.js @@ -0,0 +1,527 @@ +var moment = require("../../moment"); + +exports.zones = { + setUp : function (cb) { + moment.lang('en'); + cb(); + }, + + tearDown : function (cb) { + moment.lang('en'); + cb(); + }, + + "set zone" : function (test) { + var zone = moment(); + + zone.zone(0); + test.equal(zone.zone(), 0, "should be able to set the zone to 0"); + + zone.zone(60); + test.equal(zone.zone(), 60, "should be able to set the zone to 60"); + + zone.zone(-60); + test.equal(zone.zone(), -60, "should be able to set the zone to -60"); + + test.done(); + }, + + "set zone shorthand" : function (test) { + var zone = moment(); + + zone.zone(1); + test.equal(zone.zone(), 60, "setting the zone to 1 should imply hours and convert to 60"); + + zone.zone(-1); + test.equal(zone.zone(), -60, "setting the zone to -1 should imply hours and convert to -60"); + + zone.zone(15); + test.equal(zone.zone(), 900, "setting the zone to 15 should imply hours and convert to 900"); + + zone.zone(-15); + test.equal(zone.zone(), -900, "setting the zone to -15 should imply hours and convert to -900"); + + zone.zone(16); + test.equal(zone.zone(), 16, "setting the zone to 16 should imply minutes"); + + zone.zone(-16); + test.equal(zone.zone(), -16, "setting the zone to -16 should imply minutes"); + + test.done(); + }, + + "set zone with string" : function (test) { + var zone = moment(); + + zone.zone("+00:00"); + test.equal(zone.zone(), 0, "set the zone with a timezone string"); + + zone.zone("2013-03-07T07:00:00-08:00"); + test.equal(zone.zone(), 480, "set the zone with a string that does not begin with the timezone"); + + zone.zone("2013-03-07T07:00:00+0100"); + test.equal(zone.zone(), -60, "set the zone with a string that uses the +0000 syntax"); + + zone.zone("03-07-2013T07:00:00-08:00"); + test.equal(zone.zone(), 480, "set the zone with a string with a non-ISO 8601 date"); + + test.done(); + }, + + "change hours when changing the zone" : function (test) { + var zone = moment.utc([2000, 0, 1, 6]); + + zone.zone(0); + test.equal(zone.hour(), 6, "UTC 6AM should be 6AM at +0000"); + + zone.zone(60); + test.equal(zone.hour(), 5, "UTC 6AM should be 5AM at -0100"); + + zone.zone(-60); + test.equal(zone.hour(), 7, "UTC 6AM should be 7AM at +0100"); + + test.done(); + }, + + "change minutes when changing the zone" : function (test) { + var zone = moment.utc([2000, 0, 1, 6, 31]); + + zone.zone(0); + test.equal(zone.format("HH:mm"), "06:31", "UTC 6:31AM should be 6:31AM at +0000"); + + zone.zone(30); + test.equal(zone.format("HH:mm"), "06:01", "UTC 6:31AM should be 6:01AM at -0030"); + + zone.zone(-30); + test.equal(zone.format("HH:mm"), "07:01", "UTC 6:31AM should be 7:01AM at +0030"); + + zone.zone(1380); + test.equal(zone.format("HH:mm"), "07:31", "UTC 6:31AM should be 7:31AM at +1380"); + + test.done(); + }, + + "distance from the unix epoch" : function (test) { + var zoneA = moment(), + zoneB = moment(zoneA), + zoneC = moment(zoneA), + zoneD = moment(zoneA), + zoneE = moment(zoneA); + + zoneB.utc(); + test.equal(+zoneA, +zoneB, "moment should equal moment.utc"); + + zoneC.zone(-60); + test.equal(+zoneA, +zoneC, "moment should equal moment.zone(-60)"); + + zoneD.zone(480); + test.equal(+zoneA, +zoneD, "moment should equal moment.zone(480)"); + + zoneE.zone(1000); + test.equal(+zoneA, +zoneE, "moment should equal moment.zone(1000)"); + + test.done(); + }, + + "update offset after changing any values" : function (test) { + var oldOffset = moment.updateOffset, + m = moment.utc([2000, 6, 1]); + + moment.updateOffset = function (mom) { + if (mom.__doChange) { + if (+mom > 962409600000) { + mom.zone(120); + } else { + mom.zone(60); + } + } + }; + + test.equal(m.format("ZZ"), "+0000", "should be at +0000"); + test.equal(m.format("HH:mm"), "00:00", "should start 12AM at +0000 timezone"); + + m.__doChange = true; + m.add('h', 1); + + test.equal(m.format("ZZ"), "-0200", "should be at -0200"); + test.equal(m.format("HH:mm"), "23:00", "1AM at +0000 should be 11PM at -0200 timezone"); + + m.subtract('h', 1); + + test.equal(m.format("ZZ"), "-0100", "should be at -0100"); + test.equal(m.format("HH:mm"), "23:00", "12AM at +0000 should be 11PM at -0100 timezone"); + + moment.updateOffset = oldOffset; + + test.done(); + }, + + "getters and setters" : function (test) { + var a = moment([2011, 5, 20]); + + test.equal(a.clone().zone(120).year(2012).year(), 2012, "should get and set year correctly"); + test.equal(a.clone().zone(120).month(1).month(), 1, "should get and set month correctly"); + test.equal(a.clone().zone(120).date(2).date(), 2, "should get and set date correctly"); + test.equal(a.clone().zone(120).day(1).day(), 1, "should get and set day correctly"); + test.equal(a.clone().zone(120).hour(1).hour(), 1, "should get and set hour correctly"); + test.equal(a.clone().zone(120).minute(1).minute(), 1, "should get and set minute correctly"); + + test.done(); + }, + + "getters" : function (test) { + var a = moment.utc([2012, 0, 1, 0, 0, 0]); + + test.equal(a.clone().zone(120).year(), 2011, "should get year correctly"); + test.equal(a.clone().zone(120).month(), 11, "should get month correctly"); + test.equal(a.clone().zone(120).date(), 31, "should get date correctly"); + test.equal(a.clone().zone(120).hour(), 22, "should get hour correctly"); + test.equal(a.clone().zone(120).minute(), 0, "should get minute correctly"); + + test.equal(a.clone().zone(-120).year(), 2012, "should get year correctly"); + test.equal(a.clone().zone(-120).month(), 0, "should get month correctly"); + test.equal(a.clone().zone(-120).date(), 1, "should get date correctly"); + test.equal(a.clone().zone(-120).hour(), 2, "should get hour correctly"); + test.equal(a.clone().zone(-120).minute(), 0, "should get minute correctly"); + + test.equal(a.clone().zone(-90).year(), 2012, "should get year correctly"); + test.equal(a.clone().zone(-90).month(), 0, "should get month correctly"); + test.equal(a.clone().zone(-90).date(), 1, "should get date correctly"); + test.equal(a.clone().zone(-90).hour(), 1, "should get hour correctly"); + test.equal(a.clone().zone(-90).minute(), 30, "should get minute correctly"); + + test.done(); + }, + + "from" : function (test) { + var zoneA = moment(), + zoneB = moment(zoneA).zone(720), + zoneC = moment(zoneA).zone(360), + zoneD = moment(zoneA).zone(-690), + other = moment(zoneA).add('m', 35); + + test.equal(zoneA.from(other), zoneB.from(other), "moment#from should be the same in all zones"); + test.equal(zoneA.from(other), zoneC.from(other), "moment#from should be the same in all zones"); + test.equal(zoneA.from(other), zoneD.from(other), "moment#from should be the same in all zones"); + + test.done(); + }, + + "diff" : function (test) { + var zoneA = moment(), + zoneB = moment(zoneA).zone(720), + zoneC = moment(zoneA).zone(360), + zoneD = moment(zoneA).zone(-690), + other = moment(zoneA).add('m', 35); + + test.equal(zoneA.diff(other), zoneB.diff(other), "moment#diff should be the same in all zones"); + test.equal(zoneA.diff(other), zoneC.diff(other), "moment#diff should be the same in all zones"); + test.equal(zoneA.diff(other), zoneD.diff(other), "moment#diff should be the same in all zones"); + + test.equal(zoneA.diff(other, 'minute', true), zoneB.diff(other, 'minute', true), "moment#diff should be the same in all zones"); + test.equal(zoneA.diff(other, 'minute', true), zoneC.diff(other, 'minute', true), "moment#diff should be the same in all zones"); + test.equal(zoneA.diff(other, 'minute', true), zoneD.diff(other, 'minute', true), "moment#diff should be the same in all zones"); + + test.equal(zoneA.diff(other, 'hour', true), zoneB.diff(other, 'hour', true), "moment#diff should be the same in all zones"); + test.equal(zoneA.diff(other, 'hour', true), zoneC.diff(other, 'hour', true), "moment#diff should be the same in all zones"); + test.equal(zoneA.diff(other, 'hour', true), zoneD.diff(other, 'hour', true), "moment#diff should be the same in all zones"); + + test.done(); + }, + + "unix offset and timestamp" : function (test) { + var zoneA = moment(), + zoneB = moment(zoneA).zone(720), + zoneC = moment(zoneA).zone(360), + zoneD = moment(zoneA).zone(-690); + + test.equal(zoneA.unix(), zoneB.unix(), "moment#unix should be the same in all zones"); + test.equal(zoneA.unix(), zoneC.unix(), "moment#unix should be the same in all zones"); + test.equal(zoneA.unix(), zoneD.unix(), "moment#unix should be the same in all zones"); + + test.equal(+zoneA, +zoneB, "moment#valueOf should be the same in all zones"); + test.equal(+zoneA, +zoneC, "moment#valueOf should be the same in all zones"); + test.equal(+zoneA, +zoneD, "moment#valueOf should be the same in all zones"); + + test.done(); + }, + + "cloning" : function (test) { + test.equal(moment().zone(120).clone().zone(), 120, "explicit cloning should retain the zone"); + test.equal(moment().zone(-120).clone().zone(), -120, "explicit cloning should retain the zone"); + test.equal(moment(moment().zone(120)).zone(), 120, "implicit cloning should retain the zone"); + test.equal(moment(moment().zone(-120)).zone(), -120, "implicit cloning should retain the zone"); + + test.done(); + }, + + "start of / end of" : function (test) { + var a = moment.utc([2010, 1, 2, 0, 0, 0]).zone(450); + + test.equal(a.clone().startOf('day').hour(), 0, "start of day should work on moments with a zone"); + test.equal(a.clone().startOf('day').minute(), 0, "start of day should work on moments with a zone"); + test.equal(a.clone().startOf('hour').minute(), 0, "start of hour should work on moments with a zone"); + + test.equal(a.clone().endOf('day').hour(), 23, "end of day should work on moments with a zone"); + test.equal(a.clone().endOf('day').minute(), 59, "end of day should work on moments with a zone"); + test.equal(a.clone().endOf('hour').minute(), 59, "end of hour should work on moments with a zone"); + + test.done(); + }, + + "reset zone with moment#utc" : function (test) { + var a = moment.utc([2012]).zone(480); + + test.equal(a.clone().hour(), 16, "different zone should have different hour"); + test.equal(a.clone().utc().hour(), 0, "calling moment#utc should reset the offset"); + + test.done(); + }, + + "reset zone with moment#local" : function (test) { + var a = moment([2012]).zone(480); + + test.equal(a.clone().local().hour(), 0, "calling moment#local should reset the offset"); + + test.done(); + }, + + "toDate" : function (test) { + var zoneA = new Date(), + zoneB = moment(zoneA).zone(720).toDate(), + zoneC = moment(zoneA).zone(360).toDate(), + zoneD = moment(zoneA).zone(-690).toDate(); + + test.equal(+zoneA, +zoneB, "moment#toDate should output a date with the right unix timestamp"); + test.equal(+zoneA, +zoneC, "moment#toDate should output a date with the right unix timestamp"); + test.equal(+zoneA, +zoneD, "moment#toDate should output a date with the right unix timestamp"); + + test.done(); + }, + + "same / before / after" : function (test) { + var zoneA = moment().utc(), + zoneB = moment(zoneA).zone(120), + zoneC = moment(zoneA).zone(-120); + + test.ok(zoneA.isSame(zoneB), "two moments with different offsets should be the same"); + test.ok(zoneA.isSame(zoneC), "two moments with different offsets should be the same"); + + test.ok(zoneA.isSame(zoneB, 'hour'), "two moments with different offsets should be the same hour"); + test.ok(zoneA.isSame(zoneC, 'hour'), "two moments with different offsets should be the same hour"); + + zoneA.add('hour', 1); + + test.ok(zoneA.isAfter(zoneB), "isAfter should work with two moments with different offsets"); + test.ok(zoneA.isAfter(zoneC), "isAfter should work with two moments with different offsets"); + + test.ok(zoneA.isAfter(zoneB, 'hour'), "isAfter:hour should work with two moments with different offsets"); + test.ok(zoneA.isAfter(zoneC, 'hour'), "isAfter:hour should work with two moments with different offsets"); + + zoneA.subtract('hour', 2); + + test.ok(zoneA.isBefore(zoneB), "isBefore should work with two moments with different offsets"); + test.ok(zoneA.isBefore(zoneC), "isBefore should work with two moments with different offsets"); + + test.ok(zoneA.isBefore(zoneB, 'hour'), "isBefore:hour should work with two moments with different offsets"); + test.ok(zoneA.isBefore(zoneC, 'hour'), "isBefore:hour should work with two moments with different offsets"); + + test.done(); + }, + + "add / subtract over dst" : function (test) { + var oldOffset = moment.updateOffset, + m = moment.utc([2000, 2, 31, 3]); + + moment.updateOffset = function (mom) { + if (mom.clone().utc().month() > 2) { + mom.zone(-60); + } else { + mom.zone(0); + } + }; + + test.equal(m.hour(), 3, "should start at 00:00"); + + m.add('hour', 24); + + test.equal(m.hour(), 4, "adding 24 hours should disregard dst"); + + m.subtract('hour', 24); + + test.equal(m.hour(), 3, "subtracting 24 hours should disregard dst"); + + m.add('day', 1); + + test.equal(m.hour(), 3, "adding 1 day should have the same hour"); + + m.subtract('day', 1); + + test.equal(m.hour(), 3, "subtracting 1 day should have the same hour"); + + m.add('month', 1); + + test.equal(m.hour(), 3, "adding 1 month should have the same hour"); + + m.subtract('month', 1); + + test.equal(m.hour(), 3, "subtracting 1 month should have the same hour"); + + moment.updateOffset = oldOffset; + + test.done(); + }, + + "isDST" : function (test) { + var oldOffset = moment.updateOffset; + + moment.updateOffset = function (mom) { + if (mom.month() > 2 && mom.month() < 9) { + mom.zone(-60); + } else { + mom.zone(0); + } + }; + + test.ok(!moment().month(0).isDST(), "Jan should not be summer dst"); + test.ok(moment().month(6).isDST(), "Jul should be summer dst"); + test.ok(!moment().month(11).isDST(), "Dec should not be summer dst"); + + moment.updateOffset = function (mom) { + if (mom.month() > 2 && mom.month() < 9) { + mom.zone(0); + } else { + mom.zone(-60); + } + }; + + test.ok(moment().month(0).isDST(), "Jan should be winter dst"); + test.ok(!moment().month(6).isDST(), "Jul should not be winter dst"); + test.ok(moment().month(11).isDST(), "Dec should be winter dst"); + + moment.updateOffset = oldOffset; + + test.done(); + }, + + "zone names" : function (test) { + test.expect(8); + + test.equal(moment().zoneAbbr(), "", "Local zone abbr should be empty"); + test.equal(moment().format('z'), "", "Local zone formatted abbr should be empty"); + test.equal(moment().zoneName(), "", "Local zone name should be empty"); + test.equal(moment().format('zz'), "", "Local zone formatted name should be empty"); + + test.equal(moment.utc().zoneAbbr(), "UTC", "UTC zone abbr should be UTC"); + test.equal(moment.utc().format('z'), "UTC", "UTC zone formatted abbr should be UTC"); + test.equal(moment.utc().zoneName(), "Coordinated Universal Time", "UTC zone abbr should be Coordinated Universal Time"); + test.equal(moment.utc().format('zz'), "Coordinated Universal Time", "UTC zone formatted abbr should be Coordinated Universal Time"); + + test.done(); + }, + + "hours alignment with UTC" : function (test) { + test.expect(4); + + test.equals(moment().zone(120).hasAlignedHourOffset(), true); + test.equals(moment().zone(-180).hasAlignedHourOffset(), true); + test.equals(moment().zone(90).hasAlignedHourOffset(), false); + test.equals(moment().zone(-90).hasAlignedHourOffset(), false); + + test.done(); + }, + + "hours alignment with other zone" : function (test) { + test.expect(16); + + var m = moment().zone(120); + + test.equals(m.hasAlignedHourOffset(moment().zone(180)), true); + test.equals(m.hasAlignedHourOffset(moment().zone(-180)), true); + test.equals(m.hasAlignedHourOffset(moment().zone(90)), false); + test.equals(m.hasAlignedHourOffset(moment().zone(-90)), false); + + m = moment().zone(90); + + test.equals(m.hasAlignedHourOffset(moment().zone(180)), false); + test.equals(m.hasAlignedHourOffset(moment().zone(-180)), false); + test.equals(m.hasAlignedHourOffset(moment().zone(30)), true); + test.equals(m.hasAlignedHourOffset(moment().zone(-30)), true); + + m = moment().zone(-60); + + test.equals(m.hasAlignedHourOffset(moment().zone(180)), true); + test.equals(m.hasAlignedHourOffset(moment().zone(-180)), true); + test.equals(m.hasAlignedHourOffset(moment().zone(90)), false); + test.equals(m.hasAlignedHourOffset(moment().zone(-90)), false); + + m = moment().zone(25); + + test.equals(m.hasAlignedHourOffset(moment().zone(-35)), true); + test.equals(m.hasAlignedHourOffset(moment().zone(85)), true); + + test.equals(m.hasAlignedHourOffset(moment().zone(35)), false); + test.equals(m.hasAlignedHourOffset(moment().zone(-85)), false); + + test.done(); + }, + + "parse zone" : function (test) { + test.expect(2); + var m = moment("2013-01-01T00:00:00-13:00").parseZone(); + test.equal(m.zone(), 13 * 60); + test.equal(m.hours(), 0); + test.done(); + }, + + "parse zone static" : function (test) { + test.expect(2); + var m = moment.parseZone("2013-01-01T00:00:00-13:00"); + test.equal(m.zone(), 13 * 60); + test.equal(m.hours(), 0); + test.done(); + }, + + "parse zone with more arguments" : function (test) { + var m; + test.expect(3); + + m = moment.parseZone("2013 01 01 05 -13:00", "YYYY MM DD HH ZZ"); + test.equal(m.format(), "2013-01-01T05:00:00-13:00", "accept input and format"); + m = moment.parseZone("2013-01-01-13:00", "YYYY MM DD ZZ", true); + test.equal(m.isValid(), false, "accept input, format and strict flag"); + m = moment.parseZone("2013-01-01-13:00", ["DD MM YYYY ZZ", "YYYY MM DD ZZ"]); + test.equal(m.format(), "2013-01-01T00:00:00-13:00", "accept input and array of formats"); + + test.done(); + }, + + "parse zone with a timezone from the format string" : function (test) { + test.expect(1); + + var m = moment("11-12-2013 -0400 +1100", "DD-MM-YYYY ZZ #####").parseZone(); + + test.equal(m.zone(), 4 * 60); + test.done(); + }, + + "parse zone without a timezone included in the format string" : function (test) { + test.expect(1); + + var m = moment("11-12-2013 -0400 +1100", "DD-MM-YYYY").parseZone(); + + test.equal(m.zone(), -11 * 60); + test.done(); + }, + + "timezone format" : function (test) { + test.equal(moment().zone(-60).format('ZZ'), "+0100", "-60 -> +0100"); + test.equal(moment().zone(-90).format('ZZ'), "+0130", "-90 -> +0130"); + test.equal(moment().zone(-120).format('ZZ'), "+0200", "-120 -> +0200"); + + test.equal(moment().zone(+60).format('ZZ'), "-0100", "+60 -> -0100"); + test.equal(moment().zone(+90).format('ZZ'), "-0130", "+90 -> -0130"); + test.equal(moment().zone(+120).format('ZZ'), "-0200", "+120 -> -0200"); + test.done(); + } +}; diff --git a/static/bootstrap-datetimepicker-master/package.json b/static/bootstrap-datetimepicker-master/package.json new file mode 100755 index 0000000..443d698 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/package.json @@ -0,0 +1,25 @@ +{ + "name": "bootstrap-datetimepicker", + "filename": "js/bootstrap-datetimepicker.min.js", + "version": "2.1.32", + "repository": { + "type": "git", + "url": "git://github.com/eonasdan/bootstrap-datetimepicker.git" + }, + "keywords": [ + "twitter-bootstrap", + "bootstrap", + "datepicker", + "datetimepicker", + "timepicker", + "moment" + ], + "devDependencies": { + "uglify-js": "*", + "less": "*", + "mocha-phantomjs": "*", + "mocha": "*", + "chai": "*", + "coffee-script": "*" + } +} diff --git a/static/bootstrap-datetimepicker-master/src/js/bootstrap-datetimepicker.js b/static/bootstrap-datetimepicker-master/src/js/bootstrap-datetimepicker.js new file mode 100755 index 0000000..091a10e --- /dev/null +++ b/static/bootstrap-datetimepicker-master/src/js/bootstrap-datetimepicker.js @@ -0,0 +1,1096 @@ +/** + * version 2.1.32 + * @license + * ========================================================= + * bootstrap-datetimepicker.js + * http://www.eyecon.ro/bootstrap-datepicker + * ========================================================= + * Copyright 2012 Stefan Petre + * + * Contributions: + * - updated for Bootstrap v3 by Jonathan Peterson (@Eonasdan) and (almost) + * completely rewritten to use Momentjs + * - based on tarruda's bootstrap-datepicker + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================= + */ +; (function (factory) { + if (typeof define === 'function' && define.amd) { + // AMD is used - Register as an anonymous module. + define(['jquery', 'moment'], factory); + } else { + // AMD is not used - Attempt to fetch dependencies from scope. + if(!jQuery){ + throw 'bootstrap-datetimepicker requires jQuery to be loaded first'; + }else if(!moment) { + throw 'bootstrap-datetimepicker requires moment.js to be loaded first'; + }else{ + factory(jQuery, moment); + } + } +} + +(function ($, moment) { + if (typeof moment === 'undefined') { + alert("momentjs is requried"); + throw new Error('momentjs is required'); + }; + + var dpgId = 0, + + pMoment = moment, + +// ReSharper disable once InconsistentNaming + DateTimePicker = function (element, options) { + var defaults = { + pickDate: true, + pickTime: true, + useMinutes: true, + useSeconds: false, + minuteStepping: 1, + startDate: new pMoment({ y: 1970 }), + endDate: new pMoment().add(50, "y"), + collapse: true, + language: "en", + defaultDate: "", + disabledDates: [], + enabledDates: false, + icons: {}, + useStrict: false, + direction: "auto" + }, + + icons = { + time: 'glyphicon glyphicon-time', + date: 'glyphicon glyphicon-calendar', + up: 'glyphicon glyphicon-chevron-up', + down: 'glyphicon glyphicon-chevron-down' + }, + + picker = this, + + init = function () { + + var icon = false, i, dDate, longDateFormat; + picker.options = $.extend({}, defaults, options); + picker.options.icons = $.extend({}, icons, picker.options.icons); + + picker.element = $(element); + + dataToOptions(); + + if (!(picker.options.pickTime || picker.options.pickDate)) + throw new Error('Must choose at least one picker'); + + picker.id = dpgId++; + pMoment.lang(picker.options.language); + picker.date = pMoment(); + picker.unset = false; + picker.isInput = picker.element.is('input'); + picker.component = false; + + if (picker.element.hasClass('input-group')) { + if (picker.element.find('.datepickerbutton').size() == 0) {//in case there is more then one 'input-group-addon` #48 + picker.component = picker.element.find("[class^='input-group-']"); + } + else { + picker.component = picker.element.find('.datepickerbutton'); + } + } + picker.format = picker.options.format; + + longDateFormat = pMoment()._lang._longDateFormat; + + if (!picker.format) { + if (picker.isInput) picker.format = picker.element.data('format'); + else picker.format = picker.element.find('input').data('format'); + if (!picker.format) { + picker.format = (picker.options.pickDate ? longDateFormat.L : ''); + if (picker.options.pickDate && picker.options.pickTime) picker.format += ' '; + picker.format += (picker.options.pickTime ? longDateFormat.LT : ''); + if (picker.options.useSeconds) { + if (~longDateFormat.LT.indexOf(' A')) { + picker.format = picker.format.split(" A")[0] + ":ss A"; + } + else { + picker.format += ':ss'; + } + } + } + } + + picker.options.use24hours = picker.format.toLowerCase().indexOf("a") < 1; + + if (picker.component) icon = picker.component.find('span'); + + if (picker.options.pickTime) { + if (icon) icon.addClass(picker.options.icons.time); + } + if (picker.options.pickDate) { + if (icon) { + icon.removeClass(picker.options.icons.time); + icon.addClass(picker.options.icons.date); + } + } + + picker.widget = $(getTemplate(picker.options.pickDate, picker.options.pickTime, picker.options.collapse)).appendTo('body'); + picker.minViewMode = picker.options.minViewMode || picker.element.data('date-minviewmode') || 0; + if (typeof picker.minViewMode === 'string') { + switch (picker.minViewMode) { + case 'months': + picker.minViewMode = 1; + break; + case 'years': + picker.minViewMode = 2; + break; + default: + picker.minViewMode = 0; + break; + } + } + picker.viewMode = picker.options.viewMode || picker.element.data('date-viewmode') || 0; + if (typeof picker.viewMode === 'string') { + switch (picker.viewMode) { + case 'months': + picker.viewMode = 1; + break; + case 'years': + picker.viewMode = 2; + break; + default: + picker.viewMode = 0; + break; + } + } + + for (i = 0; i < picker.options.disabledDates.length; i++) { + dDate = picker.options.disabledDates[i]; + dDate = pMoment(dDate); + //if this is not a valid date then set it to the startdate -1 day so it's disabled. + if (!dDate.isValid()) dDate = pMoment(picker.options.startDate).subtract(1, "day"); + picker.options.disabledDates[i] = dDate.format("L"); + } + + for (i = 0; i < picker.options.enabledDates.length; i++) { + dDate = picker.options.enabledDates[i]; + dDate = pMoment(dDate); + //if this is not a valid date then set it to the startdate -1 day so it's disabled. + if (!dDate.isValid()) dDate = pMoment(picker.options.startDate).subtract(1, "day"); + picker.options.enabledDates[i] = dDate.format("L"); + } + picker.startViewMode = picker.viewMode; + picker.setStartDate(picker.options.startDate || picker.element.data('date-startdate')); + picker.setEndDate(picker.options.endDate || picker.element.data('date-enddate')); + fillDow(); + fillMonths(); + fillHours(); + fillMinutes(); + fillSeconds(); + update(); + showMode(); + attachDatePickerEvents(); + if (picker.options.defaultDate !== "") picker.setValue(picker.options.defaultDate); + }, + + dataToOptions = function () { + if (picker.element.is('input')) { + var eData = picker.element.data(); + } + else { + var eData = picker.element.find('input').data(); + } + + if (eData.pickdate !== undefined) picker.options.pickDate = eData.pickdate; + if (eData.picktime !== undefined) picker.options.pickTime = eData.picktime; + if (eData.useminutes !== undefined) picker.options.useMinutes = eData.useminutes; + if (eData.useseconds !== undefined) picker.options.useSeconds = eData.useseconds; + if (eData.minutestepping !== undefined) picker.options.minuteStepping = eData.minutestepping; + if (eData.startdate !== undefined) picker.options.startDate = eData.startdate; + if (eData.enddate !== undefined) picker.options.endDate = eData.enddate; + if (eData.collapse !== undefined) picker.options.collapse = eData.collapse; + if (eData.language !== undefined) picker.options.language = eData.language; + if (eData.defaultdate !== undefined) picker.options.defaultDate = eData.defaultdate; + if (eData.disableddates !== undefined) picker.options.disabledDates = eData.disableddates; + if (eData.enableddates !== undefined) picker.options.enabledDates = eData.enableddates; + if (eData.icons !== undefined) picker.options.icons = eData.icons; + if (eData.usestrict !== undefined) picker.options.useStrict = eData.usestrict; + }, + + place = function () { + var position = 'absolute', + offset = picker.component ? picker.component.offset() : picker.element.offset(), $window = $(window); + picker.width = picker.component ? picker.component.outerWidth() : picker.element.outerWidth(); + offset.top = offset.top + picker.element.outerHeight(); + + // if (picker.options.direction === 'up' || picker.options.direction === 'auto' && offset.top + picker.widget.height() > $window.height()) { + // offset.top -= picker.widget.height() + picker.element.outerHeight(); + // picker.widget.addClass('up'); + // } else if (picker.options.direction === 'down' || picker.options.direction === 'auto' && offset.top + picker.widget.height() <= $window.height()) { + // offset.top += picker.element.outerHeight(); + // picker.widget.addClass('down'); + // } + + if (picker.options.width !== undefined) { + picker.widget.width(picker.options.width); + } + + if (picker.options.orientation === 'left') { + picker.widget.addClass('left-oriented'); + offset.left = offset.left - picker.widget.width() + 20; + } + + if (isInFixed()) { + position = 'fixed'; + offset.top -= $window.scrollTop(); + offset.left -= $window.scrollLeft(); + } + + if ($window.width() < offset.left + picker.widget.outerWidth()) { + offset.right = $window.width() - offset.left - picker.width; + offset.left = 'auto'; + picker.widget.addClass('pull-right'); + } else { + offset.right = 'auto'; + picker.widget.removeClass('pull-right'); + } + + picker.widget.css({ + position: position, + top: offset.top, + left: offset.left, + right: offset.right + }); + }, + + notifyChange = function (oldDate, eventType) { + picker.element.trigger({ + type: 'change.dp', + date: pMoment(picker.date), + oldDate: pMoment(oldDate) + }); + + if (eventType !== 'change') + picker.element.change(); + }, + + notifyError = function (date) { + picker.element.trigger({ + type: 'error.dp', + date: pMoment(date) + }); + }, + + update = function (newDate) { + pMoment.lang(picker.options.language); + var dateStr = newDate; + if (!dateStr) { + if (picker.isInput) { + dateStr = picker.element.val(); + } else { + dateStr = picker.element.find('input').val(); + } + if (dateStr) picker.date = pMoment(dateStr, picker.format, picker.options.useStrict); + if (!picker.date) picker.date = pMoment(); + } + picker.viewDate = pMoment(picker.date).startOf("month"); + fillDate(); + fillTime(); + }, + + fillDow = function () { + pMoment.lang(picker.options.language); + var html = $(''), weekdaysMin = pMoment.weekdaysMin(), i; + if (pMoment()._lang._week.dow == 0) { // starts on Sunday + for(i = 0; i < 7; i++) { + html.append('' + weekdaysMin[i] + ''); + } + } else { + for (i = 1; i < 8; i++) { + if (i == 7) { + html.append('' + weekdaysMin[0] + ''); + } else { + html.append('' + weekdaysMin[i] + ''); + } + } + } + picker.widget.find('.datepicker-days thead').append(html); + }, + + fillMonths = function () { + pMoment.lang(picker.options.language); + var html = '', i = 0, monthsShort = pMoment.monthsShort(); + while (i < 12) { + html += '' + monthsShort[i++] + ''; + } + picker.widget.find('.datepicker-months td').append(html); + }, + + fillDate = function () { + pMoment.lang(picker.options.language); + var year = picker.viewDate.year(), + month = picker.viewDate.month(), + startYear = picker.options.startDate.year(), + startMonth = picker.options.startDate.month(), + endYear = picker.options.endDate.year(), + endMonth = picker.options.endDate.month(), + prevMonth, nextMonth, html = [], row, clsName, i, days, yearCont, currentYear, months = pMoment.months(); + + picker.widget.find('.datepicker-days').find('.disabled').removeClass('disabled'); + picker.widget.find('.datepicker-months').find('.disabled').removeClass('disabled'); + picker.widget.find('.datepicker-years').find('.disabled').removeClass('disabled'); + + picker.widget.find('.datepicker-days th:eq(1)').text( + months[month] + ' ' + year); + + prevMonth = pMoment(picker.viewDate).subtract("months", 1); + days = prevMonth.daysInMonth(); + prevMonth.date(days).startOf('week'); + if ((year == startYear && month <= startMonth) || year < startYear) { + picker.widget.find('.datepicker-days th:eq(0)').addClass('disabled'); + } + if ((year == endYear && month >= endMonth) || year > endYear) { + picker.widget.find('.datepicker-days th:eq(2)').addClass('disabled'); + } + + nextMonth = pMoment(prevMonth).add(42, "d"); + while (prevMonth.isBefore(nextMonth)) { + if (prevMonth.weekday() === pMoment().startOf('week').weekday()) { + row = $(''); + html.push(row); + } + clsName = ''; + if (prevMonth.year() < year || (prevMonth.year() == year && prevMonth.month() < month)) { + clsName += ' old'; + } else if (prevMonth.year() > year || (prevMonth.year() == year && prevMonth.month() > month)) { + clsName += ' new'; + } + if (prevMonth.isSame(pMoment({ y: picker.date.year(), M: picker.date.month(), d: picker.date.date() }))) { + clsName += ' active'; + } + if (isInDisableDates(prevMonth) || !isInEnableDates(prevMonth)) { + clsName += ' disabled'; + } + row.append('' + prevMonth.date() + ''); + prevMonth.add(1, "d"); + } + picker.widget.find('.datepicker-days tbody').empty().append(html); + currentYear = pMoment().year(), months = picker.widget.find('.datepicker-months') + .find('th:eq(1)').text(year).end().find('span').removeClass('active'); + if (currentYear === year) { + months.eq(pMoment().month()).addClass('active'); + } + if (currentYear - 1 < startYear) { + picker.widget.find('.datepicker-months th:eq(0)').addClass('disabled'); + } + if (currentYear + 1 > endYear) { + picker.widget.find('.datepicker-months th:eq(2)').addClass('disabled'); + } + for (i = 0; i < 12; i++) { + if ((year == startYear && startMonth > i) || (year < startYear)) { + $(months[i]).addClass('disabled'); + } else if ((year == endYear && endMonth < i) || (year > endYear)) { + $(months[i]).addClass('disabled'); + } + } + + html = ''; + year = parseInt(year / 10, 10) * 10; + yearCont = picker.widget.find('.datepicker-years').find( + 'th:eq(1)').text(year + '-' + (year + 9)).end().find('td'); + picker.widget.find('.datepicker-years').find('th').removeClass('disabled'); + if (startYear > year) { + picker.widget.find('.datepicker-years').find('th:eq(0)').addClass('disabled'); + } + if (endYear < year + 9) { + picker.widget.find('.datepicker-years').find('th:eq(2)').addClass('disabled'); + } + year -= 1; + for (i = -1; i < 11; i++) { + html += '' + year + ''; + year += 1; + } + yearCont.html(html); + }, + + fillHours = function () { + pMoment.lang(picker.options.language); + var table = picker.widget.find('.timepicker .timepicker-hours table'), html = '', current, i, j; + table.parent().hide(); + if (picker.options.use24hours) { + current = 0; + for (i = 0; i < 6; i += 1) { + html += ''; + for (j = 0; j < 4; j += 1) { + html += '' + padLeft(current.toString()) + ''; + current++; + } + html += ''; + } + } + else { + current = 1; + for (i = 0; i < 3; i += 1) { + html += ''; + for (j = 0; j < 4; j += 1) { + html += '' + padLeft(current.toString()) + ''; + current++; + } + html += ''; + } + } + table.html(html); + }, + + fillMinutes = function () { + var table = picker.widget.find('.timepicker .timepicker-minutes table'), html = '', current = 0, i, j; + table.parent().hide(); + for (i = 0; i < 5; i++) { + html += ''; + for (j = 0; j < 4; j += 1) { + html += '' + padLeft(current.toString()) + ''; + current += 3; + } + html += ''; + } + table.html(html); + }, + + fillSeconds = function () { + var table = picker.widget.find('.timepicker .timepicker-seconds table'), html = '', current = 0, i, j; + table.parent().hide(); + for (i = 0; i < 5; i++) { + html += ''; + for (j = 0; j < 4; j += 1) { + html += '' + padLeft(current.toString()) + ''; + current += 3; + } + html += ''; + } + table.html(html); + }, + + fillTime = function () { + if (!picker.date) return; + var timeComponents = picker.widget.find('.timepicker span[data-time-component]'), + hour = picker.date.hours(), + period = 'AM'; + if (!picker.options.use24hours) { + if (hour >= 12) period = 'PM'; + if (hour === 0) hour = 12; + else if (hour != 12) hour = hour % 12; + picker.widget.find('.timepicker [data-action=togglePeriod]').text(period); + } + timeComponents.filter('[data-time-component=hours]').text(padLeft(hour)); + timeComponents.filter('[data-time-component=minutes]').text(padLeft(picker.date.minutes())); + timeComponents.filter('[data-time-component=seconds]').text(padLeft(picker.date.second())); + }, + + click = function (e) { + e.stopPropagation(); + e.preventDefault(); + picker.unset = false; + var target = $(e.target).closest('span, td, th'), month, year, step, day, oldDate = pMoment(picker.date); + if (target.length === 1) { + if (!target.is('.disabled')) { + switch (target[0].nodeName.toLowerCase()) { + case 'th': + switch (target[0].className) { + case 'switch': + showMode(1); + break; + case 'prev': + case 'next': + step = dpGlobal.modes[picker.viewMode].navStep; + if (target[0].className === 'prev') step = step * -1; + picker.viewDate.add(step, dpGlobal.modes[picker.viewMode].navFnc); + fillDate(); + break; + } + break; + case 'span': + if (target.is('.month')) { + month = target.parent().find('span').index(target); + picker.viewDate.month(month); + } else { + year = parseInt(target.text(), 10) || 0; + picker.viewDate.year(year); + } + if (picker.viewMode !== 0) { + picker.date = pMoment({ + y: picker.viewDate.year(), + M: picker.viewDate.month(), + d: picker.viewDate.date(), + h: picker.date.hours(), + m: picker.date.minutes() + }); + notifyChange(oldDate, e.type); + } + showMode(-1); + fillDate(); + break; + case 'td': + if (target.is('.day')) { + day = parseInt(target.text(), 10) || 1; + month = picker.viewDate.month(); + year = picker.viewDate.year(); + if (target.is('.old')) { + if (month === 0) { + month = 11; + year -= 1; + } else { + month -= 1; + } + } else if (target.is('.new')) { + if (month == 11) { + month = 0; + year += 1; + } else { + month += 1; + } + } + picker.date = pMoment({ + y: year, + M: month, + d: day, + h: picker.date.hours(), + m: picker.date.minutes() + } + ); + picker.viewDate = pMoment({ + y: year, M: month, d: Math.min(28, day) + }); + fillDate(); + set(); + notifyChange(oldDate, e.type); + } + break; + } + } + } + }, + + actions = { + incrementHours: function () { + checkDate("add", "hours", 1); + }, + + incrementMinutes: function () { + checkDate("add", "minutes", picker.options.minuteStepping); + }, + + incrementSeconds: function () { + checkDate("add", "seconds", 1); + }, + + decrementHours: function () { + checkDate("subtract", "hours", 1); + }, + + decrementMinutes: function () { + checkDate("subtract", "minutes", picker.options.minuteStepping); + }, + + decrementSeconds: function () { + checkDate("subtract", "seconds", 1); + }, + + togglePeriod: function () { + var hour = picker.date.hours(); + if (hour >= 12) hour -= 12; + else hour += 12; + picker.date.hours(hour); + }, + + showPicker: function () { + picker.widget.find('.timepicker > div:not(.timepicker-picker)').hide(); + picker.widget.find('.timepicker .timepicker-picker').show(); + }, + + showHours: function () { + picker.widget.find('.timepicker .timepicker-picker').hide(); + picker.widget.find('.timepicker .timepicker-hours').show(); + }, + + showMinutes: function () { + picker.widget.find('.timepicker .timepicker-picker').hide(); + picker.widget.find('.timepicker .timepicker-minutes').show(); + }, + + showSeconds: function () { + picker.widget.find('.timepicker .timepicker-picker').hide(); + picker.widget.find('.timepicker .timepicker-seconds').show(); + }, + + selectHour: function (e) { + picker.date.hours(parseInt($(e.target).text(), 10)); + actions.showPicker.call(picker); + }, + + selectMinute: function (e) { + picker.date.minutes(parseInt($(e.target).text(), 10)); + actions.showPicker.call(picker); + }, + + selectSecond: function (e) { + picker.date.seconds(parseInt($(e.target).text(), 10)); + actions.showPicker.call(picker); + } + }, + + doAction = function (e) { + var oldDate = pMoment(picker.date), action = $(e.currentTarget).data('action'), rv = actions[action].apply(picker, arguments); + stopEvent(e); + if (!picker.date) picker.date = pMoment({ y: 1970 }); + set(); + fillTime(); + notifyChange(oldDate, e.type); + return rv; + }, + + stopEvent = function (e) { + e.stopPropagation(); + e.preventDefault(); + }, + + change = function (e) { + pMoment.lang(picker.options.language); + var input = $(e.target), oldDate = pMoment(picker.date), newDate = pMoment(input.val(), picker.format, picker.options.useStrict); + if (newDate.isValid() && !isInDisableDates(newDate) && isInEnableDates(newDate)) { + update(); + picker.setValue(newDate); + notifyChange(oldDate, e.type); + set(); + } + else { + picker.viewDate = oldDate; + notifyChange(oldDate, e.type); + notifyError(newDate); + picker.unset = true; + } + }, + + showMode = function (dir) { + if (dir) { + picker.viewMode = Math.max(picker.minViewMode, Math.min(2, picker.viewMode + dir)); + } + + picker.widget.find('.datepicker > div').hide().filter('.datepicker-' + dpGlobal.modes[picker.viewMode].clsName).show(); + }, + + attachDatePickerEvents = function () { + var $this, $parent, expanded, closed, collapseData; + picker.widget.on('click', '.datepicker *', $.proxy(click, this)); // this handles date picker clicks + picker.widget.on('click', '[data-action]', $.proxy(doAction, this)); // this handles time picker clicks + picker.widget.on('mousedown', $.proxy(stopEvent, this)); + if (picker.options.pickDate && picker.options.pickTime) { + picker.widget.on('click.togglePicker', '.accordion-toggle', function (e) { + e.stopPropagation(); + $this = $(this); + $parent = $this.closest('ul'); + expanded = $parent.find('.in'); + closed = $parent.find('.collapse:not(.in)'); + + if (expanded && expanded.length) { + collapseData = expanded.data('collapse'); + if (collapseData && collapseData.transitioning) return; + expanded.collapse('hide'); + closed.collapse('show'); + $this.find('span').toggleClass(picker.options.icons.time + ' ' + picker.options.icons.date); + picker.element.find('.input-group-addon span').toggleClass(picker.options.icons.time + ' ' + picker.options.icons.date); + } + }); + } + if (picker.isInput) { + picker.element.on({ + 'focus': $.proxy(picker.show, this), + 'change': $.proxy(change, this), + 'blur': $.proxy(picker.hide, this) + }); + } else { + picker.element.on({ + 'change': $.proxy(change, this) + }, 'input'); + if (picker.component) { + picker.component.on('click', $.proxy(picker.show, this)); + } else { + picker.element.on('click', $.proxy(picker.show, this)); + } + } + }, + + attachDatePickerGlobalEvents = function () { + $(window).on( + 'resize.datetimepicker' + picker.id, $.proxy(place, this)); + if (!picker.isInput) { + $(document).on( + 'mousedown.datetimepicker' + picker.id, $.proxy(picker.hide, this)); + } + }, + + detachDatePickerEvents = function () { + picker.widget.off('click', '.datepicker *', picker.click); + picker.widget.off('click', '[data-action]'); + picker.widget.off('mousedown', picker.stopEvent); + if (picker.options.pickDate && picker.options.pickTime) { + picker.widget.off('click.togglePicker'); + } + if (picker.isInput) { + picker.element.off({ + 'focus': picker.show, + 'change': picker.change + }); + } else { + picker.element.off({ + 'change': picker.change + }, 'input'); + if (picker.component) { + picker.component.off('click', picker.show); + } else { + picker.element.off('click', picker.show); + } + } + }, + + detachDatePickerGlobalEvents = function () { + $(window).off('resize.datetimepicker' + picker.id); + if (!picker.isInput) { + $(document).off('mousedown.datetimepicker' + picker.id); + } + }, + + isInFixed = function () { + if (picker.element) { + var parents = picker.element.parents(), inFixed = false, i; + for (i = 0; i < parents.length; i++) { + if ($(parents[i]).css('position') == 'fixed') { + inFixed = true; + break; + } + } + ; + return inFixed; + } else { + return false; + } + }, + + set = function () { + pMoment.lang(picker.options.language); + var formatted = '', input; + if (!picker.unset) formatted = pMoment(picker.date).format(picker.format); + if (!picker.isInput) { + if (picker.component) { + input = picker.element.find('input'); + input.val(formatted); + } + picker.element.data('date', formatted); + } else { + picker.element.val(formatted); + } + if (!picker.options.pickTime) picker.hide(); + }, + + checkDate = function (direction, unit, amount) { + pMoment.lang(picker.options.language); + var newDate; + if (direction == "add") { + newDate = pMoment(picker.date); + if (newDate.hours() == 23) newDate.add(amount, unit); + newDate.add(amount, unit); + } + else { + newDate = pMoment(picker.date).subtract(amount, unit); + } + if (isInDisableDates(pMoment(newDate.subtract(amount, unit))) || isInDisableDates(newDate)) { + notifyError(newDate.format(picker.format)); + return; + } + + if (direction == "add") { + picker.date.add(amount, unit); + } + else { + picker.date.subtract(amount, unit); + } + picker.unset = false; + }, + + isInDisableDates = function (date) { + pMoment.lang(picker.options.language); + if (date.isAfter(picker.options.endDate) || date.isBefore(picker.options.startDate)) return true; + var disabled = picker.options.disabledDates, i; + for (i in disabled) { + if (disabled[i] == pMoment(date).format("L")) { + return true; + } + } + return false; + }, + + isInEnableDates = function (date) { + pMoment.lang(picker.options.language); + var enabled = picker.options.enabledDates, i; + if (enabled.length) { + for (i in enabled) { + if (enabled[i] == pMoment(date).format("L")) { + return true; + } + } + return false; + } + return enabled === false ? true : false; + }, + padLeft = function (string) { + string = string.toString(); + if (string.length >= 2) return string; + else return '0' + string; + }, + + getTemplate = function (pickDate, pickTime, collapse) { + if (pickDate && pickTime) { + return ( + '

' + ); + } else if (pickTime) { + return ( + '' + ); + } else { + return ( + '' + ); + } + }, + + dpGlobal = { + modes: [ + { + clsName: 'days', + navFnc: 'month', + navStep: 1 + }, + { + clsName: 'months', + navFnc: 'year', + navStep: 1 + }, + { + clsName: 'years', + navFnc: 'year', + navStep: 10 + }], + headTemplate: + '' + + '' + + '‹›' + + '' + + '', + contTemplate: + '' + }, + + tpGlobal = { + hourTemplate: '', + minuteTemplate: '', + secondTemplate: '' + }; + + dpGlobal.template = + '
' + + '' + dpGlobal.headTemplate + '
' + + '
' + + '
' + + '' + dpGlobal.headTemplate + dpGlobal.contTemplate + '
' + + '
' + + '
' + + '' + dpGlobal.headTemplate + dpGlobal.contTemplate + '
' + + '
'; + + tpGlobal.getTemplate = function () { + return ( + '
' + + '' + + '' + + '' + + '' + + '' + + (picker.options.useSeconds ? + '' : '') + + (picker.options.use24hours ? '' : '') + + '' + + '' + + ' ' + + '' + + ' ' + + (picker.options.useSeconds ? + '' : '') + + (picker.options.use24hours ? '' : '' + + '') + + '' + + '' + + '' + + '' + + '' + + (picker.options.useSeconds ? + '' : '') + + (picker.options.use24hours ? '' : '') + + '' + + '
' + (picker.options.useMinutes ? '' : '') + '
' + tpGlobal.hourTemplate + ':' + (picker.options.useMinutes ? tpGlobal.minuteTemplate : '00') + ':' + tpGlobal.secondTemplate + '
' + (picker.options.useMinutes ? '' : '') + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + (picker.options.useSeconds ? + '
' : '') + ); + }; + + picker.destroy = function () { + detachDatePickerEvents(); + detachDatePickerGlobalEvents(); + picker.widget.remove(); + picker.element.removeData('DateTimePicker'); + if (picker.component) + picker.component.removeData('DateTimePicker'); + }; + + picker.show = function (e) { + picker.widget.show(); + picker.height = picker.component ? picker.component.outerHeight() : picker.element.outerHeight(); + place(); + picker.element.trigger({ + type: 'show.dp', + date: pMoment(picker.date) + }); + attachDatePickerGlobalEvents(); + if (e) { + stopEvent(e); + } + }, + + picker.disable = function () { + var input = picker.element.find('input'); + if(input.prop('disabled')) return; + + input.prop('disabled', true); + detachDatePickerEvents(); + }, + + picker.enable = function () { + var input = picker.element.find('input'); + if(!input.prop('disabled')) return; + + input.prop('disabled', false); + attachDatePickerEvents(); + }, + + picker.hide = function (event) { + if (event && $(event.target).is(picker.element.attr("id"))) + return; + // Ignore event if in the middle of a picker transition + var collapse = picker.widget.find('.collapse'), i, collapseData; + for (i = 0; i < collapse.length; i++) { + collapseData = collapse.eq(i).data('collapse'); + if (collapseData && collapseData.transitioning) + return; + } + picker.widget.hide(); + picker.viewMode = picker.startViewMode; + showMode(); + picker.element.trigger({ + type: 'hide.dp', + date: pMoment(picker.date) + }); + detachDatePickerGlobalEvents(); + }, + + picker.setValue = function (newDate) { + pMoment.lang(picker.options.language); + if (!newDate) { + picker.unset = true; + set(); + } else { + picker.unset = false; + } + if (!pMoment.isMoment(newDate)) newDate = pMoment(newDate); + if (newDate.isValid()) { + picker.date = newDate; + set(); + picker.viewDate = pMoment({ y: picker.date.year(), M: picker.date.month() }); + fillDate(); + fillTime(); + } + else { + notifyError(newDate); + } + }, + + picker.getDate = function () { + if (picker.unset) return null; + return picker.date; + }, + + picker.setDate = function (date) { + if (!date) { + picker.setValue(null); + } else { + picker.setValue(pMoment(date)); + } + }, + + picker.setEnabledDates = function (dates) { + if (!dates) picker.options.enabledDates = false; + else picker.options.enabledDates = dates; + if (picker.viewDate) update(); + }, + + picker.setEndDate = function (date) { + if (date == undefined) return; + picker.options.endDate = pMoment(date); + if (picker.viewDate) update(); + }, + + picker.setStartDate = function (date) { + if (date == undefined) return; + picker.options.startDate = pMoment(date); + if (picker.viewDate) update(); + }; + + init(); + }; + + $.fn.datetimepicker = function (options) { + return this.each(function () { + var $this = $(this), data = $this.data('DateTimePicker'); + if (!data) $this.data('DateTimePicker', new DateTimePicker(this, options)); + }); + }; +})); diff --git a/static/bootstrap-datetimepicker-master/src/less/bootstrap-datetimepicker-build.less b/static/bootstrap-datetimepicker-master/src/less/bootstrap-datetimepicker-build.less new file mode 100755 index 0000000..7f52883 --- /dev/null +++ b/static/bootstrap-datetimepicker-master/src/less/bootstrap-datetimepicker-build.less @@ -0,0 +1,5 @@ +// Import boostrap variables including default color palette and fonts +@import "../bootstrap/variables.less"; + +// Import datepicker component +@import "bootstrap-datetimepicker.less"; diff --git a/static/bootstrap-datetimepicker-master/src/less/bootstrap-datetimepicker.less b/static/bootstrap-datetimepicker-master/src/less/bootstrap-datetimepicker.less new file mode 100755 index 0000000..519a72f --- /dev/null +++ b/static/bootstrap-datetimepicker-master/src/less/bootstrap-datetimepicker.less @@ -0,0 +1,246 @@ +/*! + * Datetimepicker for Bootstrap v3 + * https://github.com/Eonasdan/bootstrap-datetimepicker/ + * Copyright 2012 Stefan Petre + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + */ +.bootstrap-datetimepicker-widget +{ + top: 0; + left: 0; + width: 250px; + padding: 4px; + margin-top: 1px; + z-index: 99999; + border-radius: 4px; + + .btn { + padding:6px; + } + + &:before + { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: rgba(0,0,0,.2); + position: absolute; + top: -7px; + left: 6px; + } + + &:after + { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid white; + position: absolute; + top: -6px; + left: 7px; + } + + &.pull-right + { + &:before + { + left: auto; + right: 6px; + } + + &:after + { + left: auto; + right: 7px; + } + } + + >ul + { + list-style-type: none; + margin: 0; + } + + .timepicker-hour, .timepicker-minute, .timepicker-second + { + width: 100%; + font-weight: bold; + font-size: 1.2em; + } + + table[data-hour-format="12"] .separator + { + width: 4px; + padding: 0; + margin: 0; + } + + .datepicker > div + { + display: none; + } + + .picker-switch + { + text-align: center; + } + + table + { + width: 100%; + margin: 0; + } + + td, + th + { + text-align: center; + width: 20px; + height: 20px; + border-radius: 4px; + } + + td + { + &.day:hover, + &.hour:hover, + &.minute:hover, + &.second:hover + { + background: @gray-lighter; + cursor: pointer; + } + + &.old, + &.new + { + color: @gray-light; + } + + &.active, + &.active:hover + { + background-color: @btn-primary-bg; + color: #fff; + text-shadow: 0 -1px 0 rgba(0,0,0,.25); + } + + &.disabled, + &.disabled:hover + { + background: none; + color: @gray-light; + cursor: not-allowed; + } + + span + { + display: block; + width: 47px; + height: 54px; + line-height: 54px; + float: left; + margin: 2px; + cursor: pointer; + border-radius: 4px; + + &:hover + { + background: @gray-lighter; + } + + &.active + { + background-color: @btn-primary-bg; + color: #fff; + text-shadow: 0 -1px 0 rgba(0,0,0,.25); + } + + &.old + { + color: @gray-light; + } + + &.disabled, + &.disabled:hover + { + background: none; + color: @gray-light; + cursor: not-allowed; + } + } + } + + th + { + &.switch + { + width: 145px; + } + + &.next, + &.prev + { + font-size: @font-size-base * 1.5; + } + + &.disabled, + &.disabled:hover + { + background: none; + color: @gray-light; + cursor: not-allowed; + } + } + + thead tr:first-child th + { + cursor: pointer; + + &:hover + { + background: @gray-lighter; + } + } + /*.dow { + border-top: 1px solid #ddd !important; + }*/ +} + +.input-group +{ + &.date + { + .input-group-addon span + { + display: block; + cursor: pointer; + width: 16px; + height: 16px; + } + } +} + +.bootstrap-datetimepicker-widget.left-oriented +{ + &:before + { + left: auto; + right: 6px; + } + + &:after + { + left: auto; + right: 7px; + } +} +.bootstrap-datetimepicker-widget ul.list-unstyled li.in div.timepicker div.timepicker-picker table.table-condensed tbody > tr > td +{ + padding: 0px !important; +} diff --git a/static/bootstrap/alerts.less b/static/bootstrap/alerts.less new file mode 100755 index 0000000..3eab066 --- /dev/null +++ b/static/bootstrap/alerts.less @@ -0,0 +1,67 @@ +// +// Alerts +// -------------------------------------------------- + + +// Base styles +// ------------------------- + +.alert { + padding: @alert-padding; + margin-bottom: @line-height-computed; + border: 1px solid transparent; + border-radius: @alert-border-radius; + + // Headings for larger alerts + h4 { + margin-top: 0; + // Specified for the h4 to prevent conflicts of changing @headings-color + color: inherit; + } + // Provide class for links that match alerts + .alert-link { + font-weight: @alert-link-font-weight; + } + + // Improve alignment and spacing of inner content + > p, + > ul { + margin-bottom: 0; + } + > p + p { + margin-top: 5px; + } +} + +// Dismissable alerts +// +// Expand the right padding and account for the close button's positioning. + +.alert-dismissable { + padding-right: (@alert-padding + 20); + + // Adjust close link position + .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; + } +} + +// Alternate styles +// +// Generate contextual modifier classes for colorizing the alert. + +.alert-success { + .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text); +} +.alert-info { + .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text); +} +.alert-warning { + .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text); +} +.alert-danger { + .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text); +} diff --git a/static/bootstrap/badges.less b/static/bootstrap/badges.less new file mode 100755 index 0000000..56828ca --- /dev/null +++ b/static/bootstrap/badges.less @@ -0,0 +1,55 @@ +// +// Badges +// -------------------------------------------------- + + +// Base classes +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: @font-size-small; + font-weight: @badge-font-weight; + color: @badge-color; + line-height: @badge-line-height; + vertical-align: baseline; + white-space: nowrap; + text-align: center; + background-color: @badge-bg; + border-radius: @badge-border-radius; + + // Empty badges collapse automatically (not available in IE8) + &:empty { + display: none; + } + + // Quick fix for badges in buttons + .btn & { + position: relative; + top: -1px; + } + .btn-xs & { + top: 0; + padding: 1px 5px; + } +} + +// Hover state, but only for links +a.badge { + &:hover, + &:focus { + color: @badge-link-hover-color; + text-decoration: none; + cursor: pointer; + } +} + +// Account for counters in navs +a.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: @badge-active-color; + background-color: @badge-active-bg; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} diff --git a/static/bootstrap/bootstrap.css b/static/bootstrap/bootstrap.css new file mode 100644 index 0000000..6b32e1a --- /dev/null +++ b/static/bootstrap/bootstrap.css @@ -0,0 +1 @@ +/*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none !important;color:#000 !important;background:transparent !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.table td,.table th{background-color:#fff !important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}input[type="date"]{line-height:34px}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.radio label,.checkbox label{display:inline;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:normal;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:none}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:none}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px;overflow:hidden}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:none}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{margin-top:15px;padding:19px 20px 20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, color-stop(rgba(0,0,0,0.5) 0), color-stop(rgba(0,0,0,0.0001) 100%));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, color-stop(rgba(0,0,0,0.0001) 0), color-stop(rgba(0,0,0,0.5) 100%));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:none;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}@media print{.hidden-print{display:none !important}} \ No newline at end of file diff --git a/static/bootstrap/bootstrap.less b/static/bootstrap/bootstrap.less new file mode 100755 index 0000000..b368b87 --- /dev/null +++ b/static/bootstrap/bootstrap.less @@ -0,0 +1,49 @@ +// Core variables and mixins +@import "variables.less"; +@import "mixins.less"; + +// Reset +@import "normalize.less"; +@import "print.less"; + +// Core CSS +@import "scaffolding.less"; +@import "type.less"; +@import "code.less"; +@import "grid.less"; +@import "tables.less"; +@import "forms.less"; +@import "buttons.less"; + +// Components +@import "component-animations.less"; +@import "glyphicons.less"; +@import "dropdowns.less"; +@import "button-groups.less"; +@import "input-groups.less"; +@import "navs.less"; +@import "navbar.less"; +@import "breadcrumbs.less"; +@import "pagination.less"; +@import "pager.less"; +@import "labels.less"; +@import "badges.less"; +@import "jumbotron.less"; +@import "thumbnails.less"; +@import "alerts.less"; +@import "progress-bars.less"; +@import "media.less"; +@import "list-group.less"; +@import "panels.less"; +@import "wells.less"; +@import "close.less"; + +// Components w/ JavaScript +@import "modals.less"; +@import "tooltip.less"; +@import "popovers.less"; +@import "carousel.less"; + +// Utility classes +@import "utilities.less"; +@import "responsive-utilities.less"; diff --git a/static/bootstrap/bootstrap.min.css b/static/bootstrap/bootstrap.min.css new file mode 100755 index 0000000..6b32e1a --- /dev/null +++ b/static/bootstrap/bootstrap.min.css @@ -0,0 +1 @@ +/*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none !important;color:#000 !important;background:transparent !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.table td,.table th{background-color:#fff !important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}input[type="date"]{line-height:34px}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.radio label,.checkbox label{display:inline;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:normal;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:none}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:none}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px;overflow:hidden}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:none}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{margin-top:15px;padding:19px 20px 20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, color-stop(rgba(0,0,0,0.5) 0), color-stop(rgba(0,0,0,0.0001) 100%));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, color-stop(rgba(0,0,0,0.0001) 0), color-stop(rgba(0,0,0,0.5) 100%));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:none;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}@media print{.hidden-print{display:none !important}} \ No newline at end of file diff --git a/static/bootstrap/breadcrumbs.less b/static/bootstrap/breadcrumbs.less new file mode 100755 index 0000000..cb01d50 --- /dev/null +++ b/static/bootstrap/breadcrumbs.less @@ -0,0 +1,26 @@ +// +// Breadcrumbs +// -------------------------------------------------- + + +.breadcrumb { + padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal; + margin-bottom: @line-height-computed; + list-style: none; + background-color: @breadcrumb-bg; + border-radius: @border-radius-base; + + > li { + display: inline-block; + + + li:before { + content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space + padding: 0 5px; + color: @breadcrumb-color; + } + } + + > .active { + color: @breadcrumb-active-color; + } +} diff --git a/static/bootstrap/button-groups.less b/static/bootstrap/button-groups.less new file mode 100755 index 0000000..27eb796 --- /dev/null +++ b/static/bootstrap/button-groups.less @@ -0,0 +1,226 @@ +// +// Button groups +// -------------------------------------------------- + +// Make the div behave like a button +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; // match .btn alignment given font-size hack above + > .btn { + position: relative; + float: left; + // Bring the "active" button to the front + &:hover, + &:focus, + &:active, + &.active { + z-index: 2; + } + &:focus { + // Remove focus outline when dropdown JS adds it after closing the menu + outline: none; + } + } +} + +// Prevent double borders when buttons are next to each other +.btn-group { + .btn + .btn, + .btn + .btn-group, + .btn-group + .btn, + .btn-group + .btn-group { + margin-left: -1px; + } +} + +// Optional: Group multiple button groups together for a toolbar +.btn-toolbar { + margin-left: -5px; // Offset the first child's margin + &:extend(.clearfix all); + + .btn-group, + .input-group { + float: left; + } + > .btn, + > .btn-group, + > .input-group { + margin-left: 5px; + } +} + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} + +// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match +.btn-group > .btn:first-child { + margin-left: 0; + &:not(:last-child):not(.dropdown-toggle) { + .border-right-radius(0); + } +} +// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + .border-left-radius(0); +} + +// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group) +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child { + > .btn:last-child, + > .dropdown-toggle { + .border-right-radius(0); + } +} +.btn-group > .btn-group:last-child > .btn:first-child { + .border-left-radius(0); +} + +// On active and open, don't show outline +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + + +// Sizing +// +// Remix the default button sizing classes into new ones for easier manipulation. + +.btn-group-xs > .btn { &:extend(.btn-xs); } +.btn-group-sm > .btn { &:extend(.btn-sm); } +.btn-group-lg > .btn { &:extend(.btn-lg); } + + +// Split button dropdowns +// ---------------------- + +// Give the line between buttons some depth +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; +} + +// The clickable button for toggling the menu +// Remove the gradient and set the same inset shadow as the :active state +.btn-group.open .dropdown-toggle { + .box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); + + // Show no shadow for `.btn-link` since it has no other button styles. + &.btn-link { + .box-shadow(none); + } +} + + +// Reposition the caret +.btn .caret { + margin-left: 0; +} +// Carets in other button sizes +.btn-lg .caret { + border-width: @caret-width-large @caret-width-large 0; + border-bottom-width: 0; +} +// Upside down carets for .dropup +.dropup .btn-lg .caret { + border-width: 0 @caret-width-large @caret-width-large; +} + + +// Vertical button groups +// ---------------------- + +.btn-group-vertical { + > .btn, + > .btn-group, + > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; + } + + // Clear floats so dropdown menus can be properly placed + > .btn-group { + &:extend(.clearfix all); + > .btn { + float: none; + } + } + + > .btn + .btn, + > .btn + .btn-group, + > .btn-group + .btn, + > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; + } +} + +.btn-group-vertical > .btn { + &:not(:first-child):not(:last-child) { + border-radius: 0; + } + &:first-child:not(:last-child) { + border-top-right-radius: @border-radius-base; + .border-bottom-radius(0); + } + &:last-child:not(:first-child) { + border-bottom-left-radius: @border-radius-base; + .border-top-radius(0); + } +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) { + > .btn:last-child, + > .dropdown-toggle { + .border-bottom-radius(0); + } +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + .border-top-radius(0); +} + + + +// Justified button groups +// ---------------------- + +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; + > .btn, + > .btn-group { + float: none; + display: table-cell; + width: 1%; + } + > .btn-group .btn { + width: 100%; + } +} + + +// Checkbox and radio options +[data-toggle="buttons"] > .btn > input[type="radio"], +[data-toggle="buttons"] > .btn > input[type="checkbox"] { + display: none; +} diff --git a/static/bootstrap/buttons.less b/static/bootstrap/buttons.less new file mode 100755 index 0000000..d4fc156 --- /dev/null +++ b/static/bootstrap/buttons.less @@ -0,0 +1,159 @@ +// +// Buttons +// -------------------------------------------------- + + +// Base styles +// -------------------------------------------------- + +.btn { + display: inline-block; + margin-bottom: 0; // For input.btn + font-weight: @btn-font-weight; + text-align: center; + vertical-align: middle; + cursor: pointer; + background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 + border: 1px solid transparent; + white-space: nowrap; + .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @border-radius-base); + .user-select(none); + + &, + &:active, + &.active { + &:focus { + .tab-focus(); + } + } + + &:hover, + &:focus { + color: @btn-default-color; + text-decoration: none; + } + + &:active, + &.active { + outline: 0; + background-image: none; + .box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); + } + + &.disabled, + &[disabled], + fieldset[disabled] & { + cursor: not-allowed; + pointer-events: none; // Future-proof disabling of clicks + .opacity(.65); + .box-shadow(none); + } +} + + +// Alternate buttons +// -------------------------------------------------- + +.btn-default { + .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border); +} +.btn-primary { + .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border); +} +// Success appears as green +.btn-success { + .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border); +} +// Info appears as blue-green +.btn-info { + .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border); +} +// Warning appears as orange +.btn-warning { + .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border); +} +// Danger and error appear as red +.btn-danger { + .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border); +} + + +// Link buttons +// ------------------------- + +// Make a button look and behave like a link +.btn-link { + color: @link-color; + font-weight: normal; + cursor: pointer; + border-radius: 0; + + &, + &:active, + &[disabled], + fieldset[disabled] & { + background-color: transparent; + .box-shadow(none); + } + &, + &:hover, + &:focus, + &:active { + border-color: transparent; + } + &:hover, + &:focus { + color: @link-hover-color; + text-decoration: underline; + background-color: transparent; + } + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus { + color: @btn-link-disabled-color; + text-decoration: none; + } + } +} + + +// Button Sizes +// -------------------------------------------------- + +.btn-lg { + // line-height: ensure even-numbered height of button next to large input + .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large); +} +.btn-sm { + // line-height: ensure proper height of button next to small input + .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small); +} +.btn-xs { + .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @border-radius-small); +} + + +// Block button +// -------------------------------------------------- + +.btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; +} + +// Vertically space out multiple block buttons +.btn-block + .btn-block { + margin-top: 5px; +} + +// Specificity overrides +input[type="submit"], +input[type="reset"], +input[type="button"] { + &.btn-block { + width: 100%; + } +} diff --git a/static/bootstrap/carousel.less b/static/bootstrap/carousel.less new file mode 100755 index 0000000..e3fb8a2 --- /dev/null +++ b/static/bootstrap/carousel.less @@ -0,0 +1,232 @@ +// +// Carousel +// -------------------------------------------------- + + +// Wrapper for the slide container and indicators +.carousel { + position: relative; +} + +.carousel-inner { + position: relative; + overflow: hidden; + width: 100%; + + > .item { + display: none; + position: relative; + .transition(.6s ease-in-out left); + + // Account for jankitude on images + > img, + > a > img { + &:extend(.img-responsive); + line-height: 1; + } + } + + > .active, + > .next, + > .prev { display: block; } + + > .active { + left: 0; + } + + > .next, + > .prev { + position: absolute; + top: 0; + width: 100%; + } + + > .next { + left: 100%; + } + > .prev { + left: -100%; + } + > .next.left, + > .prev.right { + left: 0; + } + + > .active.left { + left: -100%; + } + > .active.right { + left: 100%; + } + +} + +// Left/right controls for nav +// --------------------------- + +.carousel-control { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: @carousel-control-width; + .opacity(@carousel-control-opacity); + font-size: @carousel-control-font-size; + color: @carousel-control-color; + text-align: center; + text-shadow: @carousel-text-shadow; + // We can't have this transition here because WebKit cancels the carousel + // animation if you trip this while in the middle of another animation. + + // Set gradients for backgrounds + &.left { + #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001)); + } + &.right { + left: auto; + right: 0; + #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5)); + } + + // Hover/focus state + &:hover, + &:focus { + outline: none; + color: @carousel-control-color; + text-decoration: none; + .opacity(.9); + } + + // Toggles + .icon-prev, + .icon-next, + .glyphicon-chevron-left, + .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + } + .icon-prev, + .glyphicon-chevron-left { + left: 50%; + } + .icon-next, + .glyphicon-chevron-right { + right: 50%; + } + .icon-prev, + .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + font-family: serif; + } + + .icon-prev { + &:before { + content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039) + } + } + .icon-next { + &:before { + content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A) + } + } +} + +// Optional indicator pips +// +// Add an unordered list with the following class and add a list item for each +// slide your carousel holds. + +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + margin-left: -30%; + padding-left: 0; + list-style: none; + text-align: center; + + li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + border: 1px solid @carousel-indicator-border-color; + border-radius: 10px; + cursor: pointer; + + // IE8-9 hack for event handling + // + // Internet Explorer 8-9 does not support clicks on elements without a set + // `background-color`. We cannot use `filter` since that's not viewed as a + // background color by the browser. Thus, a hack is needed. + // + // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we + // set alpha transparency for the best results possible. + background-color: #000 \9; // IE8 + background-color: rgba(0,0,0,0); // IE9 + } + .active { + margin: 0; + width: 12px; + height: 12px; + background-color: @carousel-indicator-active-bg; + } +} + +// Optional captions +// ----------------------------- +// Hidden by default for smaller viewports +.carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: @carousel-caption-color; + text-align: center; + text-shadow: @carousel-text-shadow; + & .btn { + text-shadow: none; // No shadow for button elements in carousel-caption + } +} + + +// Scale up controls for tablets and up +@media screen and (min-width: @screen-sm-min) { + + // Scale up the controls a smidge + .carousel-control { + .glyphicon-chevron-left, + .glyphicon-chevron-right, + .icon-prev, + .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + margin-left: -15px; + font-size: 30px; + } + } + + // Show and left align the captions + .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; + } + + // Move up the indicators + .carousel-indicators { + bottom: 20px; + } +} diff --git a/static/bootstrap/close.less b/static/bootstrap/close.less new file mode 100755 index 0000000..9b4e74f --- /dev/null +++ b/static/bootstrap/close.less @@ -0,0 +1,33 @@ +// +// Close icons +// -------------------------------------------------- + + +.close { + float: right; + font-size: (@font-size-base * 1.5); + font-weight: @close-font-weight; + line-height: 1; + color: @close-color; + text-shadow: @close-text-shadow; + .opacity(.2); + + &:hover, + &:focus { + color: @close-color; + text-decoration: none; + cursor: pointer; + .opacity(.5); + } + + // Additional properties for button version + // iOS requires the button element instead of an anchor tag. + // If you want the anchor version, it requires `href="#"`. + button& { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; + } +} diff --git a/static/bootstrap/code.less b/static/bootstrap/code.less new file mode 100755 index 0000000..3eed26c --- /dev/null +++ b/static/bootstrap/code.less @@ -0,0 +1,63 @@ +// +// Code (inline and block) +// -------------------------------------------------- + + +// Inline and block code styles +code, +kbd, +pre, +samp { + font-family: @font-family-monospace; +} + +// Inline code +code { + padding: 2px 4px; + font-size: 90%; + color: @code-color; + background-color: @code-bg; + white-space: nowrap; + border-radius: @border-radius-base; +} + +// User input typically entered via keyboard +kbd { + padding: 2px 4px; + font-size: 90%; + color: @kbd-color; + background-color: @kbd-bg; + border-radius: @border-radius-small; + box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); +} + +// Blocks of code +pre { + display: block; + padding: ((@line-height-computed - 1) / 2); + margin: 0 0 (@line-height-computed / 2); + font-size: (@font-size-base - 1); // 14px to 13px + line-height: @line-height-base; + word-break: break-all; + word-wrap: break-word; + color: @pre-color; + background-color: @pre-bg; + border: 1px solid @pre-border-color; + border-radius: @border-radius-base; + + // Account for some code outputs that place code tags in pre tags + code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; + } +} + +// Enable scrollable blocks of code +.pre-scrollable { + max-height: @pre-scrollable-max-height; + overflow-y: scroll; +} diff --git a/static/bootstrap/component-animations.less b/static/bootstrap/component-animations.less new file mode 100755 index 0000000..1efe45e --- /dev/null +++ b/static/bootstrap/component-animations.less @@ -0,0 +1,29 @@ +// +// Component animations +// -------------------------------------------------- + +// Heads up! +// +// We don't use the `.opacity()` mixin here since it causes a bug with text +// fields in IE7-8. Source: https://github.com/twitter/bootstrap/pull/3552. + +.fade { + opacity: 0; + .transition(opacity .15s linear); + &.in { + opacity: 1; + } +} + +.collapse { + display: none; + &.in { + display: block; + } +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + .transition(height .35s ease); +} diff --git a/static/bootstrap/dropdowns.less b/static/bootstrap/dropdowns.less new file mode 100755 index 0000000..f165165 --- /dev/null +++ b/static/bootstrap/dropdowns.less @@ -0,0 +1,213 @@ +// +// Dropdown menus +// -------------------------------------------------- + + +// Dropdown arrow/caret +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: @caret-width-base solid; + border-right: @caret-width-base solid transparent; + border-left: @caret-width-base solid transparent; +} + +// The dropdown wrapper (div) +.dropdown { + position: relative; +} + +// Prevent the focus on the dropdown toggle when closing dropdowns +.dropdown-toggle:focus { + outline: 0; +} + +// The dropdown menu (ul) +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: @zindex-dropdown; + display: none; // none by default, but block on "open" of the menu + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; // override default ul + list-style: none; + font-size: @font-size-base; + background-color: @dropdown-bg; + border: 1px solid @dropdown-fallback-border; // IE8 fallback + border: 1px solid @dropdown-border; + border-radius: @border-radius-base; + .box-shadow(0 6px 12px rgba(0,0,0,.175)); + background-clip: padding-box; + + // Aligns the dropdown menu to right + // + // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]` + &.pull-right { + right: 0; + left: auto; + } + + // Dividers (basically an hr) within the dropdown + .divider { + .nav-divider(@dropdown-divider-bg); + } + + // Links within the dropdown menu + > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: @line-height-base; + color: @dropdown-link-color; + white-space: nowrap; // prevent links from randomly breaking onto new lines + } +} + +// Hover/Focus state +.dropdown-menu > li > a { + &:hover, + &:focus { + text-decoration: none; + color: @dropdown-link-hover-color; + background-color: @dropdown-link-hover-bg; + } +} + +// Active state +.dropdown-menu > .active > a { + &, + &:hover, + &:focus { + color: @dropdown-link-active-color; + text-decoration: none; + outline: 0; + background-color: @dropdown-link-active-bg; + } +} + +// Disabled state +// +// Gray out text and ensure the hover/focus state remains gray + +.dropdown-menu > .disabled > a { + &, + &:hover, + &:focus { + color: @dropdown-link-disabled-color; + } +} +// Nuke hover/focus effects +.dropdown-menu > .disabled > a { + &:hover, + &:focus { + text-decoration: none; + background-color: transparent; + background-image: none; // Remove CSS gradient + .reset-filter(); + cursor: not-allowed; + } +} + +// Open state for the dropdown +.open { + // Show the menu + > .dropdown-menu { + display: block; + } + + // Remove the outline when :focus is triggered + > a { + outline: 0; + } +} + +// Menu positioning +// +// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown +// menu with the parent. +.dropdown-menu-right { + left: auto; // Reset the default from `.dropdown-menu` + right: 0; +} +// With v3, we enabled auto-flipping if you have a dropdown within a right +// aligned nav component. To enable the undoing of that, we provide an override +// to restore the default dropdown menu alignment. +// +// This is only for left-aligning a dropdown menu within a `.navbar-right` or +// `.pull-right` nav component. +.dropdown-menu-left { + left: 0; + right: auto; +} + +// Dropdown section headers +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: @font-size-small; + line-height: @line-height-base; + color: @dropdown-header-color; +} + +// Backdrop to catch body clicks on mobile, etc. +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: (@zindex-dropdown - 10); +} + +// Right aligned dropdowns +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +// Allow for dropdowns to go bottom up (aka, dropup-menu) +// +// Just add .dropup after the standard .dropdown class and you're set, bro. +// TODO: abstract this so that the navbar fixed styles are not placed here? + +.dropup, +.navbar-fixed-bottom .dropdown { + // Reverse the caret + .caret { + border-top: 0; + border-bottom: @caret-width-base solid; + content: ""; + } + // Different positioning for bottom up menu + .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; + } +} + + +// Component alignment +// +// Reiterate per navbar.less and the modified component alignment there. + +@media (min-width: @grid-float-breakpoint) { + .navbar-right { + .dropdown-menu { + .dropdown-menu-right(); + } + // Necessary for overrides of the default right aligned menu. + // Will remove come v4 in all likelihood. + .dropdown-menu-left { + .dropdown-menu-left(); + } + } +} + diff --git a/static/bootstrap/forms.less b/static/bootstrap/forms.less new file mode 100755 index 0000000..f607b85 --- /dev/null +++ b/static/bootstrap/forms.less @@ -0,0 +1,438 @@ +// +// Forms +// -------------------------------------------------- + + +// Normalize non-controls +// +// Restyle and baseline non-control form elements. + +fieldset { + padding: 0; + margin: 0; + border: 0; + // Chrome and Firefox set a `min-width: -webkit-min-content;` on fieldsets, + // so we reset that to ensure it behaves more like a standard block element. + // See https://github.com/twbs/bootstrap/issues/12359. + min-width: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: @line-height-computed; + font-size: (@font-size-base * 1.5); + line-height: inherit; + color: @legend-color; + border: 0; + border-bottom: 1px solid @legend-border-color; +} + +label { + display: inline-block; + margin-bottom: 5px; + font-weight: bold; +} + + +// Normalize form controls +// +// While most of our form styles require extra classes, some basic normalization +// is required to ensure optimum display with or without those classes to better +// address browser inconsistencies. + +// Override content-box in Normalize (* isn't specific enough) +input[type="search"] { + .box-sizing(border-box); +} + +// Position radios and checkboxes better +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; /* IE8-9 */ + line-height: normal; +} + +// Set the height of file controls to match text inputs +input[type="file"] { + display: block; +} + +// Make range inputs behave like textual form controls +input[type="range"] { + display: block; + width: 100%; +} + +// Make multiple select elements height not fixed +select[multiple], +select[size] { + height: auto; +} + +// Focus for file, radio, and checkbox +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + .tab-focus(); +} + +// Adjust output element +output { + display: block; + padding-top: (@padding-base-vertical + 1); + font-size: @font-size-base; + line-height: @line-height-base; + color: @input-color; +} + + +// Common form controls +// +// Shared size and type resets for form controls. Apply `.form-control` to any +// of the following form controls: +// +// select +// textarea +// input[type="text"] +// input[type="password"] +// input[type="datetime"] +// input[type="datetime-local"] +// input[type="date"] +// input[type="month"] +// input[type="time"] +// input[type="week"] +// input[type="number"] +// input[type="email"] +// input[type="url"] +// input[type="search"] +// input[type="tel"] +// input[type="color"] + +.form-control { + display: block; + width: 100%; + height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border) + padding: @padding-base-vertical @padding-base-horizontal; + font-size: @font-size-base; + line-height: @line-height-base; + color: @input-color; + background-color: @input-bg; + background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 + border: 1px solid @input-border; + border-radius: @input-border-radius; + .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); + .transition(~"border-color ease-in-out .15s, box-shadow ease-in-out .15s"); + + // Customize the `:focus` state to imitate native WebKit styles. + .form-control-focus(); + + // Placeholder + .placeholder(); + + // Disabled and read-only inputs + // + // HTML5 says that controls under a fieldset > legend:first-child won't be + // disabled if the fieldset is disabled. Due to implementation difficulty, we + // don't honor that edge case; we style them as disabled anyway. + &[disabled], + &[readonly], + fieldset[disabled] & { + cursor: not-allowed; + background-color: @input-bg-disabled; + opacity: 1; // iOS fix for unreadable disabled content + } + + // Reset height for `textarea`s + textarea& { + height: auto; + } +} + + +// Search inputs in iOS +// +// This overrides the extra rounded corners on search inputs in iOS so that our +// `.form-control` class can properly style them. Note that this cannot simply +// be added to `.form-control` as it's not specific enough. For details, see +// https://github.com/twbs/bootstrap/issues/11586. + +input[type="search"] { + -webkit-appearance: none; +} + + +// Special styles for iOS date input +// +// In Mobile Safari, date inputs require a pixel line-height that matches the +// given height of the input. + +input[type="date"] { + line-height: @input-height-base; +} + + +// Form groups +// +// Designed to help with the organization and spacing of vertical forms. For +// horizontal forms, use the predefined grid classes. + +.form-group { + margin-bottom: 15px; +} + + +// Checkboxes and radios +// +// Indent the labels to position radios/checkboxes as hanging controls. + +.radio, +.checkbox { + display: block; + min-height: @line-height-computed; // clear the floating input if there is no label text + margin-top: 10px; + margin-bottom: 10px; + padding-left: 20px; + label { + display: inline; + font-weight: normal; + cursor: pointer; + } +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + float: left; + margin-left: -20px; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing +} + +// Radios and checkboxes on same line +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; // space out consecutive inline controls +} + +// Apply same disabled cursor tweak as for inputs +// +// Note: Neither radios nor checkboxes can be readonly. +input[type="radio"], +input[type="checkbox"], +.radio, +.radio-inline, +.checkbox, +.checkbox-inline { + &[disabled], + fieldset[disabled] & { + cursor: not-allowed; + } +} + + +// Form control sizing +// +// Build on `.form-control` with modifier classes to decrease or increase the +// height and font-size of form controls. + +.input-sm { + .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small); +} + +.input-lg { + .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large); +} + + +// Form control feedback states +// +// Apply contextual and semantic states to individual form controls. + +.has-feedback { + // Enable absolute positioning + position: relative; + + // Ensure icons don't overlap text + .form-control { + padding-right: (@input-height-base * 1.25); + } + + // Feedback icon (requires .glyphicon classes) + .form-control-feedback { + position: absolute; + top: (@line-height-computed + 5); // Height of the `label` and its margin + right: 0; + display: block; + width: @input-height-base; + height: @input-height-base; + line-height: @input-height-base; + text-align: center; + } +} + +// Feedback states +.has-success { + .form-control-validation(@state-success-text; @state-success-text; @state-success-bg); +} +.has-warning { + .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg); +} +.has-error { + .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg); +} + + +// Static form control text +// +// Apply class to a `p` element to make any string of text align with labels in +// a horizontal form layout. + +.form-control-static { + margin-bottom: 0; // Remove default margin from `p` +} + + +// Help text +// +// Apply to any element you wish to create light text for placement immediately +// below a form control. Use for general help, formatting, or instructional text. + +.help-block { + display: block; // account for any element using help-block + margin-top: 5px; + margin-bottom: 10px; + color: lighten(@text-color, 25%); // lighten the text some for contrast +} + + + +// Inline forms +// +// Make forms appear inline(-block) by adding the `.form-inline` class. Inline +// forms begin stacked on extra small (mobile) devices and then go inline when +// viewports reach <768px. +// +// Requires wrapping inputs and labels with `.form-group` for proper display of +// default HTML form controls and our custom form controls (e.g., input groups). +// +// Heads up! This is mixin-ed into `.navbar-form` in navbars.less. + +.form-inline { + + // Kick in the inline + @media (min-width: @screen-sm-min) { + // Inline-block all the things for "inline" + .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + + // In navbar-form, allow folks to *not* use `.form-group` + .form-control { + display: inline-block; + width: auto; // Prevent labels from stacking above inputs in `.form-group` + vertical-align: middle; + } + // Input groups need that 100% width though + .input-group > .form-control { + width: 100%; + } + + .control-label { + margin-bottom: 0; + vertical-align: middle; + } + + // Remove default margin on radios/checkboxes that were used for stacking, and + // then undo the floating of radios and checkboxes to match (which also avoids + // a bug in WebKit: https://github.com/twbs/bootstrap/issues/1969). + .radio, + .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + padding-left: 0; + vertical-align: middle; + } + .radio input[type="radio"], + .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } + + // Validation states + // + // Reposition the icon because it's now within a grid column and columns have + // `position: relative;` on them. Also accounts for the grid gutter padding. + .has-feedback .form-control-feedback { + top: 0; + } + } +} + + +// Horizontal forms +// +// Horizontal forms are built on grid classes and allow you to create forms with +// labels on the left and inputs on the right. + +.form-horizontal { + + // Consistent vertical alignment of labels, radios, and checkboxes + .control-label, + .radio, + .checkbox, + .radio-inline, + .checkbox-inline { + margin-top: 0; + margin-bottom: 0; + padding-top: (@padding-base-vertical + 1); // Default padding plus a border + } + // Account for padding we're adding to ensure the alignment and of help text + // and other content below items + .radio, + .checkbox { + min-height: (@line-height-computed + (@padding-base-vertical + 1)); + } + + // Make form groups behave like rows + .form-group { + .make-row(); + } + + .form-control-static { + padding-top: (@padding-base-vertical + 1); + } + + // Only right align form labels here when the columns stop stacking + @media (min-width: @screen-sm-min) { + .control-label { + text-align: right; + } + } + + // Validation states + // + // Reposition the icon because it's now within a grid column and columns have + // `position: relative;` on them. Also accounts for the grid gutter padding. + .has-feedback .form-control-feedback { + top: 0; + right: (@grid-gutter-width / 2); + } +} diff --git a/static/bootstrap/glyphicons.less b/static/bootstrap/glyphicons.less new file mode 100755 index 0000000..789c5e7 --- /dev/null +++ b/static/bootstrap/glyphicons.less @@ -0,0 +1,233 @@ +// +// Glyphicons for Bootstrap +// +// Since icons are fonts, they can be placed anywhere text is placed and are +// thus automatically sized to match the surrounding child. To use, create an +// inline element with the appropriate classes, like so: +// +// Star + +// Import the fonts +@font-face { + font-family: 'Glyphicons Halflings'; + src: ~"url('@{icon-font-path}@{icon-font-name}.eot')"; + src: ~"url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype')", + ~"url('@{icon-font-path}@{icon-font-name}.woff') format('woff')", + ~"url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype')", + ~"url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg')"; +} + +// Catchall baseclass +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +// Individual icons +.glyphicon-asterisk { &:before { content: "\2a"; } } +.glyphicon-plus { &:before { content: "\2b"; } } +.glyphicon-euro { &:before { content: "\20ac"; } } +.glyphicon-minus { &:before { content: "\2212"; } } +.glyphicon-cloud { &:before { content: "\2601"; } } +.glyphicon-envelope { &:before { content: "\2709"; } } +.glyphicon-pencil { &:before { content: "\270f"; } } +.glyphicon-glass { &:before { content: "\e001"; } } +.glyphicon-music { &:before { content: "\e002"; } } +.glyphicon-search { &:before { content: "\e003"; } } +.glyphicon-heart { &:before { content: "\e005"; } } +.glyphicon-star { &:before { content: "\e006"; } } +.glyphicon-star-empty { &:before { content: "\e007"; } } +.glyphicon-user { &:before { content: "\e008"; } } +.glyphicon-film { &:before { content: "\e009"; } } +.glyphicon-th-large { &:before { content: "\e010"; } } +.glyphicon-th { &:before { content: "\e011"; } } +.glyphicon-th-list { &:before { content: "\e012"; } } +.glyphicon-ok { &:before { content: "\e013"; } } +.glyphicon-remove { &:before { content: "\e014"; } } +.glyphicon-zoom-in { &:before { content: "\e015"; } } +.glyphicon-zoom-out { &:before { content: "\e016"; } } +.glyphicon-off { &:before { content: "\e017"; } } +.glyphicon-signal { &:before { content: "\e018"; } } +.glyphicon-cog { &:before { content: "\e019"; } } +.glyphicon-trash { &:before { content: "\e020"; } } +.glyphicon-home { &:before { content: "\e021"; } } +.glyphicon-file { &:before { content: "\e022"; } } +.glyphicon-time { &:before { content: "\e023"; } } +.glyphicon-road { &:before { content: "\e024"; } } +.glyphicon-download-alt { &:before { content: "\e025"; } } +.glyphicon-download { &:before { content: "\e026"; } } +.glyphicon-upload { &:before { content: "\e027"; } } +.glyphicon-inbox { &:before { content: "\e028"; } } +.glyphicon-play-circle { &:before { content: "\e029"; } } +.glyphicon-repeat { &:before { content: "\e030"; } } +.glyphicon-refresh { &:before { content: "\e031"; } } +.glyphicon-list-alt { &:before { content: "\e032"; } } +.glyphicon-lock { &:before { content: "\e033"; } } +.glyphicon-flag { &:before { content: "\e034"; } } +.glyphicon-headphones { &:before { content: "\e035"; } } +.glyphicon-volume-off { &:before { content: "\e036"; } } +.glyphicon-volume-down { &:before { content: "\e037"; } } +.glyphicon-volume-up { &:before { content: "\e038"; } } +.glyphicon-qrcode { &:before { content: "\e039"; } } +.glyphicon-barcode { &:before { content: "\e040"; } } +.glyphicon-tag { &:before { content: "\e041"; } } +.glyphicon-tags { &:before { content: "\e042"; } } +.glyphicon-book { &:before { content: "\e043"; } } +.glyphicon-bookmark { &:before { content: "\e044"; } } +.glyphicon-print { &:before { content: "\e045"; } } +.glyphicon-camera { &:before { content: "\e046"; } } +.glyphicon-font { &:before { content: "\e047"; } } +.glyphicon-bold { &:before { content: "\e048"; } } +.glyphicon-italic { &:before { content: "\e049"; } } +.glyphicon-text-height { &:before { content: "\e050"; } } +.glyphicon-text-width { &:before { content: "\e051"; } } +.glyphicon-align-left { &:before { content: "\e052"; } } +.glyphicon-align-center { &:before { content: "\e053"; } } +.glyphicon-align-right { &:before { content: "\e054"; } } +.glyphicon-align-justify { &:before { content: "\e055"; } } +.glyphicon-list { &:before { content: "\e056"; } } +.glyphicon-indent-left { &:before { content: "\e057"; } } +.glyphicon-indent-right { &:before { content: "\e058"; } } +.glyphicon-facetime-video { &:before { content: "\e059"; } } +.glyphicon-picture { &:before { content: "\e060"; } } +.glyphicon-map-marker { &:before { content: "\e062"; } } +.glyphicon-adjust { &:before { content: "\e063"; } } +.glyphicon-tint { &:before { content: "\e064"; } } +.glyphicon-edit { &:before { content: "\e065"; } } +.glyphicon-share { &:before { content: "\e066"; } } +.glyphicon-check { &:before { content: "\e067"; } } +.glyphicon-move { &:before { content: "\e068"; } } +.glyphicon-step-backward { &:before { content: "\e069"; } } +.glyphicon-fast-backward { &:before { content: "\e070"; } } +.glyphicon-backward { &:before { content: "\e071"; } } +.glyphicon-play { &:before { content: "\e072"; } } +.glyphicon-pause { &:before { content: "\e073"; } } +.glyphicon-stop { &:before { content: "\e074"; } } +.glyphicon-forward { &:before { content: "\e075"; } } +.glyphicon-fast-forward { &:before { content: "\e076"; } } +.glyphicon-step-forward { &:before { content: "\e077"; } } +.glyphicon-eject { &:before { content: "\e078"; } } +.glyphicon-chevron-left { &:before { content: "\e079"; } } +.glyphicon-chevron-right { &:before { content: "\e080"; } } +.glyphicon-plus-sign { &:before { content: "\e081"; } } +.glyphicon-minus-sign { &:before { content: "\e082"; } } +.glyphicon-remove-sign { &:before { content: "\e083"; } } +.glyphicon-ok-sign { &:before { content: "\e084"; } } +.glyphicon-question-sign { &:before { content: "\e085"; } } +.glyphicon-info-sign { &:before { content: "\e086"; } } +.glyphicon-screenshot { &:before { content: "\e087"; } } +.glyphicon-remove-circle { &:before { content: "\e088"; } } +.glyphicon-ok-circle { &:before { content: "\e089"; } } +.glyphicon-ban-circle { &:before { content: "\e090"; } } +.glyphicon-arrow-left { &:before { content: "\e091"; } } +.glyphicon-arrow-right { &:before { content: "\e092"; } } +.glyphicon-arrow-up { &:before { content: "\e093"; } } +.glyphicon-arrow-down { &:before { content: "\e094"; } } +.glyphicon-share-alt { &:before { content: "\e095"; } } +.glyphicon-resize-full { &:before { content: "\e096"; } } +.glyphicon-resize-small { &:before { content: "\e097"; } } +.glyphicon-exclamation-sign { &:before { content: "\e101"; } } +.glyphicon-gift { &:before { content: "\e102"; } } +.glyphicon-leaf { &:before { content: "\e103"; } } +.glyphicon-fire { &:before { content: "\e104"; } } +.glyphicon-eye-open { &:before { content: "\e105"; } } +.glyphicon-eye-close { &:before { content: "\e106"; } } +.glyphicon-warning-sign { &:before { content: "\e107"; } } +.glyphicon-plane { &:before { content: "\e108"; } } +.glyphicon-calendar { &:before { content: "\e109"; } } +.glyphicon-random { &:before { content: "\e110"; } } +.glyphicon-comment { &:before { content: "\e111"; } } +.glyphicon-magnet { &:before { content: "\e112"; } } +.glyphicon-chevron-up { &:before { content: "\e113"; } } +.glyphicon-chevron-down { &:before { content: "\e114"; } } +.glyphicon-retweet { &:before { content: "\e115"; } } +.glyphicon-shopping-cart { &:before { content: "\e116"; } } +.glyphicon-folder-close { &:before { content: "\e117"; } } +.glyphicon-folder-open { &:before { content: "\e118"; } } +.glyphicon-resize-vertical { &:before { content: "\e119"; } } +.glyphicon-resize-horizontal { &:before { content: "\e120"; } } +.glyphicon-hdd { &:before { content: "\e121"; } } +.glyphicon-bullhorn { &:before { content: "\e122"; } } +.glyphicon-bell { &:before { content: "\e123"; } } +.glyphicon-certificate { &:before { content: "\e124"; } } +.glyphicon-thumbs-up { &:before { content: "\e125"; } } +.glyphicon-thumbs-down { &:before { content: "\e126"; } } +.glyphicon-hand-right { &:before { content: "\e127"; } } +.glyphicon-hand-left { &:before { content: "\e128"; } } +.glyphicon-hand-up { &:before { content: "\e129"; } } +.glyphicon-hand-down { &:before { content: "\e130"; } } +.glyphicon-circle-arrow-right { &:before { content: "\e131"; } } +.glyphicon-circle-arrow-left { &:before { content: "\e132"; } } +.glyphicon-circle-arrow-up { &:before { content: "\e133"; } } +.glyphicon-circle-arrow-down { &:before { content: "\e134"; } } +.glyphicon-globe { &:before { content: "\e135"; } } +.glyphicon-wrench { &:before { content: "\e136"; } } +.glyphicon-tasks { &:before { content: "\e137"; } } +.glyphicon-filter { &:before { content: "\e138"; } } +.glyphicon-briefcase { &:before { content: "\e139"; } } +.glyphicon-fullscreen { &:before { content: "\e140"; } } +.glyphicon-dashboard { &:before { content: "\e141"; } } +.glyphicon-paperclip { &:before { content: "\e142"; } } +.glyphicon-heart-empty { &:before { content: "\e143"; } } +.glyphicon-link { &:before { content: "\e144"; } } +.glyphicon-phone { &:before { content: "\e145"; } } +.glyphicon-pushpin { &:before { content: "\e146"; } } +.glyphicon-usd { &:before { content: "\e148"; } } +.glyphicon-gbp { &:before { content: "\e149"; } } +.glyphicon-sort { &:before { content: "\e150"; } } +.glyphicon-sort-by-alphabet { &:before { content: "\e151"; } } +.glyphicon-sort-by-alphabet-alt { &:before { content: "\e152"; } } +.glyphicon-sort-by-order { &:before { content: "\e153"; } } +.glyphicon-sort-by-order-alt { &:before { content: "\e154"; } } +.glyphicon-sort-by-attributes { &:before { content: "\e155"; } } +.glyphicon-sort-by-attributes-alt { &:before { content: "\e156"; } } +.glyphicon-unchecked { &:before { content: "\e157"; } } +.glyphicon-expand { &:before { content: "\e158"; } } +.glyphicon-collapse-down { &:before { content: "\e159"; } } +.glyphicon-collapse-up { &:before { content: "\e160"; } } +.glyphicon-log-in { &:before { content: "\e161"; } } +.glyphicon-flash { &:before { content: "\e162"; } } +.glyphicon-log-out { &:before { content: "\e163"; } } +.glyphicon-new-window { &:before { content: "\e164"; } } +.glyphicon-record { &:before { content: "\e165"; } } +.glyphicon-save { &:before { content: "\e166"; } } +.glyphicon-open { &:before { content: "\e167"; } } +.glyphicon-saved { &:before { content: "\e168"; } } +.glyphicon-import { &:before { content: "\e169"; } } +.glyphicon-export { &:before { content: "\e170"; } } +.glyphicon-send { &:before { content: "\e171"; } } +.glyphicon-floppy-disk { &:before { content: "\e172"; } } +.glyphicon-floppy-saved { &:before { content: "\e173"; } } +.glyphicon-floppy-remove { &:before { content: "\e174"; } } +.glyphicon-floppy-save { &:before { content: "\e175"; } } +.glyphicon-floppy-open { &:before { content: "\e176"; } } +.glyphicon-credit-card { &:before { content: "\e177"; } } +.glyphicon-transfer { &:before { content: "\e178"; } } +.glyphicon-cutlery { &:before { content: "\e179"; } } +.glyphicon-header { &:before { content: "\e180"; } } +.glyphicon-compressed { &:before { content: "\e181"; } } +.glyphicon-earphone { &:before { content: "\e182"; } } +.glyphicon-phone-alt { &:before { content: "\e183"; } } +.glyphicon-tower { &:before { content: "\e184"; } } +.glyphicon-stats { &:before { content: "\e185"; } } +.glyphicon-sd-video { &:before { content: "\e186"; } } +.glyphicon-hd-video { &:before { content: "\e187"; } } +.glyphicon-subtitles { &:before { content: "\e188"; } } +.glyphicon-sound-stereo { &:before { content: "\e189"; } } +.glyphicon-sound-dolby { &:before { content: "\e190"; } } +.glyphicon-sound-5-1 { &:before { content: "\e191"; } } +.glyphicon-sound-6-1 { &:before { content: "\e192"; } } +.glyphicon-sound-7-1 { &:before { content: "\e193"; } } +.glyphicon-copyright-mark { &:before { content: "\e194"; } } +.glyphicon-registration-mark { &:before { content: "\e195"; } } +.glyphicon-cloud-download { &:before { content: "\e197"; } } +.glyphicon-cloud-upload { &:before { content: "\e198"; } } +.glyphicon-tree-conifer { &:before { content: "\e199"; } } +.glyphicon-tree-deciduous { &:before { content: "\e200"; } } diff --git a/static/bootstrap/grid.less b/static/bootstrap/grid.less new file mode 100755 index 0000000..e100655 --- /dev/null +++ b/static/bootstrap/grid.less @@ -0,0 +1,84 @@ +// +// Grid system +// -------------------------------------------------- + + +// Container widths +// +// Set the container width, and override it for fixed navbars in media queries. + +.container { + .container-fixed(); + + @media (min-width: @screen-sm-min) { + width: @container-sm; + } + @media (min-width: @screen-md-min) { + width: @container-md; + } + @media (min-width: @screen-lg-min) { + width: @container-lg; + } +} + + +// Fluid container +// +// Utilizes the mixin meant for fixed width containers, but without any defined +// width for fluid, full width layouts. + +.container-fluid { + .container-fixed(); +} + + +// Row +// +// Rows contain and clear the floats of your columns. + +.row { + .make-row(); +} + + +// Columns +// +// Common styles for small and large grid columns + +.make-grid-columns(); + + +// Extra small grid +// +// Columns, offsets, pushes, and pulls for extra small devices like +// smartphones. + +.make-grid(xs); + + +// Small grid +// +// Columns, offsets, pushes, and pulls for the small device range, from phones +// to tablets. + +@media (min-width: @screen-sm-min) { + .make-grid(sm); +} + + +// Medium grid +// +// Columns, offsets, pushes, and pulls for the desktop device range. + +@media (min-width: @screen-md-min) { + .make-grid(md); +} + + +// Large grid +// +// Columns, offsets, pushes, and pulls for the large desktop device range. + +@media (min-width: @screen-lg-min) { + .make-grid(lg); +} diff --git a/static/bootstrap/input-groups.less b/static/bootstrap/input-groups.less new file mode 100755 index 0000000..a111474 --- /dev/null +++ b/static/bootstrap/input-groups.less @@ -0,0 +1,162 @@ +// +// Input groups +// -------------------------------------------------- + +// Base styles +// ------------------------- +.input-group { + position: relative; // For dropdowns + display: table; + border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table + + // Undo padding and float of grid classes + &[class*="col-"] { + float: none; + padding-left: 0; + padding-right: 0; + } + + .form-control { + // Ensure that the input is always above the *appended* addon button for + // proper border colors. + position: relative; + z-index: 2; + + // IE9 fubars the placeholder attribute in text inputs and the arrows on + // select elements in input groups. To fix it, we float the input. Details: + // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855 + float: left; + + width: 100%; + margin-bottom: 0; + } +} + +// Sizing options +// +// Remix the default form control sizing classes into new ones for easier +// manipulation. + +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { .input-lg(); } +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { .input-sm(); } + + +// Display as table-cell +// ------------------------- +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; + + &:not(:first-child):not(:last-child) { + border-radius: 0; + } +} +// Addon and addon wrapper for buttons +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; // Match the inputs +} + +// Text input groups +// ------------------------- +.input-group-addon { + padding: @padding-base-vertical @padding-base-horizontal; + font-size: @font-size-base; + font-weight: normal; + line-height: 1; + color: @input-color; + text-align: center; + background-color: @input-group-addon-bg; + border: 1px solid @input-group-addon-border-color; + border-radius: @border-radius-base; + + // Sizing + &.input-sm { + padding: @padding-small-vertical @padding-small-horizontal; + font-size: @font-size-small; + border-radius: @border-radius-small; + } + &.input-lg { + padding: @padding-large-vertical @padding-large-horizontal; + font-size: @font-size-large; + border-radius: @border-radius-large; + } + + // Nuke default margins from checkboxes and radios to vertically center within. + input[type="radio"], + input[type="checkbox"] { + margin-top: 0; + } +} + +// Reset rounded corners +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + .border-right-radius(0); +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + .border-left-radius(0); +} +.input-group-addon:last-child { + border-left: 0; +} + +// Button input groups +// ------------------------- +.input-group-btn { + position: relative; + // Jankily prevent input button groups from wrapping with `white-space` and + // `font-size` in combination with `inline-block` on buttons. + font-size: 0; + white-space: nowrap; + + // Negative margin for spacing, position for bringing hovered/focused/actived + // element above the siblings. + > .btn { + position: relative; + + .btn { + margin-left: -1px; + } + // Bring the "active" button to the front + &:hover, + &:focus, + &:active { + z-index: 2; + } + } + + // Negative margin to only have a 1px border between the two + &:first-child { + > .btn, + > .btn-group { + margin-right: -1px; + } + } + &:last-child { + > .btn, + > .btn-group { + margin-left: -1px; + } + } +} diff --git a/static/bootstrap/jumbotron.less b/static/bootstrap/jumbotron.less new file mode 100755 index 0000000..a15e169 --- /dev/null +++ b/static/bootstrap/jumbotron.less @@ -0,0 +1,44 @@ +// +// Jumbotron +// -------------------------------------------------- + + +.jumbotron { + padding: @jumbotron-padding; + margin-bottom: @jumbotron-padding; + color: @jumbotron-color; + background-color: @jumbotron-bg; + + h1, + .h1 { + color: @jumbotron-heading-color; + } + p { + margin-bottom: (@jumbotron-padding / 2); + font-size: @jumbotron-font-size; + font-weight: 200; + } + + .container & { + border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container + } + + .container { + max-width: 100%; + } + + @media screen and (min-width: @screen-sm-min) { + padding-top: (@jumbotron-padding * 1.6); + padding-bottom: (@jumbotron-padding * 1.6); + + .container & { + padding-left: (@jumbotron-padding * 2); + padding-right: (@jumbotron-padding * 2); + } + + h1, + .h1 { + font-size: (@font-size-base * 4.5); + } + } +} diff --git a/static/bootstrap/labels.less b/static/bootstrap/labels.less new file mode 100755 index 0000000..5db1ed1 --- /dev/null +++ b/static/bootstrap/labels.less @@ -0,0 +1,64 @@ +// +// Labels +// -------------------------------------------------- + +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: @label-color; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; + + // Add hover effects, but only for links + &[href] { + &:hover, + &:focus { + color: @label-link-hover-color; + text-decoration: none; + cursor: pointer; + } + } + + // Empty labels collapse automatically (not available in IE8) + &:empty { + display: none; + } + + // Quick fix for labels in buttons + .btn & { + position: relative; + top: -1px; + } +} + +// Colors +// Contextual variations (linked labels get darker on :hover) + +.label-default { + .label-variant(@label-default-bg); +} + +.label-primary { + .label-variant(@label-primary-bg); +} + +.label-success { + .label-variant(@label-success-bg); +} + +.label-info { + .label-variant(@label-info-bg); +} + +.label-warning { + .label-variant(@label-warning-bg); +} + +.label-danger { + .label-variant(@label-danger-bg); +} diff --git a/static/bootstrap/list-group.less b/static/bootstrap/list-group.less new file mode 100755 index 0000000..3343f8e --- /dev/null +++ b/static/bootstrap/list-group.less @@ -0,0 +1,110 @@ +// +// List groups +// -------------------------------------------------- + + +// Base class +// +// Easily usable on
    ,
      , or
      . + +.list-group { + // No need to set list-style: none; since .list-group-item is block level + margin-bottom: 20px; + padding-left: 0; // reset padding because ul and ol +} + + +// Individual list items +// +// Use on `li`s or `div`s within the `.list-group` parent. + +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + // Place the border on the list items and negative margin up for better styling + margin-bottom: -1px; + background-color: @list-group-bg; + border: 1px solid @list-group-border; + + // Round the first and last items + &:first-child { + .border-top-radius(@list-group-border-radius); + } + &:last-child { + margin-bottom: 0; + .border-bottom-radius(@list-group-border-radius); + } + + // Align badges within list items + > .badge { + float: right; + } + > .badge + .badge { + margin-right: 5px; + } +} + + +// Linked list items +// +// Use anchor elements instead of `li`s or `div`s to create linked list items. +// Includes an extra `.active` modifier class for showing selected items. + +a.list-group-item { + color: @list-group-link-color; + + .list-group-item-heading { + color: @list-group-link-heading-color; + } + + // Hover state + &:hover, + &:focus { + text-decoration: none; + background-color: @list-group-hover-bg; + } + + // Active class on item itself, not parent + &.active, + &.active:hover, + &.active:focus { + z-index: 2; // Place active items above their siblings for proper border styling + color: @list-group-active-color; + background-color: @list-group-active-bg; + border-color: @list-group-active-border; + + // Force color to inherit for custom content + .list-group-item-heading { + color: inherit; + } + .list-group-item-text { + color: @list-group-active-text-color; + } + } +} + + +// Contextual variants +// +// Add modifier classes to change text and background color on individual items. +// Organizationally, this must come after the `:hover` states. + +.list-group-item-variant(success; @state-success-bg; @state-success-text); +.list-group-item-variant(info; @state-info-bg; @state-info-text); +.list-group-item-variant(warning; @state-warning-bg; @state-warning-text); +.list-group-item-variant(danger; @state-danger-bg; @state-danger-text); + + +// Custom content options +// +// Extra classes for creating well-formatted content within `.list-group-item`s. + +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} diff --git a/static/bootstrap/media.less b/static/bootstrap/media.less new file mode 100755 index 0000000..5ad22cd --- /dev/null +++ b/static/bootstrap/media.less @@ -0,0 +1,56 @@ +// Media objects +// Source: http://stubbornella.org/content/?p=497 +// -------------------------------------------------- + + +// Common styles +// ------------------------- + +// Clear the floats +.media, +.media-body { + overflow: hidden; + zoom: 1; +} + +// Proper spacing between instances of .media +.media, +.media .media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} + +// For images and videos, set to block +.media-object { + display: block; +} + +// Reset margins on headings for tighter default spacing +.media-heading { + margin: 0 0 5px; +} + + +// Media image alignment +// ------------------------- + +.media { + > .pull-left { + margin-right: 10px; + } + > .pull-right { + margin-left: 10px; + } +} + + +// Media list variation +// ------------------------- + +// Undo default ul/ol styles +.media-list { + padding-left: 0; + list-style: none; +} diff --git a/static/bootstrap/mixins.less b/static/bootstrap/mixins.less new file mode 100755 index 0000000..71723db --- /dev/null +++ b/static/bootstrap/mixins.less @@ -0,0 +1,929 @@ +// +// Mixins +// -------------------------------------------------- + + +// Utilities +// ------------------------- + +// Clearfix +// Source: http://nicolasgallagher.com/micro-clearfix-hack/ +// +// For modern browsers +// 1. The space content is one way to avoid an Opera bug when the +// contenteditable attribute is included anywhere else in the document. +// Otherwise it causes space to appear at the top and bottom of elements +// that are clearfixed. +// 2. The use of `table` rather than `block` is only necessary if using +// `:before` to contain the top-margins of child elements. +.clearfix() { + &:before, + &:after { + content: " "; // 1 + display: table; // 2 + } + &:after { + clear: both; + } +} + +// WebKit-style focus +.tab-focus() { + // Default + outline: thin dotted; + // WebKit + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +// Center-align a block level element +.center-block() { + display: block; + margin-left: auto; + margin-right: auto; +} + +// Sizing shortcuts +.size(@width; @height) { + width: @width; + height: @height; +} +.square(@size) { + .size(@size; @size); +} + +// Placeholder text +.placeholder(@color: @input-color-placeholder) { + &::-moz-placeholder { color: @color; // Firefox + opacity: 1; } // See https://github.com/twbs/bootstrap/pull/11526 + &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+ + &::-webkit-input-placeholder { color: @color; } // Safari and Chrome +} + +// Text overflow +// Requires inline-block or block for proper styling +.text-overflow() { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +// CSS image replacement +// +// Heads up! v3 launched with with only `.hide-text()`, but per our pattern for +// mixins being reused as classes with the same name, this doesn't hold up. As +// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. Note +// that we cannot chain the mixins together in Less, so they are repeated. +// +// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 + +// Deprecated as of v3.0.1 (will be removed in v4) +.hide-text() { + font: ~"0/0" a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +// New mixin to use as of v3.0.1 +.text-hide() { + .hide-text(); +} + + + +// CSS3 PROPERTIES +// -------------------------------------------------- + +// Single side border-radius +.border-top-radius(@radius) { + border-top-right-radius: @radius; + border-top-left-radius: @radius; +} +.border-right-radius(@radius) { + border-bottom-right-radius: @radius; + border-top-right-radius: @radius; +} +.border-bottom-radius(@radius) { + border-bottom-right-radius: @radius; + border-bottom-left-radius: @radius; +} +.border-left-radius(@radius) { + border-bottom-left-radius: @radius; + border-top-left-radius: @radius; +} + +// Drop shadows +// +// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's +// supported browsers that have box shadow capabilities now support the +// standard `box-shadow` property. +.box-shadow(@shadow) { + -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1 + box-shadow: @shadow; +} + +// Transitions +.transition(@transition) { + -webkit-transition: @transition; + transition: @transition; +} +.transition-property(@transition-property) { + -webkit-transition-property: @transition-property; + transition-property: @transition-property; +} +.transition-delay(@transition-delay) { + -webkit-transition-delay: @transition-delay; + transition-delay: @transition-delay; +} +.transition-duration(@transition-duration) { + -webkit-transition-duration: @transition-duration; + transition-duration: @transition-duration; +} +.transition-transform(@transition) { + -webkit-transition: -webkit-transform @transition; + -moz-transition: -moz-transform @transition; + -o-transition: -o-transform @transition; + transition: transform @transition; +} + +// Transformations +.rotate(@degrees) { + -webkit-transform: rotate(@degrees); + -ms-transform: rotate(@degrees); // IE9 only + transform: rotate(@degrees); +} +.scale(@ratio; @ratio-y...) { + -webkit-transform: scale(@ratio, @ratio-y); + -ms-transform: scale(@ratio, @ratio-y); // IE9 only + transform: scale(@ratio, @ratio-y); +} +.translate(@x; @y) { + -webkit-transform: translate(@x, @y); + -ms-transform: translate(@x, @y); // IE9 only + transform: translate(@x, @y); +} +.skew(@x; @y) { + -webkit-transform: skew(@x, @y); + -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+ + transform: skew(@x, @y); +} +.translate3d(@x; @y; @z) { + -webkit-transform: translate3d(@x, @y, @z); + transform: translate3d(@x, @y, @z); +} + +.rotateX(@degrees) { + -webkit-transform: rotateX(@degrees); + -ms-transform: rotateX(@degrees); // IE9 only + transform: rotateX(@degrees); +} +.rotateY(@degrees) { + -webkit-transform: rotateY(@degrees); + -ms-transform: rotateY(@degrees); // IE9 only + transform: rotateY(@degrees); +} +.perspective(@perspective) { + -webkit-perspective: @perspective; + -moz-perspective: @perspective; + perspective: @perspective; +} +.perspective-origin(@perspective) { + -webkit-perspective-origin: @perspective; + -moz-perspective-origin: @perspective; + perspective-origin: @perspective; +} +.transform-origin(@origin) { + -webkit-transform-origin: @origin; + -moz-transform-origin: @origin; + -ms-transform-origin: @origin; // IE9 only + transform-origin: @origin; +} + +// Animations +.animation(@animation) { + -webkit-animation: @animation; + animation: @animation; +} +.animation-name(@name) { + -webkit-animation-name: @name; + animation-name: @name; +} +.animation-duration(@duration) { + -webkit-animation-duration: @duration; + animation-duration: @duration; +} +.animation-timing-function(@timing-function) { + -webkit-animation-timing-function: @timing-function; + animation-timing-function: @timing-function; +} +.animation-delay(@delay) { + -webkit-animation-delay: @delay; + animation-delay: @delay; +} +.animation-iteration-count(@iteration-count) { + -webkit-animation-iteration-count: @iteration-count; + animation-iteration-count: @iteration-count; +} +.animation-direction(@direction) { + -webkit-animation-direction: @direction; + animation-direction: @direction; +} + +// Backface visibility +// Prevent browsers from flickering when using CSS 3D transforms. +// Default value is `visible`, but can be changed to `hidden` +.backface-visibility(@visibility){ + -webkit-backface-visibility: @visibility; + -moz-backface-visibility: @visibility; + backface-visibility: @visibility; +} + +// Box sizing +.box-sizing(@boxmodel) { + -webkit-box-sizing: @boxmodel; + -moz-box-sizing: @boxmodel; + box-sizing: @boxmodel; +} + +// User select +// For selecting text on the page +.user-select(@select) { + -webkit-user-select: @select; + -moz-user-select: @select; + -ms-user-select: @select; // IE10+ + user-select: @select; +} + +// Resize anything +.resizable(@direction) { + resize: @direction; // Options: horizontal, vertical, both + overflow: auto; // Safari fix +} + +// CSS3 Content Columns +.content-columns(@column-count; @column-gap: @grid-gutter-width) { + -webkit-column-count: @column-count; + -moz-column-count: @column-count; + column-count: @column-count; + -webkit-column-gap: @column-gap; + -moz-column-gap: @column-gap; + column-gap: @column-gap; +} + +// Optional hyphenation +.hyphens(@mode: auto) { + word-wrap: break-word; + -webkit-hyphens: @mode; + -moz-hyphens: @mode; + -ms-hyphens: @mode; // IE10+ + -o-hyphens: @mode; + hyphens: @mode; +} + +// Opacity +.opacity(@opacity) { + opacity: @opacity; + // IE8 filter + @opacity-ie: (@opacity * 100); + filter: ~"alpha(opacity=@{opacity-ie})"; +} + + + +// GRADIENTS +// -------------------------------------------------- + +#gradient { + + // Horizontal gradient, from left to right + // + // Creates two color stops, start and end, by specifying a color and position for each color stop. + // Color stops are not available in IE9 and below. + .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) { + background-image: -webkit-linear-gradient(left, color-stop(@start-color @start-percent), color-stop(@end-color @end-percent)); // Safari 5.1-6, Chrome 10+ + background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ + background-repeat: repeat-x; + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down + } + + // Vertical gradient, from top to bottom + // + // Creates two color stops, start and end, by specifying a color and position for each color stop. + // Color stops are not available in IE9 and below. + .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) { + background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+ + background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ + background-repeat: repeat-x; + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down + } + + .directional(@start-color: #555; @end-color: #333; @deg: 45deg) { + background-repeat: repeat-x; + background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+ + background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ + } + .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) { + background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color); + background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color); + background-repeat: no-repeat; + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback + } + .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) { + background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color); + background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color); + background-repeat: no-repeat; + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback + } + .radial(@inner-color: #555; @outer-color: #333) { + background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color); + background-image: radial-gradient(circle, @inner-color, @outer-color); + background-repeat: no-repeat; + } + .striped(@color: rgba(255,255,255,.15); @angle: 45deg) { + background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent); + background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent); + } +} + +// Reset filters for IE +// +// When you need to remove a gradient background, do not forget to use this to reset +// the IE filter for IE9 and below. +.reset-filter() { + filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); +} + + + +// Retina images +// +// Short retina mixin for setting background-image and -size + +.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) { + background-image: url("@{file-1x}"); + + @media + only screen and (-webkit-min-device-pixel-ratio: 2), + only screen and ( min--moz-device-pixel-ratio: 2), + only screen and ( -o-min-device-pixel-ratio: 2/1), + only screen and ( min-device-pixel-ratio: 2), + only screen and ( min-resolution: 192dpi), + only screen and ( min-resolution: 2dppx) { + background-image: url("@{file-2x}"); + background-size: @width-1x @height-1x; + } +} + + +// Responsive image +// +// Keep images from scaling beyond the width of their parents. + +.img-responsive(@display: block) { + display: @display; + max-width: 100%; // Part 1: Set a maximum relative to the parent + height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching +} + + +// COMPONENT MIXINS +// -------------------------------------------------- + +// Horizontal dividers +// ------------------------- +// Dividers (basically an hr) within dropdowns and nav lists +.nav-divider(@color: #e5e5e5) { + height: 1px; + margin: ((@line-height-computed / 2) - 1) 0; + overflow: hidden; + background-color: @color; +} + +// Panels +// ------------------------- +.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) { + border-color: @border; + + & > .panel-heading { + color: @heading-text-color; + background-color: @heading-bg-color; + border-color: @heading-border; + + + .panel-collapse .panel-body { + border-top-color: @border; + } + } + & > .panel-footer { + + .panel-collapse .panel-body { + border-bottom-color: @border; + } + } +} + +// Alerts +// ------------------------- +.alert-variant(@background; @border; @text-color) { + background-color: @background; + border-color: @border; + color: @text-color; + + hr { + border-top-color: darken(@border, 5%); + } + .alert-link { + color: darken(@text-color, 10%); + } +} + +// Tables +// ------------------------- +.table-row-variant(@state; @background) { + // Exact selectors below required to override `.table-striped` and prevent + // inheritance to nested tables. + .table > thead > tr, + .table > tbody > tr, + .table > tfoot > tr { + > td.@{state}, + > th.@{state}, + &.@{state} > td, + &.@{state} > th { + background-color: @background; + } + } + + // Hover states for `.table-hover` + // Note: this is not available for cells or rows within `thead` or `tfoot`. + .table-hover > tbody > tr { + > td.@{state}:hover, + > th.@{state}:hover, + &.@{state}:hover > td, + &.@{state}:hover > th { + background-color: darken(@background, 5%); + } + } +} + +// List Groups +// ------------------------- +.list-group-item-variant(@state; @background; @color) { + .list-group-item-@{state} { + color: @color; + background-color: @background; + + a& { + color: @color; + + .list-group-item-heading { color: inherit; } + + &:hover, + &:focus { + color: @color; + background-color: darken(@background, 5%); + } + &.active, + &.active:hover, + &.active:focus { + color: #fff; + background-color: @color; + border-color: @color; + } + } + } +} + +// Button variants +// ------------------------- +// Easily pump out default styles, as well as :hover, :focus, :active, +// and disabled options for all buttons +.button-variant(@color; @background; @border) { + color: @color; + background-color: @background; + border-color: @border; + + &:hover, + &:focus, + &:active, + &.active, + .open .dropdown-toggle& { + color: @color; + background-color: darken(@background, 8%); + border-color: darken(@border, 12%); + } + &:active, + &.active, + .open .dropdown-toggle& { + background-image: none; + } + &.disabled, + &[disabled], + fieldset[disabled] & { + &, + &:hover, + &:focus, + &:active, + &.active { + background-color: @background; + border-color: @border; + } + } + + .badge { + color: @background; + background-color: @color; + } +} + +// Button sizes +// ------------------------- +.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) { + padding: @padding-vertical @padding-horizontal; + font-size: @font-size; + line-height: @line-height; + border-radius: @border-radius; +} + +// Pagination +// ------------------------- +.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) { + > li { + > a, + > span { + padding: @padding-vertical @padding-horizontal; + font-size: @font-size; + } + &:first-child { + > a, + > span { + .border-left-radius(@border-radius); + } + } + &:last-child { + > a, + > span { + .border-right-radius(@border-radius); + } + } + } +} + +// Labels +// ------------------------- +.label-variant(@color) { + background-color: @color; + &[href] { + &:hover, + &:focus { + background-color: darken(@color, 10%); + } + } +} + +// Contextual backgrounds +// ------------------------- +.bg-variant(@color) { + background-color: @color; + a&:hover { + background-color: darken(@color, 10%); + } +} + +// Typography +// ------------------------- +.text-emphasis-variant(@color) { + color: @color; + a&:hover { + color: darken(@color, 10%); + } +} + +// Navbar vertical align +// ------------------------- +// Vertically center elements in the navbar. +// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin. +.navbar-vertical-align(@element-height) { + margin-top: ((@navbar-height - @element-height) / 2); + margin-bottom: ((@navbar-height - @element-height) / 2); +} + +// Progress bars +// ------------------------- +.progress-bar-variant(@color) { + background-color: @color; + .progress-striped & { + #gradient > .striped(); + } +} + +// Responsive utilities +// ------------------------- +// More easily include all the states for responsive-utilities.less. +.responsive-visibility() { + display: block !important; + table& { display: table; } + tr& { display: table-row !important; } + th&, + td& { display: table-cell !important; } +} + +.responsive-invisibility() { + display: none !important; +} + + +// Grid System +// ----------- + +// Centered container element +.container-fixed() { + margin-right: auto; + margin-left: auto; + padding-left: (@grid-gutter-width / 2); + padding-right: (@grid-gutter-width / 2); + &:extend(.clearfix all); +} + +// Creates a wrapper for a series of columns +.make-row(@gutter: @grid-gutter-width) { + margin-left: (@gutter / -2); + margin-right: (@gutter / -2); + &:extend(.clearfix all); +} + +// Generate the extra small columns +.make-xs-column(@columns; @gutter: @grid-gutter-width) { + position: relative; + float: left; + width: percentage((@columns / @grid-columns)); + min-height: 1px; + padding-left: (@gutter / 2); + padding-right: (@gutter / 2); +} +.make-xs-column-offset(@columns) { + @media (min-width: @screen-xs-min) { + margin-left: percentage((@columns / @grid-columns)); + } +} +.make-xs-column-push(@columns) { + @media (min-width: @screen-xs-min) { + left: percentage((@columns / @grid-columns)); + } +} +.make-xs-column-pull(@columns) { + @media (min-width: @screen-xs-min) { + right: percentage((@columns / @grid-columns)); + } +} + + +// Generate the small columns +.make-sm-column(@columns; @gutter: @grid-gutter-width) { + position: relative; + min-height: 1px; + padding-left: (@gutter / 2); + padding-right: (@gutter / 2); + + @media (min-width: @screen-sm-min) { + float: left; + width: percentage((@columns / @grid-columns)); + } +} +.make-sm-column-offset(@columns) { + @media (min-width: @screen-sm-min) { + margin-left: percentage((@columns / @grid-columns)); + } +} +.make-sm-column-push(@columns) { + @media (min-width: @screen-sm-min) { + left: percentage((@columns / @grid-columns)); + } +} +.make-sm-column-pull(@columns) { + @media (min-width: @screen-sm-min) { + right: percentage((@columns / @grid-columns)); + } +} + + +// Generate the medium columns +.make-md-column(@columns; @gutter: @grid-gutter-width) { + position: relative; + min-height: 1px; + padding-left: (@gutter / 2); + padding-right: (@gutter / 2); + + @media (min-width: @screen-md-min) { + float: left; + width: percentage((@columns / @grid-columns)); + } +} +.make-md-column-offset(@columns) { + @media (min-width: @screen-md-min) { + margin-left: percentage((@columns / @grid-columns)); + } +} +.make-md-column-push(@columns) { + @media (min-width: @screen-md-min) { + left: percentage((@columns / @grid-columns)); + } +} +.make-md-column-pull(@columns) { + @media (min-width: @screen-md-min) { + right: percentage((@columns / @grid-columns)); + } +} + + +// Generate the large columns +.make-lg-column(@columns; @gutter: @grid-gutter-width) { + position: relative; + min-height: 1px; + padding-left: (@gutter / 2); + padding-right: (@gutter / 2); + + @media (min-width: @screen-lg-min) { + float: left; + width: percentage((@columns / @grid-columns)); + } +} +.make-lg-column-offset(@columns) { + @media (min-width: @screen-lg-min) { + margin-left: percentage((@columns / @grid-columns)); + } +} +.make-lg-column-push(@columns) { + @media (min-width: @screen-lg-min) { + left: percentage((@columns / @grid-columns)); + } +} +.make-lg-column-pull(@columns) { + @media (min-width: @screen-lg-min) { + right: percentage((@columns / @grid-columns)); + } +} + + +// Framework grid generation +// +// Used only by Bootstrap to generate the correct number of grid classes given +// any value of `@grid-columns`. + +.make-grid-columns() { + // Common styles for all sizes of grid columns, widths 1-12 + .col(@index) when (@index = 1) { // initial + @item: ~".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}"; + .col((@index + 1), @item); + } + .col(@index, @list) when (@index =< @grid-columns) { // general; "=<" isn't a typo + @item: ~".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}"; + .col((@index + 1), ~"@{list}, @{item}"); + } + .col(@index, @list) when (@index > @grid-columns) { // terminal + @{list} { + position: relative; + // Prevent columns from collapsing when empty + min-height: 1px; + // Inner gutter via padding + padding-left: (@grid-gutter-width / 2); + padding-right: (@grid-gutter-width / 2); + } + } + .col(1); // kickstart it +} + +.float-grid-columns(@class) { + .col(@index) when (@index = 1) { // initial + @item: ~".col-@{class}-@{index}"; + .col((@index + 1), @item); + } + .col(@index, @list) when (@index =< @grid-columns) { // general + @item: ~".col-@{class}-@{index}"; + .col((@index + 1), ~"@{list}, @{item}"); + } + .col(@index, @list) when (@index > @grid-columns) { // terminal + @{list} { + float: left; + } + } + .col(1); // kickstart it +} + +.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) { + .col-@{class}-@{index} { + width: percentage((@index / @grid-columns)); + } +} +.calc-grid-column(@index, @class, @type) when (@type = push) { + .col-@{class}-push-@{index} { + left: percentage((@index / @grid-columns)); + } +} +.calc-grid-column(@index, @class, @type) when (@type = pull) { + .col-@{class}-pull-@{index} { + right: percentage((@index / @grid-columns)); + } +} +.calc-grid-column(@index, @class, @type) when (@type = offset) { + .col-@{class}-offset-@{index} { + margin-left: percentage((@index / @grid-columns)); + } +} + +// Basic looping in LESS +.loop-grid-columns(@index, @class, @type) when (@index >= 0) { + .calc-grid-column(@index, @class, @type); + // next iteration + .loop-grid-columns((@index - 1), @class, @type); +} + +// Create grid for specific class +.make-grid(@class) { + .float-grid-columns(@class); + .loop-grid-columns(@grid-columns, @class, width); + .loop-grid-columns(@grid-columns, @class, pull); + .loop-grid-columns(@grid-columns, @class, push); + .loop-grid-columns(@grid-columns, @class, offset); +} + +// Form validation states +// +// Used in forms.less to generate the form validation CSS for warnings, errors, +// and successes. + +.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) { + // Color the label and help text + .help-block, + .control-label, + .radio, + .checkbox, + .radio-inline, + .checkbox-inline { + color: @text-color; + } + // Set the border and box shadow on specific inputs to match + .form-control { + border-color: @border-color; + .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work + &:focus { + border-color: darken(@border-color, 10%); + @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%); + .box-shadow(@shadow); + } + } + // Set validation states also for addons + .input-group-addon { + color: @text-color; + border-color: @border-color; + background-color: @background-color; + } + // Optional feedback icon + .form-control-feedback { + color: @text-color; + } +} + +// Form control focus state +// +// Generate a customized focus state and for any input with the specified color, +// which defaults to the `@input-focus-border` variable. +// +// We highly encourage you to not customize the default value, but instead use +// this to tweak colors on an as-needed basis. This aesthetic change is based on +// WebKit's default styles, but applicable to a wider range of browsers. Its +// usability and accessibility should be taken into account with any change. +// +// Example usage: change the default blue border and shadow to white for better +// contrast against a dark gray background. + +.form-control-focus(@color: @input-border-focus) { + @color-rgba: rgba(red(@color), green(@color), blue(@color), .6); + &:focus { + border-color: @color; + outline: 0; + .box-shadow(~"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}"); + } +} + +// Form control sizing +// +// Relative text size, padding, and border-radii changes for form controls. For +// horizontal sizing, wrap controls in the predefined grid classes. `` background color +@input-bg: #fff; +//** `` background color +@input-bg-disabled: @gray-lighter; + +//** Text color for ``s +@input-color: @gray; +//** `` border color +@input-border: #ccc; +//** `` border radius +@input-border-radius: @border-radius-base; +//** Border color for inputs on focus +@input-border-focus: #66afe9; + +//** Placeholder text color +@input-color-placeholder: @gray-light; + +//** Default `.form-control` height +@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2); +//** Large `.form-control` height +@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2); +//** Small `.form-control` height +@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2); + +@legend-color: @gray-dark; +@legend-border-color: #e5e5e5; + +//** Background color for textual input addons +@input-group-addon-bg: @gray-lighter; +//** Border color for textual input addons +@input-group-addon-border-color: @input-border; + + +//== Dropdowns +// +//## Dropdown menu container and contents. + +//** Background for the dropdown menu. +@dropdown-bg: #fff; +//** Dropdown menu `border-color`. +@dropdown-border: rgba(0,0,0,.15); +//** Dropdown menu `border-color` **for IE8**. +@dropdown-fallback-border: #ccc; +//** Divider color for between dropdown items. +@dropdown-divider-bg: #e5e5e5; + +//** Dropdown link text color. +@dropdown-link-color: @gray-dark; +//** Hover color for dropdown links. +@dropdown-link-hover-color: darken(@gray-dark, 5%); +//** Hover background for dropdown links. +@dropdown-link-hover-bg: #f5f5f5; + +//** Active dropdown menu item text color. +@dropdown-link-active-color: @component-active-color; +//** Active dropdown menu item background color. +@dropdown-link-active-bg: @component-active-bg; + +//** Disabled dropdown menu item background color. +@dropdown-link-disabled-color: @gray-light; + +//** Text color for headers within dropdown menus. +@dropdown-header-color: @gray-light; + +// Note: Deprecated @dropdown-caret-color as of v3.1.0 +@dropdown-caret-color: #000; + + +//-- Z-index master list +// +// Warning: Avoid customizing these values. They're used for a bird's eye view +// of components dependent on the z-axis and are designed to all work together. +// +// Note: These variables are not generated into the Customizer. + +@zindex-navbar: 1000; +@zindex-dropdown: 1000; +@zindex-popover: 1010; +@zindex-tooltip: 1030; +@zindex-navbar-fixed: 1030; +@zindex-modal-background: 1040; +@zindex-modal: 1050; + + +//== Media queries breakpoints +// +//## Define the breakpoints at which your layout will change, adapting to different screen sizes. + +// Extra small screen / phone +// Note: Deprecated @screen-xs and @screen-phone as of v3.0.1 +@screen-xs: 480px; +@screen-xs-min: @screen-xs; +@screen-phone: @screen-xs-min; + +// Small screen / tablet +// Note: Deprecated @screen-sm and @screen-tablet as of v3.0.1 +@screen-sm: 768px; +@screen-sm-min: @screen-sm; +@screen-tablet: @screen-sm-min; + +// Medium screen / desktop +// Note: Deprecated @screen-md and @screen-desktop as of v3.0.1 +@screen-md: 992px; +@screen-md-min: @screen-md; +@screen-desktop: @screen-md-min; + +// Large screen / wide desktop +// Note: Deprecated @screen-lg and @screen-lg-desktop as of v3.0.1 +@screen-lg: 1200px; +@screen-lg-min: @screen-lg; +@screen-lg-desktop: @screen-lg-min; + +// So media queries don't overlap when required, provide a maximum +@screen-xs-max: (@screen-sm-min - 1); +@screen-sm-max: (@screen-md-min - 1); +@screen-md-max: (@screen-lg-min - 1); + + +//== Grid system +// +//## Define your custom responsive grid. + +//** Number of columns in the grid. +@grid-columns: 12; +//** Padding between columns. Gets divided in half for the left and right. +@grid-gutter-width: 30px; +// Navbar collapse +//** Point at which the navbar becomes uncollapsed. +@grid-float-breakpoint: @screen-sm-min; +//** Point at which the navbar begins collapsing. +@grid-float-breakpoint-max: (@grid-float-breakpoint - 1); + + +//== Container sizes +// +//## Define the maximum width of `.container` for different screen sizes. + +// Small screen / tablet +@container-tablet: ((720px + @grid-gutter-width)); +//** For `@screen-sm-min` and up. +@container-sm: @container-tablet; + +// Medium screen / desktop +@container-desktop: ((940px + @grid-gutter-width)); +//** For `@screen-md-min` and up. +@container-md: @container-desktop; + +// Large screen / wide desktop +@container-large-desktop: ((1140px + @grid-gutter-width)); +//** For `@screen-lg-min` and up. +@container-lg: @container-large-desktop; + + +//== Navbar +// +//## + +// Basics of a navbar +@navbar-height: 50px; +@navbar-margin-bottom: @line-height-computed; +@navbar-border-radius: @border-radius-base; +@navbar-padding-horizontal: floor((@grid-gutter-width / 2)); +@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2); +@navbar-collapse-max-height: 340px; + +@navbar-default-color: #777; +@navbar-default-bg: #f8f8f8; +@navbar-default-border: darken(@navbar-default-bg, 6.5%); + +// Navbar links +@navbar-default-link-color: #777; +@navbar-default-link-hover-color: #333; +@navbar-default-link-hover-bg: transparent; +@navbar-default-link-active-color: #555; +@navbar-default-link-active-bg: darken(@navbar-default-bg, 6.5%); +@navbar-default-link-disabled-color: #ccc; +@navbar-default-link-disabled-bg: transparent; + +// Navbar brand label +@navbar-default-brand-color: @navbar-default-link-color; +@navbar-default-brand-hover-color: darken(@navbar-default-brand-color, 10%); +@navbar-default-brand-hover-bg: transparent; + +// Navbar toggle +@navbar-default-toggle-hover-bg: #ddd; +@navbar-default-toggle-icon-bar-bg: #888; +@navbar-default-toggle-border-color: #ddd; + + +// Inverted navbar +// Reset inverted navbar basics +@navbar-inverse-color: @gray-light; +@navbar-inverse-bg: #222; +@navbar-inverse-border: darken(@navbar-inverse-bg, 10%); + +// Inverted navbar links +@navbar-inverse-link-color: @gray-light; +@navbar-inverse-link-hover-color: #fff; +@navbar-inverse-link-hover-bg: transparent; +@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color; +@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%); +@navbar-inverse-link-disabled-color: #444; +@navbar-inverse-link-disabled-bg: transparent; + +// Inverted navbar brand label +@navbar-inverse-brand-color: @navbar-inverse-link-color; +@navbar-inverse-brand-hover-color: #fff; +@navbar-inverse-brand-hover-bg: transparent; + +// Inverted navbar toggle +@navbar-inverse-toggle-hover-bg: #333; +@navbar-inverse-toggle-icon-bar-bg: #fff; +@navbar-inverse-toggle-border-color: #333; + + +//== Navs +// +//## + +//=== Shared nav styles +@nav-link-padding: 10px 15px; +@nav-link-hover-bg: @gray-lighter; + +@nav-disabled-link-color: @gray-light; +@nav-disabled-link-hover-color: @gray-light; + +@nav-open-link-hover-color: #fff; + +//== Tabs +@nav-tabs-border-color: #ddd; + +@nav-tabs-link-hover-border-color: @gray-lighter; + +@nav-tabs-active-link-hover-bg: @body-bg; +@nav-tabs-active-link-hover-color: @gray; +@nav-tabs-active-link-hover-border-color: #ddd; + +@nav-tabs-justified-link-border-color: #ddd; +@nav-tabs-justified-active-link-border-color: @body-bg; + +//== Pills +@nav-pills-border-radius: @border-radius-base; +@nav-pills-active-link-hover-bg: @component-active-bg; +@nav-pills-active-link-hover-color: @component-active-color; + + +//== Pagination +// +//## + +@pagination-color: @link-color; +@pagination-bg: #fff; +@pagination-border: #ddd; + +@pagination-hover-color: @link-hover-color; +@pagination-hover-bg: @gray-lighter; +@pagination-hover-border: #ddd; + +@pagination-active-color: #fff; +@pagination-active-bg: @brand-primary; +@pagination-active-border: @brand-primary; + +@pagination-disabled-color: @gray-light; +@pagination-disabled-bg: #fff; +@pagination-disabled-border: #ddd; + + +//== Pager +// +//## + +@pager-bg: @pagination-bg; +@pager-border: @pagination-border; +@pager-border-radius: 15px; + +@pager-hover-bg: @pagination-hover-bg; + +@pager-active-bg: @pagination-active-bg; +@pager-active-color: @pagination-active-color; + +@pager-disabled-color: @pagination-disabled-color; + + +//== Jumbotron +// +//## + +@jumbotron-padding: 30px; +@jumbotron-color: inherit; +@jumbotron-bg: @gray-lighter; +@jumbotron-heading-color: inherit; +@jumbotron-font-size: ceil((@font-size-base * 1.5)); + + +//== Form states and alerts +// +//## Define colors for form feedback states and, by default, alerts. + +@state-success-text: #3c763d; +@state-success-bg: #dff0d8; +@state-success-border: darken(spin(@state-success-bg, -10), 5%); + +@state-info-text: #31708f; +@state-info-bg: #d9edf7; +@state-info-border: darken(spin(@state-info-bg, -10), 7%); + +@state-warning-text: #8a6d3b; +@state-warning-bg: #fcf8e3; +@state-warning-border: darken(spin(@state-warning-bg, -10), 5%); + +@state-danger-text: #a94442; +@state-danger-bg: #f2dede; +@state-danger-border: darken(spin(@state-danger-bg, -10), 5%); + + +//== Tooltips +// +//## + +//** Tooltip max width +@tooltip-max-width: 200px; +//** Tooltip text color +@tooltip-color: #fff; +//** Tooltip background color +@tooltip-bg: #000; +@tooltip-opacity: .9; + +//** Tooltip arrow width +@tooltip-arrow-width: 5px; +//** Tooltip arrow color +@tooltip-arrow-color: @tooltip-bg; + + +//== Popovers +// +//## + +//** Popover body background color +@popover-bg: #fff; +//** Popover maximum width +@popover-max-width: 276px; +//** Popover border color +@popover-border-color: rgba(0,0,0,.2); +//** Popover fallback border color +@popover-fallback-border-color: #ccc; + +//** Popover title background color +@popover-title-bg: darken(@popover-bg, 3%); + +//** Popover arrow width +@popover-arrow-width: 10px; +//** Popover arrow color +@popover-arrow-color: #fff; + +//** Popover outer arrow width +@popover-arrow-outer-width: (@popover-arrow-width + 1); +//** Popover outer arrow color +@popover-arrow-outer-color: fadein(@popover-border-color, 5%); +//** Popover outer arrow fallback color +@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%); + + +//== Labels +// +//## + +//** Default label background color +@label-default-bg: @gray-light; +//** Primary label background color +@label-primary-bg: @brand-primary; +//** Success label background color +@label-success-bg: @brand-success; +//** Info label background color +@label-info-bg: @brand-info; +//** Warning label background color +@label-warning-bg: @brand-warning; +//** Danger label background color +@label-danger-bg: @brand-danger; + +//** Default label text color +@label-color: #fff; +//** Default text color of a linked label +@label-link-hover-color: #fff; + + +//== Modals +// +//## + +//** Padding applied to the modal body +@modal-inner-padding: 20px; + +//** Padding applied to the modal title +@modal-title-padding: 15px; +//** Modal title line-height +@modal-title-line-height: @line-height-base; + +//** Background color of modal content area +@modal-content-bg: #fff; +//** Modal content border color +@modal-content-border-color: rgba(0,0,0,.2); +//** Modal content border color **for IE8** +@modal-content-fallback-border-color: #999; + +//** Modal backdrop background color +@modal-backdrop-bg: #000; +//** Modal backdrop opacity +@modal-backdrop-opacity: .5; +//** Modal header border color +@modal-header-border-color: #e5e5e5; +//** Modal footer border color +@modal-footer-border-color: @modal-header-border-color; + +@modal-lg: 900px; +@modal-md: 600px; +@modal-sm: 300px; + + +//== Alerts +// +//## Define alert colors, border radius, and padding. + +@alert-padding: 15px; +@alert-border-radius: @border-radius-base; +@alert-link-font-weight: bold; + +@alert-success-bg: @state-success-bg; +@alert-success-text: @state-success-text; +@alert-success-border: @state-success-border; + +@alert-info-bg: @state-info-bg; +@alert-info-text: @state-info-text; +@alert-info-border: @state-info-border; + +@alert-warning-bg: @state-warning-bg; +@alert-warning-text: @state-warning-text; +@alert-warning-border: @state-warning-border; + +@alert-danger-bg: @state-danger-bg; +@alert-danger-text: @state-danger-text; +@alert-danger-border: @state-danger-border; + + +//== Progress bars +// +//## + +//** Background color of the whole progress component +@progress-bg: #f5f5f5; +//** Progress bar text color +@progress-bar-color: #fff; + +//** Default progress bar color +@progress-bar-bg: @brand-primary; +//** Success progress bar color +@progress-bar-success-bg: @brand-success; +//** Warning progress bar color +@progress-bar-warning-bg: @brand-warning; +//** Danger progress bar color +@progress-bar-danger-bg: @brand-danger; +//** Info progress bar color +@progress-bar-info-bg: @brand-info; + + +//== List group +// +//## + +//** Background color on `.list-group-item` +@list-group-bg: #fff; +//** `.list-group-item` border color +@list-group-border: #ddd; +//** List group border radius +@list-group-border-radius: @border-radius-base; + +//** Background color of single list elements on hover +@list-group-hover-bg: #f5f5f5; +//** Text color of active list elements +@list-group-active-color: @component-active-color; +//** Background color of active list elements +@list-group-active-bg: @component-active-bg; +//** Border color of active list elements +@list-group-active-border: @list-group-active-bg; +@list-group-active-text-color: lighten(@list-group-active-bg, 40%); + +@list-group-link-color: #555; +@list-group-link-heading-color: #333; + + +//== Panels +// +//## + +@panel-bg: #fff; +@panel-body-padding: 15px; +@panel-border-radius: @border-radius-base; + +//** Border color for elements within panels +@panel-inner-border: #ddd; +@panel-footer-bg: #f5f5f5; + +@panel-default-text: @gray-dark; +@panel-default-border: #ddd; +@panel-default-heading-bg: #f5f5f5; + +@panel-primary-text: #fff; +@panel-primary-border: @brand-primary; +@panel-primary-heading-bg: @brand-primary; + +@panel-success-text: @state-success-text; +@panel-success-border: @state-success-border; +@panel-success-heading-bg: @state-success-bg; + +@panel-info-text: @state-info-text; +@panel-info-border: @state-info-border; +@panel-info-heading-bg: @state-info-bg; + +@panel-warning-text: @state-warning-text; +@panel-warning-border: @state-warning-border; +@panel-warning-heading-bg: @state-warning-bg; + +@panel-danger-text: @state-danger-text; +@panel-danger-border: @state-danger-border; +@panel-danger-heading-bg: @state-danger-bg; + + +//== Thumbnails +// +//## + +//** Padding around the thumbnail image +@thumbnail-padding: 4px; +//** Thumbnail background color +@thumbnail-bg: @body-bg; +//** Thumbnail border color +@thumbnail-border: #ddd; +//** Thumbnail border radius +@thumbnail-border-radius: @border-radius-base; + +//** Custom text color for thumbnail captions +@thumbnail-caption-color: @text-color; +//** Padding around the thumbnail caption +@thumbnail-caption-padding: 9px; + + +//== Wells +// +//## + +@well-bg: #f5f5f5; +@well-border: darken(@well-bg, 7%); + + +//== Badges +// +//## + +@badge-color: #fff; +//** Linked badge text color on hover +@badge-link-hover-color: #fff; +@badge-bg: @gray-light; + +//** Badge text color in active nav link +@badge-active-color: @link-color; +//** Badge background color in active nav link +@badge-active-bg: #fff; + +@badge-font-weight: bold; +@badge-line-height: 1; +@badge-border-radius: 10px; + + +//== Breadcrumbs +// +//## + +@breadcrumb-padding-vertical: 8px; +@breadcrumb-padding-horizontal: 15px; +//** Breadcrumb background color +@breadcrumb-bg: #f5f5f5; +//** Breadcrumb text color +@breadcrumb-color: #ccc; +//** Text color of current page in the breadcrumb +@breadcrumb-active-color: @gray-light; +//** Textual separator for between breadcrumb elements +@breadcrumb-separator: "/"; + + +//== Carousel +// +//## + +@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6); + +@carousel-control-color: #fff; +@carousel-control-width: 15%; +@carousel-control-opacity: .5; +@carousel-control-font-size: 20px; + +@carousel-indicator-active-bg: #fff; +@carousel-indicator-border-color: #fff; + +@carousel-caption-color: #fff; + + +//== Close +// +//## + +@close-font-weight: bold; +@close-color: #000; +@close-text-shadow: 0 1px 0 #fff; + + +//== Code +// +//## + +@code-color: #c7254e; +@code-bg: #f9f2f4; + +@kbd-color: #fff; +@kbd-bg: #333; + +@pre-bg: #f5f5f5; +@pre-color: @gray-dark; +@pre-border-color: #ccc; +@pre-scrollable-max-height: 340px; + + +//== Type +// +//## + +//** Text muted color +@text-muted: @gray-light; +//** Abbreviations and acronyms border color +@abbr-border-color: @gray-light; +//** Headings small color +@headings-small-color: @gray-light; +//** Blockquote small color +@blockquote-small-color: @gray-light; +//** Blockquote font size +@blockquote-font-size: (@font-size-base * 1.25); +//** Blockquote border color +@blockquote-border-color: @gray-lighter; +//** Page header border color +@page-header-border-color: @gray-lighter; + + +//== Miscellaneous +// +//## + +//** Horizontal line color. +@hr-border: @gray-lighter; + +//** Horizontal offset for forms and lists. +@component-offset-horizontal: 180px; diff --git a/static/bootstrap/wells.less b/static/bootstrap/wells.less new file mode 100755 index 0000000..15d072b --- /dev/null +++ b/static/bootstrap/wells.less @@ -0,0 +1,29 @@ +// +// Wells +// -------------------------------------------------- + + +// Base class +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: @well-bg; + border: 1px solid @well-border; + border-radius: @border-radius-base; + .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); + blockquote { + border-color: #ddd; + border-color: rgba(0,0,0,.15); + } +} + +// Sizes +.well-lg { + padding: 24px; + border-radius: @border-radius-large; +} +.well-sm { + padding: 9px; + border-radius: @border-radius-small; +} diff --git a/static/fonts/glyphicons-halflings-regular.eot b/static/fonts/glyphicons-halflings-regular.eot new file mode 100755 index 0000000000000000000000000000000000000000..4a4ca865d67e86f961bc6e2ef00bffa4e34bb9ed GIT binary patch literal 20335 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

      !oRptb@n+ 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 literal 0 HcmV?d00001 diff --git a/static/fonts/glyphicons-halflings-regular.svg b/static/fonts/glyphicons-halflings-regular.svg new file mode 100755 index 0000000..e3e2dc7 --- /dev/null +++ b/static/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/fonts/glyphicons-halflings-regular.ttf b/static/fonts/glyphicons-halflings-regular.ttf new file mode 100755 index 0000000000000000000000000000000000000000..67fa00bf83801d2fa568546b982c80d27f6ef74e GIT binary patch literal 41280 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

      PBK;&Wcg|NX{>QR@W3{K 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 literal 0 HcmV?d00001 diff --git a/static/fonts/glyphicons-halflings-regular.woff b/static/fonts/glyphicons-halflings-regular.woff new file mode 100755 index 0000000000000000000000000000000000000000..8c54182aa5d4d1ab3c9171976b615c1dcb1dc187 GIT binary patch literal 23320 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 mX4Rts"),Q=a.weekdaysMin(),R;if(a()._lang._week.dow==0){for(R=0;R<7;R++){S.append(''+Q[R]+"")}}else{for(R=1;R<8;R++){if(R==7){S.append(''+Q[0]+"")}else{S.append(''+Q[R]+"")}}}l.widget.find(".datepicker-days thead").append(S)},u=function(){a.lang(l.options.language);var R="",Q=0,S=a.monthsShort();while(Q<12){R+=''+S[Q++]+""}l.widget.find(".datepicker-months td").append(R)},n=function(){a.lang(l.options.language);var ab=l.viewDate.year(),Z=l.viewDate.month(),aa=l.options.startDate.year(),ad=l.options.startDate.month(),ae=l.options.endDate.year(),X=l.options.endDate.month(),T,W,V=[],af,S,U,ac,R,Y,Q=a.months();l.widget.find(".datepicker-days").find(".disabled").removeClass("disabled");l.widget.find(".datepicker-months").find(".disabled").removeClass("disabled");l.widget.find(".datepicker-years").find(".disabled").removeClass("disabled");l.widget.find(".datepicker-days th:eq(1)").text(Q[Z]+" "+ab);T=a(l.viewDate).subtract("months",1);ac=T.daysInMonth();T.date(ac).startOf("week");if((ab==aa&&Z<=ad)||ab=X)||ab>ae){l.widget.find(".datepicker-days th:eq(2)").addClass("disabled")}W=a(T).add(42,"d");while(T.isBefore(W)){if(T.weekday()===a().startOf("week").weekday()){af=d("");V.push(af)}S="";if(T.year()ab||(T.year()==ab&&T.month()>Z)){S+=" new"}}if(T.isSame(a({y:l.date.year(),M:l.date.month(),d:l.date.date()}))){S+=" active"}if(O(T)||!s(T)){S+=" disabled"}af.append(''+T.date()+"");T.add(1,"d")}l.widget.find(".datepicker-days tbody").empty().append(V);Y=a().year(),Q=l.widget.find(".datepicker-months").find("th:eq(1)").text(ab).end().find("span").removeClass("active");if(Y===ab){Q.eq(a().month()).addClass("active")}if(Y-1ae){l.widget.find(".datepicker-months th:eq(2)").addClass("disabled")}for(U=0;U<12;U++){if((ab==aa&&ad>U)||(abae)){d(Q[U]).addClass("disabled")}}}V="";ab=parseInt(ab/10,10)*10;R=l.widget.find(".datepicker-years").find("th:eq(1)").text(ab+"-"+(ab+9)).end().find("td");l.widget.find(".datepicker-years").find("th").removeClass("disabled");if(aa>ab){l.widget.find(".datepicker-years").find("th:eq(0)").addClass("disabled")}if(aeae)?" disabled":"")+'">'+ab+"";ab+=1}R.html(V)},v=function(){a.lang(l.options.language);var T=l.widget.find(".timepicker .timepicker-hours table"),S="",U,R,Q;T.parent().hide();if(l.options.use24hours){U=0;for(R=0;R<6;R+=1){S+="";for(Q=0;Q<4;Q+=1){S+=''+N(U.toString())+"";U++}S+=""}}else{U=1;for(R=0;R<3;R+=1){S+="";for(Q=0;Q<4;Q+=1){S+=''+N(U.toString())+"";U++}S+=""}}T.html(S)},t=function(){var T=l.widget.find(".timepicker .timepicker-minutes table"),S="",U=0,R,Q;T.parent().hide();for(R=0;R<5;R++){S+="";for(Q=0;Q<4;Q+=1){S+=''+N(U.toString())+"";U+=3}S+=""}T.html(S)},h=function(){var T=l.widget.find(".timepicker .timepicker-seconds table"),S="",U=0,R,Q;T.parent().hide();for(R=0;R<5;R++){S+="";for(Q=0;Q<4;Q+=1){S+=''+N(U.toString())+"";U+=3}S+=""}T.html(S)},k=function(){if(!l.date){return}var S=l.widget.find(".timepicker span[data-time-component]"),Q=l.date.hours(),R="AM";if(!l.options.use24hours){if(Q>=12){R="PM"}if(Q===0){Q=12}else{if(Q!=12){Q=Q%12}}l.widget.find(".timepicker [data-action=togglePeriod]").text(R)}S.filter("[data-time-component=hours]").text(N(Q));S.filter("[data-time-component=minutes]").text(N(l.date.minutes()));S.filter("[data-time-component=seconds]").text(N(l.date.second()))},A=function(W){W.stopPropagation();W.preventDefault();l.unset=false;var V=d(W.target).closest("span, td, th"),U,S,T,Q,R=a(l.date);if(V.length===1){if(!V.is(".disabled")){switch(V[0].nodeName.toLowerCase()){case"th":switch(V[0].className){case"switch":g(1);break;case"prev":case"next":T=w.modes[l.viewMode].navStep;if(V[0].className==="prev"){T=T*-1}l.viewDate.add(T,w.modes[l.viewMode].navFnc);n();break}break;case"span":if(V.is(".month")){U=V.parent().find("span").index(V);l.viewDate.month(U)}else{S=parseInt(V.text(),10)||0;l.viewDate.year(S)}if(l.viewMode!==0){l.date=a({y:l.viewDate.year(),M:l.viewDate.month(),d:l.viewDate.date(),h:l.date.hours(),m:l.date.minutes()});p(R,W.type)}g(-1);n();break;case"td":if(V.is(".day")){Q=parseInt(V.text(),10)||1;U=l.viewDate.month();S=l.viewDate.year();if(V.is(".old")){if(U===0){U=11;S-=1}else{U-=1}}else{if(V.is(".new")){if(U==11){U=0;S+=1}else{U+=1}}}l.date=a({y:S,M:U,d:Q,h:l.date.hours(),m:l.date.minutes()});l.viewDate=a({y:S,M:U,d:Math.min(28,Q)});n();r();p(R,W.type)}break}}}},D={incrementHours:function(){m("add","hours",1)},incrementMinutes:function(){m("add","minutes",l.options.minuteStepping)},incrementSeconds:function(){m("add","seconds",1)},decrementHours:function(){m("subtract","hours",1)},decrementMinutes:function(){m("subtract","minutes",l.options.minuteStepping)},decrementSeconds:function(){m("subtract","seconds",1)},togglePeriod:function(){var Q=l.date.hours();if(Q>=12){Q-=12}else{Q+=12}l.date.hours(Q)},showPicker:function(){l.widget.find(".timepicker > div:not(.timepicker-picker)").hide();l.widget.find(".timepicker .timepicker-picker").show()},showHours:function(){l.widget.find(".timepicker .timepicker-picker").hide();l.widget.find(".timepicker .timepicker-hours").show()},showMinutes:function(){l.widget.find(".timepicker .timepicker-picker").hide();l.widget.find(".timepicker .timepicker-minutes").show()},showSeconds:function(){l.widget.find(".timepicker .timepicker-picker").hide();l.widget.find(".timepicker .timepicker-seconds").show()},selectHour:function(Q){l.date.hours(parseInt(d(Q.target).text(),10));D.showPicker.call(l)},selectMinute:function(Q){l.date.minutes(parseInt(d(Q.target).text(),10));D.showPicker.call(l)},selectSecond:function(Q){l.date.seconds(parseInt(d(Q.target).text(),10));D.showPicker.call(l)}},x=function(S){var Q=a(l.date),R=d(S.currentTarget).data("action"),T=D[R].apply(l,arguments);K(S);if(!l.date){l.date=a({y:1970})}r();k();p(Q,S.type);return T},K=function(Q){Q.stopPropagation();Q.preventDefault()},i=function(T){a.lang(l.options.language);var R=d(T.target),S=a(l.date),Q=a(R.val(),l.format,l.options.useStrict);if(Q.isValid()&&!O(Q)&&s(Q)){y();l.setValue(Q);p(S,T.type);r()}else{l.viewDate=S;p(S,T.type);C(Q);l.unset=true}},g=function(Q){if(Q){l.viewMode=Math.max(l.minViewMode,Math.min(2,l.viewMode+Q))}l.widget.find(".datepicker > div").hide().filter(".datepicker-"+w.modes[l.viewMode].clsName).show()},J=function(){var U,T,R,Q,S;l.widget.on("click",".datepicker *",d.proxy(A,this));l.widget.on("click","[data-action]",d.proxy(x,this));l.widget.on("mousedown",d.proxy(K,this));if(l.options.pickDate&&l.options.pickTime){l.widget.on("click.togglePicker",".accordion-toggle",function(V){V.stopPropagation();U=d(this);T=U.closest("ul");R=T.find(".in");Q=T.find(".collapse:not(.in)");if(R&&R.length){S=R.data("collapse");if(S&&S.transitioning){return}R.collapse("hide");Q.collapse("show");U.find("span").toggleClass(l.options.icons.time+" "+l.options.icons.date);l.element.find(".input-group-addon span").toggleClass(l.options.icons.time+" "+l.options.icons.date)}})}if(l.isInput){l.element.on({focus:d.proxy(l.show,this),change:d.proxy(i,this),blur:d.proxy(l.hide,this)})}else{l.element.on({change:d.proxy(i,this)},"input");if(l.component){l.component.on("click",d.proxy(l.show,this))}else{l.element.on("click",d.proxy(l.show,this))}}},L=function(){d(window).on("resize.datetimepicker"+l.id,d.proxy(j,this));if(!l.isInput){d(document).on("mousedown.datetimepicker"+l.id,d.proxy(l.hide,this))}},F=function(){l.widget.off("click",".datepicker *",l.click);l.widget.off("click","[data-action]");l.widget.off("mousedown",l.stopEvent);if(l.options.pickDate&&l.options.pickTime){l.widget.off("click.togglePicker")}if(l.isInput){l.element.off({focus:l.show,change:l.change})}else{l.element.off({change:l.change},"input");if(l.component){l.component.off("click",l.show)}else{l.element.off("click",l.show)}}},E=function(){d(window).off("resize.datetimepicker"+l.id);if(!l.isInput){d(document).off("mousedown.datetimepicker"+l.id)}},B=function(){if(l.element){var R=l.element.parents(),Q=false,S;for(S=0;S=2){return Q}else{return"0"+Q}},P=function(R,Q,S){if(R&&Q){return('

      ")}else{if(Q){return('")}else{return('")}}},w={modes:[{clsName:"days",navFnc:"month",navStep:1},{clsName:"months",navFnc:"year",navStep:1},{clsName:"years",navFnc:"year",navStep:10}],headTemplate:'‹›',contTemplate:''},G={hourTemplate:'',minuteTemplate:'',secondTemplate:''};w.template='
      '+w.headTemplate+'
      '+w.headTemplate+w.contTemplate+'
      '+w.headTemplate+w.contTemplate+"
      ";G.getTemplate=function(){return('
      "+(l.options.useSeconds?'':"")+(l.options.use24hours?"":'')+" "+(l.options.useSeconds?'":"")+(l.options.use24hours?"":'')+'"+(l.options.useSeconds?'':"")+(l.options.use24hours?"":'')+'
      '+(l.options.useMinutes?'':"")+"
      "+G.hourTemplate+' :'+(l.options.useMinutes?G.minuteTemplate:'00')+":'+G.secondTemplate+"
      '+(l.options.useMinutes?'':"")+"
      '+(l.options.useSeconds?'
      ':""))};l.destroy=function(){F();E();l.widget.remove();l.element.removeData("DateTimePicker");if(l.component){l.component.removeData("DateTimePicker")}};l.show=function(Q){l.widget.show();l.height=l.component?l.component.outerHeight():l.element.outerHeight();j();l.element.trigger({type:"show.dp",date:a(l.date)});L();if(Q){K(Q)}},l.disable=function(){var Q=l.element.find("input");if(Q.prop("disabled")){return}Q.prop("disabled",true);F()},l.enable=function(){var Q=l.element.find("input");if(!Q.prop("disabled")){return}Q.prop("disabled",false);J()},l.hide=function(S){if(S&&d(S.target).is(l.element.attr("id"))){return}var T=l.widget.find(".collapse"),Q,R;for(Q=0;Q .panel > .in') + + if (actives && actives.length) { + var hasData = actives.data('bs.collapse') + if (hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing') + [dimension](0) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in') + [dimension]('auto') + this.transitioning = 0 + this.$element.trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + [dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element + [dimension](this.$element[dimension]()) + [0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse') + .removeClass('in') + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .trigger('hidden.bs.collapse') + .removeClass('collapsing') + .addClass('collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + var old = $.fn.collapse + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data && options.toggle && option == 'show') option = !option + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) { + var $this = $(this), href + var target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + var $target = $(target) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + var parent = $this.attr('data-parent') + var $parent = parent && $(parent) + + if (!data || !data.transitioning) { + if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed') + $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + } + + $target.collapse(option) + }) + +}(jQuery); diff --git a/static/javascripts/jquery.js b/static/javascripts/jquery.js new file mode 100644 index 0000000..2adda35 --- /dev/null +++ b/static/javascripts/jquery.js @@ -0,0 +1,4 @@ +/*! jQuery v2.1.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m=a.document,n="2.1.0",o=function(a,b){return new o.fn.init(a,b)},p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};o.fn=o.prototype={jquery:n,constructor:o,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=o.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return o.each(this,a,b)},map:function(a){return this.pushStack(o.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},o.extend=o.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||o.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(o.isPlainObject(d)||(e=o.isArray(d)))?(e?(e=!1,f=c&&o.isArray(c)?c:[]):f=c&&o.isPlainObject(c)?c:{},g[b]=o.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},o.extend({expando:"jQuery"+(n+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===o.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isPlainObject:function(a){if("object"!==o.type(a)||a.nodeType||o.isWindow(a))return!1;try{if(a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}return!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=o.trim(a),a&&(1===a.indexOf("use strict")?(b=m.createElement("script"),b.text=a,m.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":k.call(a)},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?o.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),o.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||o.guid++,f):void 0},now:Date.now,support:l}),o.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=o.type(a);return"function"===c||o.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="
      ",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);o.find=t,o.expr=t.selectors,o.expr[":"]=o.expr.pseudos,o.unique=t.uniqueSort,o.text=t.getText,o.isXMLDoc=t.isXML,o.contains=t.contains;var u=o.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(o.isFunction(b))return o.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return o.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return o.filter(b,a,c);b=o.filter(b,a)}return o.grep(a,function(a){return g.call(b,a)>=0!==c})}o.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?o.find.matchesSelector(d,a)?[d]:[]:o.find.matches(a,o.grep(b,function(a){return 1===a.nodeType}))},o.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(o(a).filter(function(){for(b=0;c>b;b++)if(o.contains(e[b],this))return!0}));for(b=0;c>b;b++)o.find(a,e[b],d);return d=this.pushStack(c>1?o.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?o(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=o.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof o?b[0]:b,o.merge(this,o.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:m,!0)),v.test(c[1])&&o.isPlainObject(b))for(c in b)o.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=m.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=m,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):o.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(o):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),o.makeArray(a,this))};A.prototype=o.fn,y=o(m);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};o.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&o(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),o.fn.extend({has:function(a){var b=o(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(o.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?o(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&o.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?o.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(o(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(o.unique(o.merge(this.get(),o(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}o.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return o.dir(a,"parentNode")},parentsUntil:function(a,b,c){return o.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return o.dir(a,"nextSibling")},prevAll:function(a){return o.dir(a,"previousSibling")},nextUntil:function(a,b,c){return o.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return o.dir(a,"previousSibling",c)},siblings:function(a){return o.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return o.sibling(a.firstChild)},contents:function(a){return a.contentDocument||o.merge([],a.childNodes)}},function(a,b){o.fn[a]=function(c,d){var e=o.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=o.filter(d,e)),this.length>1&&(C[a]||o.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return o.each(a.match(E)||[],function(a,c){b[c]=!0}),b}o.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):o.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){o.each(b,function(b,c){var d=o.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&o.each(arguments,function(a,b){var c;while((c=o.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?o.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},o.extend({Deferred:function(a){var b=[["resolve","done",o.Callbacks("once memory"),"resolved"],["reject","fail",o.Callbacks("once memory"),"rejected"],["notify","progress",o.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return o.Deferred(function(c){o.each(b,function(b,f){var g=o.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&o.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?o.extend(a,d):d}},e={};return d.pipe=d.then,o.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&o.isFunction(a.promise)?e:0,g=1===f?a:o.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&o.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;o.fn.ready=function(a){return o.ready.promise().done(a),this},o.extend({isReady:!1,readyWait:1,holdReady:function(a){a?o.readyWait++:o.ready(!0)},ready:function(a){(a===!0?--o.readyWait:o.isReady)||(o.isReady=!0,a!==!0&&--o.readyWait>0||(H.resolveWith(m,[o]),o.fn.trigger&&o(m).trigger("ready").off("ready")))}});function I(){m.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),o.ready()}o.ready.promise=function(b){return H||(H=o.Deferred(),"complete"===m.readyState?setTimeout(o.ready):(m.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},o.ready.promise();var J=o.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===o.type(c)){e=!0;for(h in c)o.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,o.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(o(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};o.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=o.expando+Math.random()}K.uid=1,K.accepts=o.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,o.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(o.isEmptyObject(f))o.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,o.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{o.isArray(b)?d=b.concat(b.map(o.camelCase)):(e=o.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!o.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?o.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}o.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),o.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length; +while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=o.camelCase(d.slice(5)),P(f,d,e[d]));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=o.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),o.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||o.isArray(c)?d=L.access(a,b,o.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=o.queue(a,b),d=c.length,e=c.shift(),f=o._queueHooks(a,b),g=function(){o.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:o.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),o.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";l.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return m.activeElement}catch(a){}}o.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=o.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof o!==U&&o.event.triggered!==b.type?o.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],n=q=h[1],p=(h[2]||"").split(".").sort(),n&&(l=o.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=o.event.special[n]||{},k=o.extend({type:n,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&o.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(n,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),o.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],n=q=h[1],p=(h[2]||"").split(".").sort(),n){l=o.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||o.removeEvent(a,n,r.handle),delete i[n])}else for(n in i)o.event.remove(a,n+b[j],c,d,!0);o.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,p=[d||m],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||m,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+o.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[o.expando]?b:new o.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:o.makeArray(c,[b]),n=o.event.special[q]||{},e||!n.trigger||n.trigger.apply(d,c)!==!1)){if(!e&&!n.noBubble&&!o.isWindow(d)){for(i=n.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||m)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:n.bindType||q,l=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),l&&l.apply(g,c),l=k&&g[k],l&&l.apply&&o.acceptData(g)&&(b.result=l.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||n._default&&n._default.apply(p.pop(),c)!==!1||!o.acceptData(d)||k&&o.isFunction(d[q])&&!o.isWindow(d)&&(h=d[k],h&&(d[k]=null),o.event.triggered=q,d[q](),o.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=o.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=o.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=o.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((o.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?o(e,this).index(i)>=0:o.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*\s*$/g,ib={option:[1,""],thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return o.nodeName(a,"table")&&o.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)o.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=o.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&o.nodeName(a,b)?o.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}o.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=o.contains(a.ownerDocument,a);if(!(l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||o.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,n=a.length;n>m;m++)if(e=a[m],e||0===e)if("object"===o.type(e))o.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;o.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===o.inArray(e,d))&&(i=o.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f,g,h=o.event.special,i=0;void 0!==(c=a[i]);i++){if(o.acceptData(c)&&(f=c[L.expando],f&&(b=L.cache[f]))){if(d=Object.keys(b.events||{}),d.length)for(g=0;void 0!==(e=d[g]);g++)h[e]?o.event.remove(c,e):o.removeEvent(c,e,b.handle);L.cache[f]&&delete L.cache[f]}delete M.cache[c[M.expando]]}}}),o.fn.extend({text:function(a){return J(this,function(a){return void 0===a?o.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?o.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||o.cleanData(ob(c)),c.parentNode&&(b&&o.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(o.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return o.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(o.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,o.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,n=k-1,p=a[0],q=o.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(c=o.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=o.map(ob(c,"script"),kb),g=f.length;k>j;j++)h=c,j!==n&&(h=o.clone(h,!0,!0),g&&o.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,o.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&o.contains(i,h)&&(h.src?o._evalUrl&&o._evalUrl(h.src):o.globalEval(h.textContent.replace(hb,"")))}return this}}),o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){o.fn[a]=function(a){for(var c,d=[],e=o(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),o(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d=o(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:o.css(d[0],"display");return d.detach(),e}function tb(a){var b=m,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||o("

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