Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
tl_estate
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
hujun
tl_estate
Commits
ffebe7eb
Commit
ffebe7eb
authored
Jul 25, 2019
by
duxinyuan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改bootstrap-datetimePicker。js源文件
parent
81ed586d
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
31 additions
and
14 deletions
+31
-14
accountingTable.html
application/index/view/cost/accountingTable.html
+1
-1
accountingTable.js
public/resource/js/accountingTable.js
+7
-1
bootstrap-datetimepicker.js
public/resource/lib/js/bootstrap-datetimepicker.js
+21
-10
bootstrap-datetimepicker.min.js
public/resource/lib/js/bootstrap-datetimepicker.min.js
+2
-2
No files found.
application/index/view/cost/accountingTable.html
View file @
ffebe7eb
...
@@ -20,7 +20,7 @@
...
@@ -20,7 +20,7 @@
<div
class=
"panel-heading breadcrumb"
>
<div
class=
"panel-heading breadcrumb"
>
<li>
<li>
<span
class=
"manager-title ld-Marheight"
></span>
<span
class=
"manager-title ld-Marheight"
></span>
<input
id=
"count_time2"
class=
"form-control ld-Marheight"
type=
"text"
placeholder=
"请选择"
onclick=
"WdatePicker({el:this,dateFmt:'yyyy-MM',readOnly:'readonly' })
"
style=
"width: 150px;float: left;"
>
<input
id=
"count_time2"
class=
"form-control ld-Marheight"
placeholder=
"请选择
"
style=
"width: 150px;float: left;"
>
<input
type=
"date"
id=
"count_time"
class=
"form-control ld-Marheight"
placeholder=
"请选择"
style=
"width: 150px;float: left;"
/>
<input
type=
"date"
id=
"count_time"
class=
"form-control ld-Marheight"
placeholder=
"请选择"
style=
"width: 150px;float: left;"
/>
<a
class=
"btn btn-info is-print ld-Marheight"
style=
"margin-left: 20px;"
>
打印
</a>
<a
class=
"btn btn-info is-print ld-Marheight"
style=
"margin-left: 20px;"
>
打印
</a>
...
...
public/resource/js/accountingTable.js
View file @
ffebe7eb
...
@@ -33,7 +33,13 @@ define(['doT','html2canvas','text!temp/accountingTable_list_template_tpl.html',
...
@@ -33,7 +33,13 @@ define(['doT','html2canvas','text!temp/accountingTable_list_template_tpl.html',
event
:
function
()
{
event
:
function
()
{
var
that
=
bargain
;
var
that
=
bargain
;
$
(
'#count_time2'
).
datetimepicker
({
$
(
'#count_time2'
).
datetimepicker
({
onChange
:
function
()
{
alert
(
'Yo yo!'
)
}
format
:
'yyyy-mm'
,
startView
:
3
,
maxViewMode
:
1
,
minViewMode
:
1
,
autoclose
:
true
,
minView
:
3
,
onChange
:
function
()
{
}
});
});
$
(
'#count_time2'
).
change
(
function
(){
$
(
'#count_time2'
).
change
(
function
(){
alert
(
"time change"
)
alert
(
"time change"
)
...
...
public/resource/lib/js/bootstrap-datetimepicker.js
View file @
ffebe7eb
...
@@ -1496,16 +1496,27 @@
...
@@ -1496,16 +1496,27 @@
};
};
$
.
fn
.
datetimepicker
.
Constructor
=
Datetimepicker
;
$
.
fn
.
datetimepicker
.
Constructor
=
Datetimepicker
;
var
dates
=
$
.
fn
.
datetimepicker
.
dates
=
{
var
dates
=
$
.
fn
.
datetimepicker
.
dates
=
{
en
:
{
// en: {
days
:
[
'Sunday'
,
'Monday'
,
'Tuesday'
,
'Wednesday'
,
'Thursday'
,
'Friday'
,
'Saturday'
,
'Sunday'
],
// days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],
daysShort
:
[
'Sun'
,
'Mon'
,
'Tue'
,
'Wed'
,
'Thu'
,
'Fri'
,
'Sat'
,
'Sun'
],
// daysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
daysMin
:
[
'Su'
,
'Mo'
,
'Tu'
,
'We'
,
'Th'
,
'Fr'
,
'Sa'
,
'Su'
],
// daysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],
months
:
[
'January'
,
'February'
,
'March'
,
'April'
,
'May'
,
'June'
,
'July'
,
'August'
,
'September'
,
'October'
,
'November'
,
'December'
],
// months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
monthsShort
:
[
'Jan'
,
'Feb'
,
'Mar'
,
'Apr'
,
'May'
,
'Jun'
,
'Jul'
,
'Aug'
,
'Sep'
,
'Oct'
,
'Nov'
,
'Dec'
],
// monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
meridiem
:
[
'am'
,
'pm'
],
// meridiem: ['am', 'pm'],
suffix
:
[
'st'
,
'nd'
,
'rd'
,
'th'
],
// suffix: ['st', 'nd', 'rd', 'th'],
today
:
'Today'
,
// today: 'Today',
clear
:
'Clear'
// clear: 'Clear'
// },
en
:{
days
:[
"星期日"
,
"星期一"
,
"星期二"
,
"星期三"
,
"星期四"
,
"星期五"
,
"星期六"
,
"星期日"
],
daysShort
:[
"日"
,
"一"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
,
"日"
],
daysMin
:[
"日"
,
"一"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
,
"日"
],
months
:[
"一月"
,
"二月"
,
"三月"
,
"四月"
,
"五月"
,
"六月"
,
"七月"
,
"八月"
,
"九月"
,
"十月"
,
"十一月"
,
"十二月"
],
monthsShort
:[
"一"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
,
"七"
,
"八"
,
"九"
,
"十"
,
"十一"
,
"十二"
],
meridiem
:[
"上午"
,
"下午"
],
suffix
:[
"st"
,
"nd"
,
"rd"
,
"th"
],
today
:
"今天"
,
clear
:
"清除"
}
}
};
};
...
...
public/resource/lib/js/bootstrap-datetimepicker.min.js
View file @
ffebe7eb
(
function
(
a
){
if
(
typeof
define
===
"function"
&&
define
.
amd
){
define
([
"jquery"
],
a
)}
else
{
if
(
typeof
exports
===
"object"
){
a
(
require
(
"jquery"
))}
else
{
a
(
jQuery
)}}}(
function
(
d
,
f
){
if
(
!
(
"indexOf"
in
Array
.
prototype
)){
Array
.
prototype
.
indexOf
=
function
(
k
,
j
){
if
(
j
===
f
){
j
=
0
}
if
(
j
<
0
){
j
+=
this
.
length
}
if
(
j
<
0
){
j
=
0
}
for
(
var
l
=
this
.
length
;
j
<
l
;
j
++
){
if
(
j
in
this
&&
this
[
j
]
===
k
){
return
j
}}
return
-
1
}}
function
a
(){
var
q
,
k
,
p
,
l
,
j
,
n
,
m
,
o
;
k
=
(
new
Date
()).
toString
();
p
=
((
m
=
k
.
split
(
"("
)[
1
])
!=
null
?
m
.
slice
(
0
,
-
1
):
0
)
||
k
.
split
(
" "
);
if
(
p
instanceof
Array
){
n
=
[];
for
(
var
l
=
0
,
j
=
p
.
length
;
l
<
j
;
l
++
){
o
=
p
[
l
];
if
((
q
=
(
m
=
o
.
match
(
/
\b[
A-Z
]
+
\b
/
))
!==
null
)?
m
[
0
]:
0
){
n
.
push
(
q
)}}
p
=
n
.
pop
()}
return
p
}
function
h
(){
return
new
Date
(
Date
.
UTC
.
apply
(
Date
,
arguments
))}
var
g
=
function
(
k
,
j
){
var
m
=
this
;
this
.
element
=
d
(
k
);
this
.
container
=
j
.
container
||
"body"
;
this
.
language
=
j
.
language
||
this
.
element
.
data
(
"date-language"
)
||
"en"
;
this
.
language
=
this
.
language
in
e
?
this
.
language
:
this
.
language
.
split
(
"-"
)[
0
];
this
.
language
=
this
.
language
in
e
?
this
.
language
:
"en"
;
this
.
isRTL
=
e
[
this
.
language
].
rtl
||
false
;
this
.
formatType
=
j
.
formatType
||
this
.
element
.
data
(
"format-type"
)
||
"standard"
;
this
.
format
=
c
.
parseFormat
(
j
.
format
||
this
.
element
.
data
(
"date-format"
)
||
e
[
this
.
language
].
format
||
c
.
getDefaultFormat
(
this
.
formatType
,
"input"
),
this
.
formatType
);
this
.
isInline
=
false
;
this
.
isVisible
=
false
;
this
.
isInput
=
this
.
element
.
is
(
"input"
);
this
.
fontAwesome
=
j
.
fontAwesome
||
this
.
element
.
data
(
"font-awesome"
)
||
false
;
this
.
bootcssVer
=
j
.
bootcssVer
||
(
this
.
isInput
?(
this
.
element
.
is
(
".form-control"
)?
3
:
2
):(
this
.
bootcssVer
=
this
.
element
.
is
(
".input-group"
)?
3
:
2
));
this
.
component
=
this
.
element
.
is
(
".date"
)?(
this
.
bootcssVer
===
3
?
this
.
element
.
find
(
".input-group-addon .glyphicon-th, .input-group-addon .glyphicon-time, .input-group-addon .glyphicon-remove, .input-group-addon .glyphicon-calendar, .input-group-addon .fa-calendar, .input-group-addon .fa-clock-o"
).
parent
():
this
.
element
.
find
(
".add-on .icon-th, .add-on .icon-time, .add-on .icon-calendar, .add-on .fa-calendar, .add-on .fa-clock-o"
).
parent
()):
false
;
this
.
componentReset
=
this
.
element
.
is
(
".date"
)?(
this
.
bootcssVer
===
3
?
this
.
element
.
find
(
".input-group-addon .glyphicon-remove, .input-group-addon .fa-times"
).
parent
():
this
.
element
.
find
(
".add-on .icon-remove, .add-on .fa-times"
).
parent
()):
false
;
this
.
hasInput
=
this
.
component
&&
this
.
element
.
find
(
"input"
).
length
;
if
(
this
.
component
&&
this
.
component
.
length
===
0
){
this
.
component
=
false
}
this
.
linkField
=
j
.
linkField
||
this
.
element
.
data
(
"link-field"
)
||
false
;
this
.
linkFormat
=
c
.
parseFormat
(
j
.
linkFormat
||
this
.
element
.
data
(
"link-format"
)
||
c
.
getDefaultFormat
(
this
.
formatType
,
"link"
),
this
.
formatType
);
this
.
minuteStep
=
j
.
minuteStep
||
this
.
element
.
data
(
"minute-step"
)
||
5
;
this
.
pickerPosition
=
j
.
pickerPosition
||
this
.
element
.
data
(
"picker-position"
)
||
"bottom-right"
;
this
.
showMeridian
=
j
.
showMeridian
||
this
.
element
.
data
(
"show-meridian"
)
||
false
;
this
.
initialDate
=
j
.
initialDate
||
new
Date
();
this
.
zIndex
=
j
.
zIndex
||
this
.
element
.
data
(
"z-index"
)
||
f
;
this
.
title
=
typeof
j
.
title
===
"undefined"
?
false
:
j
.
title
;
this
.
timezone
=
j
.
timezone
||
a
();
this
.
icons
=
{
leftArrow
:
this
.
fontAwesome
?
"fa-arrow-left"
:(
this
.
bootcssVer
===
3
?
"glyphicon-arrow-left"
:
"icon-arrow-left"
),
rightArrow
:
this
.
fontAwesome
?
"fa-arrow-right"
:(
this
.
bootcssVer
===
3
?
"glyphicon-arrow-right"
:
"icon-arrow-right"
)};
this
.
icontype
=
this
.
fontAwesome
?
"fa"
:
"glyphicon"
;
this
.
_attachEvents
();
this
.
clickedOutside
=
function
(
n
){
if
(
d
(
n
.
target
).
closest
(
".datetimepicker"
).
length
===
0
){
m
.
hide
()}};
this
.
formatViewType
=
"datetime"
;
if
(
"formatViewType"
in
j
){
this
.
formatViewType
=
j
.
formatViewType
}
else
{
if
(
"formatViewType"
in
this
.
element
.
data
()){
this
.
formatViewType
=
this
.
element
.
data
(
"formatViewType"
)}}
this
.
minView
=
0
;
if
(
"minView"
in
j
){
this
.
minView
=
j
.
minView
}
else
{
if
(
"minView"
in
this
.
element
.
data
()){
this
.
minView
=
this
.
element
.
data
(
"min-view"
)}}
this
.
minView
=
c
.
convertViewMode
(
this
.
minView
);
this
.
maxView
=
c
.
modes
.
length
-
1
;
if
(
"maxView"
in
j
){
this
.
maxView
=
j
.
maxView
}
else
{
if
(
"maxView"
in
this
.
element
.
data
()){
this
.
maxView
=
this
.
element
.
data
(
"max-view"
)}}
this
.
maxView
=
c
.
convertViewMode
(
this
.
maxView
);
this
.
wheelViewModeNavigation
=
false
;
if
(
"wheelViewModeNavigation"
in
j
){
this
.
wheelViewModeNavigation
=
j
.
wheelViewModeNavigation
}
else
{
if
(
"wheelViewModeNavigation"
in
this
.
element
.
data
()){
this
.
wheelViewModeNavigation
=
this
.
element
.
data
(
"view-mode-wheel-navigation"
)}}
this
.
wheelViewModeNavigationInverseDirection
=
false
;
if
(
"wheelViewModeNavigationInverseDirection"
in
j
){
this
.
wheelViewModeNavigationInverseDirection
=
j
.
wheelViewModeNavigationInverseDirection
}
else
{
if
(
"wheelViewModeNavigationInverseDirection"
in
this
.
element
.
data
()){
this
.
wheelViewModeNavigationInverseDirection
=
this
.
element
.
data
(
"view-mode-wheel-navigation-inverse-dir"
)}}
this
.
wheelViewModeNavigationDelay
=
100
;
if
(
"wheelViewModeNavigationDelay"
in
j
){
this
.
wheelViewModeNavigationDelay
=
j
.
wheelViewModeNavigationDelay
}
else
{
if
(
"wheelViewModeNavigationDelay"
in
this
.
element
.
data
()){
this
.
wheelViewModeNavigationDelay
=
this
.
element
.
data
(
"view-mode-wheel-navigation-delay"
)}}
this
.
startViewMode
=
2
;
if
(
"startView"
in
j
){
this
.
startViewMode
=
j
.
startView
}
else
{
if
(
"startView"
in
this
.
element
.
data
()){
this
.
startViewMode
=
this
.
element
.
data
(
"start-view"
)}}
this
.
startViewMode
=
c
.
convertViewMode
(
this
.
startViewMode
);
this
.
viewMode
=
this
.
startViewMode
;
this
.
viewSelect
=
this
.
minView
;
if
(
"viewSelect"
in
j
){
this
.
viewSelect
=
j
.
viewSelect
}
else
{
if
(
"viewSelect"
in
this
.
element
.
data
()){
this
.
viewSelect
=
this
.
element
.
data
(
"view-select"
)}}
this
.
viewSelect
=
c
.
convertViewMode
(
this
.
viewSelect
);
this
.
forceParse
=
true
;
if
(
"forceParse"
in
j
){
this
.
forceParse
=
j
.
forceParse
}
else
{
if
(
"dateForceParse"
in
this
.
element
.
data
()){
this
.
forceParse
=
this
.
element
.
data
(
"date-force-parse"
)}}
var
l
=
this
.
bootcssVer
===
3
?
c
.
templateV3
:
c
.
template
;
while
(
l
.
indexOf
(
"{iconType}"
)
!==-
1
){
l
=
l
.
replace
(
"{iconType}"
,
this
.
icontype
)}
while
(
l
.
indexOf
(
"{leftArrow}"
)
!==-
1
){
l
=
l
.
replace
(
"{leftArrow}"
,
this
.
icons
.
leftArrow
)}
while
(
l
.
indexOf
(
"{rightArrow}"
)
!==-
1
){
l
=
l
.
replace
(
"{rightArrow}"
,
this
.
icons
.
rightArrow
)}
this
.
picker
=
d
(
l
).
appendTo
(
this
.
isInline
?
this
.
element
:
this
.
container
).
on
({
click
:
d
.
proxy
(
this
.
click
,
this
),
mousedown
:
d
.
proxy
(
this
.
mousedown
,
this
)});
if
(
this
.
wheelViewModeNavigation
){
if
(
d
.
fn
.
mousewheel
){
this
.
picker
.
on
({
mousewheel
:
d
.
proxy
(
this
.
mousewheel
,
this
)})}
else
{
console
.
log
(
"Mouse Wheel event is not supported. Please include the jQuery Mouse Wheel plugin before enabling this option"
)}}
if
(
this
.
isInline
){
this
.
picker
.
addClass
(
"datetimepicker-inline"
)}
else
{
this
.
picker
.
addClass
(
"datetimepicker-dropdown-"
+
this
.
pickerPosition
+
" dropdown-menu"
)}
if
(
this
.
isRTL
){
this
.
picker
.
addClass
(
"datetimepicker-rtl"
);
var
i
=
this
.
bootcssVer
===
3
?
".prev span, .next span"
:
".prev i, .next i"
;
this
.
picker
.
find
(
i
).
toggleClass
(
this
.
icons
.
leftArrow
+
" "
+
this
.
icons
.
rightArrow
)}
d
(
document
).
on
(
"mousedown touchend"
,
this
.
clickedOutside
);
this
.
autoclose
=
false
;
if
(
"autoclose"
in
j
){
this
.
autoclose
=
j
.
autoclose
}
else
{
if
(
"dateAutoclose"
in
this
.
element
.
data
()){
this
.
autoclose
=
this
.
element
.
data
(
"date-autoclose"
)}}
this
.
keyboardNavigation
=
true
;
if
(
"keyboardNavigation"
in
j
){
this
.
keyboardNavigation
=
j
.
keyboardNavigation
}
else
{
if
(
"dateKeyboardNavigation"
in
this
.
element
.
data
()){
this
.
keyboardNavigation
=
this
.
element
.
data
(
"date-keyboard-navigation"
)}}
this
.
todayBtn
=
(
j
.
todayBtn
||
this
.
element
.
data
(
"date-today-btn"
)
||
false
);
this
.
clearBtn
=
(
j
.
clearBtn
||
this
.
element
.
data
(
"date-clear-btn"
)
||
false
);
this
.
todayHighlight
=
(
j
.
todayHighlight
||
this
.
element
.
data
(
"date-today-highlight"
)
||
false
);
this
.
weekStart
=
0
;
if
(
typeof
j
.
weekStart
!==
"undefined"
){
this
.
weekStart
=
j
.
weekStart
}
else
{
if
(
typeof
this
.
element
.
data
(
"date-weekstart"
)
!==
"undefined"
){
this
.
weekStart
=
this
.
element
.
data
(
"date-weekstart"
)}
else
{
if
(
typeof
e
[
this
.
language
].
weekStart
!==
"undefined"
){
this
.
weekStart
=
e
[
this
.
language
].
weekStart
}}}
this
.
weekStart
=
this
.
weekStart
%
7
;
this
.
weekEnd
=
((
this
.
weekStart
+
6
)
%
7
);
this
.
onRenderDay
=
function
(
n
){
var
p
=
(
j
.
onRenderDay
||
function
(){
return
[]})(
n
);
if
(
typeof
p
===
"string"
){
p
=
[
p
]}
var
o
=
[
"day"
];
return
o
.
concat
((
p
?
p
:[]))};
this
.
onRenderHour
=
function
(
n
){
var
p
=
(
j
.
onRenderHour
||
function
(){
return
[]})(
n
);
var
o
=
[
"hour"
];
if
(
typeof
p
===
"string"
){
p
=
[
p
]}
return
o
.
concat
((
p
?
p
:[]))};
this
.
onRenderMinute
=
function
(
n
){
var
p
=
(
j
.
onRenderMinute
||
function
(){
return
[]})(
n
);
var
o
=
[
"minute"
];
if
(
typeof
p
===
"string"
){
p
=
[
p
]}
if
(
n
<
this
.
startDate
||
n
>
this
.
endDate
){
o
.
push
(
"disabled"
)}
else
{
if
(
Math
.
floor
(
this
.
date
.
getUTCMinutes
()
/
this
.
minuteStep
)
===
Math
.
floor
(
n
.
getUTCMinutes
()
/
this
.
minuteStep
)){
o
.
push
(
"active"
)}}
return
o
.
concat
((
p
?
p
:[]))};
this
.
onRenderYear
=
function
(
o
){
var
q
=
(
j
.
onRenderYear
||
function
(){
return
[]})(
o
);
var
p
=
[
"year"
];
if
(
typeof
q
===
"string"
){
q
=
[
q
]}
if
(
this
.
date
.
getUTCFullYear
()
===
o
.
getUTCFullYear
()){
p
.
push
(
"active"
)}
var
n
=
o
.
getUTCFullYear
();
var
r
=
this
.
endDate
.
getUTCFullYear
();
if
(
o
<
this
.
startDate
||
n
>
r
){
p
.
push
(
"disabled"
)}
return
p
.
concat
((
q
?
q
:[]))};
this
.
onRenderMonth
=
function
(
n
){
var
p
=
(
j
.
onRenderMonth
||
function
(){
return
[]})(
n
);
var
o
=
[
"month"
];
if
(
typeof
p
===
"string"
){
p
=
[
p
]}
return
o
.
concat
((
p
?
p
:[]))};
this
.
startDate
=
new
Date
(
-
8639968443048000
);
this
.
endDate
=
new
Date
(
8639968443048000
);
this
.
datesDisabled
=
[];
this
.
daysOfWeekDisabled
=
[];
this
.
setStartDate
(
j
.
startDate
||
this
.
element
.
data
(
"date-startdate"
));
this
.
setEndDate
(
j
.
endDate
||
this
.
element
.
data
(
"date-enddate"
));
this
.
setDatesDisabled
(
j
.
datesDisabled
||
this
.
element
.
data
(
"date-dates-disabled"
));
this
.
setDaysOfWeekDisabled
(
j
.
daysOfWeekDisabled
||
this
.
element
.
data
(
"date-days-of-week-disabled"
));
this
.
setMinutesDisabled
(
j
.
minutesDisabled
||
this
.
element
.
data
(
"date-minute-disabled"
));
this
.
setHoursDisabled
(
j
.
hoursDisabled
||
this
.
element
.
data
(
"date-hour-disabled"
));
this
.
fillDow
();
this
.
fillMonths
();
this
.
update
();
this
.
showMode
();
if
(
this
.
isInline
){
this
.
show
()}};
g
.
prototype
=
{
constructor
:
g
,
_events
:[],
_attachEvents
:
function
(){
this
.
_detachEvents
();
if
(
this
.
isInput
){
this
.
_events
=
[[
this
.
element
,{
focus
:
d
.
proxy
(
this
.
show
,
this
),
keyup
:
d
.
proxy
(
this
.
update
,
this
),
keydown
:
d
.
proxy
(
this
.
keydown
,
this
)}]]}
else
{
if
(
this
.
component
&&
this
.
hasInput
){
this
.
_events
=
[[
this
.
element
.
find
(
"input"
),{
focus
:
d
.
proxy
(
this
.
show
,
this
),
keyup
:
d
.
proxy
(
this
.
update
,
this
),
keydown
:
d
.
proxy
(
this
.
keydown
,
this
)}],[
this
.
component
,{
click
:
d
.
proxy
(
this
.
show
,
this
)}]];
if
(
this
.
componentReset
){
this
.
_events
.
push
([
this
.
componentReset
,{
click
:
d
.
proxy
(
this
.
reset
,
this
)}])}}
else
{
if
(
this
.
element
.
is
(
"div"
)){
this
.
isInline
=
true
}
else
{
this
.
_events
=
[[
this
.
element
,{
click
:
d
.
proxy
(
this
.
show
,
this
)}]]}}}
for
(
var
j
=
0
,
k
,
l
;
j
<
this
.
_events
.
length
;
j
++
){
k
=
this
.
_events
[
j
][
0
];
l
=
this
.
_events
[
j
][
1
];
k
.
on
(
l
)}},
_detachEvents
:
function
(){
for
(
var
j
=
0
,
k
,
l
;
j
<
this
.
_events
.
length
;
j
++
){
k
=
this
.
_events
[
j
][
0
];
l
=
this
.
_events
[
j
][
1
];
k
.
off
(
l
)}
this
.
_events
=
[]},
show
:
function
(
i
){
this
.
picker
.
show
();
this
.
height
=
this
.
component
?
this
.
component
.
outerHeight
():
this
.
element
.
outerHeight
();
if
(
this
.
forceParse
){
this
.
update
()}
this
.
place
();
d
(
window
).
on
(
"resize"
,
d
.
proxy
(
this
.
place
,
this
));
if
(
i
){
i
.
stopPropagation
();
i
.
preventDefault
()}
this
.
isVisible
=
true
;
this
.
element
.
trigger
({
type
:
"show"
,
date
:
this
.
date
})},
hide
:
function
(){
if
(
!
this
.
isVisible
){
return
}
if
(
this
.
isInline
){
return
}
this
.
picker
.
hide
();
d
(
window
).
off
(
"resize"
,
this
.
place
);
this
.
viewMode
=
this
.
startViewMode
;
this
.
showMode
();
if
(
!
this
.
isInput
){
d
(
document
).
off
(
"mousedown"
,
this
.
hide
)}
if
(
this
.
forceParse
&&
(
this
.
isInput
&&
this
.
element
.
val
()
||
this
.
hasInput
&&
this
.
element
.
find
(
"input"
).
val
())){
this
.
setValue
()}
this
.
isVisible
=
false
;
this
.
element
.
trigger
({
type
:
"hide"
,
date
:
this
.
date
})},
remove
:
function
(){
this
.
_detachEvents
();
d
(
document
).
off
(
"mousedown"
,
this
.
clickedOutside
);
this
.
picker
.
remove
();
delete
this
.
picker
;
delete
this
.
element
.
data
().
datetimepicker
},
getDate
:
function
(){
var
i
=
this
.
getUTCDate
();
if
(
i
===
null
){
return
null
}
return
new
Date
(
i
.
getTime
()
+
(
i
.
getTimezoneOffset
()
*
60000
))},
getUTCDate
:
function
(){
return
this
.
date
},
getInitialDate
:
function
(){
return
this
.
initialDate
},
setInitialDate
:
function
(
i
){
this
.
initialDate
=
i
},
setDate
:
function
(
i
){
this
.
setUTCDate
(
new
Date
(
i
.
getTime
()
-
(
i
.
getTimezoneOffset
()
*
60000
)))},
setUTCDate
:
function
(
i
){
if
(
i
>=
this
.
startDate
&&
i
<=
this
.
endDate
){
this
.
date
=
i
;
this
.
setValue
();
this
.
viewDate
=
this
.
date
;
this
.
fill
()}
else
{
this
.
element
.
trigger
({
type
:
"outOfRange"
,
date
:
i
,
startDate
:
this
.
startDate
,
endDate
:
this
.
endDate
})}},
setFormat
:
function
(
j
){
this
.
format
=
c
.
parseFormat
(
j
,
this
.
formatType
);
var
i
;
if
(
this
.
isInput
){
i
=
this
.
element
}
else
{
if
(
this
.
component
){
i
=
this
.
element
.
find
(
"input"
)}}
if
(
i
&&
i
.
val
()){
this
.
setValue
()}},
setValue
:
function
(){
var
i
=
this
.
getFormattedDate
();
if
(
!
this
.
isInput
){
if
(
this
.
component
){
this
.
element
.
find
(
"input"
).
val
(
i
)}
this
.
element
.
data
(
"date"
,
i
)}
else
{
this
.
element
.
val
(
i
)}
if
(
this
.
linkField
){
d
(
"#"
+
this
.
linkField
).
val
(
this
.
getFormattedDate
(
this
.
linkFormat
))}},
getFormattedDate
:
function
(
i
){
i
=
i
||
this
.
format
;
return
c
.
formatDate
(
this
.
date
,
i
,
this
.
language
,
this
.
formatType
,
this
.
timezone
)},
setStartDate
:
function
(
i
){
this
.
startDate
=
i
||
this
.
startDate
;
if
(
this
.
startDate
.
valueOf
()
!==
8639968443048000
){
this
.
startDate
=
c
.
parseDate
(
this
.
startDate
,
this
.
format
,
this
.
language
,
this
.
formatType
,
this
.
timezone
)}
this
.
update
();
this
.
updateNavArrows
()},
setEndDate
:
function
(
i
){
this
.
endDate
=
i
||
this
.
endDate
;
if
(
this
.
endDate
.
valueOf
()
!==
8639968443048000
){
this
.
endDate
=
c
.
parseDate
(
this
.
endDate
,
this
.
format
,
this
.
language
,
this
.
formatType
,
this
.
timezone
)}
this
.
update
();
this
.
updateNavArrows
()},
setDatesDisabled
:
function
(
j
){
this
.
datesDisabled
=
j
||
[];
if
(
!
d
.
isArray
(
this
.
datesDisabled
)){
this
.
datesDisabled
=
this
.
datesDisabled
.
split
(
/,
\s
*/
)}
var
i
=
this
;
this
.
datesDisabled
=
d
.
map
(
this
.
datesDisabled
,
function
(
k
){
return
c
.
parseDate
(
k
,
i
.
format
,
i
.
language
,
i
.
formatType
,
i
.
timezone
).
toDateString
()});
this
.
update
();
this
.
updateNavArrows
()},
setTitle
:
function
(
i
,
j
){
return
this
.
picker
.
find
(
i
).
find
(
"th:eq(1)"
).
text
(
this
.
title
===
false
?
j
:
this
.
title
)},
setDaysOfWeekDisabled
:
function
(
i
){
this
.
daysOfWeekDisabled
=
i
||
[];
if
(
!
d
.
isArray
(
this
.
daysOfWeekDisabled
)){
this
.
daysOfWeekDisabled
=
this
.
daysOfWeekDisabled
.
split
(
/,
\s
*/
)}
this
.
daysOfWeekDisabled
=
d
.
map
(
this
.
daysOfWeekDisabled
,
function
(
j
){
return
parseInt
(
j
,
10
)});
this
.
update
();
this
.
updateNavArrows
()},
setMinutesDisabled
:
function
(
i
){
this
.
minutesDisabled
=
i
||
[];
if
(
!
d
.
isArray
(
this
.
minutesDisabled
)){
this
.
minutesDisabled
=
this
.
minutesDisabled
.
split
(
/,
\s
*/
)}
this
.
minutesDisabled
=
d
.
map
(
this
.
minutesDisabled
,
function
(
j
){
return
parseInt
(
j
,
10
)});
this
.
update
();
this
.
updateNavArrows
()},
setHoursDisabled
:
function
(
i
){
this
.
hoursDisabled
=
i
||
[];
if
(
!
d
.
isArray
(
this
.
hoursDisabled
)){
this
.
hoursDisabled
=
this
.
hoursDisabled
.
split
(
/,
\s
*/
)}
this
.
hoursDisabled
=
d
.
map
(
this
.
hoursDisabled
,
function
(
j
){
return
parseInt
(
j
,
10
)});
this
.
update
();
this
.
updateNavArrows
()},
place
:
function
(){
if
(
this
.
isInline
){
return
}
if
(
!
this
.
zIndex
){
var
j
=
0
;
d
(
"div"
).
each
(
function
(){
var
o
=
parseInt
(
d
(
this
).
css
(
"zIndex"
),
10
);
if
(
o
>
j
){
j
=
o
}});
this
.
zIndex
=
j
+
10
}
var
n
,
m
,
l
,
k
;
if
(
this
.
container
instanceof
d
){
k
=
this
.
container
.
offset
()}
else
{
k
=
d
(
this
.
container
).
offset
()}
if
(
this
.
component
){
n
=
this
.
component
.
offset
();
l
=
n
.
left
;
if
(
this
.
pickerPosition
===
"bottom-left"
||
this
.
pickerPosition
===
"top-left"
){
l
+=
this
.
component
.
outerWidth
()
-
this
.
picker
.
outerWidth
()}}
else
{
n
=
this
.
element
.
offset
();
l
=
n
.
left
;
if
(
this
.
pickerPosition
===
"bottom-left"
||
this
.
pickerPosition
===
"top-left"
){
l
+=
this
.
element
.
outerWidth
()
-
this
.
picker
.
outerWidth
()}}
var
i
=
document
.
body
.
clientWidth
||
window
.
innerWidth
;
if
(
l
+
220
>
i
){
l
=
i
-
220
}
if
(
this
.
pickerPosition
===
"top-left"
||
this
.
pickerPosition
===
"top-right"
){
m
=
n
.
top
-
this
.
picker
.
outerHeight
()}
else
{
m
=
n
.
top
+
this
.
height
}
m
=
m
-
k
.
top
;
l
=
l
-
k
.
left
;
this
.
picker
.
css
({
top
:
m
,
left
:
l
,
zIndex
:
this
.
zIndex
})},
hour_minute
:
"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]"
,
update
:
function
(){
var
i
,
j
=
false
;
if
(
arguments
&&
arguments
.
length
&&
(
typeof
arguments
[
0
]
===
"string"
||
arguments
[
0
]
instanceof
Date
)){
i
=
arguments
[
0
];
j
=
true
}
else
{
i
=
(
this
.
isInput
?
this
.
element
.
val
():
this
.
element
.
find
(
"input"
).
val
())
||
this
.
element
.
data
(
"date"
)
||
this
.
initialDate
;
if
(
typeof
i
===
"string"
){
i
=
i
.
replace
(
/^
\s
+|
\s
+$/g
,
""
)}}
if
(
!
i
){
i
=
new
Date
();
j
=
false
}
if
(
typeof
i
===
"string"
){
if
(
new
RegExp
(
this
.
hour_minute
).
test
(
i
)
||
new
RegExp
(
this
.
hour_minute
+
":[0-5][0-9]"
).
test
(
i
)){
i
=
this
.
getDate
()}}
this
.
date
=
c
.
parseDate
(
i
,
this
.
format
,
this
.
language
,
this
.
formatType
,
this
.
timezone
);
if
(
j
){
this
.
setValue
()}
if
(
this
.
date
<
this
.
startDate
){
this
.
viewDate
=
new
Date
(
this
.
startDate
)}
else
{
if
(
this
.
date
>
this
.
endDate
){
this
.
viewDate
=
new
Date
(
this
.
endDate
)}
else
{
this
.
viewDate
=
new
Date
(
this
.
date
)}}
this
.
fill
()},
fillDow
:
function
(){
var
i
=
this
.
weekStart
,
j
=
"<tr>"
;
while
(
i
<
this
.
weekStart
+
7
){
j
+=
'<th class="dow">'
+
e
[
this
.
language
].
daysMin
[(
i
++
)
%
7
]
+
"</th>"
}
j
+=
"</tr>"
;
this
.
picker
.
find
(
".datetimepicker-days thead"
).
append
(
j
)},
fillMonths
:
function
(){
var
l
=
""
;
var
m
=
new
Date
(
this
.
viewDate
);
for
(
var
k
=
0
;
k
<
12
;
k
++
){
m
.
setUTCMonth
(
k
);
var
j
=
this
.
onRenderMonth
(
m
);
l
+=
'<span class="'
+
j
.
join
(
" "
)
+
'">'
+
e
[
this
.
language
].
monthsShort
[
k
]
+
"</span>"
}
this
.
picker
.
find
(
".datetimepicker-months td"
).
html
(
l
)},
fill
:
function
(){
if
(
!
this
.
date
||!
this
.
viewDate
){
return
}
var
E
=
new
Date
(
this
.
viewDate
),
t
=
E
.
getUTCFullYear
(),
G
=
E
.
getUTCMonth
(),
n
=
E
.
getUTCDate
(),
A
=
E
.
getUTCHours
(),
w
=
this
.
startDate
.
getUTCFullYear
(),
B
=
this
.
startDate
.
getUTCMonth
(),
p
=
this
.
endDate
.
getUTCFullYear
(),
x
=
this
.
endDate
.
getUTCMonth
()
+
1
,
q
=
(
new
h
(
this
.
date
.
getUTCFullYear
(),
this
.
date
.
getUTCMonth
(),
this
.
date
.
getUTCDate
())).
valueOf
(),
D
=
new
Date
();
this
.
setTitle
(
".datetimepicker-days"
,
e
[
this
.
language
].
months
[
G
]
+
" "
+
t
);
if
(
this
.
formatViewType
===
"time"
){
var
k
=
this
.
getFormattedDate
();
this
.
setTitle
(
".datetimepicker-hours"
,
k
);
this
.
setTitle
(
".datetimepicker-minutes"
,
k
)}
else
{
this
.
setTitle
(
".datetimepicker-hours"
,
n
+
" "
+
e
[
this
.
language
].
months
[
G
]
+
" "
+
t
);
this
.
setTitle
(
".datetimepicker-minutes"
,
n
+
" "
+
e
[
this
.
language
].
months
[
G
]
+
" "
+
t
)}
this
.
picker
.
find
(
"tfoot th.today"
).
text
(
e
[
this
.
language
].
today
||
e
.
en
.
today
).
toggle
(
this
.
todayBtn
!==
false
);
this
.
picker
.
find
(
"tfoot th.clear"
).
text
(
e
[
this
.
language
].
clear
||
e
.
en
.
clear
).
toggle
(
this
.
clearBtn
!==
false
);
this
.
updateNavArrows
();
this
.
fillMonths
();
var
I
=
h
(
t
,
G
-
1
,
28
,
0
,
0
,
0
,
0
),
z
=
c
.
getDaysInMonth
(
I
.
getUTCFullYear
(),
I
.
getUTCMonth
());
I
.
setUTCDate
(
z
);
I
.
setUTCDate
(
z
-
(
I
.
getUTCDay
()
-
this
.
weekStart
+
7
)
%
7
);
var
j
=
new
Date
(
I
);
j
.
setUTCDate
(
j
.
getUTCDate
()
+
42
);
j
=
j
.
valueOf
();
var
r
=
[];
var
F
;
while
(
I
.
valueOf
()
<
j
){
if
(
I
.
getUTCDay
()
===
this
.
weekStart
){
r
.
push
(
"<tr>"
)}
F
=
this
.
onRenderDay
(
I
);
if
(
I
.
getUTCFullYear
()
<
t
||
(
I
.
getUTCFullYear
()
===
t
&&
I
.
getUTCMonth
()
<
G
)){
F
.
push
(
"old"
)}
else
{
if
(
I
.
getUTCFullYear
()
>
t
||
(
I
.
getUTCFullYear
()
===
t
&&
I
.
getUTCMonth
()
>
G
)){
F
.
push
(
"new"
)}}
if
(
this
.
todayHighlight
&&
I
.
getUTCFullYear
()
===
D
.
getFullYear
()
&&
I
.
getUTCMonth
()
===
D
.
getMonth
()
&&
I
.
getUTCDate
()
===
D
.
getDate
()){
F
.
push
(
"today"
)}
if
(
I
.
valueOf
()
===
q
){
F
.
push
(
"active"
)}
if
((
I
.
valueOf
()
+
86400000
)
<=
this
.
startDate
||
I
.
valueOf
()
>
this
.
endDate
||
d
.
inArray
(
I
.
getUTCDay
(),
this
.
daysOfWeekDisabled
)
!==-
1
||
d
.
inArray
(
I
.
toDateString
(),
this
.
datesDisabled
)
!==-
1
){
F
.
push
(
"disabled"
)}
r
.
push
(
'<td class="'
+
F
.
join
(
" "
)
+
'">'
+
I
.
getUTCDate
()
+
"</td>"
);
if
(
I
.
getUTCDay
()
===
this
.
weekEnd
){
r
.
push
(
"</tr>"
)}
I
.
setUTCDate
(
I
.
getUTCDate
()
+
1
)}
this
.
picker
.
find
(
".datetimepicker-days tbody"
).
empty
().
append
(
r
.
join
(
""
));
r
=
[];
var
u
=
""
,
C
=
""
,
s
=
""
;
var
l
=
this
.
hoursDisabled
||
[];
E
=
new
Date
(
this
.
viewDate
);
for
(
var
y
=
0
;
y
<
24
;
y
++
){
E
.
setUTCHours
(
y
);
F
=
this
.
onRenderHour
(
E
);
if
(
l
.
indexOf
(
y
)
!==-
1
){
F
.
push
(
"disabled"
)}
var
v
=
h
(
t
,
G
,
n
,
y
);
if
((
v
.
valueOf
()
+
3600000
)
<=
this
.
startDate
||
v
.
valueOf
()
>
this
.
endDate
){
F
.
push
(
"disabled"
)}
else
{
if
(
A
===
y
){
F
.
push
(
"active"
)}}
if
(
this
.
showMeridian
&&
e
[
this
.
language
].
meridiem
.
length
===
2
){
C
=
(
y
<
12
?
e
[
this
.
language
].
meridiem
[
0
]:
e
[
this
.
language
].
meridiem
[
1
]);
if
(
C
!==
s
){
if
(
s
!==
""
){
r
.
push
(
"</fieldset>"
)}
r
.
push
(
'<fieldset class="hour"><legend>'
+
C
.
toUpperCase
()
+
"</legend>"
)}
s
=
C
;
u
=
(
y
%
12
?
y
%
12
:
12
);
if
(
y
<
12
){
F
.
push
(
"hour_am"
)}
else
{
F
.
push
(
"hour_pm"
)}
r
.
push
(
'<span class="'
+
F
.
join
(
" "
)
+
'">'
+
u
+
"</span>"
);
if
(
y
===
23
){
r
.
push
(
"</fieldset>"
)}}
else
{
u
=
y
+
":00"
;
r
.
push
(
'<span class="'
+
F
.
join
(
" "
)
+
'">'
+
u
+
"</span>"
)}}
this
.
picker
.
find
(
".datetimepicker-hours td"
).
html
(
r
.
join
(
""
));
r
=
[];
u
=
""
;
C
=
""
;
s
=
""
;
var
m
=
this
.
minutesDisabled
||
[];
E
=
new
Date
(
this
.
viewDate
);
for
(
var
y
=
0
;
y
<
60
;
y
+=
this
.
minuteStep
){
if
(
m
.
indexOf
(
y
)
!==-
1
){
continue
}
E
.
setUTCMinutes
(
y
);
E
.
setUTCSeconds
(
0
);
F
=
this
.
onRenderMinute
(
E
);
if
(
this
.
showMeridian
&&
e
[
this
.
language
].
meridiem
.
length
===
2
){
C
=
(
A
<
12
?
e
[
this
.
language
].
meridiem
[
0
]:
e
[
this
.
language
].
meridiem
[
1
]);
if
(
C
!==
s
){
if
(
s
!==
""
){
r
.
push
(
"</fieldset>"
)}
r
.
push
(
'<fieldset class="minute"><legend>'
+
C
.
toUpperCase
()
+
"</legend>"
)}
s
=
C
;
u
=
(
A
%
12
?
A
%
12
:
12
);
r
.
push
(
'<span class="'
+
F
.
join
(
" "
)
+
'">'
+
u
+
":"
+
(
y
<
10
?
"0"
+
y
:
y
)
+
"</span>"
);
if
(
y
===
59
){
r
.
push
(
"</fieldset>"
)}}
else
{
u
=
y
+
":00"
;
r
.
push
(
'<span class="'
+
F
.
join
(
" "
)
+
'">'
+
A
+
":"
+
(
y
<
10
?
"0"
+
y
:
y
)
+
"</span>"
)}}
this
.
picker
.
find
(
".datetimepicker-minutes td"
).
html
(
r
.
join
(
""
));
var
J
=
this
.
date
.
getUTCFullYear
();
var
o
=
this
.
setTitle
(
".datetimepicker-months"
,
t
).
end
().
find
(
".month"
).
removeClass
(
"active"
);
if
(
J
===
t
){
o
.
eq
(
this
.
date
.
getUTCMonth
()).
addClass
(
"active"
)}
if
(
t
<
w
||
t
>
p
){
o
.
addClass
(
"disabled"
)}
if
(
t
===
w
){
o
.
slice
(
0
,
B
).
addClass
(
"disabled"
)}
if
(
t
===
p
){
o
.
slice
(
x
).
addClass
(
"disabled"
)}
r
=
""
;
t
=
parseInt
(
t
/
10
,
10
)
*
10
;
var
H
=
this
.
setTitle
(
".datetimepicker-years"
,
t
+
"-"
+
(
t
+
9
)).
end
().
find
(
"td"
);
t
-=
1
;
E
=
new
Date
(
this
.
viewDate
);
for
(
var
y
=-
1
;
y
<
11
;
y
++
){
E
.
setUTCFullYear
(
t
);
F
=
this
.
onRenderYear
(
E
);
if
(
y
===-
1
||
y
===
10
){
F
.
push
(
b
)}
r
+=
'<span class="'
+
F
.
join
(
" "
)
+
'">'
+
t
+
"</span>"
;
t
+=
1
}
H
.
html
(
r
);
this
.
place
()},
updateNavArrows
:
function
(){
var
m
=
new
Date
(
this
.
viewDate
),
k
=
m
.
getUTCFullYear
(),
l
=
m
.
getUTCMonth
(),
j
=
m
.
getUTCDate
(),
i
=
m
.
getUTCHours
();
switch
(
this
.
viewMode
){
case
0
:
if
(
k
<=
this
.
startDate
.
getUTCFullYear
()
&&
l
<=
this
.
startDate
.
getUTCMonth
()
&&
j
<=
this
.
startDate
.
getUTCDate
()
&&
i
<=
this
.
startDate
.
getUTCHours
()){
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"visible"
})}
if
(
k
>=
this
.
endDate
.
getUTCFullYear
()
&&
l
>=
this
.
endDate
.
getUTCMonth
()
&&
j
>=
this
.
endDate
.
getUTCDate
()
&&
i
>=
this
.
endDate
.
getUTCHours
()){
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"visible"
})}
break
;
case
1
:
if
(
k
<=
this
.
startDate
.
getUTCFullYear
()
&&
l
<=
this
.
startDate
.
getUTCMonth
()
&&
j
<=
this
.
startDate
.
getUTCDate
()){
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"visible"
})}
if
(
k
>=
this
.
endDate
.
getUTCFullYear
()
&&
l
>=
this
.
endDate
.
getUTCMonth
()
&&
j
>=
this
.
endDate
.
getUTCDate
()){
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"visible"
})}
break
;
case
2
:
if
(
k
<=
this
.
startDate
.
getUTCFullYear
()
&&
l
<=
this
.
startDate
.
getUTCMonth
()){
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"visible"
})}
if
(
k
>=
this
.
endDate
.
getUTCFullYear
()
&&
l
>=
this
.
endDate
.
getUTCMonth
()){
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"visible"
})}
break
;
case
3
:
case
4
:
if
(
k
<=
this
.
startDate
.
getUTCFullYear
()){
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"visible"
})}
if
(
k
>=
this
.
endDate
.
getUTCFullYear
()){
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"visible"
})}
break
}},
mousewheel
:
function
(
j
){
j
.
preventDefault
();
j
.
stopPropagation
();
if
(
this
.
wheelPause
){
return
}
this
.
wheelPause
=
true
;
var
i
=
j
.
originalEvent
;
var
l
=
i
.
wheelDelta
;
var
k
=
l
>
0
?
1
:(
l
===
0
)?
0
:
-
1
;
if
(
this
.
wheelViewModeNavigationInverseDirection
){
k
=-
k
}
this
.
showMode
(
k
);
setTimeout
(
d
.
proxy
(
function
(){
this
.
wheelPause
=
false
},
this
),
this
.
wheelViewModeNavigationDelay
)},
click
:
function
(
m
){
m
.
stopPropagation
();
m
.
preventDefault
();
var
n
=
d
(
m
.
target
).
closest
(
"span, td, th, legend"
);
if
(
n
.
is
(
"."
+
this
.
icontype
)){
n
=
d
(
n
).
parent
().
closest
(
"span, td, th, legend"
)}
if
(
n
.
length
===
1
){
if
(
n
.
is
(
".disabled"
)){
this
.
element
.
trigger
({
type
:
"outOfRange"
,
date
:
this
.
viewDate
,
startDate
:
this
.
startDate
,
endDate
:
this
.
endDate
});
return
}
switch
(
n
[
0
].
nodeName
.
toLowerCase
()){
case
"th"
:
switch
(
n
[
0
].
className
){
case
"switch"
:
this
.
showMode
(
1
);
break
;
case
"prev"
:
case
"next"
:
var
i
=
c
.
modes
[
this
.
viewMode
].
navStep
*
(
n
[
0
].
className
===
"prev"
?
-
1
:
1
);
switch
(
this
.
viewMode
){
case
0
:
this
.
viewDate
=
this
.
moveHour
(
this
.
viewDate
,
i
);
break
;
case
1
:
this
.
viewDate
=
this
.
moveDate
(
this
.
viewDate
,
i
);
break
;
case
2
:
this
.
viewDate
=
this
.
moveMonth
(
this
.
viewDate
,
i
);
break
;
case
3
:
case
4
:
this
.
viewDate
=
this
.
moveYear
(
this
.
viewDate
,
i
);
break
}
this
.
fill
();
this
.
element
.
trigger
({
type
:
n
[
0
].
className
+
":"
+
this
.
convertViewModeText
(
this
.
viewMode
),
date
:
this
.
viewDate
,
startDate
:
this
.
startDate
,
endDate
:
this
.
endDate
});
break
;
case
"clear"
:
this
.
reset
();
if
(
this
.
autoclose
){
this
.
hide
()}
break
;
case
"today"
:
var
j
=
new
Date
();
j
=
h
(
j
.
getFullYear
(),
j
.
getMonth
(),
j
.
getDate
(),
j
.
getHours
(),
j
.
getMinutes
(),
j
.
getSeconds
(),
0
);
if
(
j
<
this
.
startDate
){
j
=
this
.
startDate
}
else
{
if
(
j
>
this
.
endDate
){
j
=
this
.
endDate
}}
this
.
viewMode
=
this
.
startViewMode
;
this
.
showMode
(
0
);
this
.
_setDate
(
j
);
this
.
fill
();
if
(
this
.
autoclose
){
this
.
hide
()}
break
}
break
;
case
"span"
:
if
(
!
n
.
is
(
".disabled"
)){
var
p
=
this
.
viewDate
.
getUTCFullYear
(),
o
=
this
.
viewDate
.
getUTCMonth
(),
q
=
this
.
viewDate
.
getUTCDate
(),
r
=
this
.
viewDate
.
getUTCHours
(),
k
=
this
.
viewDate
.
getUTCMinutes
(),
s
=
this
.
viewDate
.
getUTCSeconds
();
if
(
n
.
is
(
".month"
)){
this
.
viewDate
.
setUTCDate
(
1
);
o
=
n
.
parent
().
find
(
"span"
).
index
(
n
);
q
=
this
.
viewDate
.
getUTCDate
();
this
.
viewDate
.
setUTCMonth
(
o
);
this
.
element
.
trigger
({
type
:
"changeMonth"
,
date
:
this
.
viewDate
});
if
(
this
.
viewSelect
>=
3
){
this
.
_setDate
(
h
(
p
,
o
,
q
,
r
,
k
,
s
,
0
))}}
else
{
if
(
n
.
is
(
".year"
)){
this
.
viewDate
.
setUTCDate
(
1
);
p
=
parseInt
(
n
.
text
(),
10
)
||
0
;
this
.
viewDate
.
setUTCFullYear
(
p
);
this
.
element
.
trigger
({
type
:
"changeYear"
,
date
:
this
.
viewDate
});
if
(
this
.
viewSelect
>=
4
){
this
.
_setDate
(
h
(
p
,
o
,
q
,
r
,
k
,
s
,
0
))}}
else
{
if
(
n
.
is
(
".hour"
)){
r
=
parseInt
(
n
.
text
(),
10
)
||
0
;
if
(
n
.
hasClass
(
"hour_am"
)
||
n
.
hasClass
(
"hour_pm"
)){
if
(
r
===
12
&&
n
.
hasClass
(
"hour_am"
)){
r
=
0
}
else
{
if
(
r
!==
12
&&
n
.
hasClass
(
"hour_pm"
)){
r
+=
12
}}}
this
.
viewDate
.
setUTCHours
(
r
);
this
.
element
.
trigger
({
type
:
"changeHour"
,
date
:
this
.
viewDate
});
if
(
this
.
viewSelect
>=
1
){
this
.
_setDate
(
h
(
p
,
o
,
q
,
r
,
k
,
s
,
0
))}}
else
{
if
(
n
.
is
(
".minute"
)){
k
=
parseInt
(
n
.
text
().
substr
(
n
.
text
().
indexOf
(
":"
)
+
1
),
10
)
||
0
;
this
.
viewDate
.
setUTCMinutes
(
k
);
this
.
element
.
trigger
({
type
:
"changeMinute"
,
date
:
this
.
viewDate
});
if
(
this
.
viewSelect
>=
0
){
this
.
_setDate
(
h
(
p
,
o
,
q
,
r
,
k
,
s
,
0
))}}}}}
if
(
this
.
viewMode
!==
0
){
var
l
=
this
.
viewMode
;
this
.
showMode
(
-
1
);
this
.
fill
();
if
(
l
===
this
.
viewMode
&&
this
.
autoclose
){
this
.
hide
()}}
else
{
this
.
fill
();
if
(
this
.
autoclose
){
this
.
hide
()}}}
break
;
case
"td"
:
if
(
n
.
is
(
".day"
)
&&!
n
.
is
(
".disabled"
)){
var
q
=
parseInt
(
n
.
text
(),
10
)
||
1
;
var
p
=
this
.
viewDate
.
getUTCFullYear
(),
o
=
this
.
viewDate
.
getUTCMonth
(),
r
=
this
.
viewDate
.
getUTCHours
(),
k
=
this
.
viewDate
.
getUTCMinutes
(),
s
=
this
.
viewDate
.
getUTCSeconds
();
if
(
n
.
is
(
".old"
)){
if
(
o
===
0
){
o
=
11
;
p
-=
1
}
else
{
o
-=
1
}}
else
{
if
(
n
.
is
(
".new"
)){
if
(
o
===
11
){
o
=
0
;
p
+=
1
}
else
{
o
+=
1
}}}
this
.
viewDate
.
setUTCFullYear
(
p
);
this
.
viewDate
.
setUTCMonth
(
o
,
q
);
this
.
element
.
trigger
({
type
:
"changeDay"
,
date
:
this
.
viewDate
});
if
(
this
.
viewSelect
>=
2
){
this
.
_setDate
(
h
(
p
,
o
,
q
,
r
,
k
,
s
,
0
))}}
var
l
=
this
.
viewMode
;
this
.
showMode
(
-
1
);
this
.
fill
();
if
(
l
===
this
.
viewMode
&&
this
.
autoclose
){
this
.
hide
()}
break
}}},
_setDate
:
function
(
i
,
k
){
if
(
!
k
||
k
===
"date"
){
this
.
date
=
i
}
if
(
!
k
||
k
===
"view"
){
this
.
viewDate
=
i
}
this
.
fill
();
this
.
setValue
();
var
j
;
if
(
this
.
isInput
){
j
=
this
.
element
}
else
{
if
(
this
.
component
){
j
=
this
.
element
.
find
(
"input"
)}}
if
(
j
){
j
.
change
()}
this
.
element
.
trigger
({
type
:
"changeDate"
,
date
:
this
.
getDate
()});
if
(
i
===
null
){
this
.
date
=
this
.
viewDate
}},
moveMinute
:
function
(
j
,
i
){
if
(
!
i
){
return
j
}
var
k
=
new
Date
(
j
.
valueOf
());
k
.
setUTCMinutes
(
k
.
getUTCMinutes
()
+
(
i
*
this
.
minuteStep
));
return
k
},
moveHour
:
function
(
j
,
i
){
if
(
!
i
){
return
j
}
var
k
=
new
Date
(
j
.
valueOf
());
k
.
setUTCHours
(
k
.
getUTCHours
()
+
i
);
return
k
},
moveDate
:
function
(
j
,
i
){
if
(
!
i
){
return
j
}
var
k
=
new
Date
(
j
.
valueOf
());
k
.
setUTCDate
(
k
.
getUTCDate
()
+
i
);
return
k
},
moveMonth
:
function
(
j
,
k
){
if
(
!
k
){
return
j
}
var
n
=
new
Date
(
j
.
valueOf
()),
r
=
n
.
getUTCDate
(),
o
=
n
.
getUTCMonth
(),
m
=
Math
.
abs
(
k
),
q
,
p
;
k
=
k
>
0
?
1
:
-
1
;
if
(
m
===
1
){
p
=
k
===-
1
?
function
(){
return
n
.
getUTCMonth
()
===
o
}:
function
(){
return
n
.
getUTCMonth
()
!==
q
};
q
=
o
+
k
;
n
.
setUTCMonth
(
q
);
if
(
q
<
0
||
q
>
11
){
q
=
(
q
+
12
)
%
12
}}
else
{
for
(
var
l
=
0
;
l
<
m
;
l
++
){
n
=
this
.
moveMonth
(
n
,
k
)}
q
=
n
.
getUTCMonth
();
n
.
setUTCDate
(
r
);
p
=
function
(){
return
q
!==
n
.
getUTCMonth
()}}
while
(
p
()){
n
.
setUTCDate
(
--
r
);
n
.
setUTCMonth
(
q
)}
return
n
},
moveYear
:
function
(
j
,
i
){
return
this
.
moveMonth
(
j
,
i
*
12
)},
dateWithinRange
:
function
(
i
){
return
i
>=
this
.
startDate
&&
i
<=
this
.
endDate
},
keydown
:
function
(
o
){
if
(
this
.
picker
.
is
(
":not(:visible)"
)){
if
(
o
.
keyCode
===
27
){
this
.
show
()}
return
}
var
k
=
false
,
j
,
i
,
n
;
switch
(
o
.
keyCode
){
case
27
:
this
.
hide
();
o
.
preventDefault
();
break
;
case
37
:
case
39
:
if
(
!
this
.
keyboardNavigation
){
break
}
j
=
o
.
keyCode
===
37
?
-
1
:
1
;
var
m
=
this
.
viewMode
;
if
(
o
.
ctrlKey
){
m
+=
2
}
else
{
if
(
o
.
shiftKey
){
m
+=
1
}}
if
(
m
===
4
){
i
=
this
.
moveYear
(
this
.
date
,
j
);
n
=
this
.
moveYear
(
this
.
viewDate
,
j
)}
else
{
if
(
m
===
3
){
i
=
this
.
moveMonth
(
this
.
date
,
j
);
n
=
this
.
moveMonth
(
this
.
viewDate
,
j
)}
else
{
if
(
m
===
2
){
i
=
this
.
moveDate
(
this
.
date
,
j
);
n
=
this
.
moveDate
(
this
.
viewDate
,
j
)}
else
{
if
(
m
===
1
){
i
=
this
.
moveHour
(
this
.
date
,
j
);
n
=
this
.
moveHour
(
this
.
viewDate
,
j
)}
else
{
if
(
m
===
0
){
i
=
this
.
moveMinute
(
this
.
date
,
j
);
n
=
this
.
moveMinute
(
this
.
viewDate
,
j
)}}}}}
if
(
this
.
dateWithinRange
(
i
)){
this
.
date
=
i
;
this
.
viewDate
=
n
;
this
.
setValue
();
this
.
update
();
o
.
preventDefault
();
k
=
true
}
break
;
case
38
:
case
40
:
if
(
!
this
.
keyboardNavigation
){
break
}
j
=
o
.
keyCode
===
38
?
-
1
:
1
;
m
=
this
.
viewMode
;
if
(
o
.
ctrlKey
){
m
+=
2
}
else
{
if
(
o
.
shiftKey
){
m
+=
1
}}
if
(
m
===
4
){
i
=
this
.
moveYear
(
this
.
date
,
j
);
n
=
this
.
moveYear
(
this
.
viewDate
,
j
)}
else
{
if
(
m
===
3
){
i
=
this
.
moveMonth
(
this
.
date
,
j
);
n
=
this
.
moveMonth
(
this
.
viewDate
,
j
)}
else
{
if
(
m
===
2
){
i
=
this
.
moveDate
(
this
.
date
,
j
*
7
);
n
=
this
.
moveDate
(
this
.
viewDate
,
j
*
7
)}
else
{
if
(
m
===
1
){
if
(
this
.
showMeridian
){
i
=
this
.
moveHour
(
this
.
date
,
j
*
6
);
n
=
this
.
moveHour
(
this
.
viewDate
,
j
*
6
)}
else
{
i
=
this
.
moveHour
(
this
.
date
,
j
*
4
);
n
=
this
.
moveHour
(
this
.
viewDate
,
j
*
4
)}}
else
{
if
(
m
===
0
){
i
=
this
.
moveMinute
(
this
.
date
,
j
*
4
);
n
=
this
.
moveMinute
(
this
.
viewDate
,
j
*
4
)}}}}}
if
(
this
.
dateWithinRange
(
i
)){
this
.
date
=
i
;
this
.
viewDate
=
n
;
this
.
setValue
();
this
.
update
();
o
.
preventDefault
();
k
=
true
}
break
;
case
13
:
if
(
this
.
viewMode
!==
0
){
var
p
=
this
.
viewMode
;
this
.
showMode
(
-
1
);
this
.
fill
();
if
(
p
===
this
.
viewMode
&&
this
.
autoclose
){
this
.
hide
()}}
else
{
this
.
fill
();
if
(
this
.
autoclose
){
this
.
hide
()}}
o
.
preventDefault
();
break
;
case
9
:
this
.
hide
();
break
}
if
(
k
){
var
l
;
if
(
this
.
isInput
){
l
=
this
.
element
}
else
{
if
(
this
.
component
){
l
=
this
.
element
.
find
(
"input"
)}}
if
(
l
){
l
.
change
()}
this
.
element
.
trigger
({
type
:
"changeDate"
,
date
:
this
.
getDate
()})}},
showMode
:
function
(
i
){
if
(
i
){
var
j
=
Math
.
max
(
0
,
Math
.
min
(
c
.
modes
.
length
-
1
,
this
.
viewMode
+
i
));
if
(
j
>=
this
.
minView
&&
j
<=
this
.
maxView
){
this
.
element
.
trigger
({
type
:
"changeMode"
,
date
:
this
.
viewDate
,
oldViewMode
:
this
.
viewMode
,
newViewMode
:
j
});
this
.
viewMode
=
j
}}
this
.
picker
.
find
(
">div"
).
hide
().
filter
(
".datetimepicker-"
+
c
.
modes
[
this
.
viewMode
].
clsName
).
css
(
"display"
,
"block"
);
this
.
updateNavArrows
()},
reset
:
function
(){
this
.
_setDate
(
null
,
"date"
)},
convertViewModeText
:
function
(
i
){
switch
(
i
){
case
4
:
return
"decade"
;
case
3
:
return
"year"
;
case
2
:
return
"month"
;
case
1
:
return
"day"
;
case
0
:
return
"hour"
}}};
var
b
=
d
.
fn
.
datetimepicker
;
d
.
fn
.
datetimepicker
=
function
(
k
){
var
i
=
Array
.
apply
(
null
,
arguments
);
i
.
shift
();
var
j
;
this
.
each
(
function
(){
var
n
=
d
(
this
),
m
=
n
.
data
(
"datetimepicker"
),
l
=
typeof
k
===
"object"
&&
k
;
if
(
!
m
){
n
.
data
(
"datetimepicker"
,(
m
=
new
g
(
this
,
d
.
extend
({},
d
.
fn
.
datetimepicker
.
defaults
,
l
))))}
if
(
typeof
k
===
"string"
&&
typeof
m
[
k
]
===
"function"
){
j
=
m
[
k
].
apply
(
m
,
i
);
if
(
j
!==
f
){
return
false
}}});
if
(
j
!==
f
){
return
j
}
else
{
return
this
}};
d
.
fn
.
datetimepicker
.
defaults
=
{};
d
.
fn
.
datetimepicker
.
Constructor
=
g
;
var
e
=
d
.
fn
.
datetimepicker
.
dates
=
{
en
:{
days
:[
"Sunday"
,
"Monday"
,
"Tuesday"
,
"Wednesday"
,
"Thursday"
,
"Friday"
,
"Saturday"
,
"Sunday"
],
daysShort
:[
"Sun"
,
"Mon"
,
"Tue"
,
"Wed"
,
"Thu"
,
"Fri"
,
"Sat"
,
"Sun"
],
daysMin
:[
"Su"
,
"Mo"
,
"Tu"
,
"We"
,
"Th"
,
"Fr"
,
"Sa"
,
"Su"
],
months
:[
"January"
,
"February"
,
"March"
,
"April"
,
"May"
,
"June"
,
"July"
,
"August"
,
"September"
,
"October"
,
"November"
,
"December"
],
monthsShort
:[
"Jan"
,
"Feb"
,
"Mar"
,
"Apr"
,
"May"
,
"Jun"
,
"Jul"
,
"Aug"
,
"Sep"
,
"Oct"
,
"Nov"
,
"Dec"
],
meridiem
:[
"am"
,
"pm"
],
suffix
:[
"st"
,
"nd"
,
"rd"
,
"th"
],
today
:
"Today"
,
clear
:
"Clear"
}};
var
c
=
{
modes
:[{
clsName
:
"minutes"
,
navFnc
:
"Hours"
,
navStep
:
1
},{
clsName
:
"hours"
,
navFnc
:
"Date"
,
navStep
:
1
},{
clsName
:
"days"
,
navFnc
:
"Month"
,
navStep
:
1
},{
clsName
:
"months"
,
navFnc
:
"FullYear"
,
navStep
:
1
},{
clsName
:
"years"
,
navFnc
:
"FullYear"
,
navStep
:
10
}],
isLeapYear
:
function
(
i
){
return
(((
i
%
4
===
0
)
&&
(
i
%
100
!==
0
))
||
(
i
%
400
===
0
))},
getDaysInMonth
:
function
(
i
,
j
){
return
[
31
,(
c
.
isLeapYear
(
i
)?
29
:
28
),
31
,
30
,
31
,
30
,
31
,
31
,
30
,
31
,
30
,
31
][
j
]},
getDefaultFormat
:
function
(
i
,
j
){
if
(
i
===
"standard"
){
if
(
j
===
"input"
){
return
"yyyy-mm-dd hh:ii"
}
else
{
return
"yyyy-mm-dd hh:ii:ss"
}}
else
{
if
(
i
===
"php"
){
if
(
j
===
"input"
){
return
"Y-m-d H:i"
}
else
{
return
"Y-m-d H:i:s"
}}
else
{
throw
new
Error
(
"Invalid format type."
)}}},
validParts
:
function
(
i
){
if
(
i
===
"standard"
){
return
/t|hh
?
|HH
?
|p|P|z|Z|ii
?
|ss
?
|dd
?
|DD
?
|mm
?
|MM
?
|yy
(?:
yy
)?
/g
}
else
{
if
(
i
===
"php"
){
return
/
[
dDjlNwzFmMnStyYaABgGhHis
]
/g
}
else
{
throw
new
Error
(
"Invalid format type."
)}}},
nonpunctuation
:
/
[^
-
\/
:-@
\[
-`{-~
\t\n\r
TZ
]
+/g
,
parseFormat
:
function
(
l
,
j
){
var
i
=
l
.
replace
(
this
.
validParts
(
j
),
"
\
0"
).
split
(
"
\
0"
),
k
=
l
.
match
(
this
.
validParts
(
j
));
if
(
!
i
||!
i
.
length
||!
k
||
k
.
length
===
0
){
throw
new
Error
(
"Invalid date format."
)}
return
{
separators
:
i
,
parts
:
k
}},
parseDate
:
function
(
A
,
y
,
v
,
j
,
r
){
if
(
A
instanceof
Date
){
var
u
=
new
Date
(
A
.
valueOf
()
-
A
.
getTimezoneOffset
()
*
60000
);
u
.
setMilliseconds
(
0
);
return
u
}
if
(
/^
\d{4}\-\d{1,2}\-\d{1,2}
$/
.
test
(
A
)){
y
=
this
.
parseFormat
(
"yyyy-mm-dd"
,
j
)}
if
(
/^
\d{4}\-\d{1,2}\-\d{1,2}[
T
]\d{1,2}\:\d{1,2}
$/
.
test
(
A
)){
y
=
this
.
parseFormat
(
"yyyy-mm-dd hh:ii"
,
j
)}
if
(
/^
\d{4}\-\d{1,2}\-\d{1,2}[
T
]\d{1,2}\:\d{1,2}\:\d{1,2}[
Z
]{0,1}
$/
.
test
(
A
)){
y
=
this
.
parseFormat
(
"yyyy-mm-dd hh:ii:ss"
,
j
)}
if
(
/^
[
-+
]\d
+
[
dmwy
]([\s
,
]
+
[
-+
]\d
+
[
dmwy
])
*$/
.
test
(
A
)){
var
l
=
/
([
-+
]\d
+
)([
dmwy
])
/
,
q
=
A
.
match
(
/
([
-+
]\d
+
)([
dmwy
])
/g
),
t
,
p
;
A
=
new
Date
();
for
(
var
x
=
0
;
x
<
q
.
length
;
x
++
){
t
=
l
.
exec
(
q
[
x
]);
p
=
parseInt
(
t
[
1
]);
switch
(
t
[
2
]){
case
"d"
:
A
.
setUTCDate
(
A
.
getUTCDate
()
+
p
);
break
;
case
"m"
:
A
=
g
.
prototype
.
moveMonth
.
call
(
g
.
prototype
,
A
,
p
);
break
;
case
"w"
:
A
.
setUTCDate
(
A
.
getUTCDate
()
+
p
*
7
);
break
;
case
"y"
:
A
=
g
.
prototype
.
moveYear
.
call
(
g
.
prototype
,
A
,
p
);
break
}}
return
h
(
A
.
getUTCFullYear
(),
A
.
getUTCMonth
(),
A
.
getUTCDate
(),
A
.
getUTCHours
(),
A
.
getUTCMinutes
(),
A
.
getUTCSeconds
(),
0
)}
var
q
=
A
&&
A
.
toString
().
match
(
this
.
nonpunctuation
)
||
[],
A
=
new
Date
(
0
,
0
,
0
,
0
,
0
,
0
,
0
),
m
=
{},
z
=
[
"hh"
,
"h"
,
"ii"
,
"i"
,
"ss"
,
"s"
,
"yyyy"
,
"yy"
,
"M"
,
"MM"
,
"m"
,
"mm"
,
"D"
,
"DD"
,
"d"
,
"dd"
,
"H"
,
"HH"
,
"p"
,
"P"
,
"z"
,
"Z"
],
o
=
{
hh
:
function
(
s
,
i
){
return
s
.
setUTCHours
(
i
)},
h
:
function
(
s
,
i
){
return
s
.
setUTCHours
(
i
)},
HH
:
function
(
s
,
i
){
return
s
.
setUTCHours
(
i
===
12
?
0
:
i
)},
H
:
function
(
s
,
i
){
return
s
.
setUTCHours
(
i
===
12
?
0
:
i
)},
ii
:
function
(
s
,
i
){
return
s
.
setUTCMinutes
(
i
)},
i
:
function
(
s
,
i
){
return
s
.
setUTCMinutes
(
i
)},
ss
:
function
(
s
,
i
){
return
s
.
setUTCSeconds
(
i
)},
s
:
function
(
s
,
i
){
return
s
.
setUTCSeconds
(
i
)},
yyyy
:
function
(
s
,
i
){
return
s
.
setUTCFullYear
(
i
)},
yy
:
function
(
s
,
i
){
return
s
.
setUTCFullYear
(
2000
+
i
)},
m
:
function
(
s
,
i
){
i
-=
1
;
while
(
i
<
0
){
i
+=
12
}
i
%=
12
;
s
.
setUTCMonth
(
i
);
while
(
s
.
getUTCMonth
()
!==
i
){
if
(
isNaN
(
s
.
getUTCMonth
())){
return
s
}
else
{
s
.
setUTCDate
(
s
.
getUTCDate
()
-
1
)}}
return
s
},
d
:
function
(
s
,
i
){
return
s
.
setUTCDate
(
i
)},
p
:
function
(
s
,
i
){
return
s
.
setUTCHours
(
i
===
1
?
s
.
getUTCHours
()
+
12
:
s
.
getUTCHours
())},
z
:
function
(){
return
r
}},
B
,
k
,
t
;
o
.
M
=
o
.
MM
=
o
.
mm
=
o
.
m
;
o
.
dd
=
o
.
d
;
o
.
P
=
o
.
p
;
o
.
Z
=
o
.
z
;
A
=
h
(
A
.
getFullYear
(),
A
.
getMonth
(),
A
.
getDate
(),
A
.
getHours
(),
A
.
getMinutes
(),
A
.
getSeconds
());
if
(
q
.
length
===
y
.
parts
.
length
){
for
(
var
x
=
0
,
w
=
y
.
parts
.
length
;
x
<
w
;
x
++
){
B
=
parseInt
(
q
[
x
],
10
);
t
=
y
.
parts
[
x
];
if
(
isNaN
(
B
)){
switch
(
t
){
case
"MM"
:
k
=
d
(
e
[
v
].
months
).
filter
(
function
(){
var
i
=
this
.
slice
(
0
,
q
[
x
].
length
),
s
=
q
[
x
].
slice
(
0
,
i
.
length
);
return
i
===
s
});
B
=
d
.
inArray
(
k
[
0
],
e
[
v
].
months
)
+
1
;
break
;
case
"M"
:
k
=
d
(
e
[
v
].
monthsShort
).
filter
(
function
(){
var
i
=
this
.
slice
(
0
,
q
[
x
].
length
),
s
=
q
[
x
].
slice
(
0
,
i
.
length
);
return
i
.
toLowerCase
()
===
s
.
toLowerCase
()});
B
=
d
.
inArray
(
k
[
0
],
e
[
v
].
monthsShort
)
+
1
;
break
;
case
"p"
:
case
"P"
:
B
=
d
.
inArray
(
q
[
x
].
toLowerCase
(),
e
[
v
].
meridiem
);
break
;
case
"z"
:
case
"Z"
:
r
;
break
}}
m
[
t
]
=
B
}
for
(
var
x
=
0
,
n
;
x
<
z
.
length
;
x
++
){
n
=
z
[
x
];
if
(
n
in
m
&&!
isNaN
(
m
[
n
])){
o
[
n
](
A
,
m
[
n
])}}}
return
A
},
formatDate
:
function
(
l
,
q
,
m
,
p
,
o
){
if
(
l
===
null
){
return
""
}
var
k
;
if
(
p
===
"standard"
){
k
=
{
t
:
l
.
getTime
(),
yy
:
l
.
getUTCFullYear
().
toString
().
substring
(
2
),
yyyy
:
l
.
getUTCFullYear
(),
m
:
l
.
getUTCMonth
()
+
1
,
M
:
e
[
m
].
monthsShort
[
l
.
getUTCMonth
()],
MM
:
e
[
m
].
months
[
l
.
getUTCMonth
()],
d
:
l
.
getUTCDate
(),
D
:
e
[
m
].
daysShort
[
l
.
getUTCDay
()],
DD
:
e
[
m
].
days
[
l
.
getUTCDay
()],
p
:(
e
[
m
].
meridiem
.
length
===
2
?
e
[
m
].
meridiem
[
l
.
getUTCHours
()
<
12
?
0
:
1
]:
""
),
h
:
l
.
getUTCHours
(),
i
:
l
.
getUTCMinutes
(),
s
:
l
.
getUTCSeconds
(),
z
:
o
};
if
(
e
[
m
].
meridiem
.
length
===
2
){
k
.
H
=
(
k
.
h
%
12
===
0
?
12
:
k
.
h
%
12
)}
else
{
k
.
H
=
k
.
h
}
k
.
HH
=
(
k
.
H
<
10
?
"0"
:
""
)
+
k
.
H
;
k
.
P
=
k
.
p
.
toUpperCase
();
k
.
Z
=
k
.
z
;
k
.
hh
=
(
k
.
h
<
10
?
"0"
:
""
)
+
k
.
h
;
k
.
ii
=
(
k
.
i
<
10
?
"0"
:
""
)
+
k
.
i
;
k
.
ss
=
(
k
.
s
<
10
?
"0"
:
""
)
+
k
.
s
;
k
.
dd
=
(
k
.
d
<
10
?
"0"
:
""
)
+
k
.
d
;
k
.
mm
=
(
k
.
m
<
10
?
"0"
:
""
)
+
k
.
m
}
else
{
if
(
p
===
"php"
){
k
=
{
y
:
l
.
getUTCFullYear
().
toString
().
substring
(
2
),
Y
:
l
.
getUTCFullYear
(),
F
:
e
[
m
].
months
[
l
.
getUTCMonth
()],
M
:
e
[
m
].
monthsShort
[
l
.
getUTCMonth
()],
n
:
l
.
getUTCMonth
()
+
1
,
t
:
c
.
getDaysInMonth
(
l
.
getUTCFullYear
(),
l
.
getUTCMonth
()),
j
:
l
.
getUTCDate
(),
l
:
e
[
m
].
days
[
l
.
getUTCDay
()],
D
:
e
[
m
].
daysShort
[
l
.
getUTCDay
()],
w
:
l
.
getUTCDay
(),
N
:(
l
.
getUTCDay
()
===
0
?
7
:
l
.
getUTCDay
()),
S
:(
l
.
getUTCDate
()
%
10
<=
e
[
m
].
suffix
.
length
?
e
[
m
].
suffix
[
l
.
getUTCDate
()
%
10
-
1
]:
""
),
a
:(
e
[
m
].
meridiem
.
length
===
2
?
e
[
m
].
meridiem
[
l
.
getUTCHours
()
<
12
?
0
:
1
]:
""
),
g
:(
l
.
getUTCHours
()
%
12
===
0
?
12
:
l
.
getUTCHours
()
%
12
),
G
:
l
.
getUTCHours
(),
i
:
l
.
getUTCMinutes
(),
s
:
l
.
getUTCSeconds
()};
k
.
m
=
(
k
.
n
<
10
?
"0"
:
""
)
+
k
.
n
;
k
.
d
=
(
k
.
j
<
10
?
"0"
:
""
)
+
k
.
j
;
k
.
A
=
k
.
a
.
toString
().
toUpperCase
();
k
.
h
=
(
k
.
g
<
10
?
"0"
:
""
)
+
k
.
g
;
k
.
H
=
(
k
.
G
<
10
?
"0"
:
""
)
+
k
.
G
;
k
.
i
=
(
k
.
i
<
10
?
"0"
:
""
)
+
k
.
i
;
k
.
s
=
(
k
.
s
<
10
?
"0"
:
""
)
+
k
.
s
}
else
{
throw
new
Error
(
"Invalid format type."
)}}
var
l
=
[],
r
=
d
.
extend
([],
q
.
separators
);
for
(
var
n
=
0
,
j
=
q
.
parts
.
length
;
n
<
j
;
n
++
){
if
(
r
.
length
){
l
.
push
(
r
.
shift
())}
l
.
push
(
k
[
q
.
parts
[
n
]])}
if
(
r
.
length
){
l
.
push
(
r
.
shift
())}
return
l
.
join
(
""
)},
convertViewMode
:
function
(
i
){
switch
(
i
){
case
4
:
case
"decade"
:
i
=
4
;
break
;
case
3
:
case
"year"
:
i
=
3
;
break
;
case
2
:
case
"month"
:
i
=
2
;
break
;
case
1
:
case
"day"
:
i
=
1
;
break
;
case
0
:
case
"hour"
:
i
=
0
;
break
}
return
i
},
headTemplate
:
'<thead><tr><th class="prev"><i class="{iconType} {leftArrow}"/></th><th colspan="5" class="switch"></th><th class="next"><i class="{iconType} {rightArrow}"/></th></tr></thead>'
,
headTemplateV3
:
'<thead><tr><th class="prev"><span class="{iconType} {leftArrow}"></span> </th><th colspan="5" class="switch"></th><th class="next"><span class="{iconType} {rightArrow}"></span> </th></tr></thead>'
,
contTemplate
:
'<tbody><tr><td colspan="7"></td></tr></tbody>'
,
footTemplate
:
'<tfoot><tr><th colspan="7" class="today"></th></tr><tr><th colspan="7" class="clear"></th></tr></tfoot>'
};
c
.
template
=
'<div class="datetimepicker"><div class="datetimepicker-minutes"><table class=" table-condensed">'
+
c
.
headTemplate
+
c
.
contTemplate
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-hours"><table class=" table-condensed">'
+
c
.
headTemplate
+
c
.
contTemplate
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-days"><table class=" table-condensed">'
+
c
.
headTemplate
+
"<tbody></tbody>"
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-months"><table class="table-condensed">'
+
c
.
headTemplate
+
c
.
contTemplate
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-years"><table class="table-condensed">'
+
c
.
headTemplate
+
c
.
contTemplate
+
c
.
footTemplate
+
"</table></div></div>"
;
c
.
templateV3
=
'<div class="datetimepicker"><div class="datetimepicker-minutes"><table class=" table-condensed">'
+
c
.
headTemplateV3
+
c
.
contTemplate
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-hours"><table class=" table-condensed">'
+
c
.
headTemplateV3
+
c
.
contTemplate
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-days"><table class=" table-condensed">'
+
c
.
headTemplateV3
+
"<tbody></tbody>"
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-months"><table class="table-condensed">'
+
c
.
headTemplateV3
+
c
.
contTemplate
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-years"><table class="table-condensed">'
+
c
.
headTemplateV3
+
c
.
contTemplate
+
c
.
footTemplate
+
"</table></div></div>"
;
d
.
fn
.
datetimepicker
.
DPGlobal
=
c
;
d
.
fn
.
datetimepicker
.
noConflict
=
function
(){
d
.
fn
.
datetimepicker
=
b
;
return
this
};
d
(
document
).
on
(
"focus.datetimepicker.data-api click.datetimepicker.data-api"
,
'[data-provide="datetimepicker"]'
,
function
(
j
){
var
i
=
d
(
this
);
if
(
i
.
data
(
"datetimepicker"
)){
return
}
j
.
preventDefault
();
i
.
datetimepicker
(
"show"
)});
d
(
function
(){
d
(
'[data-provide="datetimepicker-inline"]'
).
datetimepicker
()})}));
(
function
(
a
){
if
(
typeof
define
===
"function"
&&
define
.
amd
){
define
([
"jquery"
],
a
)}
else
{
if
(
typeof
exports
===
"object"
){
a
(
require
(
"jquery"
))}
else
{
a
(
jQuery
)}}}(
function
(
d
,
f
){
if
(
!
(
"indexOf"
in
Array
.
prototype
)){
Array
.
prototype
.
indexOf
=
function
(
k
,
j
){
if
(
j
===
f
){
j
=
0
}
if
(
j
<
0
){
j
+=
this
.
length
}
if
(
j
<
0
){
j
=
0
}
for
(
var
l
=
this
.
length
;
j
<
l
;
j
++
){
if
(
j
in
this
&&
this
[
j
]
===
k
){
return
j
}}
return
-
1
}}
function
a
(){
var
q
,
k
,
p
,
l
,
j
,
n
,
m
,
o
;
k
=
(
new
Date
()).
toString
();
p
=
((
m
=
k
.
split
(
"("
)[
1
])
!=
null
?
m
.
slice
(
0
,
-
1
):
0
)
||
k
.
split
(
" "
);
if
(
p
instanceof
Array
){
n
=
[];
for
(
var
l
=
0
,
j
=
p
.
length
;
l
<
j
;
l
++
){
o
=
p
[
l
];
if
((
q
=
(
m
=
o
.
match
(
/
\b[
A-Z
]
+
\b
/
))
!==
null
)?
m
[
0
]:
0
){
n
.
push
(
q
)}}
p
=
n
.
pop
()}
return
p
}
function
h
(){
return
new
Date
(
Date
.
UTC
.
apply
(
Date
,
arguments
))}
var
g
=
function
(
k
,
j
){
var
m
=
this
;
this
.
element
=
d
(
k
);
this
.
container
=
j
.
container
||
"body"
;
this
.
language
=
j
.
language
||
this
.
element
.
data
(
"date-language"
)
||
"en"
;
this
.
language
=
this
.
language
in
e
?
this
.
language
:
this
.
language
.
split
(
"-"
)[
0
];
this
.
language
=
this
.
language
in
e
?
this
.
language
:
"en"
;
this
.
isRTL
=
e
[
this
.
language
].
rtl
||
false
;
this
.
formatType
=
j
.
formatType
||
this
.
element
.
data
(
"format-type"
)
||
"standard"
;
this
.
format
=
c
.
parseFormat
(
j
.
format
||
this
.
element
.
data
(
"date-format"
)
||
e
[
this
.
language
].
format
||
c
.
getDefaultFormat
(
this
.
formatType
,
"input"
),
this
.
formatType
);
this
.
isInline
=
false
;
this
.
isVisible
=
false
;
this
.
isInput
=
this
.
element
.
is
(
"input"
);
this
.
fontAwesome
=
j
.
fontAwesome
||
this
.
element
.
data
(
"font-awesome"
)
||
false
;
this
.
bootcssVer
=
j
.
bootcssVer
||
(
this
.
isInput
?(
this
.
element
.
is
(
".form-control"
)?
3
:
2
):(
this
.
bootcssVer
=
this
.
element
.
is
(
".input-group"
)?
3
:
2
));
this
.
component
=
this
.
element
.
is
(
".date"
)?(
this
.
bootcssVer
===
3
?
this
.
element
.
find
(
".input-group-addon .glyphicon-th, .input-group-addon .glyphicon-time, .input-group-addon .glyphicon-remove, .input-group-addon .glyphicon-calendar, .input-group-addon .fa-calendar, .input-group-addon .fa-clock-o"
).
parent
():
this
.
element
.
find
(
".add-on .icon-th, .add-on .icon-time, .add-on .icon-calendar, .add-on .fa-calendar, .add-on .fa-clock-o"
).
parent
()):
false
;
this
.
componentReset
=
this
.
element
.
is
(
".date"
)?(
this
.
bootcssVer
===
3
?
this
.
element
.
find
(
".input-group-addon .glyphicon-remove, .input-group-addon .fa-times"
).
parent
():
this
.
element
.
find
(
".add-on .icon-remove, .add-on .fa-times"
).
parent
()):
false
;
this
.
hasInput
=
this
.
component
&&
this
.
element
.
find
(
"input"
).
length
;
if
(
this
.
component
&&
this
.
component
.
length
===
0
){
this
.
component
=
false
}
this
.
linkField
=
j
.
linkField
||
this
.
element
.
data
(
"link-field"
)
||
false
;
this
.
linkFormat
=
c
.
parseFormat
(
j
.
linkFormat
||
this
.
element
.
data
(
"link-format"
)
||
c
.
getDefaultFormat
(
this
.
formatType
,
"link"
),
this
.
formatType
);
this
.
minuteStep
=
j
.
minuteStep
||
this
.
element
.
data
(
"minute-step"
)
||
5
;
this
.
pickerPosition
=
j
.
pickerPosition
||
this
.
element
.
data
(
"picker-position"
)
||
"bottom-right"
;
this
.
showMeridian
=
j
.
showMeridian
||
this
.
element
.
data
(
"show-meridian"
)
||
false
;
this
.
initialDate
=
j
.
initialDate
||
new
Date
();
this
.
zIndex
=
j
.
zIndex
||
this
.
element
.
data
(
"z-index"
)
||
f
;
this
.
title
=
typeof
j
.
title
===
"undefined"
?
false
:
j
.
title
;
this
.
timezone
=
j
.
timezone
||
a
();
this
.
icons
=
{
leftArrow
:
this
.
fontAwesome
?
"fa-arrow-left"
:(
this
.
bootcssVer
===
3
?
"glyphicon-arrow-left"
:
"icon-arrow-left"
),
rightArrow
:
this
.
fontAwesome
?
"fa-arrow-right"
:(
this
.
bootcssVer
===
3
?
"glyphicon-arrow-right"
:
"icon-arrow-right"
)};
this
.
icontype
=
this
.
fontAwesome
?
"fa"
:
"glyphicon"
;
this
.
_attachEvents
();
this
.
clickedOutside
=
function
(
n
){
if
(
d
(
n
.
target
).
closest
(
".datetimepicker"
).
length
===
0
){
m
.
hide
()}};
this
.
formatViewType
=
"datetime"
;
if
(
"formatViewType"
in
j
){
this
.
formatViewType
=
j
.
formatViewType
}
else
{
if
(
"formatViewType"
in
this
.
element
.
data
()){
this
.
formatViewType
=
this
.
element
.
data
(
"formatViewType"
)}}
this
.
minView
=
0
;
if
(
"minView"
in
j
){
this
.
minView
=
j
.
minView
}
else
{
if
(
"minView"
in
this
.
element
.
data
()){
this
.
minView
=
this
.
element
.
data
(
"min-view"
)}}
this
.
minView
=
c
.
convertViewMode
(
this
.
minView
);
this
.
maxView
=
c
.
modes
.
length
-
1
;
if
(
"maxView"
in
j
){
this
.
maxView
=
j
.
maxView
}
else
{
if
(
"maxView"
in
this
.
element
.
data
()){
this
.
maxView
=
this
.
element
.
data
(
"max-view"
)}}
this
.
maxView
=
c
.
convertViewMode
(
this
.
maxView
);
this
.
wheelViewModeNavigation
=
false
;
if
(
"wheelViewModeNavigation"
in
j
){
this
.
wheelViewModeNavigation
=
j
.
wheelViewModeNavigation
}
else
{
if
(
"wheelViewModeNavigation"
in
this
.
element
.
data
()){
this
.
wheelViewModeNavigation
=
this
.
element
.
data
(
"view-mode-wheel-navigation"
)}}
this
.
wheelViewModeNavigationInverseDirection
=
false
;
if
(
"wheelViewModeNavigationInverseDirection"
in
j
){
this
.
wheelViewModeNavigationInverseDirection
=
j
.
wheelViewModeNavigationInverseDirection
}
else
{
if
(
"wheelViewModeNavigationInverseDirection"
in
this
.
element
.
data
()){
this
.
wheelViewModeNavigationInverseDirection
=
this
.
element
.
data
(
"view-mode-wheel-navigation-inverse-dir"
)}}
this
.
wheelViewModeNavigationDelay
=
100
;
if
(
"wheelViewModeNavigationDelay"
in
j
){
this
.
wheelViewModeNavigationDelay
=
j
.
wheelViewModeNavigationDelay
}
else
{
if
(
"wheelViewModeNavigationDelay"
in
this
.
element
.
data
()){
this
.
wheelViewModeNavigationDelay
=
this
.
element
.
data
(
"view-mode-wheel-navigation-delay"
)}}
this
.
startViewMode
=
2
;
if
(
"startView"
in
j
){
this
.
startViewMode
=
j
.
startView
}
else
{
if
(
"startView"
in
this
.
element
.
data
()){
this
.
startViewMode
=
this
.
element
.
data
(
"start-view"
)}}
this
.
startViewMode
=
c
.
convertViewMode
(
this
.
startViewMode
);
this
.
viewMode
=
this
.
startViewMode
;
this
.
viewSelect
=
this
.
minView
;
if
(
"viewSelect"
in
j
){
this
.
viewSelect
=
j
.
viewSelect
}
else
{
if
(
"viewSelect"
in
this
.
element
.
data
()){
this
.
viewSelect
=
this
.
element
.
data
(
"view-select"
)}}
this
.
viewSelect
=
c
.
convertViewMode
(
this
.
viewSelect
);
this
.
forceParse
=
true
;
if
(
"forceParse"
in
j
){
this
.
forceParse
=
j
.
forceParse
}
else
{
if
(
"dateForceParse"
in
this
.
element
.
data
()){
this
.
forceParse
=
this
.
element
.
data
(
"date-force-parse"
)}}
var
l
=
this
.
bootcssVer
===
3
?
c
.
templateV3
:
c
.
template
;
while
(
l
.
indexOf
(
"{iconType}"
)
!==-
1
){
l
=
l
.
replace
(
"{iconType}"
,
this
.
icontype
)}
while
(
l
.
indexOf
(
"{leftArrow}"
)
!==-
1
){
l
=
l
.
replace
(
"{leftArrow}"
,
this
.
icons
.
leftArrow
)}
while
(
l
.
indexOf
(
"{rightArrow}"
)
!==-
1
){
l
=
l
.
replace
(
"{rightArrow}"
,
this
.
icons
.
rightArrow
)}
this
.
picker
=
d
(
l
).
appendTo
(
this
.
isInline
?
this
.
element
:
this
.
container
).
on
({
click
:
d
.
proxy
(
this
.
click
,
this
),
mousedown
:
d
.
proxy
(
this
.
mousedown
,
this
)});
if
(
this
.
wheelViewModeNavigation
){
if
(
d
.
fn
.
mousewheel
){
this
.
picker
.
on
({
mousewheel
:
d
.
proxy
(
this
.
mousewheel
,
this
)})}
else
{
console
.
log
(
"Mouse Wheel event is not supported. Please include the jQuery Mouse Wheel plugin before enabling this option"
)}}
if
(
this
.
isInline
){
this
.
picker
.
addClass
(
"datetimepicker-inline"
)}
else
{
this
.
picker
.
addClass
(
"datetimepicker-dropdown-"
+
this
.
pickerPosition
+
" dropdown-menu"
)}
if
(
this
.
isRTL
){
this
.
picker
.
addClass
(
"datetimepicker-rtl"
);
var
i
=
this
.
bootcssVer
===
3
?
".prev span, .next span"
:
".prev i, .next i"
;
this
.
picker
.
find
(
i
).
toggleClass
(
this
.
icons
.
leftArrow
+
" "
+
this
.
icons
.
rightArrow
)}
d
(
document
).
on
(
"mousedown touchend"
,
this
.
clickedOutside
);
this
.
autoclose
=
false
;
if
(
"autoclose"
in
j
){
this
.
autoclose
=
j
.
autoclose
}
else
{
if
(
"dateAutoclose"
in
this
.
element
.
data
()){
this
.
autoclose
=
this
.
element
.
data
(
"date-autoclose"
)}}
this
.
keyboardNavigation
=
true
;
if
(
"keyboardNavigation"
in
j
){
this
.
keyboardNavigation
=
j
.
keyboardNavigation
}
else
{
if
(
"dateKeyboardNavigation"
in
this
.
element
.
data
()){
this
.
keyboardNavigation
=
this
.
element
.
data
(
"date-keyboard-navigation"
)}}
this
.
todayBtn
=
(
j
.
todayBtn
||
this
.
element
.
data
(
"date-today-btn"
)
||
false
);
this
.
clearBtn
=
(
j
.
clearBtn
||
this
.
element
.
data
(
"date-clear-btn"
)
||
false
);
this
.
todayHighlight
=
(
j
.
todayHighlight
||
this
.
element
.
data
(
"date-today-highlight"
)
||
false
);
this
.
weekStart
=
0
;
if
(
typeof
j
.
weekStart
!==
"undefined"
){
this
.
weekStart
=
j
.
weekStart
}
else
{
if
(
typeof
this
.
element
.
data
(
"date-weekstart"
)
!==
"undefined"
){
this
.
weekStart
=
this
.
element
.
data
(
"date-weekstart"
)}
else
{
if
(
typeof
e
[
this
.
language
].
weekStart
!==
"undefined"
){
this
.
weekStart
=
e
[
this
.
language
].
weekStart
}}}
this
.
weekStart
=
this
.
weekStart
%
7
;
this
.
weekEnd
=
((
this
.
weekStart
+
6
)
%
7
);
this
.
onRenderDay
=
function
(
n
){
var
p
=
(
j
.
onRenderDay
||
function
(){
return
[]})(
n
);
if
(
typeof
p
===
"string"
){
p
=
[
p
]}
var
o
=
[
"day"
];
return
o
.
concat
((
p
?
p
:[]))};
this
.
onRenderHour
=
function
(
n
){
var
p
=
(
j
.
onRenderHour
||
function
(){
return
[]})(
n
);
var
o
=
[
"hour"
];
if
(
typeof
p
===
"string"
){
p
=
[
p
]}
return
o
.
concat
((
p
?
p
:[]))};
this
.
onRenderMinute
=
function
(
n
){
var
p
=
(
j
.
onRenderMinute
||
function
(){
return
[]})(
n
);
var
o
=
[
"minute"
];
if
(
typeof
p
===
"string"
){
p
=
[
p
]}
if
(
n
<
this
.
startDate
||
n
>
this
.
endDate
){
o
.
push
(
"disabled"
)}
else
{
if
(
Math
.
floor
(
this
.
date
.
getUTCMinutes
()
/
this
.
minuteStep
)
===
Math
.
floor
(
n
.
getUTCMinutes
()
/
this
.
minuteStep
)){
o
.
push
(
"active"
)}}
return
o
.
concat
((
p
?
p
:[]))};
this
.
onRenderYear
=
function
(
o
){
var
q
=
(
j
.
onRenderYear
||
function
(){
return
[]})(
o
);
var
p
=
[
"year"
];
if
(
typeof
q
===
"string"
){
q
=
[
q
]}
if
(
this
.
date
.
getUTCFullYear
()
===
o
.
getUTCFullYear
()){
p
.
push
(
"active"
)}
var
n
=
o
.
getUTCFullYear
();
var
r
=
this
.
endDate
.
getUTCFullYear
();
if
(
o
<
this
.
startDate
||
n
>
r
){
p
.
push
(
"disabled"
)}
return
p
.
concat
((
q
?
q
:[]))};
this
.
onRenderMonth
=
function
(
n
){
var
p
=
(
j
.
onRenderMonth
||
function
(){
return
[]})(
n
);
var
o
=
[
"month"
];
if
(
typeof
p
===
"string"
){
p
=
[
p
]}
return
o
.
concat
((
p
?
p
:[]))};
this
.
startDate
=
new
Date
(
-
8639968443048000
);
this
.
endDate
=
new
Date
(
8639968443048000
);
this
.
datesDisabled
=
[];
this
.
daysOfWeekDisabled
=
[];
this
.
setStartDate
(
j
.
startDate
||
this
.
element
.
data
(
"date-startdate"
));
this
.
setEndDate
(
j
.
endDate
||
this
.
element
.
data
(
"date-enddate"
));
this
.
setDatesDisabled
(
j
.
datesDisabled
||
this
.
element
.
data
(
"date-dates-disabled"
));
this
.
setDaysOfWeekDisabled
(
j
.
daysOfWeekDisabled
||
this
.
element
.
data
(
"date-days-of-week-disabled"
));
this
.
setMinutesDisabled
(
j
.
minutesDisabled
||
this
.
element
.
data
(
"date-minute-disabled"
));
this
.
setHoursDisabled
(
j
.
hoursDisabled
||
this
.
element
.
data
(
"date-hour-disabled"
));
this
.
fillDow
();
this
.
fillMonths
();
this
.
update
();
this
.
showMode
();
if
(
this
.
isInline
){
this
.
show
()}};
g
.
prototype
=
{
constructor
:
g
,
_events
:[],
_attachEvents
:
function
(){
this
.
_detachEvents
();
if
(
this
.
isInput
){
this
.
_events
=
[[
this
.
element
,{
focus
:
d
.
proxy
(
this
.
show
,
this
),
keyup
:
d
.
proxy
(
this
.
update
,
this
),
keydown
:
d
.
proxy
(
this
.
keydown
,
this
)}]]}
else
{
if
(
this
.
component
&&
this
.
hasInput
){
this
.
_events
=
[[
this
.
element
.
find
(
"input"
),{
focus
:
d
.
proxy
(
this
.
show
,
this
),
keyup
:
d
.
proxy
(
this
.
update
,
this
),
keydown
:
d
.
proxy
(
this
.
keydown
,
this
)}],[
this
.
component
,{
click
:
d
.
proxy
(
this
.
show
,
this
)}]];
if
(
this
.
componentReset
){
this
.
_events
.
push
([
this
.
componentReset
,{
click
:
d
.
proxy
(
this
.
reset
,
this
)}])}}
else
{
if
(
this
.
element
.
is
(
"div"
)){
this
.
isInline
=
true
}
else
{
this
.
_events
=
[[
this
.
element
,{
click
:
d
.
proxy
(
this
.
show
,
this
)}]]}}}
for
(
var
j
=
0
,
k
,
l
;
j
<
this
.
_events
.
length
;
j
++
){
k
=
this
.
_events
[
j
][
0
];
l
=
this
.
_events
[
j
][
1
];
k
.
on
(
l
)}},
_detachEvents
:
function
(){
for
(
var
j
=
0
,
k
,
l
;
j
<
this
.
_events
.
length
;
j
++
){
k
=
this
.
_events
[
j
][
0
];
l
=
this
.
_events
[
j
][
1
];
k
.
off
(
l
)}
this
.
_events
=
[]},
show
:
function
(
i
){
this
.
picker
.
show
();
this
.
height
=
this
.
component
?
this
.
component
.
outerHeight
():
this
.
element
.
outerHeight
();
if
(
this
.
forceParse
){
this
.
update
()}
this
.
place
();
d
(
window
).
on
(
"resize"
,
d
.
proxy
(
this
.
place
,
this
));
if
(
i
){
i
.
stopPropagation
();
i
.
preventDefault
()}
this
.
isVisible
=
true
;
this
.
element
.
trigger
({
type
:
"show"
,
date
:
this
.
date
})},
hide
:
function
(){
if
(
!
this
.
isVisible
){
return
}
if
(
this
.
isInline
){
return
}
this
.
picker
.
hide
();
d
(
window
).
off
(
"resize"
,
this
.
place
);
this
.
viewMode
=
this
.
startViewMode
;
this
.
showMode
();
if
(
!
this
.
isInput
){
d
(
document
).
off
(
"mousedown"
,
this
.
hide
)}
if
(
this
.
forceParse
&&
(
this
.
isInput
&&
this
.
element
.
val
()
||
this
.
hasInput
&&
this
.
element
.
find
(
"input"
).
val
())){
this
.
setValue
()}
this
.
isVisible
=
false
;
this
.
element
.
trigger
({
type
:
"hide"
,
date
:
this
.
date
})},
remove
:
function
(){
this
.
_detachEvents
();
d
(
document
).
off
(
"mousedown"
,
this
.
clickedOutside
);
this
.
picker
.
remove
();
delete
this
.
picker
;
delete
this
.
element
.
data
().
datetimepicker
},
getDate
:
function
(){
var
i
=
this
.
getUTCDate
();
if
(
i
===
null
){
return
null
}
return
new
Date
(
i
.
getTime
()
+
(
i
.
getTimezoneOffset
()
*
60000
))},
getUTCDate
:
function
(){
return
this
.
date
},
getInitialDate
:
function
(){
return
this
.
initialDate
},
setInitialDate
:
function
(
i
){
this
.
initialDate
=
i
},
setDate
:
function
(
i
){
this
.
setUTCDate
(
new
Date
(
i
.
getTime
()
-
(
i
.
getTimezoneOffset
()
*
60000
)))},
setUTCDate
:
function
(
i
){
if
(
i
>=
this
.
startDate
&&
i
<=
this
.
endDate
){
this
.
date
=
i
;
this
.
setValue
();
this
.
viewDate
=
this
.
date
;
this
.
fill
()}
else
{
this
.
element
.
trigger
({
type
:
"outOfRange"
,
date
:
i
,
startDate
:
this
.
startDate
,
endDate
:
this
.
endDate
})}},
setFormat
:
function
(
j
){
this
.
format
=
c
.
parseFormat
(
j
,
this
.
formatType
);
var
i
;
if
(
this
.
isInput
){
i
=
this
.
element
}
else
{
if
(
this
.
component
){
i
=
this
.
element
.
find
(
"input"
)}}
if
(
i
&&
i
.
val
()){
this
.
setValue
()}},
setValue
:
function
(){
var
i
=
this
.
getFormattedDate
();
if
(
!
this
.
isInput
){
if
(
this
.
component
){
this
.
element
.
find
(
"input"
).
val
(
i
)}
this
.
element
.
data
(
"date"
,
i
)}
else
{
this
.
element
.
val
(
i
)}
if
(
this
.
linkField
){
d
(
"#"
+
this
.
linkField
).
val
(
this
.
getFormattedDate
(
this
.
linkFormat
))}},
getFormattedDate
:
function
(
i
){
i
=
i
||
this
.
format
;
return
c
.
formatDate
(
this
.
date
,
i
,
this
.
language
,
this
.
formatType
,
this
.
timezone
)},
setStartDate
:
function
(
i
){
this
.
startDate
=
i
||
this
.
startDate
;
if
(
this
.
startDate
.
valueOf
()
!==
8639968443048000
){
this
.
startDate
=
c
.
parseDate
(
this
.
startDate
,
this
.
format
,
this
.
language
,
this
.
formatType
,
this
.
timezone
)}
this
.
update
();
this
.
updateNavArrows
()},
setEndDate
:
function
(
i
){
this
.
endDate
=
i
||
this
.
endDate
;
if
(
this
.
endDate
.
valueOf
()
!==
8639968443048000
){
this
.
endDate
=
c
.
parseDate
(
this
.
endDate
,
this
.
format
,
this
.
language
,
this
.
formatType
,
this
.
timezone
)}
this
.
update
();
this
.
updateNavArrows
()},
setDatesDisabled
:
function
(
j
){
this
.
datesDisabled
=
j
||
[];
if
(
!
d
.
isArray
(
this
.
datesDisabled
)){
this
.
datesDisabled
=
this
.
datesDisabled
.
split
(
/,
\s
*/
)}
var
i
=
this
;
this
.
datesDisabled
=
d
.
map
(
this
.
datesDisabled
,
function
(
k
){
return
c
.
parseDate
(
k
,
i
.
format
,
i
.
language
,
i
.
formatType
,
i
.
timezone
).
toDateString
()});
this
.
update
();
this
.
updateNavArrows
()},
setTitle
:
function
(
i
,
j
){
return
this
.
picker
.
find
(
i
).
find
(
"th:eq(1)"
).
text
(
this
.
title
===
false
?
j
:
this
.
title
)},
setDaysOfWeekDisabled
:
function
(
i
){
this
.
daysOfWeekDisabled
=
i
||
[];
if
(
!
d
.
isArray
(
this
.
daysOfWeekDisabled
)){
this
.
daysOfWeekDisabled
=
this
.
daysOfWeekDisabled
.
split
(
/,
\s
*/
)}
this
.
daysOfWeekDisabled
=
d
.
map
(
this
.
daysOfWeekDisabled
,
function
(
j
){
return
parseInt
(
j
,
10
)});
this
.
update
();
this
.
updateNavArrows
()},
setMinutesDisabled
:
function
(
i
){
this
.
minutesDisabled
=
i
||
[];
if
(
!
d
.
isArray
(
this
.
minutesDisabled
)){
this
.
minutesDisabled
=
this
.
minutesDisabled
.
split
(
/,
\s
*/
)}
this
.
minutesDisabled
=
d
.
map
(
this
.
minutesDisabled
,
function
(
j
){
return
parseInt
(
j
,
10
)});
this
.
update
();
this
.
updateNavArrows
()},
setHoursDisabled
:
function
(
i
){
this
.
hoursDisabled
=
i
||
[];
if
(
!
d
.
isArray
(
this
.
hoursDisabled
)){
this
.
hoursDisabled
=
this
.
hoursDisabled
.
split
(
/,
\s
*/
)}
this
.
hoursDisabled
=
d
.
map
(
this
.
hoursDisabled
,
function
(
j
){
return
parseInt
(
j
,
10
)});
this
.
update
();
this
.
updateNavArrows
()},
place
:
function
(){
if
(
this
.
isInline
){
return
}
if
(
!
this
.
zIndex
){
var
j
=
0
;
d
(
"div"
).
each
(
function
(){
var
o
=
parseInt
(
d
(
this
).
css
(
"zIndex"
),
10
);
if
(
o
>
j
){
j
=
o
}});
this
.
zIndex
=
j
+
10
}
var
n
,
m
,
l
,
k
;
if
(
this
.
container
instanceof
d
){
k
=
this
.
container
.
offset
()}
else
{
k
=
d
(
this
.
container
).
offset
()}
if
(
this
.
component
){
n
=
this
.
component
.
offset
();
l
=
n
.
left
;
if
(
this
.
pickerPosition
===
"bottom-left"
||
this
.
pickerPosition
===
"top-left"
){
l
+=
this
.
component
.
outerWidth
()
-
this
.
picker
.
outerWidth
()}}
else
{
n
=
this
.
element
.
offset
();
l
=
n
.
left
;
if
(
this
.
pickerPosition
===
"bottom-left"
||
this
.
pickerPosition
===
"top-left"
){
l
+=
this
.
element
.
outerWidth
()
-
this
.
picker
.
outerWidth
()}}
var
i
=
document
.
body
.
clientWidth
||
window
.
innerWidth
;
if
(
l
+
220
>
i
){
l
=
i
-
220
}
if
(
this
.
pickerPosition
===
"top-left"
||
this
.
pickerPosition
===
"top-right"
){
m
=
n
.
top
-
this
.
picker
.
outerHeight
()}
else
{
m
=
n
.
top
+
this
.
height
}
m
=
m
-
k
.
top
;
l
=
l
-
k
.
left
;
this
.
picker
.
css
({
top
:
m
,
left
:
l
,
zIndex
:
this
.
zIndex
})},
hour_minute
:
"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]"
,
update
:
function
(){
var
i
,
j
=
false
;
if
(
arguments
&&
arguments
.
length
&&
(
typeof
arguments
[
0
]
===
"string"
||
arguments
[
0
]
instanceof
Date
)){
i
=
arguments
[
0
];
j
=
true
}
else
{
i
=
(
this
.
isInput
?
this
.
element
.
val
():
this
.
element
.
find
(
"input"
).
val
())
||
this
.
element
.
data
(
"date"
)
||
this
.
initialDate
;
if
(
typeof
i
===
"string"
){
i
=
i
.
replace
(
/^
\s
+|
\s
+$/g
,
""
)}}
if
(
!
i
){
i
=
new
Date
();
j
=
false
}
if
(
typeof
i
===
"string"
){
if
(
new
RegExp
(
this
.
hour_minute
).
test
(
i
)
||
new
RegExp
(
this
.
hour_minute
+
":[0-5][0-9]"
).
test
(
i
)){
i
=
this
.
getDate
()}}
this
.
date
=
c
.
parseDate
(
i
,
this
.
format
,
this
.
language
,
this
.
formatType
,
this
.
timezone
);
if
(
j
){
this
.
setValue
()}
if
(
this
.
date
<
this
.
startDate
){
this
.
viewDate
=
new
Date
(
this
.
startDate
)}
else
{
if
(
this
.
date
>
this
.
endDate
){
this
.
viewDate
=
new
Date
(
this
.
endDate
)}
else
{
this
.
viewDate
=
new
Date
(
this
.
date
)}}
this
.
fill
()},
fillDow
:
function
(){
var
i
=
this
.
weekStart
,
j
=
"<tr>"
;
while
(
i
<
this
.
weekStart
+
7
){
j
+=
'<th class="dow">'
+
e
[
this
.
language
].
daysMin
[(
i
++
)
%
7
]
+
"</th>"
}
j
+=
"</tr>"
;
this
.
picker
.
find
(
".datetimepicker-days thead"
).
append
(
j
)},
fillMonths
:
function
(){
var
l
=
""
;
var
m
=
new
Date
(
this
.
viewDate
);
for
(
var
k
=
0
;
k
<
12
;
k
++
){
m
.
setUTCMonth
(
k
);
var
j
=
this
.
onRenderMonth
(
m
);
l
+=
'<span class="'
+
j
.
join
(
" "
)
+
'">'
+
e
[
this
.
language
].
monthsShort
[
k
]
+
"</span>"
}
this
.
picker
.
find
(
".datetimepicker-months td"
).
html
(
l
)},
fill
:
function
(){
if
(
!
this
.
date
||!
this
.
viewDate
){
return
}
var
E
=
new
Date
(
this
.
viewDate
),
t
=
E
.
getUTCFullYear
(),
G
=
E
.
getUTCMonth
(),
n
=
E
.
getUTCDate
(),
A
=
E
.
getUTCHours
(),
w
=
this
.
startDate
.
getUTCFullYear
(),
B
=
this
.
startDate
.
getUTCMonth
(),
p
=
this
.
endDate
.
getUTCFullYear
(),
x
=
this
.
endDate
.
getUTCMonth
()
+
1
,
q
=
(
new
h
(
this
.
date
.
getUTCFullYear
(),
this
.
date
.
getUTCMonth
(),
this
.
date
.
getUTCDate
())).
valueOf
(),
D
=
new
Date
();
this
.
setTitle
(
".datetimepicker-days"
,
e
[
this
.
language
].
months
[
G
]
+
" "
+
t
);
if
(
this
.
formatViewType
===
"time"
){
var
k
=
this
.
getFormattedDate
();
this
.
setTitle
(
".datetimepicker-hours"
,
k
);
this
.
setTitle
(
".datetimepicker-minutes"
,
k
)}
else
{
this
.
setTitle
(
".datetimepicker-hours"
,
n
+
" "
+
e
[
this
.
language
].
months
[
G
]
+
" "
+
t
);
this
.
setTitle
(
".datetimepicker-minutes"
,
n
+
" "
+
e
[
this
.
language
].
months
[
G
]
+
" "
+
t
)}
this
.
picker
.
find
(
"tfoot th.today"
).
text
(
e
[
this
.
language
].
today
||
e
.
en
.
today
).
toggle
(
this
.
todayBtn
!==
false
);
this
.
picker
.
find
(
"tfoot th.clear"
).
text
(
e
[
this
.
language
].
clear
||
e
.
en
.
clear
).
toggle
(
this
.
clearBtn
!==
false
);
this
.
updateNavArrows
();
this
.
fillMonths
();
var
I
=
h
(
t
,
G
-
1
,
28
,
0
,
0
,
0
,
0
),
z
=
c
.
getDaysInMonth
(
I
.
getUTCFullYear
(),
I
.
getUTCMonth
());
I
.
setUTCDate
(
z
);
I
.
setUTCDate
(
z
-
(
I
.
getUTCDay
()
-
this
.
weekStart
+
7
)
%
7
);
var
j
=
new
Date
(
I
);
j
.
setUTCDate
(
j
.
getUTCDate
()
+
42
);
j
=
j
.
valueOf
();
var
r
=
[];
var
F
;
while
(
I
.
valueOf
()
<
j
){
if
(
I
.
getUTCDay
()
===
this
.
weekStart
){
r
.
push
(
"<tr>"
)}
F
=
this
.
onRenderDay
(
I
);
if
(
I
.
getUTCFullYear
()
<
t
||
(
I
.
getUTCFullYear
()
===
t
&&
I
.
getUTCMonth
()
<
G
)){
F
.
push
(
"old"
)}
else
{
if
(
I
.
getUTCFullYear
()
>
t
||
(
I
.
getUTCFullYear
()
===
t
&&
I
.
getUTCMonth
()
>
G
)){
F
.
push
(
"new"
)}}
if
(
this
.
todayHighlight
&&
I
.
getUTCFullYear
()
===
D
.
getFullYear
()
&&
I
.
getUTCMonth
()
===
D
.
getMonth
()
&&
I
.
getUTCDate
()
===
D
.
getDate
()){
F
.
push
(
"today"
)}
if
(
I
.
valueOf
()
===
q
){
F
.
push
(
"active"
)}
if
((
I
.
valueOf
()
+
86400000
)
<=
this
.
startDate
||
I
.
valueOf
()
>
this
.
endDate
||
d
.
inArray
(
I
.
getUTCDay
(),
this
.
daysOfWeekDisabled
)
!==-
1
||
d
.
inArray
(
I
.
toDateString
(),
this
.
datesDisabled
)
!==-
1
){
F
.
push
(
"disabled"
)}
r
.
push
(
'<td class="'
+
F
.
join
(
" "
)
+
'">'
+
I
.
getUTCDate
()
+
"</td>"
);
if
(
I
.
getUTCDay
()
===
this
.
weekEnd
){
r
.
push
(
"</tr>"
)}
I
.
setUTCDate
(
I
.
getUTCDate
()
+
1
)}
this
.
picker
.
find
(
".datetimepicker-days tbody"
).
empty
().
append
(
r
.
join
(
""
));
r
=
[];
var
u
=
""
,
C
=
""
,
s
=
""
;
var
l
=
this
.
hoursDisabled
||
[];
E
=
new
Date
(
this
.
viewDate
);
for
(
var
y
=
0
;
y
<
24
;
y
++
){
E
.
setUTCHours
(
y
);
F
=
this
.
onRenderHour
(
E
);
if
(
l
.
indexOf
(
y
)
!==-
1
){
F
.
push
(
"disabled"
)}
var
v
=
h
(
t
,
G
,
n
,
y
);
if
((
v
.
valueOf
()
+
3600000
)
<=
this
.
startDate
||
v
.
valueOf
()
>
this
.
endDate
){
F
.
push
(
"disabled"
)}
else
{
if
(
A
===
y
){
F
.
push
(
"active"
)}}
if
(
this
.
showMeridian
&&
e
[
this
.
language
].
meridiem
.
length
===
2
){
C
=
(
y
<
12
?
e
[
this
.
language
].
meridiem
[
0
]:
e
[
this
.
language
].
meridiem
[
1
]);
if
(
C
!==
s
){
if
(
s
!==
""
){
r
.
push
(
"</fieldset>"
)}
r
.
push
(
'<fieldset class="hour"><legend>'
+
C
.
toUpperCase
()
+
"</legend>"
)}
s
=
C
;
u
=
(
y
%
12
?
y
%
12
:
12
);
if
(
y
<
12
){
F
.
push
(
"hour_am"
)}
else
{
F
.
push
(
"hour_pm"
)}
r
.
push
(
'<span class="'
+
F
.
join
(
" "
)
+
'">'
+
u
+
"</span>"
);
if
(
y
===
23
){
r
.
push
(
"</fieldset>"
)}}
else
{
u
=
y
+
":00"
;
r
.
push
(
'<span class="'
+
F
.
join
(
" "
)
+
'">'
+
u
+
"</span>"
)}}
this
.
picker
.
find
(
".datetimepicker-hours td"
).
html
(
r
.
join
(
""
));
r
=
[];
u
=
""
;
C
=
""
;
s
=
""
;
var
m
=
this
.
minutesDisabled
||
[];
E
=
new
Date
(
this
.
viewDate
);
for
(
var
y
=
0
;
y
<
60
;
y
+=
this
.
minuteStep
){
if
(
m
.
indexOf
(
y
)
!==-
1
){
continue
}
E
.
setUTCMinutes
(
y
);
E
.
setUTCSeconds
(
0
);
F
=
this
.
onRenderMinute
(
E
);
if
(
this
.
showMeridian
&&
e
[
this
.
language
].
meridiem
.
length
===
2
){
C
=
(
A
<
12
?
e
[
this
.
language
].
meridiem
[
0
]:
e
[
this
.
language
].
meridiem
[
1
]);
if
(
C
!==
s
){
if
(
s
!==
""
){
r
.
push
(
"</fieldset>"
)}
r
.
push
(
'<fieldset class="minute"><legend>'
+
C
.
toUpperCase
()
+
"</legend>"
)}
s
=
C
;
u
=
(
A
%
12
?
A
%
12
:
12
);
r
.
push
(
'<span class="'
+
F
.
join
(
" "
)
+
'">'
+
u
+
":"
+
(
y
<
10
?
"0"
+
y
:
y
)
+
"</span>"
);
if
(
y
===
59
){
r
.
push
(
"</fieldset>"
)}}
else
{
u
=
y
+
":00"
;
r
.
push
(
'<span class="'
+
F
.
join
(
" "
)
+
'">'
+
A
+
":"
+
(
y
<
10
?
"0"
+
y
:
y
)
+
"</span>"
)}}
this
.
picker
.
find
(
".datetimepicker-minutes td"
).
html
(
r
.
join
(
""
));
var
J
=
this
.
date
.
getUTCFullYear
();
var
o
=
this
.
setTitle
(
".datetimepicker-months"
,
t
).
end
().
find
(
".month"
).
removeClass
(
"active"
);
if
(
J
===
t
){
o
.
eq
(
this
.
date
.
getUTCMonth
()).
addClass
(
"active"
)}
if
(
t
<
w
||
t
>
p
){
o
.
addClass
(
"disabled"
)}
if
(
t
===
w
){
o
.
slice
(
0
,
B
).
addClass
(
"disabled"
)}
if
(
t
===
p
){
o
.
slice
(
x
).
addClass
(
"disabled"
)}
r
=
""
;
t
=
parseInt
(
t
/
10
,
10
)
*
10
;
var
H
=
this
.
setTitle
(
".datetimepicker-years"
,
t
+
"-"
+
(
t
+
9
)).
end
().
find
(
"td"
);
t
-=
1
;
E
=
new
Date
(
this
.
viewDate
);
for
(
var
y
=-
1
;
y
<
11
;
y
++
){
E
.
setUTCFullYear
(
t
);
F
=
this
.
onRenderYear
(
E
);
if
(
y
===-
1
||
y
===
10
){
F
.
push
(
b
)}
r
+=
'<span class="'
+
F
.
join
(
" "
)
+
'">'
+
t
+
"</span>"
;
t
+=
1
}
H
.
html
(
r
);
this
.
place
()},
updateNavArrows
:
function
(){
var
m
=
new
Date
(
this
.
viewDate
),
k
=
m
.
getUTCFullYear
(),
l
=
m
.
getUTCMonth
(),
j
=
m
.
getUTCDate
(),
i
=
m
.
getUTCHours
();
switch
(
this
.
viewMode
){
case
0
:
if
(
k
<=
this
.
startDate
.
getUTCFullYear
()
&&
l
<=
this
.
startDate
.
getUTCMonth
()
&&
j
<=
this
.
startDate
.
getUTCDate
()
&&
i
<=
this
.
startDate
.
getUTCHours
()){
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"visible"
})}
if
(
k
>=
this
.
endDate
.
getUTCFullYear
()
&&
l
>=
this
.
endDate
.
getUTCMonth
()
&&
j
>=
this
.
endDate
.
getUTCDate
()
&&
i
>=
this
.
endDate
.
getUTCHours
()){
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"visible"
})}
break
;
case
1
:
if
(
k
<=
this
.
startDate
.
getUTCFullYear
()
&&
l
<=
this
.
startDate
.
getUTCMonth
()
&&
j
<=
this
.
startDate
.
getUTCDate
()){
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"visible"
})}
if
(
k
>=
this
.
endDate
.
getUTCFullYear
()
&&
l
>=
this
.
endDate
.
getUTCMonth
()
&&
j
>=
this
.
endDate
.
getUTCDate
()){
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"visible"
})}
break
;
case
2
:
if
(
k
<=
this
.
startDate
.
getUTCFullYear
()
&&
l
<=
this
.
startDate
.
getUTCMonth
()){
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"visible"
})}
if
(
k
>=
this
.
endDate
.
getUTCFullYear
()
&&
l
>=
this
.
endDate
.
getUTCMonth
()){
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"visible"
})}
break
;
case
3
:
case
4
:
if
(
k
<=
this
.
startDate
.
getUTCFullYear
()){
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".prev"
).
css
({
visibility
:
"visible"
})}
if
(
k
>=
this
.
endDate
.
getUTCFullYear
()){
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"hidden"
})}
else
{
this
.
picker
.
find
(
".next"
).
css
({
visibility
:
"visible"
})}
break
}},
mousewheel
:
function
(
j
){
j
.
preventDefault
();
j
.
stopPropagation
();
if
(
this
.
wheelPause
){
return
}
this
.
wheelPause
=
true
;
var
i
=
j
.
originalEvent
;
var
l
=
i
.
wheelDelta
;
var
k
=
l
>
0
?
1
:(
l
===
0
)?
0
:
-
1
;
if
(
this
.
wheelViewModeNavigationInverseDirection
){
k
=-
k
}
this
.
showMode
(
k
);
setTimeout
(
d
.
proxy
(
function
(){
this
.
wheelPause
=
false
},
this
),
this
.
wheelViewModeNavigationDelay
)},
click
:
function
(
m
){
m
.
stopPropagation
();
m
.
preventDefault
();
var
n
=
d
(
m
.
target
).
closest
(
"span, td, th, legend"
);
if
(
n
.
is
(
"."
+
this
.
icontype
)){
n
=
d
(
n
).
parent
().
closest
(
"span, td, th, legend"
)}
if
(
n
.
length
===
1
){
if
(
n
.
is
(
".disabled"
)){
this
.
element
.
trigger
({
type
:
"outOfRange"
,
date
:
this
.
viewDate
,
startDate
:
this
.
startDate
,
endDate
:
this
.
endDate
});
return
}
switch
(
n
[
0
].
nodeName
.
toLowerCase
()){
case
"th"
:
switch
(
n
[
0
].
className
){
case
"switch"
:
this
.
showMode
(
1
);
break
;
case
"prev"
:
case
"next"
:
var
i
=
c
.
modes
[
this
.
viewMode
].
navStep
*
(
n
[
0
].
className
===
"prev"
?
-
1
:
1
);
switch
(
this
.
viewMode
){
case
0
:
this
.
viewDate
=
this
.
moveHour
(
this
.
viewDate
,
i
);
break
;
case
1
:
this
.
viewDate
=
this
.
moveDate
(
this
.
viewDate
,
i
);
break
;
case
2
:
this
.
viewDate
=
this
.
moveMonth
(
this
.
viewDate
,
i
);
break
;
case
3
:
case
4
:
this
.
viewDate
=
this
.
moveYear
(
this
.
viewDate
,
i
);
break
}
this
.
fill
();
this
.
element
.
trigger
({
type
:
n
[
0
].
className
+
":"
+
this
.
convertViewModeText
(
this
.
viewMode
),
date
:
this
.
viewDate
,
startDate
:
this
.
startDate
,
endDate
:
this
.
endDate
});
break
;
case
"clear"
:
this
.
reset
();
if
(
this
.
autoclose
){
this
.
hide
()}
break
;
case
"today"
:
var
j
=
new
Date
();
j
=
h
(
j
.
getFullYear
(),
j
.
getMonth
(),
j
.
getDate
(),
j
.
getHours
(),
j
.
getMinutes
(),
j
.
getSeconds
(),
0
);
if
(
j
<
this
.
startDate
){
j
=
this
.
startDate
}
else
{
if
(
j
>
this
.
endDate
){
j
=
this
.
endDate
}}
this
.
viewMode
=
this
.
startViewMode
;
this
.
showMode
(
0
);
this
.
_setDate
(
j
);
this
.
fill
();
if
(
this
.
autoclose
){
this
.
hide
()}
break
}
break
;
case
"span"
:
if
(
!
n
.
is
(
".disabled"
)){
var
p
=
this
.
viewDate
.
getUTCFullYear
(),
o
=
this
.
viewDate
.
getUTCMonth
(),
q
=
this
.
viewDate
.
getUTCDate
(),
r
=
this
.
viewDate
.
getUTCHours
(),
k
=
this
.
viewDate
.
getUTCMinutes
(),
s
=
this
.
viewDate
.
getUTCSeconds
();
if
(
n
.
is
(
".month"
)){
this
.
viewDate
.
setUTCDate
(
1
);
o
=
n
.
parent
().
find
(
"span"
).
index
(
n
);
q
=
this
.
viewDate
.
getUTCDate
();
this
.
viewDate
.
setUTCMonth
(
o
);
this
.
element
.
trigger
({
type
:
"changeMonth"
,
date
:
this
.
viewDate
});
if
(
this
.
viewSelect
>=
3
){
this
.
_setDate
(
h
(
p
,
o
,
q
,
r
,
k
,
s
,
0
))}}
else
{
if
(
n
.
is
(
".year"
)){
this
.
viewDate
.
setUTCDate
(
1
);
p
=
parseInt
(
n
.
text
(),
10
)
||
0
;
this
.
viewDate
.
setUTCFullYear
(
p
);
this
.
element
.
trigger
({
type
:
"changeYear"
,
date
:
this
.
viewDate
});
if
(
this
.
viewSelect
>=
4
){
this
.
_setDate
(
h
(
p
,
o
,
q
,
r
,
k
,
s
,
0
))}}
else
{
if
(
n
.
is
(
".hour"
)){
r
=
parseInt
(
n
.
text
(),
10
)
||
0
;
if
(
n
.
hasClass
(
"hour_am"
)
||
n
.
hasClass
(
"hour_pm"
)){
if
(
r
===
12
&&
n
.
hasClass
(
"hour_am"
)){
r
=
0
}
else
{
if
(
r
!==
12
&&
n
.
hasClass
(
"hour_pm"
)){
r
+=
12
}}}
this
.
viewDate
.
setUTCHours
(
r
);
this
.
element
.
trigger
({
type
:
"changeHour"
,
date
:
this
.
viewDate
});
if
(
this
.
viewSelect
>=
1
){
this
.
_setDate
(
h
(
p
,
o
,
q
,
r
,
k
,
s
,
0
))}}
else
{
if
(
n
.
is
(
".minute"
)){
k
=
parseInt
(
n
.
text
().
substr
(
n
.
text
().
indexOf
(
":"
)
+
1
),
10
)
||
0
;
this
.
viewDate
.
setUTCMinutes
(
k
);
this
.
element
.
trigger
({
type
:
"changeMinute"
,
date
:
this
.
viewDate
});
if
(
this
.
viewSelect
>=
0
){
this
.
_setDate
(
h
(
p
,
o
,
q
,
r
,
k
,
s
,
0
))}}}}}
if
(
this
.
viewMode
!==
0
){
var
l
=
this
.
viewMode
;
this
.
showMode
(
-
1
);
this
.
fill
();
if
(
l
===
this
.
viewMode
&&
this
.
autoclose
){
this
.
hide
()}}
else
{
this
.
fill
();
if
(
this
.
autoclose
){
this
.
hide
()}}}
break
;
case
"td"
:
if
(
n
.
is
(
".day"
)
&&!
n
.
is
(
".disabled"
)){
var
q
=
parseInt
(
n
.
text
(),
10
)
||
1
;
var
p
=
this
.
viewDate
.
getUTCFullYear
(),
o
=
this
.
viewDate
.
getUTCMonth
(),
r
=
this
.
viewDate
.
getUTCHours
(),
k
=
this
.
viewDate
.
getUTCMinutes
(),
s
=
this
.
viewDate
.
getUTCSeconds
();
if
(
n
.
is
(
".old"
)){
if
(
o
===
0
){
o
=
11
;
p
-=
1
}
else
{
o
-=
1
}}
else
{
if
(
n
.
is
(
".new"
)){
if
(
o
===
11
){
o
=
0
;
p
+=
1
}
else
{
o
+=
1
}}}
this
.
viewDate
.
setUTCFullYear
(
p
);
this
.
viewDate
.
setUTCMonth
(
o
,
q
);
this
.
element
.
trigger
({
type
:
"changeDay"
,
date
:
this
.
viewDate
});
if
(
this
.
viewSelect
>=
2
){
this
.
_setDate
(
h
(
p
,
o
,
q
,
r
,
k
,
s
,
0
))}}
var
l
=
this
.
viewMode
;
this
.
showMode
(
-
1
);
this
.
fill
();
if
(
l
===
this
.
viewMode
&&
this
.
autoclose
){
this
.
hide
()}
break
}}},
_setDate
:
function
(
i
,
k
){
if
(
!
k
||
k
===
"date"
){
this
.
date
=
i
}
if
(
!
k
||
k
===
"view"
){
this
.
viewDate
=
i
}
this
.
fill
();
this
.
setValue
();
var
j
;
if
(
this
.
isInput
){
j
=
this
.
element
}
else
{
if
(
this
.
component
){
j
=
this
.
element
.
find
(
"input"
)}}
if
(
j
){
j
.
change
()}
this
.
element
.
trigger
({
type
:
"changeDate"
,
date
:
this
.
getDate
()});
if
(
i
===
null
){
this
.
date
=
this
.
viewDate
}},
moveMinute
:
function
(
j
,
i
){
if
(
!
i
){
return
j
}
var
k
=
new
Date
(
j
.
valueOf
());
k
.
setUTCMinutes
(
k
.
getUTCMinutes
()
+
(
i
*
this
.
minuteStep
));
return
k
},
moveHour
:
function
(
j
,
i
){
if
(
!
i
){
return
j
}
var
k
=
new
Date
(
j
.
valueOf
());
k
.
setUTCHours
(
k
.
getUTCHours
()
+
i
);
return
k
},
moveDate
:
function
(
j
,
i
){
if
(
!
i
){
return
j
}
var
k
=
new
Date
(
j
.
valueOf
());
k
.
setUTCDate
(
k
.
getUTCDate
()
+
i
);
return
k
},
moveMonth
:
function
(
j
,
k
){
if
(
!
k
){
return
j
}
var
n
=
new
Date
(
j
.
valueOf
()),
r
=
n
.
getUTCDate
(),
o
=
n
.
getUTCMonth
(),
m
=
Math
.
abs
(
k
),
q
,
p
;
k
=
k
>
0
?
1
:
-
1
;
if
(
m
===
1
){
p
=
k
===-
1
?
function
(){
return
n
.
getUTCMonth
()
===
o
}:
function
(){
return
n
.
getUTCMonth
()
!==
q
};
q
=
o
+
k
;
n
.
setUTCMonth
(
q
);
if
(
q
<
0
||
q
>
11
){
q
=
(
q
+
12
)
%
12
}}
else
{
for
(
var
l
=
0
;
l
<
m
;
l
++
){
n
=
this
.
moveMonth
(
n
,
k
)}
q
=
n
.
getUTCMonth
();
n
.
setUTCDate
(
r
);
p
=
function
(){
return
q
!==
n
.
getUTCMonth
()}}
while
(
p
()){
n
.
setUTCDate
(
--
r
);
n
.
setUTCMonth
(
q
)}
return
n
},
moveYear
:
function
(
j
,
i
){
return
this
.
moveMonth
(
j
,
i
*
12
)},
dateWithinRange
:
function
(
i
){
return
i
>=
this
.
startDate
&&
i
<=
this
.
endDate
},
keydown
:
function
(
o
){
if
(
this
.
picker
.
is
(
":not(:visible)"
)){
if
(
o
.
keyCode
===
27
){
this
.
show
()}
return
}
var
k
=
false
,
j
,
i
,
n
;
switch
(
o
.
keyCode
){
case
27
:
this
.
hide
();
o
.
preventDefault
();
break
;
case
37
:
case
39
:
if
(
!
this
.
keyboardNavigation
){
break
}
j
=
o
.
keyCode
===
37
?
-
1
:
1
;
var
m
=
this
.
viewMode
;
if
(
o
.
ctrlKey
){
m
+=
2
}
else
{
if
(
o
.
shiftKey
){
m
+=
1
}}
if
(
m
===
4
){
i
=
this
.
moveYear
(
this
.
date
,
j
);
n
=
this
.
moveYear
(
this
.
viewDate
,
j
)}
else
{
if
(
m
===
3
){
i
=
this
.
moveMonth
(
this
.
date
,
j
);
n
=
this
.
moveMonth
(
this
.
viewDate
,
j
)}
else
{
if
(
m
===
2
){
i
=
this
.
moveDate
(
this
.
date
,
j
);
n
=
this
.
moveDate
(
this
.
viewDate
,
j
)}
else
{
if
(
m
===
1
){
i
=
this
.
moveHour
(
this
.
date
,
j
);
n
=
this
.
moveHour
(
this
.
viewDate
,
j
)}
else
{
if
(
m
===
0
){
i
=
this
.
moveMinute
(
this
.
date
,
j
);
n
=
this
.
moveMinute
(
this
.
viewDate
,
j
)}}}}}
if
(
this
.
dateWithinRange
(
i
)){
this
.
date
=
i
;
this
.
viewDate
=
n
;
this
.
setValue
();
this
.
update
();
o
.
preventDefault
();
k
=
true
}
break
;
case
38
:
case
40
:
if
(
!
this
.
keyboardNavigation
){
break
}
j
=
o
.
keyCode
===
38
?
-
1
:
1
;
m
=
this
.
viewMode
;
if
(
o
.
ctrlKey
){
m
+=
2
}
else
{
if
(
o
.
shiftKey
){
m
+=
1
}}
if
(
m
===
4
){
i
=
this
.
moveYear
(
this
.
date
,
j
);
n
=
this
.
moveYear
(
this
.
viewDate
,
j
)}
else
{
if
(
m
===
3
){
i
=
this
.
moveMonth
(
this
.
date
,
j
);
n
=
this
.
moveMonth
(
this
.
viewDate
,
j
)}
else
{
if
(
m
===
2
){
i
=
this
.
moveDate
(
this
.
date
,
j
*
7
);
n
=
this
.
moveDate
(
this
.
viewDate
,
j
*
7
)}
else
{
if
(
m
===
1
){
if
(
this
.
showMeridian
){
i
=
this
.
moveHour
(
this
.
date
,
j
*
6
);
n
=
this
.
moveHour
(
this
.
viewDate
,
j
*
6
)}
else
{
i
=
this
.
moveHour
(
this
.
date
,
j
*
4
);
n
=
this
.
moveHour
(
this
.
viewDate
,
j
*
4
)}}
else
{
if
(
m
===
0
){
i
=
this
.
moveMinute
(
this
.
date
,
j
*
4
);
n
=
this
.
moveMinute
(
this
.
viewDate
,
j
*
4
)}}}}}
if
(
this
.
dateWithinRange
(
i
)){
this
.
date
=
i
;
this
.
viewDate
=
n
;
this
.
setValue
();
this
.
update
();
o
.
preventDefault
();
k
=
true
}
break
;
case
13
:
if
(
this
.
viewMode
!==
0
){
var
p
=
this
.
viewMode
;
this
.
showMode
(
-
1
);
this
.
fill
();
if
(
p
===
this
.
viewMode
&&
this
.
autoclose
){
this
.
hide
()}}
else
{
this
.
fill
();
if
(
this
.
autoclose
){
this
.
hide
()}}
o
.
preventDefault
();
break
;
case
9
:
this
.
hide
();
break
}
if
(
k
){
var
l
;
if
(
this
.
isInput
){
l
=
this
.
element
}
else
{
if
(
this
.
component
){
l
=
this
.
element
.
find
(
"input"
)}}
if
(
l
){
l
.
change
()}
this
.
element
.
trigger
({
type
:
"changeDate"
,
date
:
this
.
getDate
()})}},
showMode
:
function
(
i
){
if
(
i
){
var
j
=
Math
.
max
(
0
,
Math
.
min
(
c
.
modes
.
length
-
1
,
this
.
viewMode
+
i
));
if
(
j
>=
this
.
minView
&&
j
<=
this
.
maxView
){
this
.
element
.
trigger
({
type
:
"changeMode"
,
date
:
this
.
viewDate
,
oldViewMode
:
this
.
viewMode
,
newViewMode
:
j
});
this
.
viewMode
=
j
}}
this
.
picker
.
find
(
">div"
).
hide
().
filter
(
".datetimepicker-"
+
c
.
modes
[
this
.
viewMode
].
clsName
).
css
(
"display"
,
"block"
);
this
.
updateNavArrows
()},
reset
:
function
(){
this
.
_setDate
(
null
,
"date"
)},
convertViewModeText
:
function
(
i
){
switch
(
i
){
case
4
:
return
"decade"
;
case
3
:
return
"year"
;
case
2
:
return
"month"
;
case
1
:
return
"day"
;
case
0
:
return
"hour"
}}};
var
b
=
d
.
fn
.
datetimepicker
;
d
.
fn
.
datetimepicker
=
function
(
k
){
var
i
=
Array
.
apply
(
null
,
arguments
);
i
.
shift
();
var
j
;
this
.
each
(
function
(){
var
n
=
d
(
this
),
m
=
n
.
data
(
"datetimepicker"
),
l
=
typeof
k
===
"object"
&&
k
;
if
(
!
m
){
n
.
data
(
"datetimepicker"
,(
m
=
new
g
(
this
,
d
.
extend
({},
d
.
fn
.
datetimepicker
.
defaults
,
l
))))}
if
(
typeof
k
===
"string"
&&
typeof
m
[
k
]
===
"function"
){
j
=
m
[
k
].
apply
(
m
,
i
);
if
(
j
!==
f
){
return
false
}}});
if
(
j
!==
f
){
return
j
}
else
{
return
this
}};
d
.
fn
.
datetimepicker
.
defaults
=
{};
d
.
fn
.
datetimepicker
.
Constructor
=
g
;
var
e
=
d
.
fn
.
datetimepicker
.
dates
=
{
en
:{
days
:[
"星期日"
,
"星期一"
,
"星期二"
,
"星期三"
,
"星期四"
,
"星期五"
,
"星期六"
,
"星期日"
],
daysShort
:[
"日"
,
"一"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
,
"日"
],
daysMin
:[
"日"
,
"一"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
,
"日"
],
months
:[
"一月"
,
"二月"
,
"三月"
,
"四月"
,
"五月"
,
"六月"
,
"七月"
,
"八月"
,
"九月"
,
"十月"
,
"十一月"
,
"十二月"
],
monthsShort
:[
"一"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
,
"七"
,
"八"
,
"九"
,
"十"
,
"十一"
,
"十二"
],
meridiem
:[
"上午"
,
"下午"
],
suffix
:[
"st"
,
"nd"
,
"rd"
,
"th"
],
today
:
"今天"
,
clear
:
"清除"
}};
var
c
=
{
modes
:[{
clsName
:
"minutes"
,
navFnc
:
"Hours"
,
navStep
:
1
},{
clsName
:
"hours"
,
navFnc
:
"Date"
,
navStep
:
1
},{
clsName
:
"days"
,
navFnc
:
"Month"
,
navStep
:
1
},{
clsName
:
"months"
,
navFnc
:
"FullYear"
,
navStep
:
1
},{
clsName
:
"years"
,
navFnc
:
"FullYear"
,
navStep
:
10
}],
isLeapYear
:
function
(
i
){
return
(((
i
%
4
===
0
)
&&
(
i
%
100
!==
0
))
||
(
i
%
400
===
0
))},
getDaysInMonth
:
function
(
i
,
j
){
return
[
31
,(
c
.
isLeapYear
(
i
)?
29
:
28
),
31
,
30
,
31
,
30
,
31
,
31
,
30
,
31
,
30
,
31
][
j
]},
getDefaultFormat
:
function
(
i
,
j
){
if
(
i
===
"standard"
){
if
(
j
===
"input"
){
return
"yyyy-mm-dd hh:ii"
}
else
{
return
"yyyy-mm-dd hh:ii:ss"
}}
else
{
if
(
i
===
"php"
){
if
(
j
===
"input"
){
return
"Y-m-d H:i"
}
else
{
return
"Y-m-d H:i:s"
}}
else
{
throw
new
Error
(
"Invalid format type."
)}}},
validParts
:
function
(
i
){
if
(
i
===
"standard"
){
return
/t|hh
?
|HH
?
|p|P|z|Z|ii
?
|ss
?
|dd
?
|DD
?
|mm
?
|MM
?
|yy
(?:
yy
)?
/g
}
else
{
if
(
i
===
"php"
){
return
/
[
dDjlNwzFmMnStyYaABgGhHis
]
/g
}
else
{
throw
new
Error
(
"Invalid format type."
)}}},
nonpunctuation
:
/
[^
-
\/
:-@
\[
-`{-~
\t\n\r
TZ
]
+/g
,
parseFormat
:
function
(
l
,
j
){
var
i
=
l
.
replace
(
this
.
validParts
(
j
),
"
\
0"
).
split
(
"
\
0"
),
k
=
l
.
match
(
this
.
validParts
(
j
));
if
(
!
i
||!
i
.
length
||!
k
||
k
.
length
===
0
){
throw
new
Error
(
"Invalid date format."
)}
return
{
separators
:
i
,
parts
:
k
}},
parseDate
:
function
(
A
,
y
,
v
,
j
,
r
){
if
(
A
instanceof
Date
){
var
u
=
new
Date
(
A
.
valueOf
()
-
A
.
getTimezoneOffset
()
*
60000
);
u
.
setMilliseconds
(
0
);
return
u
}
if
(
/^
\d{4}\-\d{1,2}\-\d{1,2}
$/
.
test
(
A
)){
y
=
this
.
parseFormat
(
"yyyy-mm-dd"
,
j
)}
if
(
/^
\d{4}\-\d{1,2}\-\d{1,2}[
T
]\d{1,2}\:\d{1,2}
$/
.
test
(
A
)){
y
=
this
.
parseFormat
(
"yyyy-mm-dd hh:ii"
,
j
)}
if
(
/^
\d{4}\-\d{1,2}\-\d{1,2}[
T
]\d{1,2}\:\d{1,2}\:\d{1,2}[
Z
]{0,1}
$/
.
test
(
A
)){
y
=
this
.
parseFormat
(
"yyyy-mm-dd hh:ii:ss"
,
j
)}
if
(
/^
[
-+
]\d
+
[
dmwy
]([\s
,
]
+
[
-+
]\d
+
[
dmwy
])
*$/
.
test
(
A
)){
var
l
=
/
([
-+
]\d
+
)([
dmwy
])
/
,
q
=
A
.
match
(
/
([
-+
]\d
+
)([
dmwy
])
/g
),
t
,
p
;
A
=
new
Date
();
for
(
var
x
=
0
;
x
<
q
.
length
;
x
++
){
t
=
l
.
exec
(
q
[
x
]);
p
=
parseInt
(
t
[
1
]);
switch
(
t
[
2
]){
case
"d"
:
A
.
setUTCDate
(
A
.
getUTCDate
()
+
p
);
break
;
case
"m"
:
A
=
g
.
prototype
.
moveMonth
.
call
(
g
.
prototype
,
A
,
p
);
break
;
case
"w"
:
A
.
setUTCDate
(
A
.
getUTCDate
()
+
p
*
7
);
break
;
case
"y"
:
A
=
g
.
prototype
.
moveYear
.
call
(
g
.
prototype
,
A
,
p
);
break
}}
return
h
(
A
.
getUTCFullYear
(),
A
.
getUTCMonth
(),
A
.
getUTCDate
(),
A
.
getUTCHours
(),
A
.
getUTCMinutes
(),
A
.
getUTCSeconds
(),
0
)}
var
q
=
A
&&
A
.
toString
().
match
(
this
.
nonpunctuation
)
||
[],
A
=
new
Date
(
0
,
0
,
0
,
0
,
0
,
0
,
0
),
m
=
{},
z
=
[
"hh"
,
"h"
,
"ii"
,
"i"
,
"ss"
,
"s"
,
"yyyy"
,
"yy"
,
"M"
,
"MM"
,
"m"
,
"mm"
,
"D"
,
"DD"
,
"d"
,
"dd"
,
"H"
,
"HH"
,
"p"
,
"P"
,
"z"
,
"Z"
],
o
=
{
hh
:
function
(
s
,
i
){
return
s
.
setUTCHours
(
i
)},
h
:
function
(
s
,
i
){
return
s
.
setUTCHours
(
i
)},
HH
:
function
(
s
,
i
){
return
s
.
setUTCHours
(
i
===
12
?
0
:
i
)},
H
:
function
(
s
,
i
){
return
s
.
setUTCHours
(
i
===
12
?
0
:
i
)},
ii
:
function
(
s
,
i
){
return
s
.
setUTCMinutes
(
i
)},
i
:
function
(
s
,
i
){
return
s
.
setUTCMinutes
(
i
)},
ss
:
function
(
s
,
i
){
return
s
.
setUTCSeconds
(
i
)},
s
:
function
(
s
,
i
){
return
s
.
setUTCSeconds
(
i
)},
yyyy
:
function
(
s
,
i
){
return
s
.
setUTCFullYear
(
i
)},
yy
:
function
(
s
,
i
){
return
s
.
setUTCFullYear
(
2000
+
i
)},
m
:
function
(
s
,
i
){
i
-=
1
;
while
(
i
<
0
){
i
+=
12
}
i
%=
12
;
s
.
setUTCMonth
(
i
);
while
(
s
.
getUTCMonth
()
!==
i
){
if
(
isNaN
(
s
.
getUTCMonth
())){
return
s
}
else
{
s
.
setUTCDate
(
s
.
getUTCDate
()
-
1
)}}
return
s
},
d
:
function
(
s
,
i
){
return
s
.
setUTCDate
(
i
)},
p
:
function
(
s
,
i
){
return
s
.
setUTCHours
(
i
===
1
?
s
.
getUTCHours
()
+
12
:
s
.
getUTCHours
())},
z
:
function
(){
return
r
}},
B
,
k
,
t
;
o
.
M
=
o
.
MM
=
o
.
mm
=
o
.
m
;
o
.
dd
=
o
.
d
;
o
.
P
=
o
.
p
;
o
.
Z
=
o
.
z
;
A
=
h
(
A
.
getFullYear
(),
A
.
getMonth
(),
A
.
getDate
(),
A
.
getHours
(),
A
.
getMinutes
(),
A
.
getSeconds
());
if
(
q
.
length
===
y
.
parts
.
length
){
for
(
var
x
=
0
,
w
=
y
.
parts
.
length
;
x
<
w
;
x
++
){
B
=
parseInt
(
q
[
x
],
10
);
t
=
y
.
parts
[
x
];
if
(
isNaN
(
B
)){
switch
(
t
){
case
"MM"
:
k
=
d
(
e
[
v
].
months
).
filter
(
function
(){
var
i
=
this
.
slice
(
0
,
q
[
x
].
length
),
s
=
q
[
x
].
slice
(
0
,
i
.
length
);
return
i
===
s
});
B
=
d
.
inArray
(
k
[
0
],
e
[
v
].
months
)
+
1
;
break
;
case
"M"
:
k
=
d
(
e
[
v
].
monthsShort
).
filter
(
function
(){
var
i
=
this
.
slice
(
0
,
q
[
x
].
length
),
s
=
q
[
x
].
slice
(
0
,
i
.
length
);
return
i
.
toLowerCase
()
===
s
.
toLowerCase
()});
B
=
d
.
inArray
(
k
[
0
],
e
[
v
].
monthsShort
)
+
1
;
break
;
case
"p"
:
case
"P"
:
B
=
d
.
inArray
(
q
[
x
].
toLowerCase
(),
e
[
v
].
meridiem
);
break
;
case
"z"
:
case
"Z"
:
r
;
break
}}
m
[
t
]
=
B
}
for
(
var
x
=
0
,
n
;
x
<
z
.
length
;
x
++
){
n
=
z
[
x
];
if
(
n
in
m
&&!
isNaN
(
m
[
n
])){
o
[
n
](
A
,
m
[
n
])}}}
return
A
},
formatDate
:
function
(
l
,
q
,
m
,
p
,
o
){
if
(
l
===
null
){
return
""
}
var
k
;
if
(
p
===
"standard"
){
k
=
{
t
:
l
.
getTime
(),
yy
:
l
.
getUTCFullYear
().
toString
().
substring
(
2
),
yyyy
:
l
.
getUTCFullYear
(),
m
:
l
.
getUTCMonth
()
+
1
,
M
:
e
[
m
].
monthsShort
[
l
.
getUTCMonth
()],
MM
:
e
[
m
].
months
[
l
.
getUTCMonth
()],
d
:
l
.
getUTCDate
(),
D
:
e
[
m
].
daysShort
[
l
.
getUTCDay
()],
DD
:
e
[
m
].
days
[
l
.
getUTCDay
()],
p
:(
e
[
m
].
meridiem
.
length
===
2
?
e
[
m
].
meridiem
[
l
.
getUTCHours
()
<
12
?
0
:
1
]:
""
),
h
:
l
.
getUTCHours
(),
i
:
l
.
getUTCMinutes
(),
s
:
l
.
getUTCSeconds
(),
z
:
o
};
if
(
e
[
m
].
meridiem
.
length
===
2
){
k
.
H
=
(
k
.
h
%
12
===
0
?
12
:
k
.
h
%
12
)}
else
{
k
.
H
=
k
.
h
}
k
.
HH
=
(
k
.
H
<
10
?
"0"
:
""
)
+
k
.
H
;
k
.
P
=
k
.
p
.
toUpperCase
();
k
.
Z
=
k
.
z
;
k
.
hh
=
(
k
.
h
<
10
?
"0"
:
""
)
+
k
.
h
;
k
.
ii
=
(
k
.
i
<
10
?
"0"
:
""
)
+
k
.
i
;
k
.
ss
=
(
k
.
s
<
10
?
"0"
:
""
)
+
k
.
s
;
k
.
dd
=
(
k
.
d
<
10
?
"0"
:
""
)
+
k
.
d
;
k
.
mm
=
(
k
.
m
<
10
?
"0"
:
""
)
+
k
.
m
}
else
{
if
(
p
===
"php"
){
k
=
{
y
:
l
.
getUTCFullYear
().
toString
().
substring
(
2
),
Y
:
l
.
getUTCFullYear
(),
F
:
e
[
m
].
months
[
l
.
getUTCMonth
()],
M
:
e
[
m
].
monthsShort
[
l
.
getUTCMonth
()],
n
:
l
.
getUTCMonth
()
+
1
,
t
:
c
.
getDaysInMonth
(
l
.
getUTCFullYear
(),
l
.
getUTCMonth
()),
j
:
l
.
getUTCDate
(),
l
:
e
[
m
].
days
[
l
.
getUTCDay
()],
D
:
e
[
m
].
daysShort
[
l
.
getUTCDay
()],
w
:
l
.
getUTCDay
(),
N
:(
l
.
getUTCDay
()
===
0
?
7
:
l
.
getUTCDay
()),
S
:(
l
.
getUTCDate
()
%
10
<=
e
[
m
].
suffix
.
length
?
e
[
m
].
suffix
[
l
.
getUTCDate
()
%
10
-
1
]:
""
),
a
:(
e
[
m
].
meridiem
.
length
===
2
?
e
[
m
].
meridiem
[
l
.
getUTCHours
()
<
12
?
0
:
1
]:
""
),
g
:(
l
.
getUTCHours
()
%
12
===
0
?
12
:
l
.
getUTCHours
()
%
12
),
G
:
l
.
getUTCHours
(),
i
:
l
.
getUTCMinutes
(),
s
:
l
.
getUTCSeconds
()};
k
.
m
=
(
k
.
n
<
10
?
"0"
:
""
)
+
k
.
n
;
k
.
d
=
(
k
.
j
<
10
?
"0"
:
""
)
+
k
.
j
;
k
.
A
=
k
.
a
.
toString
().
toUpperCase
();
k
.
h
=
(
k
.
g
<
10
?
"0"
:
""
)
+
k
.
g
;
k
.
H
=
(
k
.
G
<
10
?
"0"
:
""
)
+
k
.
G
;
k
.
i
=
(
k
.
i
<
10
?
"0"
:
""
)
+
k
.
i
;
k
.
s
=
(
k
.
s
<
10
?
"0"
:
""
)
+
k
.
s
}
else
{
throw
new
Error
(
"Invalid format type."
)}}
var
l
=
[],
r
=
d
.
extend
([],
q
.
separators
);
for
(
var
n
=
0
,
j
=
q
.
parts
.
length
;
n
<
j
;
n
++
){
if
(
r
.
length
){
l
.
push
(
r
.
shift
())}
l
.
push
(
k
[
q
.
parts
[
n
]])}
if
(
r
.
length
){
l
.
push
(
r
.
shift
())}
return
l
.
join
(
""
)},
convertViewMode
:
function
(
i
){
switch
(
i
){
case
4
:
case
"decade"
:
i
=
4
;
break
;
case
3
:
case
"year"
:
i
=
3
;
break
;
case
2
:
case
"month"
:
i
=
2
;
break
;
case
1
:
case
"day"
:
i
=
1
;
break
;
case
0
:
case
"hour"
:
i
=
0
;
break
}
return
i
},
headTemplate
:
'<thead><tr><th class="prev"><i class="{iconType} {leftArrow}"/></th><th colspan="5" class="switch"></th><th class="next"><i class="{iconType} {rightArrow}"/></th></tr></thead>'
,
headTemplateV3
:
'<thead><tr><th class="prev"><span class="{iconType} {leftArrow}"></span> </th><th colspan="5" class="switch"></th><th class="next"><span class="{iconType} {rightArrow}"></span> </th></tr></thead>'
,
contTemplate
:
'<tbody><tr><td colspan="7"></td></tr></tbody>'
,
footTemplate
:
'<tfoot><tr><th colspan="7" class="today"></th></tr><tr><th colspan="7" class="clear"></th></tr></tfoot>'
};
c
.
template
=
'<div class="datetimepicker"><div class="datetimepicker-minutes"><table class=" table-condensed">'
+
c
.
headTemplate
+
c
.
contTemplate
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-hours"><table class=" table-condensed">'
+
c
.
headTemplate
+
c
.
contTemplate
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-days"><table class=" table-condensed">'
+
c
.
headTemplate
+
"<tbody></tbody>"
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-months"><table class="table-condensed">'
+
c
.
headTemplate
+
c
.
contTemplate
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-years"><table class="table-condensed">'
+
c
.
headTemplate
+
c
.
contTemplate
+
c
.
footTemplate
+
"</table></div></div>"
;
c
.
templateV3
=
'<div class="datetimepicker"><div class="datetimepicker-minutes"><table class=" table-condensed">'
+
c
.
headTemplateV3
+
c
.
contTemplate
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-hours"><table class=" table-condensed">'
+
c
.
headTemplateV3
+
c
.
contTemplate
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-days"><table class=" table-condensed">'
+
c
.
headTemplateV3
+
"<tbody></tbody>"
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-months"><table class="table-condensed">'
+
c
.
headTemplateV3
+
c
.
contTemplate
+
c
.
footTemplate
+
'</table></div><div class="datetimepicker-years"><table class="table-condensed">'
+
c
.
headTemplateV3
+
c
.
contTemplate
+
c
.
footTemplate
+
"</table></div></div>"
;
d
.
fn
.
datetimepicker
.
DPGlobal
=
c
;
d
.
fn
.
datetimepicker
.
noConflict
=
function
(){
d
.
fn
.
datetimepicker
=
b
;
return
this
};
d
(
document
).
on
(
"focus.datetimepicker.data-api click.datetimepicker.data-api"
,
'[data-provide="datetimepicker"]'
,
function
(
j
){
var
i
=
d
(
this
);
if
(
i
.
data
(
"datetimepicker"
)){
return
}
j
.
preventDefault
();
i
.
datetimepicker
(
"show"
)});
d
(
function
(){
d
(
'[data-provide="datetimepicker-inline"]'
).
datetimepicker
()})}));
\ No newline at end of file
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment