Merge lp:~openerp-dev/openerp-web/trunk-ui-to-bootstrap-datetimepicker into lp:openerp-web

Proposed by Antony Lesuisse (OpenERP)
Status: Work in progress
Proposed branch: lp:~openerp-dev/openerp-web/trunk-ui-to-bootstrap-datetimepicker
Merge into: lp:openerp-web
Diff against target: 8402 lines (+6520/-1419)
74 files modified
addons/web/__openerp__.py (+4/-2)
addons/web/static/lib/bootstrap-datetimepicker/README.md (+127/-0)
addons/web/static/lib/bootstrap-datetimepicker/moment/moment.js (+6/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/css/bootstrap-datetimepicker.css (+184/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/css/bootstrap-datetimepicker.min.css (+8/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/bootstrap-datetimepicker.js (+1111/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/bootstrap-datetimepicker.min.js (+28/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ar-ma.js (+56/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ar.js (+56/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.bg.js (+86/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.br.js (+107/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.bs.js (+139/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ca.js (+66/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.cs.js (+155/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.cv.js (+59/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.da.js (+56/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.de.js (+71/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.el.js (+79/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.en-au.js (+62/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.en-ca.js (+59/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.en-gb.js (+63/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.eo.js (+65/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.es.js (+66/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.et.js (+60/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.eu.js (+60/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.fa.js (+97/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.fi.js (+103/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.fr-ca.js (+54/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.fr.js (+58/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.gl.js (+71/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.he.js (+77/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.hi.js (+105/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.hr.js (+140/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.hu.js (+98/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.id.js (+67/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.is.js (+124/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.it.js (+59/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ja.js (+58/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ka.js (+108/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ko.js (+56/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.lt.js (+118/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.lv.js (+77/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ml.js (+64/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.mr.js (+104/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ms-my.js (+66/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.nb.js (+57/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ne.js (+105/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.nl.js (+67/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.nn.js (+56/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.pl.js (+98/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.pt-BR.js (+56/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.pt.js (+60/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ro.js (+56/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ru.js (+163/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.sk.js (+156/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.sl.js (+144/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.sq.js (+57/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.sv.js (+63/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.th.js (+58/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.tr.js (+93/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.tzm-la.js (+55/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.tzm.js (+55/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.uk.js (+157/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.uz.js (+55/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.vn.js (+62/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.zh-CN.js (+108/-0)
addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.zh-TW.js (+84/-0)
addons/web/static/lib/jquery.ui.timepicker/css/jquery-ui-timepicker-addon.css (+0/-6)
addons/web/static/lib/jquery.ui.timepicker/js/jquery-ui-timepicker-addon.js (+0/-1326)
addons/web/static/src/css/base.css (+19/-1)
addons/web/static/src/css/base.sass (+13/-0)
addons/web/static/src/js/formats.js (+49/-0)
addons/web/static/src/js/view_form.js (+29/-76)
addons/web/static/src/xml/base.xml (+8/-8)
To merge this branch: bzr merge lp:~openerp-dev/openerp-web/trunk-ui-to-bootstrap-datetimepicker
Reviewer Review Type Date Requested Status
OpenERP R&D Web Team Pending
Review via email: mp+206502@code.launchpad.net
To post a comment you must log in.

Unmerged revisions

3922. By Paramjit Singh Sahota(OpenERP)

[MERGE] Merged lp:openerp-web

3921. By Paramjit Singh Sahota(OpenERP)

For right now fixed the issue by hacking the lib.

3920. By Paramjit Singh Sahota(OpenERP)

Uncommit the last change of revno 3919 which breaks the datetimepicker functionality

3919. By Paramjit Singh Sahota(OpenERP)

[FIX] Right now fixed the issue from library but will be do it properly soon when the datejs lib will completely be removed.

3918. By Paramjit Singh Sahota(OpenERP)

[MERGE] Merged lp:openerp-web.

3917. By Paramjit Singh Sahota(OpenERP)

[FIX] After changing the date time format in languages its not loading the new translation untill the server restarts.

3916. By Paramjit Singh Sahota(OpenERP)

[IMP] Added code for converting python.strftime format into moment.js format.

3915. By Paramjit Singh Sahota(OpenERP)

[LIB] Updated the lib with one feature of displaying calendarWeeks and proposal of this feature to add in the library is sent.

3914. By Paramjit Singh Sahota(OpenERP)

[MERGE] Merged lp:openerp-web

3913. By Paramjit Singh Sahota(OpenERP)

[IMP] Improved code according to the new improvements in the library.
The seconds are now visible.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'addons/web/__openerp__.py'
2--- addons/web/__openerp__.py 2014-01-23 15:19:34 +0000
3+++ addons/web/__openerp__.py 2014-02-14 15:04:13 +0000
4@@ -32,7 +32,6 @@
5 "static/lib/jquery.hotkeys/jquery.hotkeys.js",
6 "static/lib/jquery.placeholder/jquery.placeholder.js",
7 "static/lib/jquery.ui/js/jquery-ui-1.9.1.custom.js",
8- "static/lib/jquery.ui.timepicker/js/jquery-ui-timepicker-addon.js",
9 "static/lib/jquery.ui.notify/js/jquery.notify.js",
10 "static/lib/jquery.deferred-queue/jquery.deferred-queue.js",
11 "static/lib/jquery.scrollTo/jquery.scrollTo-min.js",
12@@ -40,6 +39,9 @@
13 "static/lib/jquery.textext/jquery.textext.js",
14 "static/lib/jquery.timeago/jquery.timeago.js",
15 "static/lib/bootstrap/js/bootstrap.js",
16+ "static/lib/bootstrap-datetimepicker/moment/moment.js",
17+ "static/lib/bootstrap-datetimepicker/src/js/bootstrap-datetimepicker.js",
18+ "static/lib/bootstrap-datetimepicker/src/js/locales/*.js",
19 "static/lib/qweb/qweb2.js",
20 "static/lib/underscore/underscore.js",
21 "static/lib/underscore.string/lib/underscore.string.js",
22@@ -65,7 +67,7 @@
23 ],
24 'css' : [
25 "static/lib/jquery.ui.bootstrap/css/custom-theme/jquery-ui-1.9.0.custom.css",
26- "static/lib/jquery.ui.timepicker/css/jquery-ui-timepicker-addon.css",
27+ "static/lib/bootstrap-datetimepicker/src/css/bootstrap-datetimepicker.css",
28 "static/lib/jquery.ui.notify/css/ui.notify.css",
29 "static/lib/jquery.tipsy/tipsy.css",
30 "static/lib/jquery.textext/jquery.textext.css",
31
32=== added directory 'addons/web/static/lib/bootstrap-datetimepicker'
33=== added file 'addons/web/static/lib/bootstrap-datetimepicker/README.md'
34--- addons/web/static/lib/bootstrap-datetimepicker/README.md 1970-01-01 00:00:00 +0000
35+++ addons/web/static/lib/bootstrap-datetimepicker/README.md 2014-02-14 15:04:13 +0000
36@@ -0,0 +1,127 @@
37+# Bootstrap v3 datetimepicker widget
38+
39+![DateTimePicker](http://i.imgur.com/nfnvh5g.png)
40+
41+### [⇢ View the manual and demos](http://eonasdan.github.io/bootstrap-datetimepicker/)
42+
43+##Where do you use this?
44+I'd love to know if your public site is using this plugin and list your logo on the documentation site. Please email me `eonasdan at outlook dot com`
45+
46+## Quick installation using
47+
48+## [bower](http://bower.io):
49+
50+Run the following command:
51+````
52+bower install eonasdan-bootstrap-datetimepicker#latest --save
53+````
54+## [Nuget](https://www.nuget.org/packages/Bootstrap.v3.Datetimepicker/):
55+````
56+PM> Install-Package Bootstrap.v3.Datetimepicker
57+````
58+
59+## See the [Change Log](#change-log) for important changes and updates
60+
61+Include necessary scripts and styles:
62+````html
63+<head>
64+ <!-- ... -->
65+ <script type="text/javascript" src="/bower_components/jquery/jquery.min.js"></script>
66+ <script type="text/javascript" src="/bower_components/moment/min/moment.min.js"></script>
67+ <script type="text/javascript" src="/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
68+ <script type="text/javascript" src="/bower_components/eonasdan-bootstrap-datetimepicker/build/bootstrap-datetimepicker.min.js"></script>
69+ <link rel="stylesheet" href="/bower_components/bootstrap/dist/css/boostrap.min.css" />
70+ <link rel="stylesheet" href="/bower_components/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css" />
71+</head>
72+````
73+
74+Done! [Now take a look at the manual](http://eonasdan.github.io/bootstrap-datetimepicker/) for examples and available options.
75+
76+
77+
78+## Manual installation
79+
80+### [Moment.js](https://github.com/moment/moment)
81+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).
82+
83+````html
84+<script type="text/javascript" src="/path/to/moment.js"></script>
85+````
86+
87+### Bootstrap 3 collapse and transition plugins
88+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)
89+
90+````html
91+<script type="text/javascript" src="/path/to/bootstrap/js/transition.js"></script>
92+<script type="text/javascript" src="/path/to/bootstrap/js/collapse.js"></script>
93+````
94+
95+Alternatively you could include the whole bundle of bootstrap plugins from [bootstrap.js](https://github.com/twbs/bootstrap/tree/master/dist/js)
96+
97+````html
98+<script type="text/javascript" src="/path/to/bootstrap/dist/bootstrap.min.js"></script>
99+````
100+
101+
102+### CSS styles
103+
104+#### Using LESS
105+````css
106+@import "/path/to/bootstrap/less/variables";
107+@import "/path/to/bootstrap-datetimepicker/src/less/bootstrap-datetimepicker";
108+
109+// [...] your custom styles and variables
110+````
111+
112+#### Using CSS (default color palette)
113+````html
114+<link rel="stylesheet" href="/path/to/bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css" />
115+````
116+
117+### Main JS file
118+
119+Finally include the main javascript file.
120+````html
121+<script type="text/javascript" src="/path/to/bootstrap-datetimepicker.min.js"></script>
122+````
123+
124+# Change Log
125+
126+## New features (2.1.20)!
127+* 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
128+* Fix for #78: Script has been update for breaking changes in Moment 2.4.0
129+* Fix for #73: IE8 should be working now
130+
131+* Enhancement for #79: `minuteStepping` option takes a number (default is 1). Changing the minutes in the time picker will step by this number.
132+* 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
133+* Enhancement for #67: Picker will now attempt to convert all `data-OPTION` into its appropriate option
134+
135+## New features (2.1.11)!
136+* Fix for #51, #60
137+* Fix for #52: Picker has its own `moment` object since moment 2.4.0 has removed global reference
138+* Fix for #57: New option for `useStrict`. When validating dates in `update` and `change`, the picker can use a stricter formatting validation
139+* Fix for #61: Picker should now properly take formatted date. Should also have correct start of the week for locales.
140+* Fix for #62: Default format will properly validate time picker only.
141+
142+## New features (2.1.5)!
143+* Custom icons, such as Font Awesome, are now supported. (#49) See [Example#9](http://eonasdan.github.io/bootstrap-datetimepicker/#example9)
144+* If more then one `input-group-addon` is present use `datepickerbutton` to identify where the picker should popup from. (#48)
145+* 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/)
146+* Fix for #42, plugin will now check for `A` or `a` in the format string to determine if the AM/PM selector should display.
147+* Fix for #45, fixed null/empty and invalid dates
148+* Fix for #46, fixed active date highlighting
149+* Fix for #47, `change.dp` event to also include the previous date.
150+
151+####New features (2.0.1)!
152+* 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)
153+* Minor fixes
154+
155+####New features (2.0.0)!
156+* `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.
157+* Events are easier to use; see [Example#8](http://eonasdan.github.io/bootstrap-datetimepicker/#example8)
158+
159+###Removed features
160+* pickSeconds
161+* pick12HourFormat
162+* maskInput
163+
164
165=== added directory 'addons/web/static/lib/bootstrap-datetimepicker/moment'
166=== added file 'addons/web/static/lib/bootstrap-datetimepicker/moment/moment.js'
167--- addons/web/static/lib/bootstrap-datetimepicker/moment/moment.js 1970-01-01 00:00:00 +0000
168+++ addons/web/static/lib/bootstrap-datetimepicker/moment/moment.js 2014-02-14 15:04:13 +0000
169@@ -0,0 +1,6 @@
170+//! moment.js
171+//! version : 2.5.0
172+//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
173+//! license : MIT
174+//! momentjs.com
175+(function(a){function b(a,b){return function(c){return i(a.call(this,c),b)}}function c(a,b){return function(c){return this.lang().ordinal(a.call(this,c),b)}}function d(){}function e(a){u(a),g(this,a)}function f(a){var b=o(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 g(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 h(a){return 0>a?Math.ceil(a):Math.floor(a)}function i(a,b,c){for(var d=Math.abs(a)+"",e=a>=0;d.length<b;)d="0"+d;return(e?c?"+":"":"-")+d}function j(a,b,c,d){var e,f,g=b._milliseconds,h=b._days,i=b._months;g&&a._d.setTime(+a._d+g*c),(h||i)&&(e=a.minute(),f=a.hour()),h&&a.date(a.date()+h*c),i&&a.month(a.month()+i*c),g&&!d&&cb.updateOffset(a),(h||i)&&(a.minute(e),a.hour(f))}function k(a){return"[object Array]"===Object.prototype.toString.call(a)}function l(a){return"[object Date]"===Object.prototype.toString.call(a)||a instanceof Date}function m(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&q(a[d])!==q(b[d]))&&g++;return g+f}function n(a){if(a){var b=a.toLowerCase().replace(/(.)s$/,"$1");a=Qb[a]||Rb[b]||b}return a}function o(a){var b,c,d={};for(c in a)a.hasOwnProperty(c)&&(b=n(c),b&&(d[b]=a[c]));return d}function p(b){var c,d;if(0===b.indexOf("week"))c=7,d="day";else{if(0!==b.indexOf("month"))return;c=12,d="month"}cb[b]=function(e,f){var g,h,i=cb.fn._lang[b],j=[];if("number"==typeof e&&(f=e,e=a),h=function(a){var b=cb().utc().set(d,a);return i.call(cb.fn._lang,b,e||"")},null!=f)return h(f);for(g=0;c>g;g++)j.push(h(g));return j}}function q(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=b>=0?Math.floor(b):Math.ceil(b)),c}function r(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function s(a){return t(a)?366:365}function t(a){return a%4===0&&a%100!==0||a%400===0}function u(a){var b;a._a&&-2===a._pf.overflow&&(b=a._a[ib]<0||a._a[ib]>11?ib:a._a[jb]<1||a._a[jb]>r(a._a[hb],a._a[ib])?jb:a._a[kb]<0||a._a[kb]>23?kb:a._a[lb]<0||a._a[lb]>59?lb:a._a[mb]<0||a._a[mb]>59?mb:a._a[nb]<0||a._a[nb]>999?nb:-1,a._pf._overflowDayOfYear&&(hb>b||b>jb)&&(b=jb),a._pf.overflow=b)}function v(a){a._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function w(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 x(a){return a?a.toLowerCase().replace("_","-"):a}function y(a,b){return b._isUTC?cb(a).zone(b._offset||0):cb(a).local()}function z(a,b){return b.abbr=a,ob[a]||(ob[a]=new d),ob[a].set(b),ob[a]}function A(a){delete ob[a]}function B(a){var b,c,d,e,f=0,g=function(a){if(!ob[a]&&pb)try{require("./lang/"+a)}catch(b){}return ob[a]};if(!a)return cb.fn._lang;if(!k(a)){if(c=g(a))return c;a=[a]}for(;f<a.length;){for(e=x(a[f]).split("-"),b=e.length,d=x(a[f+1]),d=d?d.split("-"):null;b>0;){if(c=g(e.slice(0,b).join("-")))return c;if(d&&d.length>=b&&m(e,d,!0)>=b-1)break;b--}f++}return cb.fn._lang}function C(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function D(a){var b,c,d=a.match(tb);for(b=0,c=d.length;c>b;b++)d[b]=Vb[d[b]]?Vb[d[b]]:C(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 E(a,b){return a.isValid()?(b=F(b,a.lang()),Sb[b]||(Sb[b]=D(b)),Sb[b](a)):a.lang().invalidDate()}function F(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(ub.lastIndex=0;d>=0&&ub.test(a);)a=a.replace(ub,c),ub.lastIndex=0,d-=1;return a}function G(a,b){var c,d=b._strict;switch(a){case"DDDD":return Gb;case"YYYY":case"GGGG":case"gggg":return d?Hb:xb;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return d?Ib:yb;case"S":if(d)return Eb;case"SS":if(d)return Fb;case"SSS":case"DDD":return d?Gb:wb;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Ab;case"a":case"A":return B(b._l)._meridiemParse;case"X":return Db;case"Z":case"ZZ":return Bb;case"T":return Cb;case"SSSS":return zb;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return d?Fb:vb;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return d?Eb:vb;default:return c=new RegExp(O(N(a.replace("\\","")),"i"))}}function H(a){a=a||"";var b=a.match(Bb)||[],c=b[b.length-1]||[],d=(c+"").match(Nb)||["-",0,0],e=+(60*d[1])+q(d[2]);return"+"===d[0]?-e:e}function I(a,b,c){var d,e=c._a;switch(a){case"M":case"MM":null!=b&&(e[ib]=q(b)-1);break;case"MMM":case"MMMM":d=B(c._l).monthsParse(b),null!=d?e[ib]=d:c._pf.invalidMonth=b;break;case"D":case"DD":null!=b&&(e[jb]=q(b));break;case"DDD":case"DDDD":null!=b&&(c._dayOfYear=q(b));break;case"YY":e[hb]=q(b)+(q(b)>68?1900:2e3);break;case"YYYY":case"YYYYY":case"YYYYYY":e[hb]=q(b);break;case"a":case"A":c._isPm=B(c._l).isPM(b);break;case"H":case"HH":case"h":case"hh":e[kb]=q(b);break;case"m":case"mm":e[lb]=q(b);break;case"s":case"ss":e[mb]=q(b);break;case"S":case"SS":case"SSS":case"SSSS":e[nb]=q(1e3*("0."+b));break;case"X":c._d=new Date(1e3*parseFloat(b));break;case"Z":case"ZZ":c._useUTC=!0,c._tzm=H(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 J(a){var b,c,d,e,f,g,h,i,j,k,l=[];if(!a._d){for(d=L(a),a._w&&null==a._a[jb]&&null==a._a[ib]&&(f=function(b){var c=parseInt(b,10);return b?b.length<3?c>68?1900+c:2e3+c:c:null==a._a[hb]?cb().weekYear():a._a[hb]},g=a._w,null!=g.GG||null!=g.W||null!=g.E?h=Y(f(g.GG),g.W||1,g.E,4,1):(i=B(a._l),j=null!=g.d?U(g.d,i):null!=g.e?parseInt(g.e,10)+i._week.dow:0,k=parseInt(g.w,10)||1,null!=g.d&&j<i._week.dow&&k++,h=Y(f(g.gg),k,j,i._week.doy,i._week.dow)),a._a[hb]=h.year,a._dayOfYear=h.dayOfYear),a._dayOfYear&&(e=null==a._a[hb]?d[hb]:a._a[hb],a._dayOfYear>s(e)&&(a._pf._overflowDayOfYear=!0),c=T(e,0,a._dayOfYear),a._a[ib]=c.getUTCMonth(),a._a[jb]=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[kb]+=q((a._tzm||0)/60),l[lb]+=q((a._tzm||0)%60),a._d=(a._useUTC?T:S).apply(null,l)}}function K(a){var b;a._d||(b=o(a._i),a._a=[b.year,b.month,b.day,b.hour,b.minute,b.second,b.millisecond],J(a))}function L(a){var b=new Date;return a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function M(a){a._a=[],a._pf.empty=!0;var b,c,d,e,f,g=B(a._l),h=""+a._i,i=h.length,j=0;for(d=F(a._f,g).match(tb)||[],b=0;b<d.length;b++)e=d[b],c=(h.match(G(e,a))||[])[0],c&&(f=h.substr(0,h.indexOf(c)),f.length>0&&a._pf.unusedInput.push(f),h=h.slice(h.indexOf(c)+c.length),j+=c.length),Vb[e]?(c?a._pf.empty=!1:a._pf.unusedTokens.push(e),I(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[kb]<12&&(a._a[kb]+=12),a._isPm===!1&&12===a._a[kb]&&(a._a[kb]=0),J(a),u(a)}function N(a){return a.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e})}function O(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function P(a){var b,c,d,e,f;if(0===a._f.length)return a._pf.invalidFormat=!0,a._d=new Date(0/0),void 0;for(e=0;e<a._f.length;e++)f=0,b=g({},a),v(b),b._f=a._f[e],M(b),w(b)&&(f+=b._pf.charsLeftOver,f+=10*b._pf.unusedTokens.length,b._pf.score=f,(null==d||d>f)&&(d=f,c=b));g(a,c||b)}function Q(a){var b,c=a._i,d=Jb.exec(c);if(d){for(a._pf.iso=!0,b=4;b>0;b--)if(d[b]){a._f=Lb[b-1]+(d[6]||" ");break}for(b=0;4>b;b++)if(Mb[b][1].exec(c)){a._f+=Mb[b][0];break}c.match(Bb)&&(a._f+="Z"),M(a)}else a._d=new Date(c)}function R(b){var c=b._i,d=qb.exec(c);c===a?b._d=new Date:d?b._d=new Date(+d[1]):"string"==typeof c?Q(b):k(c)?(b._a=c.slice(0),J(b)):l(c)?b._d=new Date(+c):"object"==typeof c?K(b):b._d=new Date(c)}function S(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 T(a){var b=new Date(Date.UTC.apply(null,arguments));return 1970>a&&b.setUTCFullYear(a),b}function U(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 V(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function W(a,b,c){var d=gb(Math.abs(a)/1e3),e=gb(d/60),f=gb(e/60),g=gb(f/24),h=gb(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",gb(g/30)]||1===h&&["y"]||["yy",h];return i[2]=b,i[3]=a>0,i[4]=c,V.apply({},i)}function X(a,b,c){var d,e=c-b,f=c-a.day();return f>e&&(f-=7),e-7>f&&(f+=7),d=cb(a).add("d",f),{week:Math.ceil(d.dayOfYear()/7),year:d.year()}}function Y(a,b,c,d,e){var f,g,h=new Date(i(a,6,!0)+"-01-01").getUTCDay();return c=null!=c?c:e,f=e-h+(h>d?7:0),g=7*(b-1)+(c-e)+f+1,{year:g>0?a:a-1,dayOfYear:g>0?g:s(a-1)+g}}function Z(a){var b=a._i,c=a._f;return"undefined"==typeof a._pf&&v(a),null===b?cb.invalid({nullInput:!0}):("string"==typeof b&&(a._i=b=B().preparse(b)),cb.isMoment(b)?(a=g({},b),a._d=new Date(+b._d)):c?k(c)?P(a):M(a):R(a),new e(a))}function $(a,b){cb.fn[a]=cb.fn[a+"s"]=function(a){var c=this._isUTC?"UTC":"";return null!=a?(this._d["set"+c+b](a),cb.updateOffset(this),this):this._d["get"+c+b]()}}function _(a){cb.duration.fn[a]=function(){return this._data[a]}}function ab(a,b){cb.duration.fn["as"+a]=function(){return+this/b}}function bb(a){var b=!1,c=cb;"undefined"==typeof ender&&(a?(fb.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)},g(fb.moment,c)):fb.moment=cb)}for(var cb,db,eb="2.5.0",fb=this,gb=Math.round,hb=0,ib=1,jb=2,kb=3,lb=4,mb=5,nb=6,ob={},pb="undefined"!=typeof module&&module.exports&&"undefined"!=typeof require,qb=/^\/?Date\((\-?\d+)/i,rb=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,sb=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,tb=/(\[[^\[]*\])|(\\)?(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,ub=/(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,vb=/\d\d?/,wb=/\d{1,3}/,xb=/\d{1,4}/,yb=/[+\-]?\d{1,6}/,zb=/\d+/,Ab=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Bb=/Z|[\+\-]\d\d:?\d\d/gi,Cb=/T/i,Db=/[\+\-]?\d+(\.\d{1,3})?/,Eb=/\d/,Fb=/\d\d/,Gb=/\d{3}/,Hb=/\d{4}/,Ib=/[+\-]?\d{6}/,Jb=/^\s*\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)?)?$/,Kb="YYYY-MM-DDTHH:mm:ssZ",Lb=["YYYY-MM-DD","GGGG-[W]WW","GGGG-[W]WW-E","YYYY-DDD"],Mb=[["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/]],Nb=/([\+\-]|\d\d)/gi,Ob="Date|Hours|Minutes|Seconds|Milliseconds".split("|"),Pb={Milliseconds:1,Seconds:1e3,Minutes:6e4,Hours:36e5,Days:864e5,Months:2592e6,Years:31536e6},Qb={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"},Rb={dayofyear:"dayOfYear",isoweekday:"isoWeekday",isoweek:"isoWeek",weekyear:"weekYear",isoweekyear:"isoWeekYear"},Sb={},Tb="DDD w W M D d".split(" "),Ub="M D H h m s w W".split(" "),Vb={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 i(this.year()%100,2)},YYYY:function(){return i(this.year(),4)},YYYYY:function(){return i(this.year(),5)},YYYYYY:function(){var a=this.year(),b=a>=0?"+":"-";return b+i(Math.abs(a),6)},gg:function(){return i(this.weekYear()%100,2)},gggg:function(){return this.weekYear()},ggggg:function(){return i(this.weekYear(),5)},GG:function(){return i(this.isoWeekYear()%100,2)},GGGG:function(){return this.isoWeekYear()},GGGGG:function(){return i(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 q(this.milliseconds()/100)},SS:function(){return i(q(this.milliseconds()/10),2)},SSS:function(){return i(this.milliseconds(),3)},SSSS:function(){return i(this.milliseconds(),3)},Z:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+i(q(a/60),2)+":"+i(q(a)%60,2)},ZZ:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+i(q(a/60),2)+i(q(a)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Wb=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];Tb.length;)db=Tb.pop(),Vb[db+"o"]=c(Vb[db],db);for(;Ub.length;)db=Ub.pop(),Vb[db+db]=b(Vb[db],2);for(Vb.DDDD=b(Vb.DDD,3),g(d.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=cb.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=cb([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 X(a,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),cb=function(b,c,d,e){return"boolean"==typeof d&&(e=d,d=a),Z({_i:b,_f:c,_l:d,_strict:e,_isUTC:!1})},cb.utc=function(b,c,d,e){var f;return"boolean"==typeof d&&(e=d,d=a),f=Z({_useUTC:!0,_isUTC:!0,_l:d,_i:b,_f:c,_strict:e}).utc()},cb.unix=function(a){return cb(1e3*a)},cb.duration=function(a,b){var c,d,e,g=a,h=null;return cb.isDuration(a)?g={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(g={},b?g[b]=a:g.milliseconds=a):(h=rb.exec(a))?(c="-"===h[1]?-1:1,g={y:0,d:q(h[jb])*c,h:q(h[kb])*c,m:q(h[lb])*c,s:q(h[mb])*c,ms:q(h[nb])*c}):(h=sb.exec(a))&&(c="-"===h[1]?-1:1,e=function(a){var b=a&&parseFloat(a.replace(",","."));return(isNaN(b)?0:b)*c},g={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 f(g),cb.isDuration(a)&&a.hasOwnProperty("_lang")&&(d._lang=a._lang),d},cb.version=eb,cb.defaultFormat=Kb,cb.updateOffset=function(){},cb.lang=function(a,b){var c;return a?(b?z(x(a),b):null===b?(A(a),a="en"):ob[a]||B(a),c=cb.duration.fn._lang=cb.fn._lang=B(a),c._abbr):cb.fn._lang._abbr},cb.langData=function(a){return a&&a._lang&&a._lang._abbr&&(a=a._lang._abbr),B(a)},cb.isMoment=function(a){return a instanceof e},cb.isDuration=function(a){return a instanceof f},db=Wb.length-1;db>=0;--db)p(Wb[db]);for(cb.normalizeUnits=function(a){return n(a)},cb.invalid=function(a){var b=cb.utc(0/0);return null!=a?g(b._pf,a):b._pf.userInvalidated=!0,b},cb.parseZone=function(a){return cb(a).parseZone()},g(cb.fn=e.prototype,{clone:function(){return cb(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=cb(this).utc();return 0<a.year()&&a.year()<=9999?E(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):E(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},toArray:function(){var a=this;return[a.year(),a.month(),a.date(),a.hours(),a.minutes(),a.seconds(),a.milliseconds()]},isValid:function(){return w(this)},isDSTShifted:function(){return this._a?this.isValid()&&m(this._a,(this._isUTC?cb.utc(this._a):cb(this._a)).toArray())>0:!1},parsingFlags:function(){return g({},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=E(this,a||cb.defaultFormat);return this.lang().postformat(b)},add:function(a,b){var c;return c="string"==typeof a?cb.duration(+b,a):cb.duration(a,b),j(this,c,1),this},subtract:function(a,b){var c;return c="string"==typeof a?cb.duration(+b,a):cb.duration(a,b),j(this,c,-1),this},diff:function(a,b,c){var d,e,f=y(a,this),g=6e4*(this.zone()-f.zone());return b=n(b),"year"===b||"month"===b?(d=432e5*(this.daysInMonth()+f.daysInMonth()),e=12*(this.year()-f.year())+(this.month()-f.month()),e+=(this-cb(this).startOf("month")-(f-cb(f).startOf("month")))/d,e-=6e4*(this.zone()-cb(this).startOf("month").zone()-(f.zone()-cb(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:h(e)},from:function(a,b){return cb.duration(this.diff(a)).lang(this.lang()._abbr).humanize(!b)},fromNow:function(a){return this.from(cb(),a)},calendar:function(){var a=y(cb(),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 t(this.year())},isDST:function(){return this.zone()<this.clone().month(0).zone()||this.zone()<this.clone().month(5).zone()},day:function(a){var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=U(a,this.lang()),this.add({d:a-b})):b},month:function(a){var b,c=this._isUTC?"UTC":"";return null!=a?"string"==typeof a&&(a=this.lang().monthsParse(a),"number"!=typeof a)?this:(b=this.date(),this.date(1),this._d["set"+c+"Month"](a),this.date(Math.min(b,this.daysInMonth())),cb.updateOffset(this),this):this._d["get"+c+"Month"]()},startOf:function(a){switch(a=n(a)){case"year":this.month(0);case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a?this.weekday(0):"isoWeek"===a&&this.isoWeekday(1),this},endOf:function(a){return a=n(a),this.startOf(a).add("isoWeek"===a?"week":a,1).subtract("ms",1)},isAfter:function(a,b){return b="undefined"!=typeof b?b:"millisecond",+this.clone().startOf(b)>+cb(a).startOf(b)},isBefore:function(a,b){return b="undefined"!=typeof b?b:"millisecond",+this.clone().startOf(b)<+cb(a).startOf(b)},isSame:function(a,b){return b=b||"ms",+this.clone().startOf(b)===+y(a,this).startOf(b)},min:function(a){return a=cb.apply(null,arguments),this>a?this:a},max:function(a){return a=cb.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=H(a)),Math.abs(a)<16&&(a=60*a),this._offset=a,this._isUTC=!0,b!==a&&j(this,cb.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?cb(a).zone():0,(this.zone()-a)%60===0},daysInMonth:function(){return r(this.year(),this.month())},dayOfYear:function(a){var b=gb((cb(this).startOf("day")-cb(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=X(this,this.lang()._week.dow,this.lang()._week.doy).year;return null==a?b:this.add("y",a-b)},isoWeekYear:function(a){var b=X(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=X(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=n(a),this[a]()},set:function(a,b){return a=n(a),"function"==typeof this[a]&&this[a](b),this},lang:function(b){return b===a?this._lang:(this._lang=B(b),this)}}),db=0;db<Ob.length;db++)$(Ob[db].toLowerCase().replace(/s$/,""),Ob[db]);$("year","FullYear"),cb.fn.days=cb.fn.day,cb.fn.months=cb.fn.month,cb.fn.weeks=cb.fn.week,cb.fn.isoWeeks=cb.fn.isoWeek,cb.fn.toJSON=cb.fn.toISOString,g(cb.duration.fn=f.prototype,{_bubble:function(){var a,b,c,d,e=this._milliseconds,f=this._days,g=this._months,i=this._data;i.milliseconds=e%1e3,a=h(e/1e3),i.seconds=a%60,b=h(a/60),i.minutes=b%60,c=h(b/60),i.hours=c%24,f+=h(c/24),i.days=f%30,g+=h(f/30),i.months=g%12,d=h(g/12),i.years=d},weeks:function(){return h(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*q(this._months/12)},humanize:function(a){var b=+this,c=W(b,!a,this.lang());return a&&(c=this.lang().pastFuture(b,c)),this.lang().postformat(c)},add:function(a,b){var c=cb.duration(a,b);return this._milliseconds+=c._milliseconds,this._days+=c._days,this._months+=c._months,this._bubble(),this},subtract:function(a,b){var c=cb.duration(a,b);return this._milliseconds-=c._milliseconds,this._days-=c._days,this._months-=c._months,this._bubble(),this},get:function(a){return a=n(a),this[a.toLowerCase()+"s"]()},as:function(a){return a=n(a),this["as"+a.charAt(0).toUpperCase()+a.slice(1)+"s"]()},lang:cb.fn.lang,toIsoString:function(){var a=Math.abs(this.years()),b=Math.abs(this.months()),c=Math.abs(this.days()),d=Math.abs(this.hours()),e=Math.abs(this.minutes()),f=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(a?a+"Y":"")+(b?b+"M":"")+(c?c+"D":"")+(d||e||f?"T":"")+(d?d+"H":"")+(e?e+"M":"")+(f?f+"S":""):"P0D"}});for(db in Pb)Pb.hasOwnProperty(db)&&(ab(db,Pb[db]),_(db.toLowerCase()));ab("Weeks",6048e5),cb.duration.fn.asMonths=function(){return(+this-31536e6*this.years())/2592e6+12*this.years()},cb.lang("en",{ordinal:function(a){var b=a%10,c=1===q(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),pb?(module.exports=cb,bb(!0)):"function"==typeof define&&define.amd?define("moment",function(b,c,d){return d.config&&d.config()&&d.config().noGlobal!==!0&&bb(d.config().noGlobal===a),cb}):bb()}).call(this);
176\ No newline at end of file
177
178=== added directory 'addons/web/static/lib/bootstrap-datetimepicker/src'
179=== added directory 'addons/web/static/lib/bootstrap-datetimepicker/src/css'
180=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/css/bootstrap-datetimepicker.css'
181--- addons/web/static/lib/bootstrap-datetimepicker/src/css/bootstrap-datetimepicker.css 1970-01-01 00:00:00 +0000
182+++ addons/web/static/lib/bootstrap-datetimepicker/src/css/bootstrap-datetimepicker.css 2014-02-14 15:04:13 +0000
183@@ -0,0 +1,184 @@
184+/**
185+ * Build file for the dist version of datetimepicker.css
186+ */
187+/*!
188+ * Datetimepicker for Bootstrap v3
189+ * https://github.com/Eonasdan/bootstrap-datetimepicker/
190+ * Copyright 2012 Stefan Petre
191+ * Licensed under the Apache License v2.0
192+ * http://www.apache.org/licenses/LICENSE-2.0
193+ *
194+ */
195+.bootstrap-datetimepicker-widget {
196+ top: 0;
197+ left: 0;
198+ width: 250px;
199+ padding: 4px;
200+ margin-top: 1px;
201+ z-index: 9999;
202+ border-radius: 4px;
203+ /*.dow {
204+ border-top: 1px solid #ddd !important;
205+ }*/
206+}
207+.bootstrap-datetimepicker-widget .btn {
208+ padding: 6px;
209+}
210+.bootstrap-datetimepicker-widget:before {
211+ content: '';
212+ display: inline-block;
213+ border-left: 7px solid transparent;
214+ border-right: 7px solid transparent;
215+ border-bottom: 7px solid #ccc;
216+ border-bottom-color: rgba(0, 0, 0, 0.2);
217+ position: absolute;
218+ top: -7px;
219+ left: 6px;
220+}
221+.bootstrap-datetimepicker-widget:after {
222+ content: '';
223+ display: inline-block;
224+ border-left: 6px solid transparent;
225+ border-right: 6px solid transparent;
226+ border-bottom: 6px solid white;
227+ position: absolute;
228+ top: -6px;
229+ left: 7px;
230+}
231+.bootstrap-datetimepicker-widget.pull-right:before {
232+ left: auto;
233+ right: 6px;
234+}
235+.bootstrap-datetimepicker-widget.pull-right:after {
236+ left: auto;
237+ right: 7px;
238+}
239+.bootstrap-datetimepicker-widget > ul {
240+ list-style-type: none;
241+ margin: 0;
242+}
243+.bootstrap-datetimepicker-widget .timepicker-hour,
244+.bootstrap-datetimepicker-widget .timepicker-minute,
245+.bootstrap-datetimepicker-widget .timepicker-second {
246+ width: 100%;
247+ font-weight: bold;
248+ font-size: 1.2em;
249+}
250+.bootstrap-datetimepicker-widget table[data-hour-format="12"] .separator {
251+ width: 4px;
252+ padding: 0;
253+ margin: 0;
254+}
255+.bootstrap-datetimepicker-widget .datepicker > div {
256+ display: none;
257+}
258+.bootstrap-datetimepicker-widget .picker-switch {
259+ text-align: center;
260+}
261+.bootstrap-datetimepicker-widget table {
262+ width: 100%;
263+ margin: 0;
264+}
265+.bootstrap-datetimepicker-widget td,
266+.bootstrap-datetimepicker-widget th {
267+ text-align: center;
268+ width: 20px;
269+ height: 20px;
270+ border-radius: 4px;
271+}
272+.bootstrap-datetimepicker-widget td.day:hover,
273+.bootstrap-datetimepicker-widget td.hour:hover,
274+.bootstrap-datetimepicker-widget td.minute:hover,
275+.bootstrap-datetimepicker-widget td.second:hover {
276+ background: #eeeeee;
277+ cursor: pointer;
278+}
279+.bootstrap-datetimepicker-widget td.old,
280+.bootstrap-datetimepicker-widget td.new {
281+ color: #999999;
282+}
283+.bootstrap-datetimepicker-widget td.active,
284+.bootstrap-datetimepicker-widget td.active:hover {
285+ background-color: #428bca;
286+ color: #fff;
287+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
288+}
289+.bootstrap-datetimepicker-widget td.disabled,
290+.bootstrap-datetimepicker-widget td.disabled:hover {
291+ background: none;
292+ color: #999999;
293+ cursor: not-allowed;
294+}
295+.bootstrap-datetimepicker-widget td span {
296+ display: block;
297+ width: 47px;
298+ height: 54px;
299+ line-height: 54px;
300+ float: left;
301+ margin: 2px;
302+ cursor: pointer;
303+ border-radius: 4px;
304+}
305+.bootstrap-datetimepicker-widget td span:hover {
306+ background: #eeeeee;
307+}
308+.bootstrap-datetimepicker-widget td span.active {
309+ background-color: #428bca;
310+ color: #fff;
311+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
312+}
313+.bootstrap-datetimepicker-widget td span.old {
314+ color: #999999;
315+}
316+.bootstrap-datetimepicker-widget td span.disabled,
317+.bootstrap-datetimepicker-widget td span.disabled:hover {
318+ background: none;
319+ color: #999999;
320+ cursor: not-allowed;
321+}
322+.bootstrap-datetimepicker-widget th.switch {
323+ width: 145px;
324+}
325+.bootstrap-datetimepicker-widget th.next,
326+.bootstrap-datetimepicker-widget th.prev {
327+ font-size: 21px;
328+}
329+.bootstrap-datetimepicker-widget th.disabled,
330+.bootstrap-datetimepicker-widget th.disabled:hover {
331+ background: none;
332+ color: #999999;
333+ cursor: not-allowed;
334+}
335+.bootstrap-datetimepicker-widget thead tr:first-child th {
336+ cursor: pointer;
337+}
338+.bootstrap-datetimepicker-widget thead tr:first-child th:hover {
339+ background: #eeeeee;
340+}
341+.input-group.date .input-group-addon span {
342+ display: block;
343+ cursor: pointer;
344+ width: 16px;
345+ height: 16px;
346+}
347+.bootstrap-datetimepicker-widget.left-oriented:before {
348+ left: auto;
349+ right: 6px;
350+}
351+.bootstrap-datetimepicker-widget.left-oriented:after {
352+ left: auto;
353+ right: 7px;
354+}
355+.bootstrap-datetimepicker-widget ul.list-unstyled li.in div.timepicker div.timepicker-picker table.table-condensed tbody > tr > td {
356+ padding: 0px !important;
357+}
358+.bootstrap-datetimepicker-widget .cw {
359+ font-size: 10px;
360+ width: 12px;
361+ padding: 0 2px 0 5px;
362+ vertical-align: middle;
363+}
364+.bootstrap-datetimepicker-widget thead tr:first-child th.cw {
365+ cursor: default;
366+ background-color: transparent;
367+}
368\ No newline at end of file
369
370=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/css/bootstrap-datetimepicker.min.css'
371--- addons/web/static/lib/bootstrap-datetimepicker/src/css/bootstrap-datetimepicker.min.css 1970-01-01 00:00:00 +0000
372+++ addons/web/static/lib/bootstrap-datetimepicker/src/css/bootstrap-datetimepicker.min.css 2014-02-14 15:04:13 +0000
373@@ -0,0 +1,8 @@
374+/*!
375+ * Datetimepicker for Bootstrap v3
376+ * https://github.com/Eonasdan/bootstrap-datetimepicker/
377+ * Copyright 2012 Stefan Petre
378+ * Licensed under the Apache License v2.0
379+ * http://www.apache.org/licenses/LICENSE-2.0
380+ *
381+ */.bootstrap-datetimepicker-widget{top:0;left:0;width:250px;padding:4px;margin-top:1px;z-index:9999;border-radius:4px}.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 #fff;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:#eee;cursor:pointer}.bootstrap-datetimepicker-widget td.old,.bootstrap-datetimepicker-widget td.new{color:#999}.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:#999;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:#eee}.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:#999}.bootstrap-datetimepicker-widget td span.disabled,.bootstrap-datetimepicker-widget td span.disabled:hover{background:none;color:#999;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:#999;cursor:not-allowed}.bootstrap-datetimepicker-widget thead tr:first-child th{cursor:pointer}.bootstrap-datetimepicker-widget thead tr:first-child th:hover{background:#eee}.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:0 !important}.bootstrap-datetimepicker-widget .cw {font-size: 10px;width: 12px;padding: 0 2px 0 5px;vertical-align: middle;}.bootstrap-datetimepicker-widget thead tr:first-child th.cw {cursor: default;background-color: transparent;}
382\ No newline at end of file
383
384=== added directory 'addons/web/static/lib/bootstrap-datetimepicker/src/js'
385=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/bootstrap-datetimepicker.js'
386--- addons/web/static/lib/bootstrap-datetimepicker/src/js/bootstrap-datetimepicker.js 1970-01-01 00:00:00 +0000
387+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/bootstrap-datetimepicker.js 2014-02-14 15:04:13 +0000
388@@ -0,0 +1,1111 @@
389+/**
390+ * version 2.1.20
391+ * @license
392+ * =========================================================
393+ * bootstrap-datetimepicker.js
394+ * http://www.eyecon.ro/bootstrap-datepicker
395+ * =========================================================
396+ * Copyright 2012 Stefan Petre
397+ *
398+ * Contributions:
399+ * - updated for Bootstrap v3 by Jonathan Peterson (@Eonasdan) and (almost)
400+ * completely rewritten to use Momentjs
401+ * - based on tarruda's bootstrap-datepicker
402+ *
403+ * Licensed under the Apache License, Version 2.0 (the "License");
404+ * you may not use this file except in compliance with the License.
405+ * You may obtain a copy of the License at
406+ *
407+ * http://www.apache.org/licenses/LICENSE-2.0
408+ *
409+ * Unless required by applicable law or agreed to in writing, software
410+ * distributed under the License is distributed on an "AS IS" BASIS,
411+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
412+ * See the License for the specific language governing permissions and
413+ * limitations under the License.
414+ * =========================================================
415+ */
416+(function (factory) {
417+ if (typeof define === 'function' && define.amd) {
418+ // AMD is used - Register as an anonymous module.
419+ define(['jquery', 'moment'], factory);
420+ } else {
421+ // AMD is not used - Attempt to fetch dependencies from scope.
422+ if(!jQuery){
423+ throw 'bootstrap-datetimepicker requires jQuery to be loaded first';
424+ }else if(!moment) {
425+ throw 'bootstrap-datetimepicker requires moment.js to be loaded first';
426+ }else{
427+ factory(jQuery, moment);
428+ }
429+ }
430+}
431+
432+(function ($, moment) {
433+ if (typeof moment === 'undefined') {
434+ alert("momentjs is requried");
435+ throw new Error('momentjs is requried');
436+ };
437+
438+ var dpgId = 0,
439+
440+ pMoment = moment,
441+
442+// ReSharper disable once InconsistentNaming
443+ DateTimePicker = function (element, options) {
444+ var defaults = {
445+ pickDate: true,
446+ pickTime: true,
447+ useMinutes: true,
448+ useSeconds: false,
449+ minuteStepping: 1,
450+ startDate: new pMoment({ y: 1970 }),
451+ endDate: new pMoment().add(50, "y"),
452+ collapse: true,
453+ language: "en",
454+ defaultDate: "",
455+ disabledDates: [],
456+ enabledDates: false,
457+ icons: {},
458+ useStrict: false,
459+ calendarWeeks: false,
460+ },
461+
462+ icons = {
463+ time: 'glyphicon glyphicon-time',
464+ date: 'glyphicon glyphicon-calendar',
465+ up: 'glyphicon glyphicon-chevron-up',
466+ down: 'glyphicon glyphicon-chevron-down'
467+ },
468+
469+ picker = this,
470+
471+ init = function () {
472+
473+ var icon = false, i, dDate, longDateFormat;
474+ picker.options = $.extend({}, defaults, options);
475+ picker.options.icons = $.extend({}, icons, picker.options.icons);
476+
477+ picker.element = $(element);
478+
479+ dataToOptions();
480+
481+ if (!(picker.options.pickTime || picker.options.pickDate))
482+ throw new Error('Must choose at least one picker');
483+
484+ picker.id = dpgId++;
485+ pMoment.lang(picker.options.language);
486+ picker.date = pMoment();
487+ picker.unset = false;
488+ picker.isInput = picker.element.is('input');
489+ picker.component = false;
490+
491+ if (picker.element.hasClass('input-group')) {
492+ if (picker.element.find('.datepickerbutton').size() == 0) {//in case there is more then one 'input-group-addon` #48
493+ picker.component = picker.element.find("[class^='input-group-']");
494+ }
495+ else {
496+ picker.component = picker.element.find('.datepickerbutton');
497+ }
498+ }
499+ picker.format = picker.options.format;
500+
501+ longDateFormat = pMoment()._lang._longDateFormat;
502+
503+ if (!picker.format) {
504+ if (picker.isInput) picker.format = picker.element.data('format');
505+ else picker.format = picker.element.find('input').data('format');
506+ if (!picker.format) {
507+ picker.format = (picker.options.pickDate ? longDateFormat.L : '');
508+ if (picker.options.pickDate && picker.options.pickTime) picker.format += ' ';
509+ picker.format += (picker.options.pickTime ? longDateFormat.LT : '');
510+ if (picker.options.useSeconds) {
511+ if (~longDateFormat.LT.indexOf(' A')) {
512+ picker.format = picker.format.split(" A")[0] + ":ss A";
513+ }
514+ else {
515+ picker.format += ':ss';
516+ }
517+ }
518+ }
519+ }
520+
521+ picker.options.use24hours = picker.format.toLowerCase().indexOf("a") < 1;
522+
523+ if (picker.component) icon = picker.component.find('span');
524+
525+ if (picker.options.pickTime) {
526+ if (icon) icon.addClass(picker.options.icons.time);
527+ }
528+ if (picker.options.pickDate) {
529+ if (icon) {
530+ icon.removeClass(picker.options.icons.time);
531+ icon.addClass(picker.options.icons.date);
532+ }
533+ }
534+
535+ picker.widget = $(getTemplate(picker.options.pickDate, picker.options.pickTime, picker.options.collapse)).appendTo('body');
536+ picker.minViewMode = picker.options.minViewMode || picker.element.data('date-minviewmode') || 0;
537+ if (typeof picker.minViewMode === 'string') {
538+ switch (picker.minViewMode) {
539+ case 'months':
540+ picker.minViewMode = 1;
541+ break;
542+ case 'years':
543+ picker.minViewMode = 2;
544+ break;
545+ default:
546+ picker.minViewMode = 0;
547+ break;
548+ }
549+ }
550+
551+ if (picker.options.calendarWeeks)
552+ picker.widget.find('tfoot th.today')
553+ .attr('colspan', function(i, val){
554+ return parseInt(val) + 1;
555+ });
556+
557+ picker.viewMode = picker.options.viewMode || picker.element.data('date-viewmode') || 0;
558+ if (typeof picker.viewMode === 'string') {
559+ switch (picker.viewMode) {
560+ case 'months':
561+ picker.viewMode = 1;
562+ break;
563+ case 'years':
564+ picker.viewMode = 2;
565+ break;
566+ default:
567+ picker.viewMode = 0;
568+ break;
569+ }
570+ }
571+
572+ for (i = 0; i < picker.options.disabledDates.length; i++) {
573+ dDate = picker.options.disabledDates[i];
574+ dDate = pMoment(dDate);
575+ //if this is not a valid date then set it to the startdate -1 day so it's disabled.
576+ if (!dDate.isValid()) dDate = pMoment(picker.options.startDate).subtract(1, "day");
577+ picker.options.disabledDates[i] = dDate.format("L");
578+ }
579+
580+ for (i = 0; i < picker.options.enabledDates.length; i++) {
581+ dDate = picker.options.enabledDates[i];
582+ dDate = pMoment(dDate);
583+ //if this is not a valid date then set it to the startdate -1 day so it's disabled.
584+ if (!dDate.isValid()) dDate = pMoment(picker.options.startDate).subtract(1, "day");
585+ picker.options.enabledDates[i] = dDate.format("L");
586+ }
587+ picker.startViewMode = picker.viewMode;
588+ picker.setStartDate(picker.options.startDate || picker.element.data('date-startdate'));
589+ picker.setEndDate(picker.options.endDate || picker.element.data('date-enddate'));
590+ fillDow();
591+ fillMonths();
592+ fillHours();
593+ fillMinutes();
594+ fillSeconds();
595+ update();
596+ showMode();
597+ attachDatePickerEvents();
598+ if (picker.options.defaultDate !== "") picker.setValue(picker.options.defaultDate);
599+ },
600+
601+ dataToOptions = function () {
602+ var eData = picker.element.data();
603+ if (eData.pickdate !== undefined) picker.options.pickDate = eData.pickdate;
604+ if (eData.picktime !== undefined) picker.options.pickTime = eData.picktime;
605+ if (eData.useminutes !== undefined) picker.options.useMinutes = eData.useminutes;
606+ if (eData.useseconds !== undefined) picker.options.useSeconds = eData.useseconds;
607+ if (eData.minutestepping !== undefined) picker.options.minuteStepping = eData.minutestepping;
608+ if (eData.startdate !== undefined) picker.options.startDate = eData.startdate;
609+ if (eData.enddate !== undefined) picker.options.endDate = eData.enddate;
610+ if (eData.collapse !== undefined) picker.options.collapse = eData.collapse;
611+ if (eData.language !== undefined) picker.options.language = eData.language;
612+ if (eData.defaultdate !== undefined) picker.options.defaultDate = eData.defaultdate;
613+ if (eData.disableddates !== undefined) picker.options.disabledDates = eData.disableddates;
614+ if (eData.enableddates !== undefined) picker.options.enabledDates = eData.enableddates;
615+ if (eData.icons !== undefined) picker.options.icons = eData.icons;
616+ if (eData.usestrict !== undefined) picker.options.useStrict = eData.usestrict;
617+ if (eData.calendarWeeks !== undefined) picker.options.calendarWeeks = eData.calendarWeeks;
618+ },
619+
620+ place = function () {
621+ var position = 'absolute',
622+ offset = picker.component ? picker.component.offset() : picker.element.offset(), $window = $(window);
623+ picker.width = picker.component ? picker.component.outerWidth() : picker.element.outerWidth();
624+ offset.top = offset.top + picker.element.outerHeight();
625+
626+ //if (offset.top + picker.widget.height() > $window.height()) offset.top = offset.top - (picker.widget.height() + picker.height + 10);
627+
628+ if (picker.options.width !== undefined) {
629+ picker.widget.width(picker.options.width);
630+ }
631+
632+ if (picker.options.orientation === 'left') {
633+ picker.widget.addClass('left-oriented');
634+ offset.left = offset.left - picker.widget.width() + 20;
635+ }
636+
637+ if (isInFixed()) {
638+ position = 'fixed';
639+ offset.top -= $window.scrollTop();
640+ offset.left -= $window.scrollLeft();
641+ }
642+
643+ if ($window.width() < offset.left + picker.widget.outerWidth()) {
644+ offset.right = $window.width() - offset.left - picker.width;
645+ offset.left = 'auto';
646+ picker.widget.addClass('pull-right');
647+ } else {
648+ offset.right = 'auto';
649+ picker.widget.removeClass('pull-right');
650+ }
651+
652+ picker.widget.css({
653+ position: position,
654+ top: offset.top,
655+ left: offset.left,
656+ right: offset.right
657+ });
658+ },
659+
660+ notifyChange = function (oldDate, eventType) {
661+ picker.element.trigger({
662+ type: 'change.dp',
663+ date: pMoment(picker.date),
664+ oldDate: pMoment(oldDate)
665+ });
666+
667+ //if (eventType !== 'change')
668+ //picker.element.change();
669+ },
670+
671+ notifyError = function (date) {
672+ picker.element.trigger({
673+ type: 'error.dp',
674+ date: pMoment(date)
675+ });
676+ },
677+
678+ update = function (newDate) {
679+ pMoment.lang(picker.options.language);
680+ var dateStr = newDate;
681+ if (!dateStr) {
682+ if (picker.isInput) {
683+ dateStr = picker.element.val();
684+ } else {
685+ dateStr = picker.element.find('input').val();
686+ }
687+ if (dateStr) picker.date = pMoment(dateStr, picker.format, picker.options.useStrict);
688+ if (!picker.date) picker.date = pMoment();
689+ }
690+ picker.viewDate = pMoment(picker.date).startOf("month");
691+ fillDate();
692+ fillTime();
693+ },
694+
695+
696+ fillDow = function () {
697+ pMoment.lang(picker.options.language);
698+ var html = $('<tr>'), weekdaysMin = pMoment.weekdaysMin(), i;
699+ if(picker.options.calendarWeeks){
700+ var cell = '<th class="cw">Wk</th>';
701+ html.append(cell);
702+ // picker.widget.find('.datepicker-days thead tr:first-child').prepend(cell);
703+ }
704+ if (pMoment()._lang._week.dow == 0) { // starts on Sunday
705+ for(i = 0; i < 7; i++) {
706+ html.append('<th class="dow">' + weekdaysMin[i] + '</th>');
707+ }
708+ } else {
709+ for (i = 1; i < 8; i++) {
710+ if (i == 7) {
711+ html.append('<th class="dow">' + weekdaysMin[0] + '</th>');
712+ } else {
713+ html.append('<th class="dow">' + weekdaysMin[i] + '</th>');
714+ }
715+ }
716+ }
717+ picker.widget.find('.datepicker-days thead').append(html);
718+ },
719+
720+ fillMonths = function () {
721+ pMoment.lang(picker.options.language);
722+ var html = '', i = 0, monthsShort = pMoment.monthsShort();
723+ while (i < 12) {
724+ html += '<span class="month">' + monthsShort[i++] + '</span>';
725+ }
726+ picker.widget.find('.datepicker-months td').append(html);
727+ },
728+
729+ d = function() {
730+ return new Date(Date.UTC.apply(Date, arguments))
731+ },
732+
733+ fillDate = function () {
734+ pMoment.lang(picker.options.language);
735+ var year = picker.viewDate.year(),
736+ month = picker.viewDate.month(),
737+ startYear = picker.options.startDate.year(),
738+ startMonth = picker.options.startDate.month(),
739+ endYear = picker.options.endDate.year(),
740+ endMonth = picker.options.endDate.month(),
741+ prevMonth, nextMonth, html = [], row, clsName, i, days, yearCont, currentYear, months = pMoment.months();
742+
743+ picker.widget.find('.datepicker-days').find('.disabled').removeClass('disabled');
744+ picker.widget.find('.datepicker-months').find('.disabled').removeClass('disabled');
745+ picker.widget.find('.datepicker-years').find('.disabled').removeClass('disabled');
746+
747+ picker.widget.find('.datepicker-days th:eq(1)').text(
748+ months[month] + ' ' + year);
749+
750+ prevMonth = pMoment(picker.viewDate).subtract("months", 1);
751+ days = prevMonth.daysInMonth();
752+ prevMonth.date(days).startOf('week');
753+ if ((year == startYear && month <= startMonth) || year < startYear) {
754+ picker.widget.find('.datepicker-days th:eq(0)').addClass('disabled');
755+ }
756+ if ((year == endYear && month >= endMonth) || year > endYear) {
757+ picker.widget.find('.datepicker-days th:eq(2)').addClass('disabled');
758+ }
759+
760+ nextMonth = pMoment(prevMonth).add(42, "d");
761+ while (prevMonth.isBefore(nextMonth)) {
762+ if (prevMonth.weekday() === pMoment().startOf('week').weekday()) {
763+ row = $('<tr>');
764+ html.push(row);
765+ if(picker.options.calendarWeeks){
766+ var
767+ ws = new Date(+prevMonth + (pMoment().startOf('week').weekday() - prevMonth.weekday() - 7) % 7 * 864e5),
768+ th = new Date(+ws + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),
769+ yth = new Date(+(yth = d(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay())%7*864e5),
770+ calWeek = (th - yth) / 864e5 / 7 + 1;
771+ row.append('<td class="cw">'+ parseInt(calWeek) +'</td>');
772+ }
773+ }
774+ clsName = '';
775+ if (prevMonth.year() < year || (prevMonth.year() == year && prevMonth.month() < month)) {
776+ clsName += ' old';
777+ } else if (prevMonth.year() > year || (prevMonth.year() == year && prevMonth.month() > month)) {
778+ clsName += ' new';
779+ }
780+ if (prevMonth.isSame(pMoment({ y: picker.date.year(), M: picker.date.month(), d: picker.date.date() }))) {
781+ clsName += ' active';
782+ }
783+ if ((pMoment(prevMonth).add(1, "d") <= picker.options.startDate) || (prevMonth > picker.options.endDate) || isInDisableDates(prevMonth) || !isInEnableDates(prevMonth)) {
784+ clsName += ' disabled';
785+ }
786+ row.append('<td class="day' + clsName + '">' + prevMonth.date() + '</td>');
787+ prevMonth.add(1, "d");
788+ }
789+ picker.widget.find('.datepicker-days tbody').empty().append(html);
790+ currentYear = pMoment().year(), months = picker.widget.find('.datepicker-months')
791+ .find('th:eq(1)').text(year).end().find('span').removeClass('active');
792+ if (currentYear === year) {
793+ months.eq(pMoment().month()).addClass('active');
794+ }
795+ if (currentYear - 1 < startYear) {
796+ picker.widget.find('.datepicker-months th:eq(0)').addClass('disabled');
797+ }
798+ if (currentYear + 1 > endYear) {
799+ picker.widget.find('.datepicker-months th:eq(2)').addClass('disabled');
800+ }
801+ for (i = 0; i < 12; i++) {
802+ if ((year == startYear && startMonth > i) || (year < startYear)) {
803+ $(months[i]).addClass('disabled');
804+ } else if ((year == endYear && endMonth < i) || (year > endYear)) {
805+ $(months[i]).addClass('disabled');
806+ }
807+ }
808+
809+ html = '';
810+ year = parseInt(year / 10, 10) * 10;
811+ yearCont = picker.widget.find('.datepicker-years').find(
812+ 'th:eq(1)').text(year + '-' + (year + 9)).end().find('td');
813+ picker.widget.find('.datepicker-years').find('th').removeClass('disabled');
814+ if (startYear > year) {
815+ picker.widget.find('.datepicker-years').find('th:eq(0)').addClass('disabled');
816+ }
817+ if (endYear < year + 9) {
818+ picker.widget.find('.datepicker-years').find('th:eq(2)').addClass('disabled');
819+ }
820+ year -= 1;
821+ for (i = -1; i < 11; i++) {
822+ html += '<span class="year' + (i === -1 || i === 10 ? ' old' : '') + (currentYear === year ? ' active' : '') + ((year < startYear || year > endYear) ? ' disabled' : '') + '">' + year + '</span>';
823+ year += 1;
824+ }
825+ yearCont.html(html);
826+ },
827+
828+ fillHours = function () {
829+ pMoment.lang(picker.options.language);
830+ var table = picker.widget.find('.timepicker .timepicker-hours table'), html = '', current, i, j;
831+ table.parent().hide();
832+ if (picker.options.use24hours) {
833+ current = 0;
834+ for (i = 0; i < 6; i += 1) {
835+ html += '<tr>';
836+ for (j = 0; j < 4; j += 1) {
837+ html += '<td class="hour">' + padLeft(current.toString()) + '</td>';
838+ current++;
839+ }
840+ html += '</tr>';
841+ }
842+ }
843+ else {
844+ current = 1;
845+ for (i = 0; i < 3; i += 1) {
846+ html += '<tr>';
847+ for (j = 0; j < 4; j += 1) {
848+ html += '<td class="hour">' + padLeft(current.toString()) + '</td>';
849+ current++;
850+ }
851+ html += '</tr>';
852+ }
853+ }
854+ table.html(html);
855+ },
856+
857+ fillMinutes = function () {
858+ var table = picker.widget.find('.timepicker .timepicker-minutes table'), html = '', current = 0, i, j;
859+ table.parent().hide();
860+ for (i = 0; i < 5; i++) {
861+ html += '<tr>';
862+ for (j = 0; j < 4; j += 1) {
863+ html += '<td class="minute">' + padLeft(current.toString()) + '</td>';
864+ current += 3;
865+ }
866+ html += '</tr>';
867+ }
868+ table.html(html);
869+ },
870+
871+ fillSeconds = function () {
872+ var table = picker.widget.find('.timepicker .timepicker-seconds table'), html = '', current = 0, i, j;
873+ table.parent().hide();
874+ for (i = 0; i < 5; i++) {
875+ html += '<tr>';
876+ for (j = 0; j < 4; j += 1) {
877+ html += '<td class="second">' + padLeft(current.toString()) + '</td>';
878+ current += 3;
879+ }
880+ html += '</tr>';
881+ }
882+ table.html(html);
883+ },
884+
885+ fillTime = function () {
886+ if (!picker.date) return;
887+ var timeComponents = picker.widget.find('.timepicker span[data-time-component]'),
888+ hour = picker.date.hours(),
889+ period = 'AM';
890+ if (!picker.options.use24hours) {
891+ if (hour >= 12) period = 'PM';
892+ if (hour === 0) hour = 12;
893+ else if (hour != 12) hour = hour % 12;
894+ picker.widget.find('.timepicker [data-action=togglePeriod]').text(period);
895+ }
896+ timeComponents.filter('[data-time-component=hours]').text(padLeft(hour));
897+ timeComponents.filter('[data-time-component=minutes]').text(padLeft(picker.date.minutes()));
898+ timeComponents.filter('[data-time-component=seconds]').text(padLeft(picker.date.second()));
899+ },
900+
901+ click = function (e) {
902+ e.stopPropagation();
903+ e.preventDefault();
904+ picker.unset = false;
905+ var target = $(e.target).closest('span, td, th'), month, year, step, day, oldDate = pMoment(picker.date);
906+ if (target.length === 1) {
907+ if (!target.is('.disabled')) {
908+ switch (target[0].nodeName.toLowerCase()) {
909+ case 'th':
910+ switch (target[0].className) {
911+ case 'switch':
912+ showMode(1);
913+ break;
914+ case 'prev':
915+ case 'next':
916+ step = dpGlobal.modes[picker.viewMode].navStep;
917+ if (target[0].className === 'prev') step = step * -1;
918+ picker.viewDate.add(step, dpGlobal.modes[picker.viewMode].navFnc);
919+ fillDate();
920+ break;
921+ }
922+ break;
923+ case 'span':
924+ if (target.is('.month')) {
925+ month = target.parent().find('span').index(target);
926+ picker.viewDate.month(month);
927+ } else {
928+ year = parseInt(target.text(), 10) || 0;
929+ picker.viewDate.year(year);
930+ }
931+ if (picker.viewMode !== 0) {
932+ picker.date = pMoment({
933+ y: picker.viewDate.year(),
934+ M: picker.viewDate.month(),
935+ d: picker.viewDate.date(),
936+ h: picker.date.hours(),
937+ m: picker.date.minutes()
938+ });
939+ notifyChange(oldDate, e.type);
940+ }
941+ showMode(-1);
942+ fillDate();
943+ break;
944+ case 'td':
945+ if (target.is('.day')) {
946+ day = parseInt(target.text(), 10) || 1;
947+ month = picker.viewDate.month();
948+ year = picker.viewDate.year();
949+ if (target.is('.old')) {
950+ if (month === 0) {
951+ month = 11;
952+ year -= 1;
953+ } else {
954+ month -= 1;
955+ }
956+ } else if (target.is('.new')) {
957+ if (month == 11) {
958+ month = 0;
959+ year += 1;
960+ } else {
961+ month += 1;
962+ }
963+ }
964+ picker.date = pMoment({
965+ y: year,
966+ M: month,
967+ d: day,
968+ h: picker.date.hours(),
969+ m: picker.date.minutes()
970+ }
971+ );
972+ picker.viewDate = pMoment({
973+ y: year, M: month, d: Math.min(28, day)
974+ });
975+ fillDate();
976+ set();
977+ notifyChange(oldDate, e.type);
978+ }
979+ break;
980+ }
981+ }
982+ }
983+ },
984+
985+ actions = {
986+ incrementHours: function () {
987+ checkDate("add", "hours", 1);
988+ },
989+
990+ incrementMinutes: function () {
991+ checkDate("add", "minutes", picker.options.minuteStepping);
992+ },
993+
994+ incrementSeconds: function () {
995+ checkDate("add", "seconds", 1);
996+ },
997+
998+ decrementHours: function () {
999+ checkDate("subtract", "hours", 1);
1000+ },
1001+
1002+ decrementMinutes: function () {
1003+ checkDate("subtract", "minutes", picker.options.minuteStepping);
1004+ },
1005+
1006+ decrementSeconds: function () {
1007+ checkDate("subtract", "seconds", 1);
1008+ },
1009+
1010+ togglePeriod: function () {
1011+ var hour = picker.date.hours();
1012+ if (hour >= 12) hour -= 12;
1013+ else hour += 12;
1014+ picker.date.hours(hour);
1015+ },
1016+
1017+ showPicker: function () {
1018+ picker.widget.find('.timepicker > div:not(.timepicker-picker)').hide();
1019+ picker.widget.find('.timepicker .timepicker-picker').show();
1020+ },
1021+
1022+ showHours: function () {
1023+ picker.widget.find('.timepicker .timepicker-picker').hide();
1024+ picker.widget.find('.timepicker .timepicker-hours').show();
1025+ },
1026+
1027+ showMinutes: function () {
1028+ picker.widget.find('.timepicker .timepicker-picker').hide();
1029+ picker.widget.find('.timepicker .timepicker-minutes').show();
1030+ },
1031+
1032+ showSeconds: function () {
1033+ picker.widget.find('.timepicker .timepicker-picker').hide();
1034+ picker.widget.find('.timepicker .timepicker-seconds').show();
1035+ },
1036+
1037+ selectHour: function (e) {
1038+ picker.date.hours(parseInt($(e.target).text(), 10));
1039+ actions.showPicker.call(picker);
1040+ },
1041+
1042+ selectMinute: function (e) {
1043+ picker.date.minutes(parseInt($(e.target).text(), 10));
1044+ actions.showPicker.call(picker);
1045+ },
1046+
1047+ selectSecond: function (e) {
1048+ picker.date.seconds(parseInt($(e.target).text(), 10));
1049+ actions.showPicker.call(picker);
1050+ }
1051+ },
1052+
1053+ doAction = function (e) {
1054+ var oldDate = pMoment(picker.date), action = $(e.currentTarget).data('action'), rv = actions[action].apply(picker, arguments);
1055+ stopEvent(e);
1056+ if (!picker.date) picker.date = pMoment({ y: 1970 });
1057+ set();
1058+ fillTime();
1059+ notifyChange(oldDate);
1060+ return rv;
1061+ },
1062+
1063+ stopEvent = function (e) {
1064+ e.stopPropagation();
1065+ e.preventDefault();
1066+ },
1067+
1068+ change = function (e) {
1069+ pMoment.lang(picker.options.language);
1070+ var input = $(e.target), oldDate = pMoment(picker.date), d = pMoment(input.val(), Date.parse(picker.format), picker.options.useStrict);
1071+ if (d.isValid()) {
1072+ update();
1073+ picker.setValue(d);
1074+ notifyChange(oldDate);
1075+ set();
1076+ }
1077+ else {
1078+ picker.viewDate = oldDate;
1079+ //picker.setValue(""); // unset the date when the input is erased
1080+ notifyChange(oldDate);
1081+ // notifyError(d); // We don't won't the error message.
1082+ picker.unset = true;
1083+ // input.val(''); // We don't need to clear the value of the inputbox.
1084+ }
1085+ },
1086+
1087+ showMode = function (dir) {
1088+ if (dir) {
1089+ picker.viewMode = Math.max(picker.minViewMode, Math.min(2, picker.viewMode + dir));
1090+ }
1091+
1092+ picker.widget.find('.datepicker > div').hide().filter('.datepicker-' + dpGlobal.modes[picker.viewMode].clsName).show();
1093+ },
1094+
1095+ attachDatePickerEvents = function () {
1096+ var $this, $parent, expanded, closed, collapseData;
1097+ picker.widget.on('click', '.datepicker *', $.proxy(click, this)); // this handles date picker clicks
1098+ picker.widget.on('click', '[data-action]', $.proxy(doAction, this)); // this handles time picker clicks
1099+ picker.widget.on('mousedown', $.proxy(stopEvent, this));
1100+ if (picker.options.pickDate && picker.options.pickTime) {
1101+ picker.widget.on('click.togglePicker', '.accordion-toggle', function (e) {
1102+ e.stopPropagation();
1103+ $this = $(this);
1104+ $parent = $this.closest('ul');
1105+ expanded = $parent.find('.in');
1106+ closed = $parent.find('.collapse:not(.in)');
1107+
1108+ if (expanded && expanded.length) {
1109+ collapseData = expanded.data('collapse');
1110+ if (collapseData && collapseData.transitioning) return;
1111+ expanded.collapse('hide');
1112+ closed.collapse('show');
1113+ $this.find('span').toggleClass(picker.options.icons.time + ' ' + picker.options.icons.date);
1114+ picker.element.find('.input-group-addon span').toggleClass(picker.options.icons.time + ' ' + picker.options.icons.date);
1115+ }
1116+ });
1117+ }
1118+ if (picker.isInput) {
1119+ picker.element.on({
1120+ 'focus': $.proxy(picker.show, this),
1121+ 'change': $.proxy(change, this),
1122+ 'blur': $.proxy(picker.hide, this)
1123+ });
1124+ } else {
1125+ picker.element.on({
1126+ 'change': $.proxy(change, this)
1127+ }, 'input');
1128+ if (picker.component) {
1129+ picker.component.on('click', $.proxy(picker.show, this));
1130+ } else {
1131+ picker.element.on('click', $.proxy(picker.show, this));
1132+ }
1133+ }
1134+ },
1135+
1136+ attachDatePickerGlobalEvents = function () {
1137+ $(window).on(
1138+ 'resize.datetimepicker' + picker.id, $.proxy(place, this));
1139+ if (!picker.isInput) {
1140+ $(document).on(
1141+ 'mousedown.datetimepicker' + picker.id, $.proxy(picker.hide, this));
1142+ }
1143+ },
1144+
1145+ detachDatePickerEvents = function () {
1146+ picker.widget.off('click', '.datepicker *', picker.click);
1147+ picker.widget.off('click', '[data-action]');
1148+ picker.widget.off('mousedown', picker.stopEvent);
1149+ if (picker.options.pickDate && picker.options.pickTime) {
1150+ picker.widget.off('click.togglePicker');
1151+ }
1152+ if (picker.isInput) {
1153+ picker.element.off({
1154+ 'focus': picker.show,
1155+ 'change': picker.change
1156+ });
1157+ } else {
1158+ picker.element.off({
1159+ 'change': picker.change
1160+ }, 'input');
1161+ if (picker.component) {
1162+ picker.component.off('click', picker.show);
1163+ } else {
1164+ picker.element.off('click', picker.show);
1165+ }
1166+ }
1167+ },
1168+
1169+ detachDatePickerGlobalEvents = function () {
1170+ $(window).off('resize.datetimepicker' + picker.id);
1171+ if (!picker.isInput) {
1172+ $(document).off('mousedown.datetimepicker' + picker.id);
1173+ }
1174+ },
1175+
1176+ isInFixed = function () {
1177+ if (picker.element) {
1178+ var parents = picker.element.parents(), inFixed = false, i;
1179+ for (i = 0; i < parents.length; i++) {
1180+ if ($(parents[i]).css('position') == 'fixed') {
1181+ inFixed = true;
1182+ break;
1183+ }
1184+ }
1185+ ;
1186+ return inFixed;
1187+ } else {
1188+ return false;
1189+ }
1190+ },
1191+
1192+ set = function () {
1193+ pMoment.lang(picker.options.language);
1194+ var formatted = '', input;
1195+ if (!picker.unset) formatted = pMoment(picker.date).format(picker.format);
1196+ if (!picker.isInput) {
1197+ if (picker.component) {
1198+ input = picker.element.find('input');
1199+ input.val(formatted);
1200+ }
1201+ picker.element.data('date', formatted);
1202+ } else {
1203+ picker.element.val(formatted);
1204+ }
1205+ if (!picker.options.pickTime) picker.hide();
1206+ },
1207+
1208+ checkDate = function (direction, unit, amount) {
1209+ pMoment.lang(picker.options.language);
1210+ var newDate;
1211+ if (direction == "add") {
1212+ newDate = pMoment(picker.date);
1213+ if (newDate.hours() == 23) newDate.add(amount, unit);
1214+ newDate.add(amount, unit);
1215+ }
1216+ else {
1217+ newDate = pMoment(picker.date).subtract(amount, unit);
1218+ }
1219+ if (newDate.isAfter(picker.options.endDate) || pMoment(newDate.subtract(amount, unit)).isBefore(picker.options.startDate) || isInDisableDates(newDate)) {
1220+ notifyError(newDate.format(picker.format));
1221+ return;
1222+ }
1223+
1224+ if (direction == "add") {
1225+ picker.date.add(amount, unit);
1226+ }
1227+ else {
1228+ picker.date.subtract(amount, unit);
1229+ }
1230+ },
1231+
1232+ isInDisableDates = function (date) {
1233+ pMoment.lang(picker.options.language);
1234+ var disabled = picker.options.disabledDates, i;
1235+ for (i in disabled) {
1236+ if (disabled[i] == pMoment(date).format("L")) {
1237+ return true;
1238+ }
1239+ }
1240+ return false;
1241+ },
1242+
1243+ isInEnableDates = function (date) {
1244+ pMoment.lang(picker.options.language);
1245+ var enabled = picker.options.enabledDates, i;
1246+ if (enabled.length) {
1247+ for (i in enabled) {
1248+ if (enabled[i] == pMoment(date).format("L")) {
1249+ return true;
1250+ }
1251+ }
1252+ return false;
1253+ }
1254+ return enabled === false ? true : false;
1255+ },
1256+ padLeft = function (string) {
1257+ string = string.toString();
1258+ if (string.length >= 2) return string;
1259+ else return '0' + string;
1260+ },
1261+
1262+ getTemplate = function (pickDate, pickTime, collapse) {
1263+ if (pickDate && pickTime) {
1264+ return (
1265+ '<div class="bootstrap-datetimepicker-widget dropdown-menu" style="z-index:9999 !important;">' +
1266+ '<ul class="list-unstyled">' +
1267+ '<li' + (collapse ? ' class="collapse in"' : '') + '>' +
1268+ '<div class="datepicker">' + dpGlobal.template + '</div>' +
1269+ '</li>' +
1270+ '<li class="picker-switch accordion-toggle"><a class="btn" style="width:100%"><span class="' + picker.options.icons.time + '"></span></a></li>' +
1271+ '<li' + (collapse ? ' class="collapse"' : '') + '>' +
1272+ '<div class="timepicker">' + tpGlobal.getTemplate() + '</div>' +
1273+ '</li>' +
1274+ '</ul>' +
1275+ '</div>'
1276+ );
1277+ } else if (pickTime) {
1278+ return (
1279+ '<div class="bootstrap-datetimepicker-widget dropdown-menu">' +
1280+ '<div class="timepicker">' + tpGlobal.getTemplate() + '</div>' +
1281+ '</div>'
1282+ );
1283+ } else {
1284+ return (
1285+ '<div class="bootstrap-datetimepicker-widget dropdown-menu">' +
1286+ '<div class="datepicker">' + dpGlobal.template + '</div>' +
1287+ '</div>'
1288+ );
1289+ }
1290+ },
1291+
1292+ dpGlobal = {
1293+ modes: [
1294+ {
1295+ clsName: 'days',
1296+ navFnc: 'month',
1297+ navStep: 1
1298+ },
1299+ {
1300+ clsName: 'months',
1301+ navFnc: 'year',
1302+ navStep: 1
1303+ },
1304+ {
1305+ clsName: 'years',
1306+ navFnc: 'year',
1307+ navStep: 10
1308+ }],
1309+ headTemplate:
1310+ '<thead>' +
1311+ '<tr>' +
1312+ '<th class="prev">&lsaquo;</th><th colspan="5" class="switch"></th><th class="next">&rsaquo;</th>' +
1313+ '</tr>' +
1314+ '</thead>',
1315+ contTemplate:
1316+ '<tbody><tr><td colspan="7"></td></tr></tbody>'
1317+ },
1318+
1319+ tpGlobal = {
1320+ hourTemplate: '<span data-action="showHours" data-time-component="hours" class="timepicker-hour"></span>',
1321+ minuteTemplate: '<span data-action="showMinutes" data-time-component="minutes" class="timepicker-minute"></span>',
1322+ secondTemplate: '<span data-action="showSeconds" data-time-component="seconds" class="timepicker-second"></span>'
1323+ };
1324+
1325+ dpGlobal.template =
1326+ '<div class="datepicker-days">' +
1327+ '<table class="table-condensed">' + dpGlobal.headTemplate + '<tbody></tbody></table>' +
1328+ '</div>' +
1329+ '<div class="datepicker-months">' +
1330+ '<table class="table-condensed">' + dpGlobal.headTemplate + dpGlobal.contTemplate + '</table>' +
1331+ '</div>' +
1332+ '<div class="datepicker-years">' +
1333+ '<table class="table-condensed">' + dpGlobal.headTemplate + dpGlobal.contTemplate + '</table>' +
1334+ '</div>';
1335+
1336+ tpGlobal.getTemplate = function () {
1337+ return (
1338+ '<div class="timepicker-picker">' +
1339+ '<table class="table-condensed">' +
1340+ '<tr>' +
1341+ '<td><a href="#" class="btn" data-action="incrementHours"><span class="' + picker.options.icons.up + '"></span></a></td>' +
1342+ '<td class="separator"></td>' +
1343+ '<td>' + (picker.options.useMinutes ? '<a href="#" class="btn" data-action="incrementMinutes"><span class="' + picker.options.icons.up + '"></span></a>' : '') + '</td>' +
1344+ (picker.options.useSeconds ?
1345+ '<td class="separator"></td><td><a href="#" class="btn" data-action="incrementSeconds"><span class="' + picker.options.icons.up + '"></span></a></td>' : '') +
1346+ (picker.options.use24hours ? '' : '<td class="separator"></td>') +
1347+ '</tr>' +
1348+ '<tr>' +
1349+ '<td>' + tpGlobal.hourTemplate + '</td> ' +
1350+ '<td class="separator">:</td>' +
1351+ '<td>' + (picker.options.useMinutes ? tpGlobal.minuteTemplate : '<span class="timepicker-minute">00</span>') + '</td> ' +
1352+ (picker.options.useSeconds ?
1353+ '<td class="separator">:</td><td>' + tpGlobal.secondTemplate + '</td>' : '') +
1354+ (picker.options.use24hours ? '' : '<td class="separator"></td>' +
1355+ '<td><button type="button" class="btn btn-primary" data-action="togglePeriod"></button></td>') +
1356+ '</tr>' +
1357+ '<tr>' +
1358+ '<td><a href="#" class="btn" data-action="decrementHours"><span class="' + picker.options.icons.down + '"></span></a></td>' +
1359+ '<td class="separator"></td>' +
1360+ '<td>' + (picker.options.useMinutes ? '<a href="#" class="btn" data-action="decrementMinutes"><span class="' + picker.options.icons.down + '"></span></a>' : '') + '</td>' +
1361+ (picker.options.useSeconds ?
1362+ '<td class="separator"></td><td><a href="#" class="btn" data-action="decrementSeconds"><span class="' + picker.options.icons.down + '"></span></a></td>' : '') +
1363+ (picker.options.use24hours ? '' : '<td class="separator"></td>') +
1364+ '</tr>' +
1365+ '</table>' +
1366+ '</div>' +
1367+ '<div class="timepicker-hours" data-action="selectHour">' +
1368+ '<table class="table-condensed"></table>' +
1369+ '</div>' +
1370+ '<div class="timepicker-minutes" data-action="selectMinute">' +
1371+ '<table class="table-condensed"></table>' +
1372+ '</div>' +
1373+ (picker.options.useSeconds ?
1374+ '<div class="timepicker-seconds" data-action="selectSecond"><table class="table-condensed"></table></div>' : '')
1375+ );
1376+ };
1377+
1378+ picker.destroy = function () {
1379+ detachDatePickerEvents();
1380+ detachDatePickerGlobalEvents();
1381+ picker.widget.remove();
1382+ picker.element.removeData('DateTimePicker');
1383+ if (picker.component)
1384+ picker.component.removeData('DateTimePicker');
1385+ };
1386+
1387+ picker.show = function (e) {
1388+ picker.widget.show();
1389+ picker.height = picker.component ? picker.component.outerHeight() : picker.element.outerHeight();
1390+ place();
1391+ picker.element.trigger({
1392+ type: 'show.dp',
1393+ date: pMoment(picker.date)
1394+ });
1395+ attachDatePickerGlobalEvents();
1396+ if (e) {
1397+ stopEvent(e);
1398+ }
1399+ },
1400+
1401+ picker.disable = function () {
1402+ var input = picker.element.find('input');
1403+ if(!input.prop('disabled')) return;
1404+
1405+ input.prop('disabled', true);
1406+ detachDatePickerEvents();
1407+ },
1408+
1409+ picker.enable = function () {
1410+ var input = picker.element.find('input');
1411+ if(!input.prop('disabled')) return;
1412+
1413+ input.prop('disabled', true);
1414+ attachDatePickerEvents();
1415+ },
1416+
1417+ picker.hide = function (event) {
1418+ if (event && $(event.target).is(picker.element.attr("id")))
1419+ return;
1420+ // Ignore event if in the middle of a picker transition
1421+ var collapse = picker.widget.find('.collapse'), i, collapseData;
1422+ for (i = 0; i < collapse.length; i++) {
1423+ collapseData = collapse.eq(i).data('collapse');
1424+ if (collapseData && collapseData.transitioning)
1425+ return;
1426+ }
1427+ picker.widget.hide();
1428+ picker.viewMode = picker.startViewMode;
1429+ showMode();
1430+ picker.element.trigger({
1431+ type: 'hide.dp',
1432+ date: pMoment(picker.date)
1433+ });
1434+ detachDatePickerGlobalEvents();
1435+ },
1436+
1437+ picker.setValue = function (newDate) {
1438+ pMoment.lang(picker.options.language);
1439+ if (!newDate) {
1440+ picker.unset = true;
1441+ } else {
1442+ picker.unset = false;
1443+ }
1444+ if (!pMoment.isMoment(newDate)) newDate = pMoment(newDate);
1445+ if (newDate.isValid()) {
1446+ picker.date = newDate;
1447+ set();
1448+ picker.viewDate = pMoment({ y: picker.date.year(), M: picker.date.month() });
1449+ fillDate();
1450+ fillTime();
1451+ }
1452+ else {
1453+ notifyError(newDate);
1454+ }
1455+ },
1456+
1457+ picker.getDate = function () {
1458+ if (picker.unset) return null;
1459+ return picker.date;
1460+ },
1461+
1462+ picker.setDate = function (date) {
1463+ date = pMoment(date);
1464+ if (!date) picker.setValue(null);
1465+ else picker.setValue(date);
1466+ },
1467+
1468+ picker.setEnabledDates = function (dates) {
1469+ if (!dates) picker.options.enabledDates = false;
1470+ else picker.options.enabledDates = dates;
1471+ if (picker.viewDate) update();
1472+ },
1473+
1474+ picker.setEndDate = function (date) {
1475+ picker.options.endDate = pMoment(date);
1476+ if (!picker.options.endDate.isValid()) {
1477+ picker.options.endDate = pMoment().add(50, "y");
1478+ }
1479+ if (picker.viewDate) update();
1480+ },
1481+
1482+ picker.setStartDate = function (date) {
1483+ picker.options.startDate = pMoment(date);
1484+ if (!picker.options.startDate.isValid()) {
1485+ picker.options.startDate = pMoment({ y: 1970 });
1486+ }
1487+ if (picker.viewDate) update();
1488+ };
1489+
1490+ init();
1491+ };
1492+
1493+ $.fn.datetimepicker = function (options) {
1494+ return this.each(function () {
1495+ var $this = $(this), data = $this.data('DateTimePicker');
1496+ if (!data) $this.data('DateTimePicker', new DateTimePicker(this, options));
1497+ });
1498+ };
1499+}));
1500
1501=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/bootstrap-datetimepicker.min.js'
1502--- addons/web/static/lib/bootstrap-datetimepicker/src/js/bootstrap-datetimepicker.min.js 1970-01-01 00:00:00 +0000
1503+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/bootstrap-datetimepicker.min.js 2014-02-14 15:04:13 +0000
1504@@ -0,0 +1,28 @@
1505+/**
1506+ * version 2.1.20
1507+ * @license
1508+ * =========================================================
1509+ * bootstrap-datetimepicker.js
1510+ * http://www.eyecon.ro/bootstrap-datepicker
1511+ * =========================================================
1512+ * Copyright 2012 Stefan Petre
1513+ *
1514+ * Contributions:
1515+ * - updated for Bootstrap v3 by Jonathan Peterson (@Eonasdan) and (almost)
1516+ * completely rewritten to use Momentjs
1517+ * - based on tarruda's bootstrap-datepicker
1518+ *
1519+ * Licensed under the Apache License, Version 2.0 (the "License");
1520+ * you may not use this file except in compliance with the License.
1521+ * You may obtain a copy of the License at
1522+ *
1523+ * http://www.apache.org/licenses/LICENSE-2.0
1524+ *
1525+ * Unless required by applicable law or agreed to in writing, software
1526+ * distributed under the License is distributed on an "AS IS" BASIS,
1527+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1528+ * See the License for the specific language governing permissions and
1529+ * limitations under the License.
1530+ * =========================================================
1531+ */
1532+(function(e){if(typeof define==="function"&&define.amd){define(["jquery","moment"],e)}else{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{e(jQuery,moment)}}})(function(e,t){if(typeof t==="undefined"){alert("momentjs is requried");throw new Error("momentjs is requried")}var n=0,r=t,i=function(t,i){var s={pickDate:true,pickTime:true,useMinutes:true,useSeconds:false,minuteStepping:1,startDate:new r({y:1970}),endDate:(new r).add(50,"y"),collapse:true,language:"en",defaultDate:"",disabledDates:[],enabledDates:false,icons:{},useStrict:false,calendarWeeks:false},o={time:"glyphicon glyphicon-time",date:"glyphicon glyphicon-calendar",up:"glyphicon glyphicon-chevron-up",down:"glyphicon glyphicon-chevron-down"},u=this,a=function(){var a=false,l,c,h;u.options=e.extend({},s,i);u.options.icons=e.extend({},o,u.options.icons);u.element=e(t);f();if(!(u.options.pickTime||u.options.pickDate))throw new Error("Must choose at least one picker");u.id=n++;r.lang(u.options.language);u.date=r();u.unset=false;u.isInput=u.element.is("input");u.component=false;if(u.element.hasClass("input-group")){if(u.element.find(".datepickerbutton").size()==0){u.component=u.element.find("[class^='input-group-']")}else{u.component=u.element.find(".datepickerbutton")}}u.format=u.options.format;h=r()._lang._longDateFormat;if(!u.format){if(u.isInput)u.format=u.element.data("format");else u.format=u.element.find("input").data("format");if(!u.format){u.format=u.options.pickDate?h.L:"";if(u.options.pickDate&&u.options.pickTime)u.format+=" ";u.format+=u.options.pickTime?h.LT:"";if(u.options.useSeconds){if(~h.LT.indexOf(" A")){u.format=u.format.split(" A")[0]+":ss A"}else{u.format+=":ss"}}}}u.options.use24hours=u.format.toLowerCase().indexOf("a")<1;if(u.component)a=u.component.find("span");if(u.options.pickTime){if(a)a.addClass(u.options.icons.time)}if(u.options.pickDate){if(a){a.removeClass(u.options.icons.time);a.addClass(u.options.icons.date)}}u.widget=e(F(u.options.pickDate,u.options.pickTime,u.options.collapse)).appendTo("body");u.minViewMode=u.options.minViewMode||u.element.data("date-minviewmode")||0;if(typeof u.minViewMode==="string"){switch(u.minViewMode){case"months":u.minViewMode=1;break;case"years":u.minViewMode=2;break;default:u.minViewMode=0;break}}if(u.options.calendarWeeks)u.widget.find("tfoot th.today").attr("colspan",function(e,t){return parseInt(t)+1});u.viewMode=u.options.viewMode||u.element.data("date-viewmode")||0;if(typeof u.viewMode==="string"){switch(u.viewMode){case"months":u.viewMode=1;break;case"years":u.viewMode=2;break;default:u.viewMode=0;break}}for(l=0;l<u.options.disabledDates.length;l++){c=u.options.disabledDates[l];c=r(c);if(!c.isValid())c=r(u.options.startDate).subtract(1,"day");u.options.disabledDates[l]=c.format("L")}for(l=0;l<u.options.enabledDates.length;l++){c=u.options.enabledDates[l];c=r(c);if(!c.isValid())c=r(u.options.startDate).subtract(1,"day");u.options.enabledDates[l]=c.format("L")}u.startViewMode=u.viewMode;u.setStartDate(u.options.startDate||u.element.data("date-startdate"));u.setEndDate(u.options.endDate||u.element.data("date-enddate"));d();v();y();b();w();p();k();L();if(u.options.defaultDate!=="")u.setValue(u.options.defaultDate)},f=function(){var e=u.element.data();if(e.pickdate!==undefined)u.options.pickDate=e.pickdate;if(e.picktime!==undefined)u.options.pickTime=e.picktime;if(e.useminutes!==undefined)u.options.useMinutes=e.useminutes;if(e.useseconds!==undefined)u.options.useSeconds=e.useseconds;if(e.minutestepping!==undefined)u.options.minuteStepping=e.minutestepping;if(e.startdate!==undefined)u.options.startDate=e.startdate;if(e.enddate!==undefined)u.options.endDate=e.enddate;if(e.collapse!==undefined)u.options.collapse=e.collapse;if(e.language!==undefined)u.options.language=e.language;if(e.defaultdate!==undefined)u.options.defaultDate=e.defaultdate;if(e.disableddates!==undefined)u.options.disabledDates=e.disableddates;if(e.enableddates!==undefined)u.options.enabledDates=e.enableddates;if(e.icons!==undefined)u.options.icons=e.icons;if(e.usestrict!==undefined)u.options.useStrict=e.usestrict;if(e.calendarWeeks!==undefined)u.options.calendarWeeks=e.calendarWeeks},l=function(){var t="absolute",n=u.component?u.component.offset():u.element.offset(),r=e(window);u.width=u.component?u.component.outerWidth():u.element.outerWidth();n.top=n.top+u.element.outerHeight();if(u.options.width!==undefined){u.widget.width(u.options.width)}if(u.options.orientation==="left"){u.widget.addClass("left-oriented");n.left=n.left-u.widget.width()+20}if(_()){t="fixed";n.top-=r.scrollTop();n.left-=r.scrollLeft()}if(r.width()<n.left+u.widget.outerWidth()){n.right=r.width()-n.left-u.width;n.left="auto";u.widget.addClass("pull-right")}else{n.right="auto";u.widget.removeClass("pull-right")}u.widget.css({position:t,top:n.top,left:n.left,right:n.right})},c=function(e,t){u.element.trigger({type:"change.dp",date:r(u.date),oldDate:r(e)})},h=function(e){u.element.trigger({type:"error.dp",date:r(e)})},p=function(e){r.lang(u.options.language);var t=e;if(!t){if(u.isInput){t=u.element.val()}else{t=u.element.find("input").val()}if(t)u.date=r(t,u.format,u.options.useStrict);if(!u.date)u.date=r()}u.viewDate=r(u.date).startOf("month");g();E()},d=function(){r.lang(u.options.language);var t=e("<tr>"),n=r.weekdaysMin(),i;if(u.options.calendarWeeks){var s='<th class="cw">Wk</th>';t.append(s)}if(r()._lang._week.dow==0){for(i=0;i<7;i++){t.append('<th class="dow">'+n[i]+"</th>")}}else{for(i=1;i<8;i++){if(i==7){t.append('<th class="dow">'+n[0]+"</th>")}else{t.append('<th class="dow">'+n[i]+"</th>")}}}u.widget.find(".datepicker-days thead").append(t)},v=function(){r.lang(u.options.language);var e="",t=0,n=r.monthsShort();while(t<12){e+='<span class="month">'+n[t++]+"</span>"}u.widget.find(".datepicker-months td").append(e)},m=function(){return new Date(Date.UTC.apply(Date,arguments))},g=function(){r.lang(u.options.language);var t=u.viewDate.year(),n=u.viewDate.month(),i=u.options.startDate.year(),s=u.options.startDate.month(),o=u.options.endDate.year(),a=u.options.endDate.month(),f,l,c=[],h,p,d,v,g,y,b=r.months();u.widget.find(".datepicker-days").find(".disabled").removeClass("disabled");u.widget.find(".datepicker-months").find(".disabled").removeClass("disabled");u.widget.find(".datepicker-years").find(".disabled").removeClass("disabled");u.widget.find(".datepicker-days th:eq(1)").text(b[n]+" "+t);f=r(u.viewDate).subtract("months",1);v=f.daysInMonth();f.date(v).startOf("week");if(t==i&&n<=s||t<i){u.widget.find(".datepicker-days th:eq(0)").addClass("disabled")}if(t==o&&n>=a||t>o){u.widget.find(".datepicker-days th:eq(2)").addClass("disabled")}l=r(f).add(42,"d");while(f.isBefore(l)){if(f.weekday()===r().startOf("week").weekday()){h=e("<tr>");c.push(h);if(u.options.calendarWeeks){var w=new Date(+f+(r().startOf("week").weekday()-f.weekday()-7)%7*864e5),E=new Date(+w+(7+4-w.getUTCDay())%7*864e5),S=new Date(+(S=m(E.getUTCFullYear(),0,1))+(7+4-S.getUTCDay())%7*864e5),x=(E-S)/864e5/7+1;h.append('<td class="cw">'+parseInt(x)+"</td>")}}p="";if(f.year()<t||f.year()==t&&f.month()<n){p+=" old"}else if(f.year()>t||f.year()==t&&f.month()>n){p+=" new"}if(f.isSame(r({y:u.date.year(),M:u.date.month(),d:u.date.date()}))){p+=" active"}if(r(f).add(1,"d")<=u.options.startDate||f>u.options.endDate||H(f)||!B(f)){p+=" disabled"}h.append('<td class="day'+p+'">'+f.date()+"</td>");f.add(1,"d")}u.widget.find(".datepicker-days tbody").empty().append(c);y=r().year(),b=u.widget.find(".datepicker-months").find("th:eq(1)").text(t).end().find("span").removeClass("active");if(y===t){b.eq(r().month()).addClass("active")}if(y-1<i){u.widget.find(".datepicker-months th:eq(0)").addClass("disabled")}if(y+1>o){u.widget.find(".datepicker-months th:eq(2)").addClass("disabled")}for(d=0;d<12;d++){if(t==i&&s>d||t<i){e(b[d]).addClass("disabled")}else if(t==o&&a<d||t>o){e(b[d]).addClass("disabled")}}c="";t=parseInt(t/10,10)*10;g=u.widget.find(".datepicker-years").find("th:eq(1)").text(t+"-"+(t+9)).end().find("td");u.widget.find(".datepicker-years").find("th").removeClass("disabled");if(i>t){u.widget.find(".datepicker-years").find("th:eq(0)").addClass("disabled")}if(o<t+9){u.widget.find(".datepicker-years").find("th:eq(2)").addClass("disabled")}t-=1;for(d=-1;d<11;d++){c+='<span class="year'+(d===-1||d===10?" old":"")+(y===t?" active":"")+(t<i||t>o?" disabled":"")+'">'+t+"</span>";t+=1}g.html(c)},y=function(){r.lang(u.options.language);var e=u.widget.find(".timepicker .timepicker-hours table"),t="",n,i,s;e.parent().hide();if(u.options.use24hours){n=0;for(i=0;i<6;i+=1){t+="<tr>";for(s=0;s<4;s+=1){t+='<td class="hour">'+j(n.toString())+"</td>";n++}t+="</tr>"}}else{n=1;for(i=0;i<3;i+=1){t+="<tr>";for(s=0;s<4;s+=1){t+='<td class="hour">'+j(n.toString())+"</td>";n++}t+="</tr>"}}e.html(t)},b=function(){var e=u.widget.find(".timepicker .timepicker-minutes table"),t="",n=0,r,i;e.parent().hide();for(r=0;r<5;r++){t+="<tr>";for(i=0;i<4;i+=1){t+='<td class="minute">'+j(n.toString())+"</td>";n+=3}t+="</tr>"}e.html(t)},w=function(){var e=u.widget.find(".timepicker .timepicker-seconds table"),t="",n=0,r,i;e.parent().hide();for(r=0;r<5;r++){t+="<tr>";for(i=0;i<4;i+=1){t+='<td class="second">'+j(n.toString())+"</td>";n+=3}t+="</tr>"}e.html(t)},E=function(){if(!u.date)return;var e=u.widget.find(".timepicker span[data-time-component]"),t=u.date.hours(),n="AM";if(!u.options.use24hours){if(t>=12)n="PM";if(t===0)t=12;else if(t!=12)t=t%12;u.widget.find(".timepicker [data-action=togglePeriod]").text(n)}e.filter("[data-time-component=hours]").text(j(t));e.filter("[data-time-component=minutes]").text(j(u.date.minutes()));e.filter("[data-time-component=seconds]").text(j(u.date.second()))},S=function(t){t.stopPropagation();t.preventDefault();u.unset=false;var n=e(t.target).closest("span, td, th"),i,s,o,a,f=r(u.date);if(n.length===1){if(!n.is(".disabled")){switch(n[0].nodeName.toLowerCase()){case"th":switch(n[0].className){case"switch":k(1);break;case"prev":case"next":o=I.modes[u.viewMode].navStep;if(n[0].className==="prev")o=o*-1;u.viewDate.add(o,I.modes[u.viewMode].navFnc);g();break}break;case"span":if(n.is(".month")){i=n.parent().find("span").index(n);u.viewDate.month(i)}else{s=parseInt(n.text(),10)||0;u.viewDate.year(s)}if(u.viewMode!==0){u.date=r({y:u.viewDate.year(),M:u.viewDate.month(),d:u.viewDate.date(),h:u.date.hours(),m:u.date.minutes()});c(f,t.type)}k(-1);g();break;case"td":if(n.is(".day")){a=parseInt(n.text(),10)||1;i=u.viewDate.month();s=u.viewDate.year();if(n.is(".old")){if(i===0){i=11;s-=1}else{i-=1}}else if(n.is(".new")){if(i==11){i=0;s+=1}else{i+=1}}u.date=r({y:s,M:i,d:a,h:u.date.hours(),m:u.date.minutes()});u.viewDate=r({y:s,M:i,d:Math.min(28,a)});g();D();c(f,t.type)}break}}}},x={incrementHours:function(){P("add","hours",1)},incrementMinutes:function(){P("add","minutes",u.options.minuteStepping)},incrementSeconds:function(){P("add","seconds",1)},decrementHours:function(){P("subtract","hours",1)},decrementMinutes:function(){P("subtract","minutes",u.options.minuteStepping)},decrementSeconds:function(){P("subtract","seconds",1)},togglePeriod:function(){var e=u.date.hours();if(e>=12)e-=12;else e+=12;u.date.hours(e)},showPicker:function(){u.widget.find(".timepicker > div:not(.timepicker-picker)").hide();u.widget.find(".timepicker .timepicker-picker").show()},showHours:function(){u.widget.find(".timepicker .timepicker-picker").hide();u.widget.find(".timepicker .timepicker-hours").show()},showMinutes:function(){u.widget.find(".timepicker .timepicker-picker").hide();u.widget.find(".timepicker .timepicker-minutes").show()},showSeconds:function(){u.widget.find(".timepicker .timepicker-picker").hide();u.widget.find(".timepicker .timepicker-seconds").show()},selectHour:function(t){u.date.hours(parseInt(e(t.target).text(),10));x.showPicker.call(u)},selectMinute:function(t){u.date.minutes(parseInt(e(t.target).text(),10));x.showPicker.call(u)},selectSecond:function(t){u.date.seconds(parseInt(e(t.target).text(),10));x.showPicker.call(u)}},T=function(t){var n=r(u.date),i=e(t.currentTarget).data("action"),s=x[i].apply(u,arguments);N(t);if(!u.date)u.date=r({y:1970});D();E();c(n);return s},N=function(e){e.stopPropagation();e.preventDefault()},C=function(t){r.lang(u.options.language);var n=e(t.target),i=r(u.date),s=r(n.val(),u.format,u.options.useStrict);if(s.isValid()){p();u.setValue(s);c(i);D()}else{u.viewDate=i;c(i);h(s);u.unset=true;n.val("")}},k=function(e){if(e){u.viewMode=Math.max(u.minViewMode,Math.min(2,u.viewMode+e))}u.widget.find(".datepicker > div").hide().filter(".datepicker-"+I.modes[u.viewMode].clsName).show()},L=function(){var t,n,r,i,s;u.widget.on("click",".datepicker *",e.proxy(S,this));u.widget.on("click","[data-action]",e.proxy(T,this));u.widget.on("mousedown",e.proxy(N,this));if(u.options.pickDate&&u.options.pickTime){u.widget.on("click.togglePicker",".accordion-toggle",function(o){o.stopPropagation();t=e(this);n=t.closest("ul");r=n.find(".in");i=n.find(".collapse:not(.in)");if(r&&r.length){s=r.data("collapse");if(s&&s.transitioning)return;r.collapse("hide");i.collapse("show");t.find("span").toggleClass(u.options.icons.time+" "+u.options.icons.date);u.element.find(".input-group-addon span").toggleClass(u.options.icons.time+" "+u.options.icons.date)}})}if(u.isInput){u.element.on({focus:e.proxy(u.show,this),change:e.proxy(C,this),blur:e.proxy(u.hide,this)})}else{u.element.on({change:e.proxy(C,this)},"input");if(u.component){u.component.on("click",e.proxy(u.show,this))}else{u.element.on("click",e.proxy(u.show,this))}}},A=function(){e(window).on("resize.datetimepicker"+u.id,e.proxy(l,this));if(!u.isInput){e(document).on("mousedown.datetimepicker"+u.id,e.proxy(u.hide,this))}},O=function(){u.widget.off("click",".datepicker *",u.click);u.widget.off("click","[data-action]");u.widget.off("mousedown",u.stopEvent);if(u.options.pickDate&&u.options.pickTime){u.widget.off("click.togglePicker")}if(u.isInput){u.element.off({focus:u.show,change:u.change})}else{u.element.off({change:u.change},"input");if(u.component){u.component.off("click",u.show)}else{u.element.off("click",u.show)}}},M=function(){e(window).off("resize.datetimepicker"+u.id);if(!u.isInput){e(document).off("mousedown.datetimepicker"+u.id)}},_=function(){if(u.element){var t=u.element.parents(),n=false,r;for(r=0;r<t.length;r++){if(e(t[r]).css("position")=="fixed"){n=true;break}}return n}else{return false}},D=function(){r.lang(u.options.language);var e="",t;if(!u.unset)e=r(u.date).format(u.format);if(!u.isInput){if(u.component){t=u.element.find("input");t.val(e)}u.element.data("date",e)}else{u.element.val(e)}if(!u.options.pickTime)u.hide()},P=function(e,t,n){r.lang(u.options.language);var i;if(e=="add"){i=r(u.date);if(i.hours()==23)i.add(n,t);i.add(n,t)}else{i=r(u.date).subtract(n,t)}if(i.isAfter(u.options.endDate)||r(i.subtract(n,t)).isBefore(u.options.startDate)||H(i)){h(i.format(u.format));return}if(e=="add"){u.date.add(n,t)}else{u.date.subtract(n,t)}},H=function(e){r.lang(u.options.language);var t=u.options.disabledDates,n;for(n in t){if(t[n]==r(e).format("L")){return true}}return false},B=function(e){r.lang(u.options.language);var t=u.options.enabledDates,n;if(t.length){for(n in t){if(t[n]==r(e).format("L")){return true}}return false}return t===false?true:false},j=function(e){e=e.toString();if(e.length>=2)return e;else return"0"+e},F=function(e,t,n){if(e&&t){return'<div class="bootstrap-datetimepicker-widget dropdown-menu" style="z-index:9999 !important;">'+'<ul class="list-unstyled">'+"<li"+(n?' class="collapse in"':"")+">"+'<div class="datepicker">'+I.template+"</div>"+"</li>"+'<li class="picker-switch accordion-toggle"><a class="btn" style="width:100%"><span class="'+u.options.icons.time+'"></span></a></li>'+"<li"+(n?' class="collapse"':"")+">"+'<div class="timepicker">'+q.getTemplate()+"</div>"+"</li>"+"</ul>"+"</div>"}else if(t){return'<div class="bootstrap-datetimepicker-widget dropdown-menu">'+'<div class="timepicker">'+q.getTemplate()+"</div>"+"</div>"}else{return'<div class="bootstrap-datetimepicker-widget dropdown-menu">'+'<div class="datepicker">'+I.template+"</div>"+"</div>"}},I={modes:[{clsName:"days",navFnc:"month",navStep:1},{clsName:"months",navFnc:"year",navStep:1},{clsName:"years",navFnc:"year",navStep:10}],headTemplate:"<thead>"+"<tr>"+'<th class="prev">&lsaquo;</th><th colspan="5" class="switch"></th><th class="next">&rsaquo;</th>'+"</tr>"+"</thead>",contTemplate:'<tbody><tr><td colspan="7"></td></tr></tbody>'},q={hourTemplate:'<span data-action="showHours" data-time-component="hours" class="timepicker-hour"></span>',minuteTemplate:'<span data-action="showMinutes" data-time-component="minutes" class="timepicker-minute"></span>',secondTemplate:'<span data-action="showSeconds" data-time-component="seconds" class="timepicker-second"></span>'};I.template='<div class="datepicker-days">'+'<table class="table-condensed">'+I.headTemplate+"<tbody></tbody></table>"+"</div>"+'<div class="datepicker-months">'+'<table class="table-condensed">'+I.headTemplate+I.contTemplate+"</table>"+"</div>"+'<div class="datepicker-years">'+'<table class="table-condensed">'+I.headTemplate+I.contTemplate+"</table>"+"</div>";q.getTemplate=function(){return'<div class="timepicker-picker">'+'<table class="table-condensed">'+"<tr>"+'<td><a href="#" class="btn" data-action="incrementHours"><span class="'+u.options.icons.up+'"></span></a></td>'+'<td class="separator"></td>'+"<td>"+(u.options.useMinutes?'<a href="#" class="btn" data-action="incrementMinutes"><span class="'+u.options.icons.up+'"></span></a>':"")+"</td>"+(u.options.useSeconds?'<td class="separator"></td><td><a href="#" class="btn" data-action="incrementSeconds"><span class="'+u.options.icons.up+'"></span></a></td>':"")+(u.options.use24hours?"":'<td class="separator"></td>')+"</tr>"+"<tr>"+"<td>"+q.hourTemplate+"</td> "+'<td class="separator">:</td>'+"<td>"+(u.options.useMinutes?q.minuteTemplate:'<span class="timepicker-minute">00</span>')+"</td> "+(u.options.useSeconds?'<td class="separator">:</td><td>'+q.secondTemplate+"</td>":"")+(u.options.use24hours?"":'<td class="separator"></td>'+'<td><button type="button" class="btn btn-primary" data-action="togglePeriod"></button></td>')+"</tr>"+"<tr>"+'<td><a href="#" class="btn" data-action="decrementHours"><span class="'+u.options.icons.down+'"></span></a></td>'+'<td class="separator"></td>'+"<td>"+(u.options.useMinutes?'<a href="#" class="btn" data-action="decrementMinutes"><span class="'+u.options.icons.down+'"></span></a>':"")+"</td>"+(u.options.useSeconds?'<td class="separator"></td><td><a href="#" class="btn" data-action="decrementSeconds"><span class="'+u.options.icons.down+'"></span></a></td>':"")+(u.options.use24hours?"":'<td class="separator"></td>')+"</tr>"+"</table>"+"</div>"+'<div class="timepicker-hours" data-action="selectHour">'+'<table class="table-condensed"></table>'+"</div>"+'<div class="timepicker-minutes" data-action="selectMinute">'+'<table class="table-condensed"></table>'+"</div>"+(u.options.useSeconds?'<div class="timepicker-seconds" data-action="selectSecond"><table class="table-condensed"></table></div>':"")};u.destroy=function(){O();M();u.widget.remove();u.element.removeData("DateTimePicker");if(u.component)u.component.removeData("DateTimePicker")};u.show=function(e){u.widget.show();u.height=u.component?u.component.outerHeight():u.element.outerHeight();l();u.element.trigger({type:"show.dp",date:r(u.date)});A();if(e){N(e)}},u.disable=function(){var e=u.element.find("input");if(!e.prop("disabled"))return;e.prop("disabled",true);O()},u.enable=function(){var e=u.element.find("input");if(!e.prop("disabled"))return;e.prop("disabled",true);L()},u.hide=function(t){if(t&&e(t.target).is(u.element.attr("id")))return;var n=u.widget.find(".collapse"),i,s;for(i=0;i<n.length;i++){s=n.eq(i).data("collapse");if(s&&s.transitioning)return}u.widget.hide();u.viewMode=u.startViewMode;k();u.element.trigger({type:"hide.dp",date:r(u.date)});M()},u.setValue=function(e){r.lang(u.options.language);if(!e){u.unset=true}else{u.unset=false}if(!r.isMoment(e))e=r(e);if(e.isValid()){u.date=e;D();u.viewDate=r({y:u.date.year(),M:u.date.month()});g();E()}else{h(e)}},u.getDate=function(){if(u.unset)return null;return u.date},u.setDate=function(e){e=r(e);if(!e)u.setValue(null);else u.setValue(e)},u.setEnabledDates=function(e){if(!e)u.options.enabledDates=false;else u.options.enabledDates=e;if(u.viewDate)p()},u.setEndDate=function(e){u.options.endDate=r(e);if(!u.options.endDate.isValid()){u.options.endDate=r().add(50,"y")}if(u.viewDate)p()},u.setStartDate=function(e){u.options.startDate=r(e);if(!u.options.startDate.isValid()){u.options.startDate=r({y:1970})}if(u.viewDate)p()};a()};e.fn.datetimepicker=function(t){return this.each(function(){var n=e(this),r=n.data("DateTimePicker");if(!r)n.data("DateTimePicker",new i(this,t))})}});
1533
1534=== added directory 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales'
1535=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ar-ma.js'
1536--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ar-ma.js 1970-01-01 00:00:00 +0000
1537+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ar-ma.js 2014-02-14 15:04:13 +0000
1538@@ -0,0 +1,56 @@
1539+// moment.js language configuration
1540+// language : Moroccan Arabic (ar-ma)
1541+// author : ElFadili Yassine : https://github.com/ElFadiliY
1542+// author : Abdel Said : https://github.com/abdelsaid
1543+
1544+(function (factory) {
1545+ if (typeof define === 'function' && define.amd) {
1546+ define(['moment'], factory); // AMD
1547+ } else if (typeof exports === 'object') {
1548+ module.exports = factory(require('../moment')); // Node
1549+ } else {
1550+ factory(window.moment); // Browser global
1551+ }
1552+}(function (moment) {
1553+ return moment.lang('ar-ma', {
1554+ months : "يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),
1555+ monthsShort : "يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),
1556+ weekdays : "الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),
1557+ weekdaysShort : "احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),
1558+ weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"),
1559+ longDateFormat : {
1560+ LT : "HH:mm",
1561+ L : "DD/MM/YYYY",
1562+ LL : "D MMMM YYYY",
1563+ LLL : "D MMMM YYYY LT",
1564+ LLLL : "dddd D MMMM YYYY LT"
1565+ },
1566+ calendar : {
1567+ sameDay: "[اليوم على الساعة] LT",
1568+ nextDay: '[غدا على الساعة] LT',
1569+ nextWeek: 'dddd [على الساعة] LT',
1570+ lastDay: '[أمس على الساعة] LT',
1571+ lastWeek: 'dddd [على الساعة] LT',
1572+ sameElse: 'L'
1573+ },
1574+ relativeTime : {
1575+ future : "في %s",
1576+ past : "منذ %s",
1577+ s : "ثوان",
1578+ m : "دقيقة",
1579+ mm : "%d دقائق",
1580+ h : "ساعة",
1581+ hh : "%d ساعات",
1582+ d : "يوم",
1583+ dd : "%d أيام",
1584+ M : "شهر",
1585+ MM : "%d أشهر",
1586+ y : "سنة",
1587+ yy : "%d سنوات"
1588+ },
1589+ week : {
1590+ dow : 6, // Saturday is the first day of the week.
1591+ doy : 12 // The week that contains Jan 1st is the first week of the year.
1592+ }
1593+ });
1594+}));
1595
1596=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ar.js'
1597--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ar.js 1970-01-01 00:00:00 +0000
1598+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ar.js 2014-02-14 15:04:13 +0000
1599@@ -0,0 +1,56 @@
1600+// moment.js language configuration
1601+// language : Arabic (ar)
1602+// author : Abdel Said : https://github.com/abdelsaid
1603+// changes in months, weekdays : Ahmed Elkhatib
1604+
1605+(function (factory) {
1606+ if (typeof define === 'function' && define.amd) {
1607+ define(['moment'], factory); // AMD
1608+ } else if (typeof exports === 'object') {
1609+ module.exports = factory(require('../moment')); // Node
1610+ } else {
1611+ factory(window.moment); // Browser global
1612+ }
1613+}(function (moment) {
1614+ return moment.lang('ar', {
1615+ months : "يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"),
1616+ monthsShort : "يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"),
1617+ weekdays : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),
1618+ weekdaysShort : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),
1619+ weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"),
1620+ longDateFormat : {
1621+ LT : "HH:mm",
1622+ L : "DD/MM/YYYY",
1623+ LL : "D MMMM YYYY",
1624+ LLL : "D MMMM YYYY LT",
1625+ LLLL : "dddd D MMMM YYYY LT"
1626+ },
1627+ calendar : {
1628+ sameDay: "[اليوم على الساعة] LT",
1629+ nextDay: '[غدا على الساعة] LT',
1630+ nextWeek: 'dddd [على الساعة] LT',
1631+ lastDay: '[أمس على الساعة] LT',
1632+ lastWeek: 'dddd [على الساعة] LT',
1633+ sameElse: 'L'
1634+ },
1635+ relativeTime : {
1636+ future : "في %s",
1637+ past : "منذ %s",
1638+ s : "ثوان",
1639+ m : "دقيقة",
1640+ mm : "%d دقائق",
1641+ h : "ساعة",
1642+ hh : "%d ساعات",
1643+ d : "يوم",
1644+ dd : "%d أيام",
1645+ M : "شهر",
1646+ MM : "%d أشهر",
1647+ y : "سنة",
1648+ yy : "%d سنوات"
1649+ },
1650+ week : {
1651+ dow : 6, // Saturday is the first day of the week.
1652+ doy : 12 // The week that contains Jan 1st is the first week of the year.
1653+ }
1654+ });
1655+}));
1656
1657=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.bg.js'
1658--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.bg.js 1970-01-01 00:00:00 +0000
1659+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.bg.js 2014-02-14 15:04:13 +0000
1660@@ -0,0 +1,86 @@
1661+// moment.js language configuration
1662+// language : bulgarian (bg)
1663+// author : Krasen Borisov : https://github.com/kraz
1664+
1665+(function (factory) {
1666+ if (typeof define === 'function' && define.amd) {
1667+ define(['moment'], factory); // AMD
1668+ } else if (typeof exports === 'object') {
1669+ module.exports = factory(require('../moment')); // Node
1670+ } else {
1671+ factory(window.moment); // Browser global
1672+ }
1673+}(function (moment) {
1674+ return moment.lang('bg', {
1675+ months : "януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),
1676+ monthsShort : "янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),
1677+ weekdays : "неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),
1678+ weekdaysShort : "нед_пон_вто_сря_чет_пет_съб".split("_"),
1679+ weekdaysMin : "нд_пн_вт_ср_чт_пт_сб".split("_"),
1680+ longDateFormat : {
1681+ LT : "H:mm",
1682+ L : "D.MM.YYYY",
1683+ LL : "D MMMM YYYY",
1684+ LLL : "D MMMM YYYY LT",
1685+ LLLL : "dddd, D MMMM YYYY LT"
1686+ },
1687+ calendar : {
1688+ sameDay : '[Днес в] LT',
1689+ nextDay : '[Утре в] LT',
1690+ nextWeek : 'dddd [в] LT',
1691+ lastDay : '[Вчера в] LT',
1692+ lastWeek : function () {
1693+ switch (this.day()) {
1694+ case 0:
1695+ case 3:
1696+ case 6:
1697+ return '[В изминалата] dddd [в] LT';
1698+ case 1:
1699+ case 2:
1700+ case 4:
1701+ case 5:
1702+ return '[В изминалия] dddd [в] LT';
1703+ }
1704+ },
1705+ sameElse : 'L'
1706+ },
1707+ relativeTime : {
1708+ future : "след %s",
1709+ past : "преди %s",
1710+ s : "няколко секунди",
1711+ m : "минута",
1712+ mm : "%d минути",
1713+ h : "час",
1714+ hh : "%d часа",
1715+ d : "ден",
1716+ dd : "%d дни",
1717+ M : "месец",
1718+ MM : "%d месеца",
1719+ y : "година",
1720+ yy : "%d години"
1721+ },
1722+ ordinal : function (number) {
1723+ var lastDigit = number % 10,
1724+ last2Digits = number % 100;
1725+ if (number === 0) {
1726+ return number + '-ев';
1727+ } else if (last2Digits === 0) {
1728+ return number + '-ен';
1729+ } else if (last2Digits > 10 && last2Digits < 20) {
1730+ return number + '-ти';
1731+ } else if (lastDigit === 1) {
1732+ return number + '-ви';
1733+ } else if (lastDigit === 2) {
1734+ return number + '-ри';
1735+ } else if (lastDigit === 7 || lastDigit === 8) {
1736+ return number + '-ми';
1737+ } else {
1738+ return number + '-ти';
1739+ }
1740+ },
1741+ week : {
1742+ dow : 1, // Monday is the first day of the week.
1743+ doy : 7 // The week that contains Jan 1st is the first week of the year.
1744+ }
1745+ });
1746+}));
1747
1748=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.br.js'
1749--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.br.js 1970-01-01 00:00:00 +0000
1750+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.br.js 2014-02-14 15:04:13 +0000
1751@@ -0,0 +1,107 @@
1752+// moment.js language configuration
1753+// language : breton (br)
1754+// author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
1755+
1756+(function (factory) {
1757+ if (typeof define === 'function' && define.amd) {
1758+ define(['moment'], factory); // AMD
1759+ } else if (typeof exports === 'object') {
1760+ module.exports = factory(require('../moment')); // Node
1761+ } else {
1762+ factory(window.moment); // Browser global
1763+ }
1764+}(function (moment) {
1765+ function relativeTimeWithMutation(number, withoutSuffix, key) {
1766+ var format = {
1767+ 'mm': "munutenn",
1768+ 'MM': "miz",
1769+ 'dd': "devezh"
1770+ };
1771+ return number + ' ' + mutation(format[key], number);
1772+ }
1773+
1774+ function specialMutationForYears(number) {
1775+ switch (lastNumber(number)) {
1776+ case 1:
1777+ case 3:
1778+ case 4:
1779+ case 5:
1780+ case 9:
1781+ return number + ' bloaz';
1782+ default:
1783+ return number + ' vloaz';
1784+ }
1785+ }
1786+
1787+ function lastNumber(number) {
1788+ if (number > 9) {
1789+ return lastNumber(number % 10);
1790+ }
1791+ return number;
1792+ }
1793+
1794+ function mutation(text, number) {
1795+ if (number === 2) {
1796+ return softMutation(text);
1797+ }
1798+ return text;
1799+ }
1800+
1801+ function softMutation(text) {
1802+ var mutationTable = {
1803+ 'm': 'v',
1804+ 'b': 'v',
1805+ 'd': 'z'
1806+ };
1807+ if (mutationTable[text.charAt(0)] === undefined) {
1808+ return text;
1809+ }
1810+ return mutationTable[text.charAt(0)] + text.substring(1);
1811+ }
1812+
1813+ return moment.lang('br', {
1814+ months : "Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),
1815+ monthsShort : "Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),
1816+ weekdays : "Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),
1817+ weekdaysShort : "Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),
1818+ weekdaysMin : "Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),
1819+ longDateFormat : {
1820+ LT : "h[e]mm A",
1821+ L : "DD/MM/YYYY",
1822+ LL : "D [a viz] MMMM YYYY",
1823+ LLL : "D [a viz] MMMM YYYY LT",
1824+ LLLL : "dddd, D [a viz] MMMM YYYY LT"
1825+ },
1826+ calendar : {
1827+ sameDay : '[Hiziv da] LT',
1828+ nextDay : '[Warc\'hoazh da] LT',
1829+ nextWeek : 'dddd [da] LT',
1830+ lastDay : '[Dec\'h da] LT',
1831+ lastWeek : 'dddd [paset da] LT',
1832+ sameElse : 'L'
1833+ },
1834+ relativeTime : {
1835+ future : "a-benn %s",
1836+ past : "%s 'zo",
1837+ s : "un nebeud segondennoù",
1838+ m : "ur vunutenn",
1839+ mm : relativeTimeWithMutation,
1840+ h : "un eur",
1841+ hh : "%d eur",
1842+ d : "un devezh",
1843+ dd : relativeTimeWithMutation,
1844+ M : "ur miz",
1845+ MM : relativeTimeWithMutation,
1846+ y : "ur bloaz",
1847+ yy : specialMutationForYears
1848+ },
1849+ ordinal : function (number) {
1850+ var output = (number === 1) ? 'añ' : 'vet';
1851+ return number + output;
1852+ },
1853+ week : {
1854+ dow : 1, // Monday is the first day of the week.
1855+ doy : 4 // The week that contains Jan 4th is the first week of the year.
1856+ }
1857+ });
1858+}));
1859
1860=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.bs.js'
1861--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.bs.js 1970-01-01 00:00:00 +0000
1862+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.bs.js 2014-02-14 15:04:13 +0000
1863@@ -0,0 +1,139 @@
1864+// moment.js language configuration
1865+// language : bosnian (bs)
1866+// author : Nedim Cholich : https://github.com/frontyard
1867+// based on (hr) translation by Bojan Marković
1868+
1869+(function (factory) {
1870+ if (typeof define === 'function' && define.amd) {
1871+ define(['moment'], factory); // AMD
1872+ } else if (typeof exports === 'object') {
1873+ module.exports = factory(require('../moment')); // Node
1874+ } else {
1875+ factory(window.moment); // Browser global
1876+ }
1877+}(function (moment) {
1878+
1879+ function translate(number, withoutSuffix, key) {
1880+ var result = number + " ";
1881+ switch (key) {
1882+ case 'm':
1883+ return withoutSuffix ? 'jedna minuta' : 'jedne minute';
1884+ case 'mm':
1885+ if (number === 1) {
1886+ result += 'minuta';
1887+ } else if (number === 2 || number === 3 || number === 4) {
1888+ result += 'minute';
1889+ } else {
1890+ result += 'minuta';
1891+ }
1892+ return result;
1893+ case 'h':
1894+ return withoutSuffix ? 'jedan sat' : 'jednog sata';
1895+ case 'hh':
1896+ if (number === 1) {
1897+ result += 'sat';
1898+ } else if (number === 2 || number === 3 || number === 4) {
1899+ result += 'sata';
1900+ } else {
1901+ result += 'sati';
1902+ }
1903+ return result;
1904+ case 'dd':
1905+ if (number === 1) {
1906+ result += 'dan';
1907+ } else {
1908+ result += 'dana';
1909+ }
1910+ return result;
1911+ case 'MM':
1912+ if (number === 1) {
1913+ result += 'mjesec';
1914+ } else if (number === 2 || number === 3 || number === 4) {
1915+ result += 'mjeseca';
1916+ } else {
1917+ result += 'mjeseci';
1918+ }
1919+ return result;
1920+ case 'yy':
1921+ if (number === 1) {
1922+ result += 'godina';
1923+ } else if (number === 2 || number === 3 || number === 4) {
1924+ result += 'godine';
1925+ } else {
1926+ result += 'godina';
1927+ }
1928+ return result;
1929+ }
1930+ }
1931+
1932+ return moment.lang('bs', {
1933+ months : "januar_februar_mart_april_maj_juni_juli_avgust_septembar_oktobar_novembar_decembar".split("_"),
1934+ monthsShort : "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),
1935+ weekdays : "nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),
1936+ weekdaysShort : "ned._pon._uto._sri._čet._pet._sub.".split("_"),
1937+ weekdaysMin : "ne_po_ut_sr_če_pe_su".split("_"),
1938+ longDateFormat : {
1939+ LT : "H:mm",
1940+ L : "DD. MM. YYYY",
1941+ LL : "D. MMMM YYYY",
1942+ LLL : "D. MMMM YYYY LT",
1943+ LLLL : "dddd, D. MMMM YYYY LT"
1944+ },
1945+ calendar : {
1946+ sameDay : '[danas u] LT',
1947+ nextDay : '[sutra u] LT',
1948+
1949+ nextWeek : function () {
1950+ switch (this.day()) {
1951+ case 0:
1952+ return '[u] [nedjelju] [u] LT';
1953+ case 3:
1954+ return '[u] [srijedu] [u] LT';
1955+ case 6:
1956+ return '[u] [subotu] [u] LT';
1957+ case 1:
1958+ case 2:
1959+ case 4:
1960+ case 5:
1961+ return '[u] dddd [u] LT';
1962+ }
1963+ },
1964+ lastDay : '[jučer u] LT',
1965+ lastWeek : function () {
1966+ switch (this.day()) {
1967+ case 0:
1968+ case 3:
1969+ return '[prošlu] dddd [u] LT';
1970+ case 6:
1971+ return '[prošle] [subote] [u] LT';
1972+ case 1:
1973+ case 2:
1974+ case 4:
1975+ case 5:
1976+ return '[prošli] dddd [u] LT';
1977+ }
1978+ },
1979+ sameElse : 'L'
1980+ },
1981+ relativeTime : {
1982+ future : "za %s",
1983+ past : "prije %s",
1984+ s : "par sekundi",
1985+ m : translate,
1986+ mm : translate,
1987+ h : translate,
1988+ hh : translate,
1989+ d : "dan",
1990+ dd : translate,
1991+ M : "mjesec",
1992+ MM : translate,
1993+ y : "godinu",
1994+ yy : translate
1995+ },
1996+ ordinal : '%d.',
1997+ week : {
1998+ dow : 1, // Monday is the first day of the week.
1999+ doy : 7 // The week that contains Jan 1st is the first week of the year.
2000+ }
2001+ });
2002+}));
2003
2004=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ca.js'
2005--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ca.js 1970-01-01 00:00:00 +0000
2006+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ca.js 2014-02-14 15:04:13 +0000
2007@@ -0,0 +1,66 @@
2008+// moment.js language configuration
2009+// language : catalan (ca)
2010+// author : Juan G. Hurtado : https://github.com/juanghurtado
2011+
2012+(function (factory) {
2013+ if (typeof define === 'function' && define.amd) {
2014+ define(['moment'], factory); // AMD
2015+ } else if (typeof exports === 'object') {
2016+ module.exports = factory(require('../moment')); // Node
2017+ } else {
2018+ factory(window.moment); // Browser global
2019+ }
2020+}(function (moment) {
2021+ return moment.lang('ca', {
2022+ months : "Gener_Febrer_Març_Abril_Maig_Juny_Juliol_Agost_Setembre_Octubre_Novembre_Desembre".split("_"),
2023+ monthsShort : "Gen._Febr._Mar._Abr._Mai._Jun._Jul._Ag._Set._Oct._Nov._Des.".split("_"),
2024+ weekdays : "Diumenge_Dilluns_Dimarts_Dimecres_Dijous_Divendres_Dissabte".split("_"),
2025+ weekdaysShort : "Dg._Dl._Dt._Dc._Dj._Dv._Ds.".split("_"),
2026+ weekdaysMin : "Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),
2027+ longDateFormat : {
2028+ LT : "H:mm",
2029+ L : "DD/MM/YYYY",
2030+ LL : "D MMMM YYYY",
2031+ LLL : "D MMMM YYYY LT",
2032+ LLLL : "dddd D MMMM YYYY LT"
2033+ },
2034+ calendar : {
2035+ sameDay : function () {
2036+ return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
2037+ },
2038+ nextDay : function () {
2039+ return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
2040+ },
2041+ nextWeek : function () {
2042+ return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
2043+ },
2044+ lastDay : function () {
2045+ return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
2046+ },
2047+ lastWeek : function () {
2048+ return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
2049+ },
2050+ sameElse : 'L'
2051+ },
2052+ relativeTime : {
2053+ future : "en %s",
2054+ past : "fa %s",
2055+ s : "uns segons",
2056+ m : "un minut",
2057+ mm : "%d minuts",
2058+ h : "una hora",
2059+ hh : "%d hores",
2060+ d : "un dia",
2061+ dd : "%d dies",
2062+ M : "un mes",
2063+ MM : "%d mesos",
2064+ y : "un any",
2065+ yy : "%d anys"
2066+ },
2067+ ordinal : '%dº',
2068+ week : {
2069+ dow : 1, // Monday is the first day of the week.
2070+ doy : 4 // The week that contains Jan 4th is the first week of the year.
2071+ }
2072+ });
2073+}));
2074
2075=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.cs.js'
2076--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.cs.js 1970-01-01 00:00:00 +0000
2077+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.cs.js 2014-02-14 15:04:13 +0000
2078@@ -0,0 +1,155 @@
2079+// moment.js language configuration
2080+// language : czech (cs)
2081+// author : petrbela : https://github.com/petrbela
2082+
2083+(function (factory) {
2084+ if (typeof define === 'function' && define.amd) {
2085+ define(['moment'], factory); // AMD
2086+ } else if (typeof exports === 'object') {
2087+ module.exports = factory(require('../moment')); // Node
2088+ } else {
2089+ factory(window.moment); // Browser global
2090+ }
2091+}(function (moment) {
2092+ var months = "leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),
2093+ monthsShort = "led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_");
2094+
2095+ function plural(n) {
2096+ return (n > 1) && (n < 5) && (~~(n / 10) !== 1);
2097+ }
2098+
2099+ function translate(number, withoutSuffix, key, isFuture) {
2100+ var result = number + " ";
2101+ switch (key) {
2102+ case 's': // a few seconds / in a few seconds / a few seconds ago
2103+ return (withoutSuffix || isFuture) ? 'pár vteřin' : 'pár vteřinami';
2104+ case 'm': // a minute / in a minute / a minute ago
2105+ return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');
2106+ case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
2107+ if (withoutSuffix || isFuture) {
2108+ return result + (plural(number) ? 'minuty' : 'minut');
2109+ } else {
2110+ return result + 'minutami';
2111+ }
2112+ break;
2113+ case 'h': // an hour / in an hour / an hour ago
2114+ return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
2115+ case 'hh': // 9 hours / in 9 hours / 9 hours ago
2116+ if (withoutSuffix || isFuture) {
2117+ return result + (plural(number) ? 'hodiny' : 'hodin');
2118+ } else {
2119+ return result + 'hodinami';
2120+ }
2121+ break;
2122+ case 'd': // a day / in a day / a day ago
2123+ return (withoutSuffix || isFuture) ? 'den' : 'dnem';
2124+ case 'dd': // 9 days / in 9 days / 9 days ago
2125+ if (withoutSuffix || isFuture) {
2126+ return result + (plural(number) ? 'dny' : 'dní');
2127+ } else {
2128+ return result + 'dny';
2129+ }
2130+ break;
2131+ case 'M': // a month / in a month / a month ago
2132+ return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';
2133+ case 'MM': // 9 months / in 9 months / 9 months ago
2134+ if (withoutSuffix || isFuture) {
2135+ return result + (plural(number) ? 'měsíce' : 'měsíců');
2136+ } else {
2137+ return result + 'měsíci';
2138+ }
2139+ break;
2140+ case 'y': // a year / in a year / a year ago
2141+ return (withoutSuffix || isFuture) ? 'rok' : 'rokem';
2142+ case 'yy': // 9 years / in 9 years / 9 years ago
2143+ if (withoutSuffix || isFuture) {
2144+ return result + (plural(number) ? 'roky' : 'let');
2145+ } else {
2146+ return result + 'lety';
2147+ }
2148+ break;
2149+ }
2150+ }
2151+
2152+ return moment.lang('cs', {
2153+ months : months,
2154+ monthsShort : monthsShort,
2155+ monthsParse : (function (months, monthsShort) {
2156+ var i, _monthsParse = [];
2157+ for (i = 0; i < 12; i++) {
2158+ // use custom parser to solve problem with July (červenec)
2159+ _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');
2160+ }
2161+ return _monthsParse;
2162+ }(months, monthsShort)),
2163+ weekdays : "neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),
2164+ weekdaysShort : "ne_po_út_st_čt_pá_so".split("_"),
2165+ weekdaysMin : "ne_po_út_st_čt_pá_so".split("_"),
2166+ longDateFormat : {
2167+ LT: "H:mm",
2168+ L : "DD.MM.YYYY",
2169+ LL : "D. MMMM YYYY",
2170+ LLL : "D. MMMM YYYY LT",
2171+ LLLL : "dddd D. MMMM YYYY LT"
2172+ },
2173+ calendar : {
2174+ sameDay: "[dnes v] LT",
2175+ nextDay: '[zítra v] LT',
2176+ nextWeek: function () {
2177+ switch (this.day()) {
2178+ case 0:
2179+ return '[v neděli v] LT';
2180+ case 1:
2181+ case 2:
2182+ return '[v] dddd [v] LT';
2183+ case 3:
2184+ return '[ve středu v] LT';
2185+ case 4:
2186+ return '[ve čtvrtek v] LT';
2187+ case 5:
2188+ return '[v pátek v] LT';
2189+ case 6:
2190+ return '[v sobotu v] LT';
2191+ }
2192+ },
2193+ lastDay: '[včera v] LT',
2194+ lastWeek: function () {
2195+ switch (this.day()) {
2196+ case 0:
2197+ return '[minulou neděli v] LT';
2198+ case 1:
2199+ case 2:
2200+ return '[minulé] dddd [v] LT';
2201+ case 3:
2202+ return '[minulou středu v] LT';
2203+ case 4:
2204+ case 5:
2205+ return '[minulý] dddd [v] LT';
2206+ case 6:
2207+ return '[minulou sobotu v] LT';
2208+ }
2209+ },
2210+ sameElse: "L"
2211+ },
2212+ relativeTime : {
2213+ future : "za %s",
2214+ past : "před %s",
2215+ s : translate,
2216+ m : translate,
2217+ mm : translate,
2218+ h : translate,
2219+ hh : translate,
2220+ d : translate,
2221+ dd : translate,
2222+ M : translate,
2223+ MM : translate,
2224+ y : translate,
2225+ yy : translate
2226+ },
2227+ ordinal : '%d.',
2228+ week : {
2229+ dow : 1, // Monday is the first day of the week.
2230+ doy : 4 // The week that contains Jan 4th is the first week of the year.
2231+ }
2232+ });
2233+}));
2234
2235=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.cv.js'
2236--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.cv.js 1970-01-01 00:00:00 +0000
2237+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.cv.js 2014-02-14 15:04:13 +0000
2238@@ -0,0 +1,59 @@
2239+// moment.js language configuration
2240+// language : chuvash (cv)
2241+// author : Anatoly Mironov : https://github.com/mirontoli
2242+
2243+(function (factory) {
2244+ if (typeof define === 'function' && define.amd) {
2245+ define(['moment'], factory); // AMD
2246+ } else if (typeof exports === 'object') {
2247+ module.exports = factory(require('../moment')); // Node
2248+ } else {
2249+ factory(window.moment); // Browser global
2250+ }
2251+}(function (moment) {
2252+ return moment.lang('cv', {
2253+ months : "кăрлач_нарăс_пуш_ака_май_çĕртме_утă_çурла_авăн_юпа_чӳк_раштав".split("_"),
2254+ monthsShort : "кăр_нар_пуш_ака_май_çĕр_утă_çур_ав_юпа_чӳк_раш".split("_"),
2255+ weekdays : "вырсарникун_тунтикун_ытларикун_юнкун_кĕçнерникун_эрнекун_шăматкун".split("_"),
2256+ weekdaysShort : "выр_тун_ытл_юн_кĕç_эрн_шăм".split("_"),
2257+ weekdaysMin : "вр_тн_ыт_юн_кç_эр_шм".split("_"),
2258+ longDateFormat : {
2259+ LT : "HH:mm",
2260+ L : "DD-MM-YYYY",
2261+ LL : "YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ]",
2262+ LLL : "YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT",
2263+ LLLL : "dddd, YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT"
2264+ },
2265+ calendar : {
2266+ sameDay: '[Паян] LT [сехетре]',
2267+ nextDay: '[Ыран] LT [сехетре]',
2268+ lastDay: '[Ĕнер] LT [сехетре]',
2269+ nextWeek: '[Çитес] dddd LT [сехетре]',
2270+ lastWeek: '[Иртнĕ] dddd LT [сехетре]',
2271+ sameElse: 'L'
2272+ },
2273+ relativeTime : {
2274+ future : function (output) {
2275+ var affix = /сехет$/i.exec(output) ? "рен" : /çул$/i.exec(output) ? "тан" : "ран";
2276+ return output + affix;
2277+ },
2278+ past : "%s каялла",
2279+ s : "пĕр-ик çеккунт",
2280+ m : "пĕр минут",
2281+ mm : "%d минут",
2282+ h : "пĕр сехет",
2283+ hh : "%d сехет",
2284+ d : "пĕр кун",
2285+ dd : "%d кун",
2286+ M : "пĕр уйăх",
2287+ MM : "%d уйăх",
2288+ y : "пĕр çул",
2289+ yy : "%d çул"
2290+ },
2291+ ordinal : '%d-мĕш',
2292+ week : {
2293+ dow : 1, // Monday is the first day of the week.
2294+ doy : 7 // The week that contains Jan 1st is the first week of the year.
2295+ }
2296+ });
2297+}));
2298
2299=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.da.js'
2300--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.da.js 1970-01-01 00:00:00 +0000
2301+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.da.js 2014-02-14 15:04:13 +0000
2302@@ -0,0 +1,56 @@
2303+// moment.js language configuration
2304+// language : danish (da)
2305+// author : Ulrik Nielsen : https://github.com/mrbase
2306+
2307+(function (factory) {
2308+ if (typeof define === 'function' && define.amd) {
2309+ define(['moment'], factory); // AMD
2310+ } else if (typeof exports === 'object') {
2311+ module.exports = factory(require('../moment')); // Node
2312+ } else {
2313+ factory(window.moment); // Browser global
2314+ }
2315+}(function (moment) {
2316+ return moment.lang('da', {
2317+ months : "januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),
2318+ monthsShort : "jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),
2319+ weekdays : "søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),
2320+ weekdaysShort : "søn_man_tir_ons_tor_fre_lør".split("_"),
2321+ weekdaysMin : "sø_ma_ti_on_to_fr_lø".split("_"),
2322+ longDateFormat : {
2323+ LT : "HH:mm",
2324+ L : "DD/MM/YYYY",
2325+ LL : "D MMMM YYYY",
2326+ LLL : "D MMMM YYYY LT",
2327+ LLLL : "dddd D. MMMM, YYYY LT"
2328+ },
2329+ calendar : {
2330+ sameDay : '[I dag kl.] LT',
2331+ nextDay : '[I morgen kl.] LT',
2332+ nextWeek : 'dddd [kl.] LT',
2333+ lastDay : '[I går kl.] LT',
2334+ lastWeek : '[sidste] dddd [kl] LT',
2335+ sameElse : 'L'
2336+ },
2337+ relativeTime : {
2338+ future : "om %s",
2339+ past : "%s siden",
2340+ s : "få sekunder",
2341+ m : "et minut",
2342+ mm : "%d minutter",
2343+ h : "en time",
2344+ hh : "%d timer",
2345+ d : "en dag",
2346+ dd : "%d dage",
2347+ M : "en måned",
2348+ MM : "%d måneder",
2349+ y : "et år",
2350+ yy : "%d år"
2351+ },
2352+ ordinal : '%d.',
2353+ week : {
2354+ dow : 1, // Monday is the first day of the week.
2355+ doy : 4 // The week that contains Jan 4th is the first week of the year.
2356+ }
2357+ });
2358+}));
2359
2360=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.de.js'
2361--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.de.js 1970-01-01 00:00:00 +0000
2362+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.de.js 2014-02-14 15:04:13 +0000
2363@@ -0,0 +1,71 @@
2364+// moment.js language configuration
2365+// language : german (de)
2366+// author : lluchs : https://github.com/lluchs
2367+// author: Menelion Elensúle: https://github.com/Oire
2368+
2369+(function (factory) {
2370+ if (typeof define === 'function' && define.amd) {
2371+ define(['moment'], factory); // AMD
2372+ } else if (typeof exports === 'object') {
2373+ module.exports = factory(require('../moment')); // Node
2374+ } else {
2375+ factory(window.moment); // Browser global
2376+ }
2377+}(function (moment) {
2378+ function processRelativeTime(number, withoutSuffix, key, isFuture) {
2379+ var format = {
2380+ 'm': ['eine Minute', 'einer Minute'],
2381+ 'h': ['eine Stunde', 'einer Stunde'],
2382+ 'd': ['ein Tag', 'einem Tag'],
2383+ 'dd': [number + ' Tage', number + ' Tagen'],
2384+ 'M': ['ein Monat', 'einem Monat'],
2385+ 'MM': [number + ' Monate', number + ' Monaten'],
2386+ 'y': ['ein Jahr', 'einem Jahr'],
2387+ 'yy': [number + ' Jahre', number + ' Jahren']
2388+ };
2389+ return withoutSuffix ? format[key][0] : format[key][1];
2390+ }
2391+
2392+ return moment.lang('de', {
2393+ months : "Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),
2394+ monthsShort : "Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),
2395+ weekdays : "Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),
2396+ weekdaysShort : "So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),
2397+ weekdaysMin : "So_Mo_Di_Mi_Do_Fr_Sa".split("_"),
2398+ longDateFormat : {
2399+ LT: "H:mm [Uhr]",
2400+ L : "DD.MM.YYYY",
2401+ LL : "D. MMMM YYYY",
2402+ LLL : "D. MMMM YYYY LT",
2403+ LLLL : "dddd, D. MMMM YYYY LT"
2404+ },
2405+ calendar : {
2406+ sameDay: "[Heute um] LT",
2407+ sameElse: "L",
2408+ nextDay: '[Morgen um] LT',
2409+ nextWeek: 'dddd [um] LT',
2410+ lastDay: '[Gestern um] LT',
2411+ lastWeek: '[letzten] dddd [um] LT'
2412+ },
2413+ relativeTime : {
2414+ future : "in %s",
2415+ past : "vor %s",
2416+ s : "ein paar Sekunden",
2417+ m : processRelativeTime,
2418+ mm : "%d Minuten",
2419+ h : processRelativeTime,
2420+ hh : "%d Stunden",
2421+ d : processRelativeTime,
2422+ dd : processRelativeTime,
2423+ M : processRelativeTime,
2424+ MM : processRelativeTime,
2425+ y : processRelativeTime,
2426+ yy : processRelativeTime
2427+ },
2428+ ordinal : '%d.',
2429+ week : {
2430+ dow : 1, // Monday is the first day of the week.
2431+ doy : 4 // The week that contains Jan 4th is the first week of the year.
2432+ }
2433+ });
2434+}));
2435
2436=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.el.js'
2437--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.el.js 1970-01-01 00:00:00 +0000
2438+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.el.js 2014-02-14 15:04:13 +0000
2439@@ -0,0 +1,79 @@
2440+// moment.js language configuration
2441+// language : modern greek (el)
2442+// author : Aggelos Karalias : https://github.com/mehiel
2443+
2444+(function (factory) {
2445+ if (typeof define === 'function' && define.amd) {
2446+ define(['moment'], factory); // AMD
2447+ } else if (typeof exports === 'object') {
2448+ module.exports = factory(require('../moment')); // Node
2449+ } else {
2450+ factory(window.moment); // Browser global
2451+ }
2452+}(function (moment) {
2453+ return moment.lang('el', {
2454+ monthsNominativeEl : "Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),
2455+ monthsGenitiveEl : "Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),
2456+ months : function (momentToFormat, format) {
2457+ if (/D/.test(format.substring(0, format.indexOf("MMMM")))) { // if there is a day number before 'MMMM'
2458+ return this._monthsGenitiveEl[momentToFormat.month()];
2459+ } else {
2460+ return this._monthsNominativeEl[momentToFormat.month()];
2461+ }
2462+ },
2463+ monthsShort : "Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),
2464+ weekdays : "Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),
2465+ weekdaysShort : "Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),
2466+ weekdaysMin : "Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),
2467+ meridiem : function (hours, minutes, isLower) {
2468+ if (hours > 11) {
2469+ return isLower ? 'μμ' : 'ΜΜ';
2470+ } else {
2471+ return isLower ? 'πμ' : 'ΠΜ';
2472+ }
2473+ },
2474+ longDateFormat : {
2475+ LT : "h:mm A",
2476+ L : "DD/MM/YYYY",
2477+ LL : "D MMMM YYYY",
2478+ LLL : "D MMMM YYYY LT",
2479+ LLLL : "dddd, D MMMM YYYY LT"
2480+ },
2481+ calendarEl : {
2482+ sameDay : '[Σήμερα {}] LT',
2483+ nextDay : '[Αύριο {}] LT',
2484+ nextWeek : 'dddd [{}] LT',
2485+ lastDay : '[Χθες {}] LT',
2486+ lastWeek : '[την προηγούμενη] dddd [{}] LT',
2487+ sameElse : 'L'
2488+ },
2489+ calendar : function (key, mom) {
2490+ var output = this._calendarEl[key],
2491+ hours = mom && mom.hours();
2492+
2493+ return output.replace("{}", (hours % 12 === 1 ? "στη" : "στις"));
2494+ },
2495+ relativeTime : {
2496+ future : "σε %s",
2497+ past : "%s πριν",
2498+ s : "δευτερόλεπτα",
2499+ m : "ένα λεπτό",
2500+ mm : "%d λεπτά",
2501+ h : "μία ώρα",
2502+ hh : "%d ώρες",
2503+ d : "μία μέρα",
2504+ dd : "%d μέρες",
2505+ M : "ένας μήνας",
2506+ MM : "%d μήνες",
2507+ y : "ένας χρόνος",
2508+ yy : "%d χρόνια"
2509+ },
2510+ ordinal : function (number) {
2511+ return number + 'η';
2512+ },
2513+ week : {
2514+ dow : 1, // Monday is the first day of the week.
2515+ doy : 4 // The week that contains Jan 4st is the first week of the year.
2516+ }
2517+ });
2518+}));
2519
2520=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.en-au.js'
2521--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.en-au.js 1970-01-01 00:00:00 +0000
2522+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.en-au.js 2014-02-14 15:04:13 +0000
2523@@ -0,0 +1,62 @@
2524+// moment.js language configuration
2525+// language : australian english (en-au)
2526+
2527+(function (factory) {
2528+ if (typeof define === 'function' && define.amd) {
2529+ define(['moment'], factory); // AMD
2530+ } else if (typeof exports === 'object') {
2531+ module.exports = factory(require('../moment')); // Node
2532+ } else {
2533+ factory(window.moment); // Browser global
2534+ }
2535+}(function (moment) {
2536+ return moment.lang('en-au', {
2537+ months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
2538+ monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
2539+ weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
2540+ weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
2541+ weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
2542+ longDateFormat : {
2543+ LT : "h:mm A",
2544+ L : "DD/MM/YYYY",
2545+ LL : "D MMMM YYYY",
2546+ LLL : "D MMMM YYYY LT",
2547+ LLLL : "dddd, D MMMM YYYY LT"
2548+ },
2549+ calendar : {
2550+ sameDay : '[Today at] LT',
2551+ nextDay : '[Tomorrow at] LT',
2552+ nextWeek : 'dddd [at] LT',
2553+ lastDay : '[Yesterday at] LT',
2554+ lastWeek : '[Last] dddd [at] LT',
2555+ sameElse : 'L'
2556+ },
2557+ relativeTime : {
2558+ future : "in %s",
2559+ past : "%s ago",
2560+ s : "a few seconds",
2561+ m : "a minute",
2562+ mm : "%d minutes",
2563+ h : "an hour",
2564+ hh : "%d hours",
2565+ d : "a day",
2566+ dd : "%d days",
2567+ M : "a month",
2568+ MM : "%d months",
2569+ y : "a year",
2570+ yy : "%d years"
2571+ },
2572+ ordinal : function (number) {
2573+ var b = number % 10,
2574+ output = (~~ (number % 100 / 10) === 1) ? 'th' :
2575+ (b === 1) ? 'st' :
2576+ (b === 2) ? 'nd' :
2577+ (b === 3) ? 'rd' : 'th';
2578+ return number + output;
2579+ },
2580+ week : {
2581+ dow : 1, // Monday is the first day of the week.
2582+ doy : 4 // The week that contains Jan 4th is the first week of the year.
2583+ }
2584+ });
2585+}));
2586
2587=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.en-ca.js'
2588--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.en-ca.js 1970-01-01 00:00:00 +0000
2589+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.en-ca.js 2014-02-14 15:04:13 +0000
2590@@ -0,0 +1,59 @@
2591+// moment.js language configuration
2592+// language : canadian english (en-ca)
2593+// author : Jonathan Abourbih : https://github.com/jonbca
2594+
2595+(function (factory) {
2596+ if (typeof define === 'function' && define.amd) {
2597+ define(['moment'], factory); // AMD
2598+ } else if (typeof exports === 'object') {
2599+ module.exports = factory(require('../moment')); // Node
2600+ } else {
2601+ factory(window.moment); // Browser global
2602+ }
2603+}(function (moment) {
2604+ return moment.lang('en-ca', {
2605+ months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
2606+ monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
2607+ weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
2608+ weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
2609+ weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
2610+ longDateFormat : {
2611+ LT : "h:mm A",
2612+ L : "YYYY-MM-DD",
2613+ LL : "D MMMM, YYYY",
2614+ LLL : "D MMMM, YYYY LT",
2615+ LLLL : "dddd, D MMMM, YYYY LT"
2616+ },
2617+ calendar : {
2618+ sameDay : '[Today at] LT',
2619+ nextDay : '[Tomorrow at] LT',
2620+ nextWeek : 'dddd [at] LT',
2621+ lastDay : '[Yesterday at] LT',
2622+ lastWeek : '[Last] dddd [at] LT',
2623+ sameElse : 'L'
2624+ },
2625+ relativeTime : {
2626+ future : "in %s",
2627+ past : "%s ago",
2628+ s : "a few seconds",
2629+ m : "a minute",
2630+ mm : "%d minutes",
2631+ h : "an hour",
2632+ hh : "%d hours",
2633+ d : "a day",
2634+ dd : "%d days",
2635+ M : "a month",
2636+ MM : "%d months",
2637+ y : "a year",
2638+ yy : "%d years"
2639+ },
2640+ ordinal : function (number) {
2641+ var b = number % 10,
2642+ output = (~~ (number % 100 / 10) === 1) ? 'th' :
2643+ (b === 1) ? 'st' :
2644+ (b === 2) ? 'nd' :
2645+ (b === 3) ? 'rd' : 'th';
2646+ return number + output;
2647+ }
2648+ });
2649+}));
2650
2651=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.en-gb.js'
2652--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.en-gb.js 1970-01-01 00:00:00 +0000
2653+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.en-gb.js 2014-02-14 15:04:13 +0000
2654@@ -0,0 +1,63 @@
2655+// moment.js language configuration
2656+// language : great britain english (en-gb)
2657+// author : Chris Gedrim : https://github.com/chrisgedrim
2658+
2659+(function (factory) {
2660+ if (typeof define === 'function' && define.amd) {
2661+ define(['moment'], factory); // AMD
2662+ } else if (typeof exports === 'object') {
2663+ module.exports = factory(require('../moment')); // Node
2664+ } else {
2665+ factory(window.moment); // Browser global
2666+ }
2667+}(function (moment) {
2668+ return moment.lang('en-gb', {
2669+ months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
2670+ monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
2671+ weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
2672+ weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
2673+ weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
2674+ longDateFormat : {
2675+ LT : "HH:mm",
2676+ L : "DD/MM/YYYY",
2677+ LL : "D MMMM YYYY",
2678+ LLL : "D MMMM YYYY LT",
2679+ LLLL : "dddd, D MMMM YYYY LT"
2680+ },
2681+ calendar : {
2682+ sameDay : '[Today at] LT',
2683+ nextDay : '[Tomorrow at] LT',
2684+ nextWeek : 'dddd [at] LT',
2685+ lastDay : '[Yesterday at] LT',
2686+ lastWeek : '[Last] dddd [at] LT',
2687+ sameElse : 'L'
2688+ },
2689+ relativeTime : {
2690+ future : "in %s",
2691+ past : "%s ago",
2692+ s : "a few seconds",
2693+ m : "a minute",
2694+ mm : "%d minutes",
2695+ h : "an hour",
2696+ hh : "%d hours",
2697+ d : "a day",
2698+ dd : "%d days",
2699+ M : "a month",
2700+ MM : "%d months",
2701+ y : "a year",
2702+ yy : "%d years"
2703+ },
2704+ ordinal : function (number) {
2705+ var b = number % 10,
2706+ output = (~~ (number % 100 / 10) === 1) ? 'th' :
2707+ (b === 1) ? 'st' :
2708+ (b === 2) ? 'nd' :
2709+ (b === 3) ? 'rd' : 'th';
2710+ return number + output;
2711+ },
2712+ week : {
2713+ dow : 1, // Monday is the first day of the week.
2714+ doy : 4 // The week that contains Jan 4th is the first week of the year.
2715+ }
2716+ });
2717+}));
2718
2719=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.eo.js'
2720--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.eo.js 1970-01-01 00:00:00 +0000
2721+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.eo.js 2014-02-14 15:04:13 +0000
2722@@ -0,0 +1,65 @@
2723+// moment.js language configuration
2724+// language : esperanto (eo)
2725+// author : Colin Dean : https://github.com/colindean
2726+// komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko.
2727+// Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni!
2728+
2729+(function (factory) {
2730+ if (typeof define === 'function' && define.amd) {
2731+ define(['moment'], factory); // AMD
2732+ } else if (typeof exports === 'object') {
2733+ module.exports = factory(require('../moment')); // Node
2734+ } else {
2735+ factory(window.moment); // Browser global
2736+ }
2737+}(function (moment) {
2738+ return moment.lang('eo', {
2739+ months : "januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),
2740+ monthsShort : "jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),
2741+ weekdays : "Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"),
2742+ weekdaysShort : "Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab".split("_"),
2743+ weekdaysMin : "Di_Lu_Ma_Me_Ĵa_Ve_Sa".split("_"),
2744+ longDateFormat : {
2745+ LT : "HH:mm",
2746+ L : "YYYY-MM-DD",
2747+ LL : "D[-an de] MMMM, YYYY",
2748+ LLL : "D[-an de] MMMM, YYYY LT",
2749+ LLLL : "dddd, [la] D[-an de] MMMM, YYYY LT"
2750+ },
2751+ meridiem : function (hours, minutes, isLower) {
2752+ if (hours > 11) {
2753+ return isLower ? 'p.t.m.' : 'P.T.M.';
2754+ } else {
2755+ return isLower ? 'a.t.m.' : 'A.T.M.';
2756+ }
2757+ },
2758+ calendar : {
2759+ sameDay : '[Hodiaŭ je] LT',
2760+ nextDay : '[Morgaŭ je] LT',
2761+ nextWeek : 'dddd [je] LT',
2762+ lastDay : '[Hieraŭ je] LT',
2763+ lastWeek : '[pasinta] dddd [je] LT',
2764+ sameElse : 'L'
2765+ },
2766+ relativeTime : {
2767+ future : "je %s",
2768+ past : "antaŭ %s",
2769+ s : "sekundoj",
2770+ m : "minuto",
2771+ mm : "%d minutoj",
2772+ h : "horo",
2773+ hh : "%d horoj",
2774+ d : "tago",//ne 'diurno', ĉar estas uzita por proksimumo
2775+ dd : "%d tagoj",
2776+ M : "monato",
2777+ MM : "%d monatoj",
2778+ y : "jaro",
2779+ yy : "%d jaroj"
2780+ },
2781+ ordinal : "%da",
2782+ week : {
2783+ dow : 1, // Monday is the first day of the week.
2784+ doy : 7 // The week that contains Jan 1st is the first week of the year.
2785+ }
2786+ });
2787+}));
2788
2789=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.es.js'
2790--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.es.js 1970-01-01 00:00:00 +0000
2791+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.es.js 2014-02-14 15:04:13 +0000
2792@@ -0,0 +1,66 @@
2793+// moment.js language configuration
2794+// language : spanish (es)
2795+// author : Julio Napurí : https://github.com/julionc
2796+
2797+(function (factory) {
2798+ if (typeof define === 'function' && define.amd) {
2799+ define(['moment'], factory); // AMD
2800+ } else if (typeof exports === 'object') {
2801+ module.exports = factory(require('../moment')); // Node
2802+ } else {
2803+ factory(window.moment); // Browser global
2804+ }
2805+}(function (moment) {
2806+ return moment.lang('es', {
2807+ months : "enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),
2808+ monthsShort : "ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),
2809+ weekdays : "domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),
2810+ weekdaysShort : "dom._lun._mar._mié._jue._vie._sáb.".split("_"),
2811+ weekdaysMin : "Do_Lu_Ma_Mi_Ju_Vi_Sá".split("_"),
2812+ longDateFormat : {
2813+ LT : "H:mm",
2814+ L : "DD/MM/YYYY",
2815+ LL : "D [de] MMMM [de] YYYY",
2816+ LLL : "D [de] MMMM [de] YYYY LT",
2817+ LLLL : "dddd, D [de] MMMM [de] YYYY LT"
2818+ },
2819+ calendar : {
2820+ sameDay : function () {
2821+ return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
2822+ },
2823+ nextDay : function () {
2824+ return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
2825+ },
2826+ nextWeek : function () {
2827+ return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
2828+ },
2829+ lastDay : function () {
2830+ return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
2831+ },
2832+ lastWeek : function () {
2833+ return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
2834+ },
2835+ sameElse : 'L'
2836+ },
2837+ relativeTime : {
2838+ future : "en %s",
2839+ past : "hace %s",
2840+ s : "unos segundos",
2841+ m : "un minuto",
2842+ mm : "%d minutos",
2843+ h : "una hora",
2844+ hh : "%d horas",
2845+ d : "un día",
2846+ dd : "%d días",
2847+ M : "un mes",
2848+ MM : "%d meses",
2849+ y : "un año",
2850+ yy : "%d años"
2851+ },
2852+ ordinal : '%dº',
2853+ week : {
2854+ dow : 1, // Monday is the first day of the week.
2855+ doy : 4 // The week that contains Jan 4th is the first week of the year.
2856+ }
2857+ });
2858+}));
2859
2860=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.et.js'
2861--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.et.js 1970-01-01 00:00:00 +0000
2862+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.et.js 2014-02-14 15:04:13 +0000
2863@@ -0,0 +1,60 @@
2864+// moment.js language configuration
2865+// language : estonian (et)
2866+// author : Henry Kehlmann : https://github.com/madhenry
2867+
2868+(function (factory) {
2869+ if (typeof define === 'function' && define.amd) {
2870+ define(['moment'], factory); // AMD
2871+ } else if (typeof exports === 'object') {
2872+ module.exports = factory(require('../moment')); // Node
2873+ } else {
2874+ factory(window.moment); // Browser global
2875+ }
2876+}(function (moment) {
2877+ function translateSeconds(number, withoutSuffix, key, isFuture) {
2878+ return (isFuture || withoutSuffix) ? 'paari sekundi' : 'paar sekundit';
2879+ }
2880+
2881+ return moment.lang('et', {
2882+ months : "jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),
2883+ monthsShort : "jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),
2884+ weekdays : "pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),
2885+ weekdaysShort : "P_E_T_K_N_R_L".split("_"),
2886+ weekdaysMin : "P_E_T_K_N_R_L".split("_"),
2887+ longDateFormat : {
2888+ LT : "H:mm",
2889+ L : "DD.MM.YYYY",
2890+ LL : "D. MMMM YYYY",
2891+ LLL : "D. MMMM YYYY LT",
2892+ LLLL : "dddd, D. MMMM YYYY LT"
2893+ },
2894+ calendar : {
2895+ sameDay : '[Täna,] LT',
2896+ nextDay : '[Homme,] LT',
2897+ nextWeek : '[Järgmine] dddd LT',
2898+ lastDay : '[Eile,] LT',
2899+ lastWeek : '[Eelmine] dddd LT',
2900+ sameElse : 'L'
2901+ },
2902+ relativeTime : {
2903+ future : "%s pärast",
2904+ past : "%s tagasi",
2905+ s : translateSeconds,
2906+ m : "minut",
2907+ mm : "%d minutit",
2908+ h : "tund",
2909+ hh : "%d tundi",
2910+ d : "päev",
2911+ dd : "%d päeva",
2912+ M : "kuu",
2913+ MM : "%d kuud",
2914+ y : "aasta",
2915+ yy : "%d aastat"
2916+ },
2917+ ordinal : '%d.',
2918+ week : {
2919+ dow : 1, // Monday is the first day of the week.
2920+ doy : 4 // The week that contains Jan 4th is the first week of the year.
2921+ }
2922+ });
2923+}));
2924
2925=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.eu.js'
2926--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.eu.js 1970-01-01 00:00:00 +0000
2927+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.eu.js 2014-02-14 15:04:13 +0000
2928@@ -0,0 +1,60 @@
2929+// moment.js language configuration
2930+// language : euskara (eu)
2931+// author : Eneko Illarramendi : https://github.com/eillarra
2932+
2933+(function (factory) {
2934+ if (typeof define === 'function' && define.amd) {
2935+ define(['moment'], factory); // AMD
2936+ } else if (typeof exports === 'object') {
2937+ module.exports = factory(require('../moment')); // Node
2938+ } else {
2939+ factory(window.moment); // Browser global
2940+ }
2941+}(function (moment) {
2942+ return moment.lang('eu', {
2943+ months : "urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),
2944+ monthsShort : "urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),
2945+ weekdays : "igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),
2946+ weekdaysShort : "ig._al._ar._az._og._ol._lr.".split("_"),
2947+ weekdaysMin : "ig_al_ar_az_og_ol_lr".split("_"),
2948+ longDateFormat : {
2949+ LT : "HH:mm",
2950+ L : "YYYY-MM-DD",
2951+ LL : "YYYY[ko] MMMM[ren] D[a]",
2952+ LLL : "YYYY[ko] MMMM[ren] D[a] LT",
2953+ LLLL : "dddd, YYYY[ko] MMMM[ren] D[a] LT",
2954+ l : "YYYY-M-D",
2955+ ll : "YYYY[ko] MMM D[a]",
2956+ lll : "YYYY[ko] MMM D[a] LT",
2957+ llll : "ddd, YYYY[ko] MMM D[a] LT"
2958+ },
2959+ calendar : {
2960+ sameDay : '[gaur] LT[etan]',
2961+ nextDay : '[bihar] LT[etan]',
2962+ nextWeek : 'dddd LT[etan]',
2963+ lastDay : '[atzo] LT[etan]',
2964+ lastWeek : '[aurreko] dddd LT[etan]',
2965+ sameElse : 'L'
2966+ },
2967+ relativeTime : {
2968+ future : "%s barru",
2969+ past : "duela %s",
2970+ s : "segundo batzuk",
2971+ m : "minutu bat",
2972+ mm : "%d minutu",
2973+ h : "ordu bat",
2974+ hh : "%d ordu",
2975+ d : "egun bat",
2976+ dd : "%d egun",
2977+ M : "hilabete bat",
2978+ MM : "%d hilabete",
2979+ y : "urte bat",
2980+ yy : "%d urte"
2981+ },
2982+ ordinal : '%d.',
2983+ week : {
2984+ dow : 1, // Monday is the first day of the week.
2985+ doy : 7 // The week that contains Jan 1st is the first week of the year.
2986+ }
2987+ });
2988+}));
2989
2990=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.fa.js'
2991--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.fa.js 1970-01-01 00:00:00 +0000
2992+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.fa.js 2014-02-14 15:04:13 +0000
2993@@ -0,0 +1,97 @@
2994+// moment.js language configuration
2995+// language : Persian Language
2996+// author : Ebrahim Byagowi : https://github.com/ebraminio
2997+
2998+(function (factory) {
2999+ if (typeof define === 'function' && define.amd) {
3000+ define(['moment'], factory); // AMD
3001+ } else if (typeof exports === 'object') {
3002+ module.exports = factory(require('../moment')); // Node
3003+ } else {
3004+ factory(window.moment); // Browser global
3005+ }
3006+}(function (moment) {
3007+ var symbolMap = {
3008+ '1': '۱',
3009+ '2': '۲',
3010+ '3': '۳',
3011+ '4': '۴',
3012+ '5': '۵',
3013+ '6': '۶',
3014+ '7': '۷',
3015+ '8': '۸',
3016+ '9': '۹',
3017+ '0': '۰'
3018+ }, numberMap = {
3019+ '۱': '1',
3020+ '۲': '2',
3021+ '۳': '3',
3022+ '۴': '4',
3023+ '۵': '5',
3024+ '۶': '6',
3025+ '۷': '7',
3026+ '۸': '8',
3027+ '۹': '9',
3028+ '۰': '0'
3029+ };
3030+
3031+ return moment.lang('fa', {
3032+ months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
3033+ monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
3034+ weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
3035+ weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
3036+ weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),
3037+ longDateFormat : {
3038+ LT : 'HH:mm',
3039+ L : 'DD/MM/YYYY',
3040+ LL : 'D MMMM YYYY',
3041+ LLL : 'D MMMM YYYY LT',
3042+ LLLL : 'dddd, D MMMM YYYY LT'
3043+ },
3044+ meridiem : function (hour, minute, isLower) {
3045+ if (hour < 12) {
3046+ return "قبل از ظهر";
3047+ } else {
3048+ return "بعد از ظهر";
3049+ }
3050+ },
3051+ calendar : {
3052+ sameDay : '[امروز ساعت] LT',
3053+ nextDay : '[فردا ساعت] LT',
3054+ nextWeek : 'dddd [ساعت] LT',
3055+ lastDay : '[دیروز ساعت] LT',
3056+ lastWeek : 'dddd [پیش] [ساعت] LT',
3057+ sameElse : 'L'
3058+ },
3059+ relativeTime : {
3060+ future : 'در %s',
3061+ past : '%s پیش',
3062+ s : 'چندین ثانیه',
3063+ m : 'یک دقیقه',
3064+ mm : '%d دقیقه',
3065+ h : 'یک ساعت',
3066+ hh : '%d ساعت',
3067+ d : 'یک روز',
3068+ dd : '%d روز',
3069+ M : 'یک ماه',
3070+ MM : '%d ماه',
3071+ y : 'یک سال',
3072+ yy : '%d سال'
3073+ },
3074+ preparse: function (string) {
3075+ return string.replace(/[۰-۹]/g, function (match) {
3076+ return numberMap[match];
3077+ }).replace(/،/g, ',');
3078+ },
3079+ postformat: function (string) {
3080+ return string.replace(/\d/g, function (match) {
3081+ return symbolMap[match];
3082+ }).replace(/,/g, '،');
3083+ },
3084+ ordinal : '%dم',
3085+ week : {
3086+ dow : 6, // Saturday is the first day of the week.
3087+ doy : 12 // The week that contains Jan 1st is the first week of the year.
3088+ }
3089+ });
3090+}));
3091
3092=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.fi.js'
3093--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.fi.js 1970-01-01 00:00:00 +0000
3094+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.fi.js 2014-02-14 15:04:13 +0000
3095@@ -0,0 +1,103 @@
3096+// moment.js language configuration
3097+// language : finnish (fi)
3098+// author : Tarmo Aidantausta : https://github.com/bleadof
3099+
3100+(function (factory) {
3101+ if (typeof define === 'function' && define.amd) {
3102+ define(['moment'], factory); // AMD
3103+ } else if (typeof exports === 'object') {
3104+ module.exports = factory(require('../moment')); // Node
3105+ } else {
3106+ factory(window.moment); // Browser global
3107+ }
3108+}(function (moment) {
3109+ var numbers_past = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),
3110+ numbers_future = ['nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',
3111+ numbers_past[7], numbers_past[8], numbers_past[9]];
3112+
3113+ function translate(number, withoutSuffix, key, isFuture) {
3114+ var result = "";
3115+ switch (key) {
3116+ case 's':
3117+ return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
3118+ case 'm':
3119+ return isFuture ? 'minuutin' : 'minuutti';
3120+ case 'mm':
3121+ result = isFuture ? 'minuutin' : 'minuuttia';
3122+ break;
3123+ case 'h':
3124+ return isFuture ? 'tunnin' : 'tunti';
3125+ case 'hh':
3126+ result = isFuture ? 'tunnin' : 'tuntia';
3127+ break;
3128+ case 'd':
3129+ return isFuture ? 'päivän' : 'päivä';
3130+ case 'dd':
3131+ result = isFuture ? 'päivän' : 'päivää';
3132+ break;
3133+ case 'M':
3134+ return isFuture ? 'kuukauden' : 'kuukausi';
3135+ case 'MM':
3136+ result = isFuture ? 'kuukauden' : 'kuukautta';
3137+ break;
3138+ case 'y':
3139+ return isFuture ? 'vuoden' : 'vuosi';
3140+ case 'yy':
3141+ result = isFuture ? 'vuoden' : 'vuotta';
3142+ break;
3143+ }
3144+ result = verbal_number(number, isFuture) + " " + result;
3145+ return result;
3146+ }
3147+
3148+ function verbal_number(number, isFuture) {
3149+ return number < 10 ? (isFuture ? numbers_future[number] : numbers_past[number]) : number;
3150+ }
3151+
3152+ return moment.lang('fi', {
3153+ months : "tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),
3154+ monthsShort : "tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),
3155+ weekdays : "sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),
3156+ weekdaysShort : "su_ma_ti_ke_to_pe_la".split("_"),
3157+ weekdaysMin : "su_ma_ti_ke_to_pe_la".split("_"),
3158+ longDateFormat : {
3159+ LT : "HH.mm",
3160+ L : "DD.MM.YYYY",
3161+ LL : "Do MMMM[ta] YYYY",
3162+ LLL : "Do MMMM[ta] YYYY, [klo] LT",
3163+ LLLL : "dddd, Do MMMM[ta] YYYY, [klo] LT",
3164+ l : "D.M.YYYY",
3165+ ll : "Do MMM YYYY",
3166+ lll : "Do MMM YYYY, [klo] LT",
3167+ llll : "ddd, Do MMM YYYY, [klo] LT"
3168+ },
3169+ calendar : {
3170+ sameDay : '[tänään] [klo] LT',
3171+ nextDay : '[huomenna] [klo] LT',
3172+ nextWeek : 'dddd [klo] LT',
3173+ lastDay : '[eilen] [klo] LT',
3174+ lastWeek : '[viime] dddd[na] [klo] LT',
3175+ sameElse : 'L'
3176+ },
3177+ relativeTime : {
3178+ future : "%s päästä",
3179+ past : "%s sitten",
3180+ s : translate,
3181+ m : translate,
3182+ mm : translate,
3183+ h : translate,
3184+ hh : translate,
3185+ d : translate,
3186+ dd : translate,
3187+ M : translate,
3188+ MM : translate,
3189+ y : translate,
3190+ yy : translate
3191+ },
3192+ ordinal : "%d.",
3193+ week : {
3194+ dow : 1, // Monday is the first day of the week.
3195+ doy : 4 // The week that contains Jan 4th is the first week of the year.
3196+ }
3197+ });
3198+}));
3199
3200=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.fr-ca.js'
3201--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.fr-ca.js 1970-01-01 00:00:00 +0000
3202+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.fr-ca.js 2014-02-14 15:04:13 +0000
3203@@ -0,0 +1,54 @@
3204+// moment.js language configuration
3205+// language : canadian french (fr-ca)
3206+// author : Jonathan Abourbih : https://github.com/jonbca
3207+
3208+(function (factory) {
3209+ if (typeof define === 'function' && define.amd) {
3210+ define(['moment'], factory); // AMD
3211+ } else if (typeof exports === 'object') {
3212+ module.exports = factory(require('../moment')); // Node
3213+ } else {
3214+ factory(window.moment); // Browser global
3215+ }
3216+}(function (moment) {
3217+ return moment.lang('fr-ca', {
3218+ months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),
3219+ monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),
3220+ weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),
3221+ weekdaysShort : "dim._lun._mar._mer._jeu._ven._sam.".split("_"),
3222+ weekdaysMin : "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),
3223+ longDateFormat : {
3224+ LT : "HH:mm",
3225+ L : "YYYY-MM-DD",
3226+ LL : "D MMMM YYYY",
3227+ LLL : "D MMMM YYYY LT",
3228+ LLLL : "dddd D MMMM YYYY LT"
3229+ },
3230+ calendar : {
3231+ sameDay: "[Aujourd'hui à] LT",
3232+ nextDay: '[Demain à] LT',
3233+ nextWeek: 'dddd [à] LT',
3234+ lastDay: '[Hier à] LT',
3235+ lastWeek: 'dddd [dernier à] LT',
3236+ sameElse: 'L'
3237+ },
3238+ relativeTime : {
3239+ future : "dans %s",
3240+ past : "il y a %s",
3241+ s : "quelques secondes",
3242+ m : "une minute",
3243+ mm : "%d minutes",
3244+ h : "une heure",
3245+ hh : "%d heures",
3246+ d : "un jour",
3247+ dd : "%d jours",
3248+ M : "un mois",
3249+ MM : "%d mois",
3250+ y : "un an",
3251+ yy : "%d ans"
3252+ },
3253+ ordinal : function (number) {
3254+ return number + (number === 1 ? 'er' : '');
3255+ }
3256+ });
3257+}));
3258
3259=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.fr.js'
3260--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.fr.js 1970-01-01 00:00:00 +0000
3261+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.fr.js 2014-02-14 15:04:13 +0000
3262@@ -0,0 +1,58 @@
3263+// moment.js language configuration
3264+// language : french (fr)
3265+// author : John Fischer : https://github.com/jfroffice
3266+
3267+(function (factory) {
3268+ if (typeof define === 'function' && define.amd) {
3269+ define(['moment'], factory); // AMD
3270+ } else if (typeof exports === 'object') {
3271+ module.exports = factory(require('../moment')); // Node
3272+ } else {
3273+ factory(window.moment); // Browser global
3274+ }
3275+}(function (moment) {
3276+ return moment.lang('fr', {
3277+ months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),
3278+ monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),
3279+ weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),
3280+ weekdaysShort : "dim._lun._mar._mer._jeu._ven._sam.".split("_"),
3281+ weekdaysMin : "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),
3282+ longDateFormat : {
3283+ LT : "HH:mm",
3284+ L : "DD/MM/YYYY",
3285+ LL : "D MMMM YYYY",
3286+ LLL : "D MMMM YYYY LT",
3287+ LLLL : "dddd D MMMM YYYY LT"
3288+ },
3289+ calendar : {
3290+ sameDay: "[Aujourd'hui à] LT",
3291+ nextDay: '[Demain à] LT',
3292+ nextWeek: 'dddd [à] LT',
3293+ lastDay: '[Hier à] LT',
3294+ lastWeek: 'dddd [dernier à] LT',
3295+ sameElse: 'L'
3296+ },
3297+ relativeTime : {
3298+ future : "dans %s",
3299+ past : "il y a %s",
3300+ s : "quelques secondes",
3301+ m : "une minute",
3302+ mm : "%d minutes",
3303+ h : "une heure",
3304+ hh : "%d heures",
3305+ d : "un jour",
3306+ dd : "%d jours",
3307+ M : "un mois",
3308+ MM : "%d mois",
3309+ y : "un an",
3310+ yy : "%d ans"
3311+ },
3312+ ordinal : function (number) {
3313+ return number + (number === 1 ? 'er' : '');
3314+ },
3315+ week : {
3316+ dow : 1, // Monday is the first day of the week.
3317+ doy : 4 // The week that contains Jan 4th is the first week of the year.
3318+ }
3319+ });
3320+}));
3321
3322=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.gl.js'
3323--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.gl.js 1970-01-01 00:00:00 +0000
3324+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.gl.js 2014-02-14 15:04:13 +0000
3325@@ -0,0 +1,71 @@
3326+// moment.js language configuration
3327+// language : galician (gl)
3328+// author : Juan G. Hurtado : https://github.com/juanghurtado
3329+
3330+(function (factory) {
3331+ if (typeof define === 'function' && define.amd) {
3332+ define(['moment'], factory); // AMD
3333+ } else if (typeof exports === 'object') {
3334+ module.exports = factory(require('../moment')); // Node
3335+ } else {
3336+ factory(window.moment); // Browser global
3337+ }
3338+}(function (moment) {
3339+ return moment.lang('gl', {
3340+ months : "Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"),
3341+ monthsShort : "Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.".split("_"),
3342+ weekdays : "Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado".split("_"),
3343+ weekdaysShort : "Dom._Lun._Mar._Mér._Xov._Ven._Sáb.".split("_"),
3344+ weekdaysMin : "Do_Lu_Ma_Mé_Xo_Ve_Sá".split("_"),
3345+ longDateFormat : {
3346+ LT : "H:mm",
3347+ L : "DD/MM/YYYY",
3348+ LL : "D MMMM YYYY",
3349+ LLL : "D MMMM YYYY LT",
3350+ LLLL : "dddd D MMMM YYYY LT"
3351+ },
3352+ calendar : {
3353+ sameDay : function () {
3354+ return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
3355+ },
3356+ nextDay : function () {
3357+ return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
3358+ },
3359+ nextWeek : function () {
3360+ return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
3361+ },
3362+ lastDay : function () {
3363+ return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';
3364+ },
3365+ lastWeek : function () {
3366+ return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
3367+ },
3368+ sameElse : 'L'
3369+ },
3370+ relativeTime : {
3371+ future : function (str) {
3372+ if (str === "uns segundos") {
3373+ return "nuns segundos";
3374+ }
3375+ return "en " + str;
3376+ },
3377+ past : "hai %s",
3378+ s : "uns segundos",
3379+ m : "un minuto",
3380+ mm : "%d minutos",
3381+ h : "unha hora",
3382+ hh : "%d horas",
3383+ d : "un día",
3384+ dd : "%d días",
3385+ M : "un mes",
3386+ MM : "%d meses",
3387+ y : "un ano",
3388+ yy : "%d anos"
3389+ },
3390+ ordinal : '%dº',
3391+ week : {
3392+ dow : 1, // Monday is the first day of the week.
3393+ doy : 7 // The week that contains Jan 1st is the first week of the year.
3394+ }
3395+ });
3396+}));
3397
3398=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.he.js'
3399--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.he.js 1970-01-01 00:00:00 +0000
3400+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.he.js 2014-02-14 15:04:13 +0000
3401@@ -0,0 +1,77 @@
3402+// moment.js language configuration
3403+// language : Hebrew (he)
3404+// author : Tomer Cohen : https://github.com/tomer
3405+// author : Moshe Simantov : https://github.com/DevelopmentIL
3406+// author : Tal Ater : https://github.com/TalAter
3407+
3408+(function (factory) {
3409+ if (typeof define === 'function' && define.amd) {
3410+ define(['moment'], factory); // AMD
3411+ } else if (typeof exports === 'object') {
3412+ module.exports = factory(require('../moment')); // Node
3413+ } else {
3414+ factory(window.moment); // Browser global
3415+ }
3416+}(function (moment) {
3417+ return moment.lang('he', {
3418+ months : "ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),
3419+ monthsShort : "ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),
3420+ weekdays : "ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),
3421+ weekdaysShort : "א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),
3422+ weekdaysMin : "א_ב_ג_ד_ה_ו_ש".split("_"),
3423+ longDateFormat : {
3424+ LT : "HH:mm",
3425+ L : "DD/MM/YYYY",
3426+ LL : "D [ב]MMMM YYYY",
3427+ LLL : "D [ב]MMMM YYYY LT",
3428+ LLLL : "dddd, D [ב]MMMM YYYY LT",
3429+ l : "D/M/YYYY",
3430+ ll : "D MMM YYYY",
3431+ lll : "D MMM YYYY LT",
3432+ llll : "ddd, D MMM YYYY LT"
3433+ },
3434+ calendar : {
3435+ sameDay : '[היום ב־]LT',
3436+ nextDay : '[מחר ב־]LT',
3437+ nextWeek : 'dddd [בשעה] LT',
3438+ lastDay : '[אתמול ב־]LT',
3439+ lastWeek : '[ביום] dddd [האחרון בשעה] LT',
3440+ sameElse : 'L'
3441+ },
3442+ relativeTime : {
3443+ future : "בעוד %s",
3444+ past : "לפני %s",
3445+ s : "מספר שניות",
3446+ m : "דקה",
3447+ mm : "%d דקות",
3448+ h : "שעה",
3449+ hh : function (number) {
3450+ if (number === 2) {
3451+ return "שעתיים";
3452+ }
3453+ return number + " שעות";
3454+ },
3455+ d : "יום",
3456+ dd : function (number) {
3457+ if (number === 2) {
3458+ return "יומיים";
3459+ }
3460+ return number + " ימים";
3461+ },
3462+ M : "חודש",
3463+ MM : function (number) {
3464+ if (number === 2) {
3465+ return "חודשיים";
3466+ }
3467+ return number + " חודשים";
3468+ },
3469+ y : "שנה",
3470+ yy : function (number) {
3471+ if (number === 2) {
3472+ return "שנתיים";
3473+ }
3474+ return number + " שנים";
3475+ }
3476+ }
3477+ });
3478+}));
3479
3480=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.hi.js'
3481--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.hi.js 1970-01-01 00:00:00 +0000
3482+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.hi.js 2014-02-14 15:04:13 +0000
3483@@ -0,0 +1,105 @@
3484+// moment.js language configuration
3485+// language : hindi (hi)
3486+// author : Mayank Singhal : https://github.com/mayanksinghal
3487+
3488+(function (factory) {
3489+ if (typeof define === 'function' && define.amd) {
3490+ define(['moment'], factory); // AMD
3491+ } else if (typeof exports === 'object') {
3492+ module.exports = factory(require('../moment')); // Node
3493+ } else {
3494+ factory(window.moment); // Browser global
3495+ }
3496+}(function (moment) {
3497+ var symbolMap = {
3498+ '1': '१',
3499+ '2': '२',
3500+ '3': '३',
3501+ '4': '४',
3502+ '5': '५',
3503+ '6': '६',
3504+ '7': '७',
3505+ '8': '८',
3506+ '9': '९',
3507+ '0': '०'
3508+ },
3509+ numberMap = {
3510+ '१': '1',
3511+ '२': '2',
3512+ '३': '3',
3513+ '४': '4',
3514+ '५': '5',
3515+ '६': '6',
3516+ '७': '7',
3517+ '८': '8',
3518+ '९': '9',
3519+ '०': '0'
3520+ };
3521+
3522+ return moment.lang('hi', {
3523+ months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split("_"),
3524+ monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split("_"),
3525+ weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split("_"),
3526+ weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split("_"),
3527+ weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split("_"),
3528+ longDateFormat : {
3529+ LT : "A h:mm बजे",
3530+ L : "DD/MM/YYYY",
3531+ LL : "D MMMM YYYY",
3532+ LLL : "D MMMM YYYY, LT",
3533+ LLLL : "dddd, D MMMM YYYY, LT"
3534+ },
3535+ calendar : {
3536+ sameDay : '[आज] LT',
3537+ nextDay : '[कल] LT',
3538+ nextWeek : 'dddd, LT',
3539+ lastDay : '[कल] LT',
3540+ lastWeek : '[पिछले] dddd, LT',
3541+ sameElse : 'L'
3542+ },
3543+ relativeTime : {
3544+ future : "%s में",
3545+ past : "%s पहले",
3546+ s : "कुछ ही क्षण",
3547+ m : "एक मिनट",
3548+ mm : "%d मिनट",
3549+ h : "एक घंटा",
3550+ hh : "%d घंटे",
3551+ d : "एक दिन",
3552+ dd : "%d दिन",
3553+ M : "एक महीने",
3554+ MM : "%d महीने",
3555+ y : "एक वर्ष",
3556+ yy : "%d वर्ष"
3557+ },
3558+ preparse: function (string) {
3559+ return string.replace(/[१२३४५६७८९०]/g, function (match) {
3560+ return numberMap[match];
3561+ });
3562+ },
3563+ postformat: function (string) {
3564+ return string.replace(/\d/g, function (match) {
3565+ return symbolMap[match];
3566+ });
3567+ },
3568+ // Hindi notation for meridiems are quite fuzzy in practice. While there exists
3569+ // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
3570+ meridiem : function (hour, minute, isLower) {
3571+ if (hour < 4) {
3572+ return "रात";
3573+ } else if (hour < 10) {
3574+ return "सुबह";
3575+ } else if (hour < 17) {
3576+ return "दोपहर";
3577+ } else if (hour < 20) {
3578+ return "शाम";
3579+ } else {
3580+ return "रात";
3581+ }
3582+ },
3583+ week : {
3584+ dow : 0, // Sunday is the first day of the week.
3585+ doy : 6 // The week that contains Jan 1st is the first week of the year.
3586+ }
3587+ });
3588+}));
3589
3590=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.hr.js'
3591--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.hr.js 1970-01-01 00:00:00 +0000
3592+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.hr.js 2014-02-14 15:04:13 +0000
3593@@ -0,0 +1,140 @@
3594+// moment.js language configuration
3595+// language : hrvatski (hr)
3596+// author : Bojan Marković : https://github.com/bmarkovic
3597+
3598+// based on (sl) translation by Robert Sedovšek
3599+
3600+(function (factory) {
3601+ if (typeof define === 'function' && define.amd) {
3602+ define(['moment'], factory); // AMD
3603+ } else if (typeof exports === 'object') {
3604+ module.exports = factory(require('../moment')); // Node
3605+ } else {
3606+ factory(window.moment); // Browser global
3607+ }
3608+}(function (moment) {
3609+
3610+ function translate(number, withoutSuffix, key) {
3611+ var result = number + " ";
3612+ switch (key) {
3613+ case 'm':
3614+ return withoutSuffix ? 'jedna minuta' : 'jedne minute';
3615+ case 'mm':
3616+ if (number === 1) {
3617+ result += 'minuta';
3618+ } else if (number === 2 || number === 3 || number === 4) {
3619+ result += 'minute';
3620+ } else {
3621+ result += 'minuta';
3622+ }
3623+ return result;
3624+ case 'h':
3625+ return withoutSuffix ? 'jedan sat' : 'jednog sata';
3626+ case 'hh':
3627+ if (number === 1) {
3628+ result += 'sat';
3629+ } else if (number === 2 || number === 3 || number === 4) {
3630+ result += 'sata';
3631+ } else {
3632+ result += 'sati';
3633+ }
3634+ return result;
3635+ case 'dd':
3636+ if (number === 1) {
3637+ result += 'dan';
3638+ } else {
3639+ result += 'dana';
3640+ }
3641+ return result;
3642+ case 'MM':
3643+ if (number === 1) {
3644+ result += 'mjesec';
3645+ } else if (number === 2 || number === 3 || number === 4) {
3646+ result += 'mjeseca';
3647+ } else {
3648+ result += 'mjeseci';
3649+ }
3650+ return result;
3651+ case 'yy':
3652+ if (number === 1) {
3653+ result += 'godina';
3654+ } else if (number === 2 || number === 3 || number === 4) {
3655+ result += 'godine';
3656+ } else {
3657+ result += 'godina';
3658+ }
3659+ return result;
3660+ }
3661+ }
3662+
3663+ return moment.lang('hr', {
3664+ months : "sječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_"),
3665+ monthsShort : "sje._vel._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),
3666+ weekdays : "nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),
3667+ weekdaysShort : "ned._pon._uto._sri._čet._pet._sub.".split("_"),
3668+ weekdaysMin : "ne_po_ut_sr_če_pe_su".split("_"),
3669+ longDateFormat : {
3670+ LT : "H:mm",
3671+ L : "DD. MM. YYYY",
3672+ LL : "D. MMMM YYYY",
3673+ LLL : "D. MMMM YYYY LT",
3674+ LLLL : "dddd, D. MMMM YYYY LT"
3675+ },
3676+ calendar : {
3677+ sameDay : '[danas u] LT',
3678+ nextDay : '[sutra u] LT',
3679+
3680+ nextWeek : function () {
3681+ switch (this.day()) {
3682+ case 0:
3683+ return '[u] [nedjelju] [u] LT';
3684+ case 3:
3685+ return '[u] [srijedu] [u] LT';
3686+ case 6:
3687+ return '[u] [subotu] [u] LT';
3688+ case 1:
3689+ case 2:
3690+ case 4:
3691+ case 5:
3692+ return '[u] dddd [u] LT';
3693+ }
3694+ },
3695+ lastDay : '[jučer u] LT',
3696+ lastWeek : function () {
3697+ switch (this.day()) {
3698+ case 0:
3699+ case 3:
3700+ return '[prošlu] dddd [u] LT';
3701+ case 6:
3702+ return '[prošle] [subote] [u] LT';
3703+ case 1:
3704+ case 2:
3705+ case 4:
3706+ case 5:
3707+ return '[prošli] dddd [u] LT';
3708+ }
3709+ },
3710+ sameElse : 'L'
3711+ },
3712+ relativeTime : {
3713+ future : "za %s",
3714+ past : "prije %s",
3715+ s : "par sekundi",
3716+ m : translate,
3717+ mm : translate,
3718+ h : translate,
3719+ hh : translate,
3720+ d : "dan",
3721+ dd : translate,
3722+ M : "mjesec",
3723+ MM : translate,
3724+ y : "godinu",
3725+ yy : translate
3726+ },
3727+ ordinal : '%d.',
3728+ week : {
3729+ dow : 1, // Monday is the first day of the week.
3730+ doy : 7 // The week that contains Jan 1st is the first week of the year.
3731+ }
3732+ });
3733+}));
3734
3735=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.hu.js'
3736--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.hu.js 1970-01-01 00:00:00 +0000
3737+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.hu.js 2014-02-14 15:04:13 +0000
3738@@ -0,0 +1,98 @@
3739+// moment.js language configuration
3740+// language : hungarian (hu)
3741+// author : Adam Brunner : https://github.com/adambrunner
3742+
3743+(function (factory) {
3744+ if (typeof define === 'function' && define.amd) {
3745+ define(['moment'], factory); // AMD
3746+ } else if (typeof exports === 'object') {
3747+ module.exports = factory(require('../moment')); // Node
3748+ } else {
3749+ factory(window.moment); // Browser global
3750+ }
3751+}(function (moment) {
3752+ var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
3753+
3754+ function translate(number, withoutSuffix, key, isFuture) {
3755+ var num = number,
3756+ suffix;
3757+
3758+ switch (key) {
3759+ case 's':
3760+ return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';
3761+ case 'm':
3762+ return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
3763+ case 'mm':
3764+ return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
3765+ case 'h':
3766+ return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
3767+ case 'hh':
3768+ return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
3769+ case 'd':
3770+ return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
3771+ case 'dd':
3772+ return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
3773+ case 'M':
3774+ return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
3775+ case 'MM':
3776+ return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
3777+ case 'y':
3778+ return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
3779+ case 'yy':
3780+ return num + (isFuture || withoutSuffix ? ' év' : ' éve');
3781+ }
3782+
3783+ return '';
3784+ }
3785+
3786+ function week(isFuture) {
3787+ return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';
3788+ }
3789+
3790+ return moment.lang('hu', {
3791+ months : "január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),
3792+ monthsShort : "jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),
3793+ weekdays : "vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),
3794+ weekdaysShort : "vas_hét_kedd_sze_csüt_pén_szo".split("_"),
3795+ weekdaysMin : "v_h_k_sze_cs_p_szo".split("_"),
3796+ longDateFormat : {
3797+ LT : "H:mm",
3798+ L : "YYYY.MM.DD.",
3799+ LL : "YYYY. MMMM D.",
3800+ LLL : "YYYY. MMMM D., LT",
3801+ LLLL : "YYYY. MMMM D., dddd LT"
3802+ },
3803+ calendar : {
3804+ sameDay : '[ma] LT[-kor]',
3805+ nextDay : '[holnap] LT[-kor]',
3806+ nextWeek : function () {
3807+ return week.call(this, true);
3808+ },
3809+ lastDay : '[tegnap] LT[-kor]',
3810+ lastWeek : function () {
3811+ return week.call(this, false);
3812+ },
3813+ sameElse : 'L'
3814+ },
3815+ relativeTime : {
3816+ future : "%s múlva",
3817+ past : "%s",
3818+ s : translate,
3819+ m : translate,
3820+ mm : translate,
3821+ h : translate,
3822+ hh : translate,
3823+ d : translate,
3824+ dd : translate,
3825+ M : translate,
3826+ MM : translate,
3827+ y : translate,
3828+ yy : translate
3829+ },
3830+ ordinal : '%d.',
3831+ week : {
3832+ dow : 1, // Monday is the first day of the week.
3833+ doy : 7 // The week that contains Jan 1st is the first week of the year.
3834+ }
3835+ });
3836+}));
3837
3838=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.id.js'
3839--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.id.js 1970-01-01 00:00:00 +0000
3840+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.id.js 2014-02-14 15:04:13 +0000
3841@@ -0,0 +1,67 @@
3842+// moment.js language configuration
3843+// language : Bahasa Indonesia (id)
3844+// author : Mohammad Satrio Utomo : https://github.com/tyok
3845+// reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
3846+
3847+(function (factory) {
3848+ if (typeof define === 'function' && define.amd) {
3849+ define(['moment'], factory); // AMD
3850+ } else if (typeof exports === 'object') {
3851+ module.exports = factory(require('../moment')); // Node
3852+ } else {
3853+ factory(window.moment); // Browser global
3854+ }
3855+}(function (moment) {
3856+ return moment.lang('id', {
3857+ months : "Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),
3858+ monthsShort : "Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),
3859+ weekdays : "Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),
3860+ weekdaysShort : "Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),
3861+ weekdaysMin : "Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),
3862+ longDateFormat : {
3863+ LT : "HH.mm",
3864+ L : "DD/MM/YYYY",
3865+ LL : "D MMMM YYYY",
3866+ LLL : "D MMMM YYYY [pukul] LT",
3867+ LLLL : "dddd, D MMMM YYYY [pukul] LT"
3868+ },
3869+ meridiem : function (hours, minutes, isLower) {
3870+ if (hours < 11) {
3871+ return 'pagi';
3872+ } else if (hours < 15) {
3873+ return 'siang';
3874+ } else if (hours < 19) {
3875+ return 'sore';
3876+ } else {
3877+ return 'malam';
3878+ }
3879+ },
3880+ calendar : {
3881+ sameDay : '[Hari ini pukul] LT',
3882+ nextDay : '[Besok pukul] LT',
3883+ nextWeek : 'dddd [pukul] LT',
3884+ lastDay : '[Kemarin pukul] LT',
3885+ lastWeek : 'dddd [lalu pukul] LT',
3886+ sameElse : 'L'
3887+ },
3888+ relativeTime : {
3889+ future : "dalam %s",
3890+ past : "%s yang lalu",
3891+ s : "beberapa detik",
3892+ m : "semenit",
3893+ mm : "%d menit",
3894+ h : "sejam",
3895+ hh : "%d jam",
3896+ d : "sehari",
3897+ dd : "%d hari",
3898+ M : "sebulan",
3899+ MM : "%d bulan",
3900+ y : "setahun",
3901+ yy : "%d tahun"
3902+ },
3903+ week : {
3904+ dow : 1, // Monday is the first day of the week.
3905+ doy : 7 // The week that contains Jan 1st is the first week of the year.
3906+ }
3907+ });
3908+}));
3909
3910=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.is.js'
3911--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.is.js 1970-01-01 00:00:00 +0000
3912+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.is.js 2014-02-14 15:04:13 +0000
3913@@ -0,0 +1,124 @@
3914+// moment.js language configuration
3915+// language : icelandic (is)
3916+// author : Hinrik Örn Sigurðsson : https://github.com/hinrik
3917+
3918+(function (factory) {
3919+ if (typeof define === 'function' && define.amd) {
3920+ define(['moment'], factory); // AMD
3921+ } else if (typeof exports === 'object') {
3922+ module.exports = factory(require('../moment')); // Node
3923+ } else {
3924+ factory(window.moment); // Browser global
3925+ }
3926+}(function (moment) {
3927+ function plural(n) {
3928+ if (n % 100 === 11) {
3929+ return true;
3930+ } else if (n % 10 === 1) {
3931+ return false;
3932+ }
3933+ return true;
3934+ }
3935+
3936+ function translate(number, withoutSuffix, key, isFuture) {
3937+ var result = number + " ";
3938+ switch (key) {
3939+ case 's':
3940+ return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';
3941+ case 'm':
3942+ return withoutSuffix ? 'mínúta' : 'mínútu';
3943+ case 'mm':
3944+ if (plural(number)) {
3945+ return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');
3946+ } else if (withoutSuffix) {
3947+ return result + 'mínúta';
3948+ }
3949+ return result + 'mínútu';
3950+ case 'hh':
3951+ if (plural(number)) {
3952+ return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');
3953+ }
3954+ return result + 'klukkustund';
3955+ case 'd':
3956+ if (withoutSuffix) {
3957+ return 'dagur';
3958+ }
3959+ return isFuture ? 'dag' : 'degi';
3960+ case 'dd':
3961+ if (plural(number)) {
3962+ if (withoutSuffix) {
3963+ return result + 'dagar';
3964+ }
3965+ return result + (isFuture ? 'daga' : 'dögum');
3966+ } else if (withoutSuffix) {
3967+ return result + 'dagur';
3968+ }
3969+ return result + (isFuture ? 'dag' : 'degi');
3970+ case 'M':
3971+ if (withoutSuffix) {
3972+ return 'mánuður';
3973+ }
3974+ return isFuture ? 'mánuð' : 'mánuði';
3975+ case 'MM':
3976+ if (plural(number)) {
3977+ if (withoutSuffix) {
3978+ return result + 'mánuðir';
3979+ }
3980+ return result + (isFuture ? 'mánuði' : 'mánuðum');
3981+ } else if (withoutSuffix) {
3982+ return result + 'mánuður';
3983+ }
3984+ return result + (isFuture ? 'mánuð' : 'mánuði');
3985+ case 'y':
3986+ return withoutSuffix || isFuture ? 'ár' : 'ári';
3987+ case 'yy':
3988+ if (plural(number)) {
3989+ return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
3990+ }
3991+ return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
3992+ }
3993+ }
3994+
3995+ return moment.lang('is', {
3996+ months : "janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),
3997+ monthsShort : "jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),
3998+ weekdays : "sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),
3999+ weekdaysShort : "sun_mán_þri_mið_fim_fös_lau".split("_"),
4000+ weekdaysMin : "Su_Má_Þr_Mi_Fi_Fö_La".split("_"),
4001+ longDateFormat : {
4002+ LT : "H:mm",
4003+ L : "DD/MM/YYYY",
4004+ LL : "D. MMMM YYYY",
4005+ LLL : "D. MMMM YYYY [kl.] LT",
4006+ LLLL : "dddd, D. MMMM YYYY [kl.] LT"
4007+ },
4008+ calendar : {
4009+ sameDay : '[í dag kl.] LT',
4010+ nextDay : '[á morgun kl.] LT',
4011+ nextWeek : 'dddd [kl.] LT',
4012+ lastDay : '[í gær kl.] LT',
4013+ lastWeek : '[síðasta] dddd [kl.] LT',
4014+ sameElse : 'L'
4015+ },
4016+ relativeTime : {
4017+ future : "eftir %s",
4018+ past : "fyrir %s síðan",
4019+ s : translate,
4020+ m : translate,
4021+ mm : translate,
4022+ h : "klukkustund",
4023+ hh : translate,
4024+ d : translate,
4025+ dd : translate,
4026+ M : translate,
4027+ MM : translate,
4028+ y : translate,
4029+ yy : translate
4030+ },
4031+ ordinal : '%d.',
4032+ week : {
4033+ dow : 1, // Monday is the first day of the week.
4034+ doy : 4 // The week that contains Jan 4th is the first week of the year.
4035+ }
4036+ });
4037+}));
4038
4039=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.it.js'
4040--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.it.js 1970-01-01 00:00:00 +0000
4041+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.it.js 2014-02-14 15:04:13 +0000
4042@@ -0,0 +1,59 @@
4043+// moment.js language configuration
4044+// language : italian (it)
4045+// author : Lorenzo : https://github.com/aliem
4046+// author: Mattia Larentis: https://github.com/nostalgiaz
4047+
4048+(function (factory) {
4049+ if (typeof define === 'function' && define.amd) {
4050+ define(['moment'], factory); // AMD
4051+ } else if (typeof exports === 'object') {
4052+ module.exports = factory(require('../moment')); // Node
4053+ } else {
4054+ factory(window.moment); // Browser global
4055+ }
4056+}(function (moment) {
4057+ return moment.lang('it', {
4058+ months : "Gennaio_Febbraio_Marzo_Aprile_Maggio_Giugno_Luglio_Agosto_Settembre_Ottobre_Novembre_Dicembre".split("_"),
4059+ monthsShort : "Gen_Feb_Mar_Apr_Mag_Giu_Lug_Ago_Set_Ott_Nov_Dic".split("_"),
4060+ weekdays : "Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),
4061+ weekdaysShort : "Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),
4062+ weekdaysMin : "D_L_Ma_Me_G_V_S".split("_"),
4063+ longDateFormat : {
4064+ LT : "HH:mm",
4065+ L : "DD/MM/YYYY",
4066+ LL : "D MMMM YYYY",
4067+ LLL : "D MMMM YYYY LT",
4068+ LLLL : "dddd, D MMMM YYYY LT"
4069+ },
4070+ calendar : {
4071+ sameDay: '[Oggi alle] LT',
4072+ nextDay: '[Domani alle] LT',
4073+ nextWeek: 'dddd [alle] LT',
4074+ lastDay: '[Ieri alle] LT',
4075+ lastWeek: '[lo scorso] dddd [alle] LT',
4076+ sameElse: 'L'
4077+ },
4078+ relativeTime : {
4079+ future : function (s) {
4080+ return ((/^[0-9].+$/).test(s) ? "tra" : "in") + " " + s;
4081+ },
4082+ past : "%s fa",
4083+ s : "secondi",
4084+ m : "un minuto",
4085+ mm : "%d minuti",
4086+ h : "un'ora",
4087+ hh : "%d ore",
4088+ d : "un giorno",
4089+ dd : "%d giorni",
4090+ M : "un mese",
4091+ MM : "%d mesi",
4092+ y : "un anno",
4093+ yy : "%d anni"
4094+ },
4095+ ordinal: '%dº',
4096+ week : {
4097+ dow : 1, // Monday is the first day of the week.
4098+ doy : 4 // The week that contains Jan 4th is the first week of the year.
4099+ }
4100+ });
4101+}));
4102
4103=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ja.js'
4104--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ja.js 1970-01-01 00:00:00 +0000
4105+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ja.js 2014-02-14 15:04:13 +0000
4106@@ -0,0 +1,58 @@
4107+// moment.js language configuration
4108+// language : japanese (ja)
4109+// author : LI Long : https://github.com/baryon
4110+
4111+(function (factory) {
4112+ if (typeof define === 'function' && define.amd) {
4113+ define(['moment'], factory); // AMD
4114+ } else if (typeof exports === 'object') {
4115+ module.exports = factory(require('../moment')); // Node
4116+ } else {
4117+ factory(window.moment); // Browser global
4118+ }
4119+}(function (moment) {
4120+ return moment.lang('ja', {
4121+ months : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
4122+ monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
4123+ weekdays : "日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),
4124+ weekdaysShort : "日_月_火_水_木_金_土".split("_"),
4125+ weekdaysMin : "日_月_火_水_木_金_土".split("_"),
4126+ longDateFormat : {
4127+ LT : "Ah時m分",
4128+ L : "YYYY/MM/DD",
4129+ LL : "YYYY年M月D日",
4130+ LLL : "YYYY年M月D日LT",
4131+ LLLL : "YYYY年M月D日LT dddd"
4132+ },
4133+ meridiem : function (hour, minute, isLower) {
4134+ if (hour < 12) {
4135+ return "午前";
4136+ } else {
4137+ return "午後";
4138+ }
4139+ },
4140+ calendar : {
4141+ sameDay : '[今日] LT',
4142+ nextDay : '[明日] LT',
4143+ nextWeek : '[来週]dddd LT',
4144+ lastDay : '[昨日] LT',
4145+ lastWeek : '[前週]dddd LT',
4146+ sameElse : 'L'
4147+ },
4148+ relativeTime : {
4149+ future : "%s後",
4150+ past : "%s前",
4151+ s : "数秒",
4152+ m : "1分",
4153+ mm : "%d分",
4154+ h : "1時間",
4155+ hh : "%d時間",
4156+ d : "1日",
4157+ dd : "%d日",
4158+ M : "1ヶ月",
4159+ MM : "%dヶ月",
4160+ y : "1年",
4161+ yy : "%d年"
4162+ }
4163+ });
4164+}));
4165
4166=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ka.js'
4167--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ka.js 1970-01-01 00:00:00 +0000
4168+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ka.js 2014-02-14 15:04:13 +0000
4169@@ -0,0 +1,108 @@
4170+// moment.js language configuration
4171+// language : Georgian (ka)
4172+// author : Irakli Janiashvili : https://github.com/irakli-janiashvili
4173+
4174+(function (factory) {
4175+ if (typeof define === 'function' && define.amd) {
4176+ define(['moment'], factory); // AMD
4177+ } else if (typeof exports === 'object') {
4178+ module.exports = factory(require('../moment')); // Node
4179+ } else {
4180+ factory(window.moment); // Browser global
4181+ }
4182+}(function (moment) {
4183+
4184+ function monthsCaseReplace(m, format) {
4185+ var months = {
4186+ 'nominative': 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),
4187+ 'accusative': 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')
4188+ },
4189+
4190+ nounCase = (/D[oD] *MMMM?/).test(format) ?
4191+ 'accusative' :
4192+ 'nominative';
4193+
4194+ return months[nounCase][m.month()];
4195+ }
4196+
4197+ function weekdaysCaseReplace(m, format) {
4198+ var weekdays = {
4199+ 'nominative': 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),
4200+ 'accusative': 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_')
4201+ },
4202+
4203+ nounCase = (/(წინა|შემდეგ)/).test(format) ?
4204+ 'accusative' :
4205+ 'nominative';
4206+
4207+ return weekdays[nounCase][m.day()];
4208+ }
4209+
4210+ return moment.lang('ka', {
4211+ months : monthsCaseReplace,
4212+ monthsShort : "იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),
4213+ weekdays : weekdaysCaseReplace,
4214+ weekdaysShort : "კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),
4215+ weekdaysMin : "კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),
4216+ longDateFormat : {
4217+ LT : "h:mm A",
4218+ L : "DD/MM/YYYY",
4219+ LL : "D MMMM YYYY",
4220+ LLL : "D MMMM YYYY LT",
4221+ LLLL : "dddd, D MMMM YYYY LT"
4222+ },
4223+ calendar : {
4224+ sameDay : '[დღეს] LT[-ზე]',
4225+ nextDay : '[ხვალ] LT[-ზე]',
4226+ lastDay : '[გუშინ] LT[-ზე]',
4227+ nextWeek : '[შემდეგ] dddd LT[-ზე]',
4228+ lastWeek : '[წინა] dddd LT-ზე',
4229+ sameElse : 'L'
4230+ },
4231+ relativeTime : {
4232+ future : function (s) {
4233+ return (/(წამი|წუთი|საათი|წელი)/).test(s) ?
4234+ s.replace(/ი$/, "ში") :
4235+ s + "ში";
4236+ },
4237+ past : function (s) {
4238+ if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {
4239+ return s.replace(/(ი|ე)$/, "ის წინ");
4240+ }
4241+ if ((/წელი/).test(s)) {
4242+ return s.replace(/წელი$/, "წლის წინ");
4243+ }
4244+ },
4245+ s : "რამდენიმე წამი",
4246+ m : "წუთი",
4247+ mm : "%d წუთი",
4248+ h : "საათი",
4249+ hh : "%d საათი",
4250+ d : "დღე",
4251+ dd : "%d დღე",
4252+ M : "თვე",
4253+ MM : "%d თვე",
4254+ y : "წელი",
4255+ yy : "%d წელი"
4256+ },
4257+ ordinal : function (number) {
4258+ if (number === 0) {
4259+ return number;
4260+ }
4261+
4262+ if (number === 1) {
4263+ return number + "-ლი";
4264+ }
4265+
4266+ if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {
4267+ return "მე-" + number;
4268+ }
4269+
4270+ return number + "-ე";
4271+ },
4272+ week : {
4273+ dow : 1,
4274+ doy : 7
4275+ }
4276+ });
4277+}));
4278
4279=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ko.js'
4280--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ko.js 1970-01-01 00:00:00 +0000
4281+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ko.js 2014-02-14 15:04:13 +0000
4282@@ -0,0 +1,56 @@
4283+// moment.js language configuration
4284+// language : korean (ko)
4285+// author : Kyungwook, Park : https://github.com/kyungw00k
4286+
4287+(function (factory) {
4288+ if (typeof define === 'function' && define.amd) {
4289+ define(['moment'], factory); // AMD
4290+ } else if (typeof exports === 'object') {
4291+ module.exports = factory(require('../moment')); // Node
4292+ } else {
4293+ factory(window.moment); // Browser global
4294+ }
4295+}(function (moment) {
4296+ return moment.lang('ko', {
4297+ months : "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),
4298+ monthsShort : "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),
4299+ weekdays : "일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),
4300+ weekdaysShort : "일_월_화_수_목_금_토".split("_"),
4301+ weekdaysMin : "일_월_화_수_목_금_토".split("_"),
4302+ longDateFormat : {
4303+ LT : "A h시 mm분",
4304+ L : "YYYY.MM.DD",
4305+ LL : "YYYY년 MMMM D일",
4306+ LLL : "YYYY년 MMMM D일 LT",
4307+ LLLL : "YYYY년 MMMM D일 dddd LT"
4308+ },
4309+ meridiem : function (hour, minute, isUpper) {
4310+ return hour < 12 ? '오전' : '오후';
4311+ },
4312+ calendar : {
4313+ sameDay : '오늘 LT',
4314+ nextDay : '내일 LT',
4315+ nextWeek : 'dddd LT',
4316+ lastDay : '어제 LT',
4317+ lastWeek : '지난주 dddd LT',
4318+ sameElse : 'L'
4319+ },
4320+ relativeTime : {
4321+ future : "%s 후",
4322+ past : "%s 전",
4323+ s : "몇초",
4324+ ss : "%d초",
4325+ m : "일분",
4326+ mm : "%d분",
4327+ h : "한시간",
4328+ hh : "%d시간",
4329+ d : "하루",
4330+ dd : "%d일",
4331+ M : "한달",
4332+ MM : "%d달",
4333+ y : "일년",
4334+ yy : "%d년"
4335+ },
4336+ ordinal : '%d일'
4337+ });
4338+}));
4339
4340=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.lt.js'
4341--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.lt.js 1970-01-01 00:00:00 +0000
4342+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.lt.js 2014-02-14 15:04:13 +0000
4343@@ -0,0 +1,118 @@
4344+// moment.js language configuration
4345+// language : Lithuanian (lt)
4346+// author : Mindaugas Mozūras : https://github.com/mmozuras
4347+
4348+(function (factory) {
4349+ if (typeof define === 'function' && define.amd) {
4350+ define(['moment'], factory); // AMD
4351+ } else if (typeof exports === 'object') {
4352+ module.exports = factory(require('../moment')); // Node
4353+ } else {
4354+ factory(window.moment); // Browser global
4355+ }
4356+}(function (moment) {
4357+ var units = {
4358+ "m" : "minutė_minutės_minutę",
4359+ "mm": "minutės_minučių_minutes",
4360+ "h" : "valanda_valandos_valandą",
4361+ "hh": "valandos_valandų_valandas",
4362+ "d" : "diena_dienos_dieną",
4363+ "dd": "dienos_dienų_dienas",
4364+ "M" : "mėnuo_mėnesio_mėnesį",
4365+ "MM": "mėnesiai_mėnesių_mėnesius",
4366+ "y" : "metai_metų_metus",
4367+ "yy": "metai_metų_metus"
4368+ },
4369+ weekDays = "pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis_sekmadienis".split("_");
4370+
4371+ function translateSeconds(number, withoutSuffix, key, isFuture) {
4372+ if (withoutSuffix) {
4373+ return "kelios sekundės";
4374+ } else {
4375+ return isFuture ? "kelių sekundžių" : "kelias sekundes";
4376+ }
4377+ }
4378+
4379+ function translateSingular(number, withoutSuffix, key, isFuture) {
4380+ return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);
4381+ }
4382+
4383+ function special(number) {
4384+ return number % 10 === 0 || (number > 10 && number < 20);
4385+ }
4386+
4387+ function forms(key) {
4388+ return units[key].split("_");
4389+ }
4390+
4391+ function translate(number, withoutSuffix, key, isFuture) {
4392+ var result = number + " ";
4393+ if (number === 1) {
4394+ return result + translateSingular(number, withoutSuffix, key[0], isFuture);
4395+ } else if (withoutSuffix) {
4396+ return result + (special(number) ? forms(key)[1] : forms(key)[0]);
4397+ } else {
4398+ if (isFuture) {
4399+ return result + forms(key)[1];
4400+ } else {
4401+ return result + (special(number) ? forms(key)[1] : forms(key)[2]);
4402+ }
4403+ }
4404+ }
4405+
4406+ function relativeWeekDay(moment, format) {
4407+ var nominative = format.indexOf('dddd LT') === -1,
4408+ weekDay = weekDays[moment.weekday()];
4409+
4410+ return nominative ? weekDay : weekDay.substring(0, weekDay.length - 2) + "į";
4411+ }
4412+
4413+ return moment.lang("lt", {
4414+ months : "sausio_vasario_kovo_balandžio_gegužės_biržėlio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),
4415+ monthsShort : "sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),
4416+ weekdays : relativeWeekDay,
4417+ weekdaysShort : "Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),
4418+ weekdaysMin : "S_P_A_T_K_Pn_Š".split("_"),
4419+ longDateFormat : {
4420+ LT : "HH:mm",
4421+ L : "YYYY-MM-DD",
4422+ LL : "YYYY [m.] MMMM D [d.]",
4423+ LLL : "YYYY [m.] MMMM D [d.], LT [val.]",
4424+ LLLL : "YYYY [m.] MMMM D [d.], dddd, LT [val.]",
4425+ l : "YYYY-MM-DD",
4426+ ll : "YYYY [m.] MMMM D [d.]",
4427+ lll : "YYYY [m.] MMMM D [d.], LT [val.]",
4428+ llll : "YYYY [m.] MMMM D [d.], ddd, LT [val.]"
4429+ },
4430+ calendar : {
4431+ sameDay : "[Šiandien] LT",
4432+ nextDay : "[Rytoj] LT",
4433+ nextWeek : "dddd LT",
4434+ lastDay : "[Vakar] LT",
4435+ lastWeek : "[Praėjusį] dddd LT",
4436+ sameElse : "L"
4437+ },
4438+ relativeTime : {
4439+ future : "po %s",
4440+ past : "prieš %s",
4441+ s : translateSeconds,
4442+ m : translateSingular,
4443+ mm : translate,
4444+ h : translateSingular,
4445+ hh : translate,
4446+ d : translateSingular,
4447+ dd : translate,
4448+ M : translateSingular,
4449+ MM : translate,
4450+ y : translateSingular,
4451+ yy : translate
4452+ },
4453+ ordinal : function (number) {
4454+ return number + '-oji';
4455+ },
4456+ week : {
4457+ dow : 1, // Monday is the first day of the week.
4458+ doy : 4 // The week that contains Jan 4th is the first week of the year.
4459+ }
4460+ });
4461+}));
4462
4463=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.lv.js'
4464--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.lv.js 1970-01-01 00:00:00 +0000
4465+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.lv.js 2014-02-14 15:04:13 +0000
4466@@ -0,0 +1,77 @@
4467+// moment.js language configuration
4468+// language : latvian (lv)
4469+// author : Kristaps Karlsons : https://github.com/skakri
4470+
4471+(function (factory) {
4472+ if (typeof define === 'function' && define.amd) {
4473+ define(['moment'], factory); // AMD
4474+ } else if (typeof exports === 'object') {
4475+ module.exports = factory(require('../moment')); // Node
4476+ } else {
4477+ factory(window.moment); // Browser global
4478+ }
4479+}(function (moment) {
4480+ var units = {
4481+ 'mm': 'minūti_minūtes_minūte_minūtes',
4482+ 'hh': 'stundu_stundas_stunda_stundas',
4483+ 'dd': 'dienu_dienas_diena_dienas',
4484+ 'MM': 'mēnesi_mēnešus_mēnesis_mēneši',
4485+ 'yy': 'gadu_gadus_gads_gadi'
4486+ };
4487+
4488+ function format(word, number, withoutSuffix) {
4489+ var forms = word.split('_');
4490+ if (withoutSuffix) {
4491+ return number % 10 === 1 && number !== 11 ? forms[2] : forms[3];
4492+ } else {
4493+ return number % 10 === 1 && number !== 11 ? forms[0] : forms[1];
4494+ }
4495+ }
4496+
4497+ function relativeTimeWithPlural(number, withoutSuffix, key) {
4498+ return number + ' ' + format(units[key], number, withoutSuffix);
4499+ }
4500+
4501+ return moment.lang('lv', {
4502+ months : "janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),
4503+ monthsShort : "jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),
4504+ weekdays : "svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),
4505+ weekdaysShort : "Sv_P_O_T_C_Pk_S".split("_"),
4506+ weekdaysMin : "Sv_P_O_T_C_Pk_S".split("_"),
4507+ longDateFormat : {
4508+ LT : "HH:mm",
4509+ L : "DD.MM.YYYY",
4510+ LL : "YYYY. [gada] D. MMMM",
4511+ LLL : "YYYY. [gada] D. MMMM, LT",
4512+ LLLL : "YYYY. [gada] D. MMMM, dddd, LT"
4513+ },
4514+ calendar : {
4515+ sameDay : '[Šodien pulksten] LT',
4516+ nextDay : '[Rīt pulksten] LT',
4517+ nextWeek : 'dddd [pulksten] LT',
4518+ lastDay : '[Vakar pulksten] LT',
4519+ lastWeek : '[Pagājušā] dddd [pulksten] LT',
4520+ sameElse : 'L'
4521+ },
4522+ relativeTime : {
4523+ future : "%s vēlāk",
4524+ past : "%s agrāk",
4525+ s : "dažas sekundes",
4526+ m : "minūti",
4527+ mm : relativeTimeWithPlural,
4528+ h : "stundu",
4529+ hh : relativeTimeWithPlural,
4530+ d : "dienu",
4531+ dd : relativeTimeWithPlural,
4532+ M : "mēnesi",
4533+ MM : relativeTimeWithPlural,
4534+ y : "gadu",
4535+ yy : relativeTimeWithPlural
4536+ },
4537+ ordinal : '%d.',
4538+ week : {
4539+ dow : 1, // Monday is the first day of the week.
4540+ doy : 4 // The week that contains Jan 4th is the first week of the year.
4541+ }
4542+ });
4543+}));
4544
4545=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ml.js'
4546--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ml.js 1970-01-01 00:00:00 +0000
4547+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ml.js 2014-02-14 15:04:13 +0000
4548@@ -0,0 +1,64 @@
4549+// moment.js language configuration
4550+// language : malayalam (ml)
4551+// author : Floyd Pink : https://github.com/floydpink
4552+
4553+(function (factory) {
4554+ if (typeof define === 'function' && define.amd) {
4555+ define(['moment'], factory); // AMD
4556+ } else if (typeof exports === 'object') {
4557+ module.exports = factory(require('../moment')); // Node
4558+ } else {
4559+ factory(window.moment); // Browser global
4560+ }
4561+}(function (moment) {
4562+ return moment.lang('ml', {
4563+ months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split("_"),
4564+ monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split("_"),
4565+ weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split("_"),
4566+ weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split("_"),
4567+ weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split("_"),
4568+ longDateFormat : {
4569+ LT : "A h:mm -നു",
4570+ L : "DD/MM/YYYY",
4571+ LL : "D MMMM YYYY",
4572+ LLL : "D MMMM YYYY, LT",
4573+ LLLL : "dddd, D MMMM YYYY, LT"
4574+ },
4575+ calendar : {
4576+ sameDay : '[ഇന്ന്] LT',
4577+ nextDay : '[നാളെ] LT',
4578+ nextWeek : 'dddd, LT',
4579+ lastDay : '[ഇന്നലെ] LT',
4580+ lastWeek : '[കഴിഞ്ഞ] dddd, LT',
4581+ sameElse : 'L'
4582+ },
4583+ relativeTime : {
4584+ future : "%s കഴിഞ്ഞ്",
4585+ past : "%s മുൻപ്",
4586+ s : "അൽപ നിമിഷങ്ങൾ",
4587+ m : "ഒരു മിനിറ്റ്",
4588+ mm : "%d മിനിറ്റ്",
4589+ h : "ഒരു മണിക്കൂർ",
4590+ hh : "%d മണിക്കൂർ",
4591+ d : "ഒരു ദിവസം",
4592+ dd : "%d ദിവസം",
4593+ M : "ഒരു മാസം",
4594+ MM : "%d മാസം",
4595+ y : "ഒരു വർഷം",
4596+ yy : "%d വർഷം"
4597+ },
4598+ meridiem : function (hour, minute, isLower) {
4599+ if (hour < 4) {
4600+ return "രാത്രി";
4601+ } else if (hour < 12) {
4602+ return "രാവിലെ";
4603+ } else if (hour < 17) {
4604+ return "ഉച്ച കഴിഞ്ഞ്";
4605+ } else if (hour < 20) {
4606+ return "വൈകുന്നേരം";
4607+ } else {
4608+ return "രാത്രി";
4609+ }
4610+ }
4611+ });
4612+}));
4613
4614=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.mr.js'
4615--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.mr.js 1970-01-01 00:00:00 +0000
4616+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.mr.js 2014-02-14 15:04:13 +0000
4617@@ -0,0 +1,104 @@
4618+// moment.js language configuration
4619+// language : Marathi (mr)
4620+// author : Harshad Kale : https://github.com/kalehv
4621+
4622+(function (factory) {
4623+ if (typeof define === 'function' && define.amd) {
4624+ define(['moment'], factory); // AMD
4625+ } else if (typeof exports === 'object') {
4626+ module.exports = factory(require('../moment')); // Node
4627+ } else {
4628+ factory(window.moment); // Browser global
4629+ }
4630+}(function (moment) {
4631+ var symbolMap = {
4632+ '1': '१',
4633+ '2': '२',
4634+ '3': '३',
4635+ '4': '४',
4636+ '5': '५',
4637+ '6': '६',
4638+ '7': '७',
4639+ '8': '८',
4640+ '9': '९',
4641+ '0': '०'
4642+ },
4643+ numberMap = {
4644+ '१': '1',
4645+ '२': '2',
4646+ '३': '3',
4647+ '४': '4',
4648+ '५': '5',
4649+ '६': '6',
4650+ '७': '7',
4651+ '८': '8',
4652+ '९': '9',
4653+ '०': '0'
4654+ };
4655+
4656+ return moment.lang('mr', {
4657+ months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split("_"),
4658+ monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split("_"),
4659+ weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split("_"),
4660+ weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split("_"),
4661+ weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split("_"),
4662+ longDateFormat : {
4663+ LT : "A h:mm वाजता",
4664+ L : "DD/MM/YYYY",
4665+ LL : "D MMMM YYYY",
4666+ LLL : "D MMMM YYYY, LT",
4667+ LLLL : "dddd, D MMMM YYYY, LT"
4668+ },
4669+ calendar : {
4670+ sameDay : '[आज] LT',
4671+ nextDay : '[उद्या] LT',
4672+ nextWeek : 'dddd, LT',
4673+ lastDay : '[काल] LT',
4674+ lastWeek: '[मागील] dddd, LT',
4675+ sameElse : 'L'
4676+ },
4677+ relativeTime : {
4678+ future : "%s नंतर",
4679+ past : "%s पूर्वी",
4680+ s : "सेकंद",
4681+ m: "एक मिनिट",
4682+ mm: "%d मिनिटे",
4683+ h : "एक तास",
4684+ hh : "%d तास",
4685+ d : "एक दिवस",
4686+ dd : "%d दिवस",
4687+ M : "एक महिना",
4688+ MM : "%d महिने",
4689+ y : "एक वर्ष",
4690+ yy : "%d वर्षे"
4691+ },
4692+ preparse: function (string) {
4693+ return string.replace(/[१२३४५६७८९०]/g, function (match) {
4694+ return numberMap[match];
4695+ });
4696+ },
4697+ postformat: function (string) {
4698+ return string.replace(/\d/g, function (match) {
4699+ return symbolMap[match];
4700+ });
4701+ },
4702+ meridiem: function (hour, minute, isLower)
4703+ {
4704+ if (hour < 4) {
4705+ return "रात्री";
4706+ } else if (hour < 10) {
4707+ return "सकाळी";
4708+ } else if (hour < 17) {
4709+ return "दुपारी";
4710+ } else if (hour < 20) {
4711+ return "सायंकाळी";
4712+ } else {
4713+ return "रात्री";
4714+ }
4715+ },
4716+ week : {
4717+ dow : 0, // Sunday is the first day of the week.
4718+ doy : 6 // The week that contains Jan 1st is the first week of the year.
4719+ }
4720+ });
4721+}));
4722
4723=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ms-my.js'
4724--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ms-my.js 1970-01-01 00:00:00 +0000
4725+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ms-my.js 2014-02-14 15:04:13 +0000
4726@@ -0,0 +1,66 @@
4727+// moment.js language configuration
4728+// language : Bahasa Malaysia (ms-MY)
4729+// author : Weldan Jamili : https://github.com/weldan
4730+
4731+(function (factory) {
4732+ if (typeof define === 'function' && define.amd) {
4733+ define(['moment'], factory); // AMD
4734+ } else if (typeof exports === 'object') {
4735+ module.exports = factory(require('../moment')); // Node
4736+ } else {
4737+ factory(window.moment); // Browser global
4738+ }
4739+}(function (moment) {
4740+ return moment.lang('ms-my', {
4741+ months : "Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),
4742+ monthsShort : "Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),
4743+ weekdays : "Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),
4744+ weekdaysShort : "Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),
4745+ weekdaysMin : "Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),
4746+ longDateFormat : {
4747+ LT : "HH.mm",
4748+ L : "DD/MM/YYYY",
4749+ LL : "D MMMM YYYY",
4750+ LLL : "D MMMM YYYY [pukul] LT",
4751+ LLLL : "dddd, D MMMM YYYY [pukul] LT"
4752+ },
4753+ meridiem : function (hours, minutes, isLower) {
4754+ if (hours < 11) {
4755+ return 'pagi';
4756+ } else if (hours < 15) {
4757+ return 'tengahari';
4758+ } else if (hours < 19) {
4759+ return 'petang';
4760+ } else {
4761+ return 'malam';
4762+ }
4763+ },
4764+ calendar : {
4765+ sameDay : '[Hari ini pukul] LT',
4766+ nextDay : '[Esok pukul] LT',
4767+ nextWeek : 'dddd [pukul] LT',
4768+ lastDay : '[Kelmarin pukul] LT',
4769+ lastWeek : 'dddd [lepas pukul] LT',
4770+ sameElse : 'L'
4771+ },
4772+ relativeTime : {
4773+ future : "dalam %s",
4774+ past : "%s yang lepas",
4775+ s : "beberapa saat",
4776+ m : "seminit",
4777+ mm : "%d minit",
4778+ h : "sejam",
4779+ hh : "%d jam",
4780+ d : "sehari",
4781+ dd : "%d hari",
4782+ M : "sebulan",
4783+ MM : "%d bulan",
4784+ y : "setahun",
4785+ yy : "%d tahun"
4786+ },
4787+ week : {
4788+ dow : 1, // Monday is the first day of the week.
4789+ doy : 7 // The week that contains Jan 1st is the first week of the year.
4790+ }
4791+ });
4792+}));
4793
4794=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.nb.js'
4795--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.nb.js 1970-01-01 00:00:00 +0000
4796+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.nb.js 2014-02-14 15:04:13 +0000
4797@@ -0,0 +1,57 @@
4798+// moment.js language configuration
4799+// language : norwegian bokmål (nb)
4800+// authors : Espen Hovlandsdal : https://github.com/rexxars
4801+// Sigurd Gartmann : https://github.com/sigurdga
4802+
4803+(function (factory) {
4804+ if (typeof define === 'function' && define.amd) {
4805+ define(['moment'], factory); // AMD
4806+ } else if (typeof exports === 'object') {
4807+ module.exports = factory(require('../moment')); // Node
4808+ } else {
4809+ factory(window.moment); // Browser global
4810+ }
4811+}(function (moment) {
4812+ return moment.lang('nb', {
4813+ months : "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),
4814+ monthsShort : "jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),
4815+ weekdays : "søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),
4816+ weekdaysShort : "sø._ma._ti._on._to._fr._lø.".split("_"),
4817+ weekdaysMin : "sø_ma_ti_on_to_fr_lø".split("_"),
4818+ longDateFormat : {
4819+ LT : "H.mm",
4820+ L : "DD.MM.YYYY",
4821+ LL : "D. MMMM YYYY",
4822+ LLL : "D. MMMM YYYY [kl.] LT",
4823+ LLLL : "dddd D. MMMM YYYY [kl.] LT"
4824+ },
4825+ calendar : {
4826+ sameDay: '[i dag kl.] LT',
4827+ nextDay: '[i morgen kl.] LT',
4828+ nextWeek: 'dddd [kl.] LT',
4829+ lastDay: '[i går kl.] LT',
4830+ lastWeek: '[forrige] dddd [kl.] LT',
4831+ sameElse: 'L'
4832+ },
4833+ relativeTime : {
4834+ future : "om %s",
4835+ past : "for %s siden",
4836+ s : "noen sekunder",
4837+ m : "ett minutt",
4838+ mm : "%d minutter",
4839+ h : "en time",
4840+ hh : "%d timer",
4841+ d : "en dag",
4842+ dd : "%d dager",
4843+ M : "en måned",
4844+ MM : "%d måneder",
4845+ y : "ett år",
4846+ yy : "%d år"
4847+ },
4848+ ordinal : '%d.',
4849+ week : {
4850+ dow : 1, // Monday is the first day of the week.
4851+ doy : 4 // The week that contains Jan 4th is the first week of the year.
4852+ }
4853+ });
4854+}));
4855
4856=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ne.js'
4857--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ne.js 1970-01-01 00:00:00 +0000
4858+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.ne.js 2014-02-14 15:04:13 +0000
4859@@ -0,0 +1,105 @@
4860+// moment.js language configuration
4861+// language : nepali/nepalese
4862+// author : suvash : https://github.com/suvash
4863+
4864+(function (factory) {
4865+ if (typeof define === 'function' && define.amd) {
4866+ define(['moment'], factory); // AMD
4867+ } else if (typeof exports === 'object') {
4868+ module.exports = factory(require('../moment')); // Node
4869+ } else {
4870+ factory(window.moment); // Browser global
4871+ }
4872+}(function (moment) {
4873+ var symbolMap = {
4874+ '1': '१',
4875+ '2': '२',
4876+ '3': '३',
4877+ '4': '४',
4878+ '5': '५',
4879+ '6': '६',
4880+ '7': '७',
4881+ '8': '८',
4882+ '9': '९',
4883+ '0': '०'
4884+ },
4885+ numberMap = {
4886+ '१': '1',
4887+ '२': '2',
4888+ '३': '3',
4889+ '४': '4',
4890+ '५': '5',
4891+ '६': '6',
4892+ '७': '7',
4893+ '८': '8',
4894+ '९': '9',
4895+ '०': '0'
4896+ };
4897+
4898+ return moment.lang('ne', {
4899+ months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split("_"),
4900+ monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split("_"),
4901+ weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split("_"),
4902+ weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split("_"),
4903+ weekdaysMin : 'आइ._सो._मङ्_बु._बि._शु._श.'.split("_"),
4904+ longDateFormat : {
4905+ LT : "Aको h:mm बजे",
4906+ L : "DD/MM/YYYY",
4907+ LL : "D MMMM YYYY",
4908+ LLL : "D MMMM YYYY, LT",
4909+ LLLL : "dddd, D MMMM YYYY, LT"
4910+ },
4911+ preparse: function (string) {
4912+ return string.replace(/[१२३४५६७८९०]/g, function (match) {
4913+ return numberMap[match];
4914+ });
4915+ },
4916+ postformat: function (string) {
4917+ return string.replace(/\d/g, function (match) {
4918+ return symbolMap[match];
4919+ });
4920+ },
4921+ meridiem : function (hour, minute, isLower) {
4922+ if (hour < 3) {
4923+ return "राती";
4924+ } else if (hour < 10) {
4925+ return "बिहान";
4926+ } else if (hour < 15) {
4927+ return "दिउँसो";
4928+ } else if (hour < 18) {
4929+ return "बेलुका";
4930+ } else if (hour < 20) {
4931+ return "साँझ";
4932+ } else {
4933+ return "राती";
4934+ }
4935+ },
4936+ calendar : {
4937+ sameDay : '[आज] LT',
4938+ nextDay : '[भोली] LT',
4939+ nextWeek : '[आउँदो] dddd[,] LT',
4940+ lastDay : '[हिजो] LT',
4941+ lastWeek : '[गएको] dddd[,] LT',
4942+ sameElse : 'L'
4943+ },
4944+ relativeTime : {
4945+ future : "%sमा",
4946+ past : "%s अगाडी",
4947+ s : "केही समय",
4948+ m : "एक मिनेट",
4949+ mm : "%d मिनेट",
4950+ h : "एक घण्टा",
4951+ hh : "%d घण्टा",
4952+ d : "एक दिन",
4953+ dd : "%d दिन",
4954+ M : "एक महिना",
4955+ MM : "%d महिना",
4956+ y : "एक बर्ष",
4957+ yy : "%d बर्ष"
4958+ },
4959+ week : {
4960+ dow : 1, // Monday is the first day of the week.
4961+ doy : 7 // The week that contains Jan 1st is the first week of the year.
4962+ }
4963+ });
4964+}));
4965
4966=== added file 'addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.nl.js'
4967--- addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.nl.js 1970-01-01 00:00:00 +0000
4968+++ addons/web/static/lib/bootstrap-datetimepicker/src/js/locales/bootstrap-datetimepicker.nl.js 2014-02-14 15:04:13 +0000
4969@@ -0,0 +1,67 @@
4970+// moment.js language configuration
4971+// language : dutch (nl)
4972+// author : Joris Röling : https://github.com/jjupiter
4973+
4974+(function (factory) {
4975+ if (typeof define === 'function' && define.amd) {
4976+ define(['moment'], factory); // AMD
4977+ } else if (typeof exports === 'object') {
4978+ module.exports = factory(require('../moment')); // Node
4979+ } else {
4980+ factory(window.moment); // Browser global
4981+ }
4982+}(function (moment) {
4983+ var monthsShortWithDots = "jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),
4984+ monthsShortWithoutDots = "jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_");
4985+
4986+ return moment.lang('nl', {
4987+ months : "januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),
4988+ monthsShort : function (m, format) {
4989+ if (/-MMM-/.test(format)) {
4990+ return monthsShortWithoutDots[m.month()];
4991+ } else {
4992+ return monthsShortWithDots[m.month()];
4993+ }
4994+ },
4995+ weekdays : "zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),
4996+ weekdaysShort : "zo._ma._di._wo._do._vr._za.".split("_"),
4997+ weekdaysMin : "Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),
4998+ longDateFormat : {
4999+ LT : "HH:mm",
5000+ L : "DD-MM-YYYY",
The diff has been truncated for viewing.