Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
zzx_123123
zui
提交
d5052a2a
Z
zui
项目概览
zzx_123123
/
zui
与 Fork 源项目一致
Fork自
易企天创 / zui
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Z
zui
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
d5052a2a
编写于
7月 24, 2014
作者:
C
Catouse
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
* updated documents.
* rebuilt.
上级
185bb972
变更
20
隐藏空白更改
内联
并排
Showing
20 changed file
with
79 addition
and
140 deletion
+79
-140
Gruntfile.js
Gruntfile.js
+0
-2
README.md
README.md
+9
-32
assets/chartjs/chart.line.js
assets/chartjs/chart.line.js
+3
-5
assets/chartjs/chart.line.min.js
assets/chartjs/chart.line.min.js
+3
-5
assets/chosen/js/chosen.all.js
assets/chosen/js/chosen.all.js
+6
-10
assets/chosen/js/chosen.all.min.js
assets/chosen/js/chosen.all.min.js
+3
-5
assets/chosen/js/chosen.icons.js
assets/chosen/js/chosen.icons.js
+3
-5
assets/chosen/js/chosen.icons.min.js
assets/chosen/js/chosen.icons.min.js
+3
-5
assets/datetimepicker/js/datetimepicker.min.js
assets/datetimepicker/js/datetimepicker.min.js
+3
-5
dist/css/zui-theme.css
dist/css/zui-theme.css
+3
-5
dist/css/zui-theme.min.css
dist/css/zui-theme.min.css
+3
-5
dist/css/zui.css
dist/css/zui.css
+3
-5
dist/css/zui.lite.css
dist/css/zui.lite.css
+3
-5
dist/css/zui.lite.min.css
dist/css/zui.lite.min.css
+3
-5
dist/css/zui.min.css
dist/css/zui.min.css
+3
-5
dist/js/zui.js
dist/js/zui.js
+3
-5
dist/js/zui.lite.js
dist/js/zui.lite.js
+3
-5
dist/js/zui.lite.min.js
dist/js/zui.lite.min.js
+3
-5
dist/js/zui.min.js
dist/js/zui.min.js
+3
-5
index.html
index.html
+16
-16
未找到文件。
Gruntfile.js
浏览文件 @
d5052a2a
...
...
@@ -2,14 +2,12 @@ module.exports = function(grunt)
{
var
banner
=
'
/*!
\n
'
+
'
* ====================================================
\n
'
+
'
* <%= pkg.title || pkg.name %> - v<%= pkg.version %> -
'
+
'
<%= grunt.template.today("yyyy-mm-dd") %>
\n
'
+
'
<%= pkg.homepage ? " * " + pkg.homepage + "
\\
n" : "" %>
'
+
'
* GitHub: <%= pkg.repository.url %>
\n
'
+
'
* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author %>;
'
+
'
Licensed <%= pkg.license %>
\n
'
+
'
* ====================================================
\n
'
+
'
*/
\n\n
'
,
statement
=
'
/* Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*/
\n\n
'
,
jqueryCheck
=
'
if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery") }
\n\n
'
,
...
...
README.md
浏览文件 @
d5052a2a
# ZUI #
----------
一个开源免费的前端框架,主要用于快速构建禅道系列web产品。
项目网站 [http://easysoft.github.io/zui/]
一个开源前端实践方案,帮助你快速构现代跨屏应用。
从项目网站了解更多: http://easysoft.github.io/zui/ 。
## 特色 ##
-
简单美观,易于使用,快速构建简洁大方的现代web应用。
-
新颖
但健壮,采用html5但支持大部分
流行的移动及桌面浏览器平台,一些旧的浏览器也能够降级支持。
-
轻快独立稳定,最佳的可用性能,最大限度的不依赖于
其他框架,以优先支持禅道官方产品为主,不做大而全的解决方案
。
-
新颖
健壮,采用HTML5且支持所有
流行的移动及桌面浏览器平台,一些旧的浏览器也能够降级支持。
-
轻快独立稳定,最佳的可用性能,最大限度的不依赖于
外部组件
。
-
全平台响应,一次编写,响应任何尺寸的设备。
## 受支持的平台浏览器 ##
桌面浏览器:
-
IE8+
-
Opera 12+
-
Firefox 4+
-
Safari 5+
-
Chrome 10+
移动平台浏览器:
-
IOS 4+ Safari
-
Chrome for Android
-
Chrome for IOS
-
Chrome for Android
-
Windows Phone 7+ IE
## 使用ZUI开发的项目
-
蝉知开源企业门户系统 [http://chanzhi.org]
## 设计 ##
-
简单:“不要让我思考”,提供清晰的思路,用户应该能立即明白如何操作去完成目标,尽可能减少操作步骤及弹出窗口或页面。
-
高效:用户能够快速达到自己的目标,尽可能在产品中提供预置设置或默认值,让用户无需配置。应用程序也应该保障性能能够快速响应和反馈。
-
生动:尽可能的考虑更多的细节,生动的交互体验让用户在使用的过程中是享受,充满人情味的文字表述,少量而得当的动画,令人舒适的配色。
-
[
禅道项目管理软件
](
http://zentao.net
)
-
[
蝉知企业门户系统
](
http://chanzhi.org
)
-
[
然之企业管理系统
](
http://ranzhi.org
)
assets/chartjs/chart.line.js
浏览文件 @
d5052a2a
/*!
* ====================================================
* ZUI - v0.9.0 - 2014-07-23
* https://github.com/easysoft/zui
* ZUI - v1.0.0 - 2014-07-24
* http://easysoft.github.io/zui/
* GitHub: https://github.com/easysoft/zui.git
* Copyright (c) 2014 Catouse@easysoft; Licensed GNU
* ====================================================
* Copyright (c) 2014 cnezsoft.com; Licensed MIT
*/
/*!
...
...
assets/chartjs/chart.line.min.js
浏览文件 @
d5052a2a
/*!
* ====================================================
* ZUI - v0.9.0 - 2014-07-23
* https://github.com/easysoft/zui
* ZUI - v1.0.0 - 2014-07-24
* http://easysoft.github.io/zui/
* GitHub: https://github.com/easysoft/zui.git
* Copyright (c) 2014 Catouse@easysoft; Licensed GNU
* ====================================================
* Copyright (c) 2014 cnezsoft.com; Licensed MIT
*/
window
.
Chart
=
function
(
a
){
function
b
(
a
,
b
,
c
){
var
d
=
b
.
steps
*
b
.
stepValue
,
e
=
a
-
b
.
graphMin
,
f
=
g
(
e
/
d
,
1
,
0
);
return
c
*
b
.
steps
*
f
}
function
c
(
a
,
b
,
c
,
d
){
function
e
(){
var
e
=
a
.
animation
?
g
(
i
(
j
),
null
,
0
):
1
;
o
(
d
),
a
.
scaleOverlay
?(
c
(
e
),
b
()):(
b
(),
c
(
e
))}
function
f
(){
j
+=
h
,
e
(),
1
>=
j
?
q
(
f
):
"
function
"
==
typeof
a
.
onAnimationComplete
&&
a
.
onAnimationComplete
()}
var
h
=
a
.
animation
?
1
/
g
(
a
.
animationSteps
,
Number
.
MAX_VALUE
,
1
):
1
,
i
=
l
[
a
.
animationEasing
],
j
=
a
.
animation
?
0
:
1
;
"
function
"
!=
typeof
b
&&
(
b
=
function
(){}),
q
(
f
)}
function
d
(
a
,
b
,
c
,
d
,
f
,
g
){
function
h
(
a
){
return
Math
.
floor
(
Math
.
log
(
a
)
/
Math
.
LN10
)}
var
i
,
j
,
k
,
l
,
m
,
n
,
o
;
for
(
n
=
d
-
f
,
o
=
h
(
n
),
i
=
Math
.
floor
(
f
/
(
1
*
Math
.
pow
(
10
,
o
)))
*
Math
.
pow
(
10
,
o
),
j
=
Math
.
ceil
(
d
/
(
1
*
Math
.
pow
(
10
,
o
)))
*
Math
.
pow
(
10
,
o
),
k
=
j
-
i
,
l
=
Math
.
pow
(
10
,
o
),
m
=
Math
.
round
(
k
/
l
);
c
>
m
||
m
>
b
;)
c
>
m
?(
l
/=
2
,
m
=
Math
.
round
(
k
/
l
)):(
l
*=
2
,
m
=
Math
.
round
(
k
/
l
));
var
p
=
[];
return
e
(
g
,
p
,
m
,
i
,
l
),{
steps
:
m
,
stepValue
:
l
,
graphMin
:
i
,
labels
:
p
}}
function
e
(
a
,
b
,
c
,
d
,
e
){
if
(
a
)
for
(
var
f
=
1
;
c
+
1
>
f
;
f
++
)
b
.
push
(
j
(
a
,{
value
:(
d
+
e
*
f
).
toFixed
(
h
(
e
))}))}
function
f
(
a
){
return
!
isNaN
(
parseFloat
(
a
))
&&
isFinite
(
a
)}
function
g
(
a
,
b
,
c
){
return
f
(
b
)
&&
a
>
b
?
b
:
f
(
c
)
&&
c
>
a
?
c
:
a
}
function
h
(
a
){
return
a
%
1
!=
0
?
a
.
toString
().
split
(
"
.
"
)[
1
].
length
:
0
}
function
i
(
a
,
b
){
var
c
=
{};
for
(
var
d
in
a
)
c
[
d
]
=
a
[
d
];
for
(
var
d
in
b
)
c
[
d
]
=
b
[
d
];
return
c
}
function
j
(
a
,
b
){
var
c
=
/
\W
/
.
test
(
a
)?
new
Function
(
"
obj
"
,
"
var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('
"
+
a
.
replace
(
/
[\r\t\n]
/g
,
"
"
).
split
(
"
<%
"
).
join
(
"
"
).
replace
(
/
((
^|%>
)[^\t]
*
)
'/g
,
"
$1
\r
"
).
replace
(
/
\t
=
(
.*
?)
%>/g
,
"
',$1,'
"
).
split
(
"
"
).
join
(
"
');
"
).
split
(
"
%>
"
).
join
(
"
p.push('
"
).
split
(
"
\r
"
).
join
(
"
\\
'
"
)
+
"
');}return p.join('');
"
):
r
[
a
]
=
r
[
a
]
||
j
(
document
.
getElementById
(
a
).
innerHTML
);
return
b
?
c
(
b
):
c
}
var
k
=
this
,
l
=
{
linear
:
function
(
a
){
return
a
},
easeInQuad
:
function
(
a
){
return
a
*
a
},
easeOutQuad
:
function
(
a
){
return
-
1
*
a
*
(
a
-
2
)},
easeInOutQuad
:
function
(
a
){
return
(
a
/=
.
5
)
<
1
?.
5
*
a
*
a
:
-
0.5
*
(
--
a
*
(
a
-
2
)
-
1
)},
easeInCubic
:
function
(
a
){
return
a
*
a
*
a
},
easeOutCubic
:
function
(
a
){
return
1
*
((
a
=
a
/
1
-
1
)
*
a
*
a
+
1
)},
easeInOutCubic
:
function
(
a
){
return
(
a
/=
.
5
)
<
1
?.
5
*
a
*
a
*
a
:.
5
*
((
a
-=
2
)
*
a
*
a
+
2
)},
easeInQuart
:
function
(
a
){
return
a
*
a
*
a
*
a
},
easeOutQuart
:
function
(
a
){
return
-
1
*
((
a
=
a
/
1
-
1
)
*
a
*
a
*
a
-
1
)},
easeInOutQuart
:
function
(
a
){
return
(
a
/=
.
5
)
<
1
?.
5
*
a
*
a
*
a
*
a
:
-
0.5
*
((
a
-=
2
)
*
a
*
a
*
a
-
2
)},
easeInQuint
:
function
(
a
){
return
1
*
(
a
/=
1
)
*
a
*
a
*
a
*
a
},
easeOutQuint
:
function
(
a
){
return
1
*
((
a
=
a
/
1
-
1
)
*
a
*
a
*
a
*
a
+
1
)},
easeInOutQuint
:
function
(
a
){
return
(
a
/=
.
5
)
<
1
?.
5
*
a
*
a
*
a
*
a
*
a
:.
5
*
((
a
-=
2
)
*
a
*
a
*
a
*
a
+
2
)},
easeInSine
:
function
(
a
){
return
-
1
*
Math
.
cos
(
a
/
1
*
(
Math
.
PI
/
2
))
+
1
},
easeOutSine
:
function
(
a
){
return
1
*
Math
.
sin
(
a
/
1
*
(
Math
.
PI
/
2
))},
easeInOutSine
:
function
(
a
){
return
-
0.5
*
(
Math
.
cos
(
Math
.
PI
*
a
/
1
)
-
1
)},
easeInExpo
:
function
(
a
){
return
0
==
a
?
1
:
1
*
Math
.
pow
(
2
,
10
*
(
a
/
1
-
1
))},
easeOutExpo
:
function
(
a
){
return
1
==
a
?
1
:
1
*
(
-
Math
.
pow
(
2
,
-
10
*
a
/
1
)
+
1
)},
easeInOutExpo
:
function
(
a
){
return
0
==
a
?
0
:
1
==
a
?
1
:(
a
/=
.
5
)
<
1
?.
5
*
Math
.
pow
(
2
,
10
*
(
a
-
1
)):.
5
*
(
-
Math
.
pow
(
2
,
-
10
*--
a
)
+
2
)},
easeInCirc
:
function
(
a
){
return
a
>=
1
?
a
:
-
1
*
(
Math
.
sqrt
(
1
-
(
a
/=
1
)
*
a
)
-
1
)},
easeOutCirc
:
function
(
a
){
return
1
*
Math
.
sqrt
(
1
-
(
a
=
a
/
1
-
1
)
*
a
)},
easeInOutCirc
:
function
(
a
){
return
(
a
/=
.
5
)
<
1
?
-
0.5
*
(
Math
.
sqrt
(
1
-
a
*
a
)
-
1
):.
5
*
(
Math
.
sqrt
(
1
-
(
a
-=
2
)
*
a
)
+
1
)},
easeInElastic
:
function
(
a
){
var
b
=
1.70158
,
c
=
0
,
d
=
1
;
if
(
0
==
a
)
return
0
;
if
(
1
==
(
a
/=
1
))
return
1
;
if
(
c
||
(
c
=
.
3
),
d
<
Math
.
abs
(
1
)){
d
=
1
;
var
b
=
c
/
4
}
else
var
b
=
c
/
(
2
*
Math
.
PI
)
*
Math
.
asin
(
1
/
d
);
return
-
(
d
*
Math
.
pow
(
2
,
10
*
(
a
-=
1
))
*
Math
.
sin
(
2
*
(
1
*
a
-
b
)
*
Math
.
PI
/
c
))},
easeOutElastic
:
function
(
a
){
var
b
=
1.70158
,
c
=
0
,
d
=
1
;
if
(
0
==
a
)
return
0
;
if
(
1
==
(
a
/=
1
))
return
1
;
if
(
c
||
(
c
=
.
3
),
d
<
Math
.
abs
(
1
)){
d
=
1
;
var
b
=
c
/
4
}
else
var
b
=
c
/
(
2
*
Math
.
PI
)
*
Math
.
asin
(
1
/
d
);
return
d
*
Math
.
pow
(
2
,
-
10
*
a
)
*
Math
.
sin
(
2
*
(
1
*
a
-
b
)
*
Math
.
PI
/
c
)
+
1
},
easeInOutElastic
:
function
(
a
){
var
b
=
1.70158
,
c
=
0
,
d
=
1
;
if
(
0
==
a
)
return
0
;
if
(
2
==
(
a
/=
.
5
))
return
1
;
if
(
c
||
(
c
=
.
3
*
1.5
),
d
<
Math
.
abs
(
1
)){
d
=
1
;
var
b
=
c
/
4
}
else
var
b
=
c
/
(
2
*
Math
.
PI
)
*
Math
.
asin
(
1
/
d
);
return
1
>
a
?
-
.
5
*
d
*
Math
.
pow
(
2
,
10
*
(
a
-=
1
))
*
Math
.
sin
(
2
*
(
1
*
a
-
b
)
*
Math
.
PI
/
c
):
d
*
Math
.
pow
(
2
,
-
10
*
(
a
-=
1
))
*
Math
.
sin
(
2
*
(
1
*
a
-
b
)
*
Math
.
PI
/
c
)
*
.
5
+
1
},
easeInBack
:
function
(
a
){
var
b
=
1.70158
;
return
1
*
(
a
/=
1
)
*
a
*
((
b
+
1
)
*
a
-
b
)},
easeOutBack
:
function
(
a
){
var
b
=
1.70158
;
return
1
*
((
a
=
a
/
1
-
1
)
*
a
*
((
b
+
1
)
*
a
+
b
)
+
1
)},
easeInOutBack
:
function
(
a
){
var
b
=
1.70158
;
return
(
a
/=
.
5
)
<
1
?.
5
*
a
*
a
*
(((
b
*=
1.525
)
+
1
)
*
a
-
b
):.
5
*
((
a
-=
2
)
*
a
*
(((
b
*=
1.525
)
+
1
)
*
a
+
b
)
+
2
)},
easeInBounce
:
function
(
a
){
return
1
-
l
.
easeOutBounce
(
1
-
a
)},
easeOutBounce
:
function
(
a
){
return
(
a
/=
1
)
<
1
/
2.75
?
7.5625
*
a
*
a
:
2
/
2.75
>
a
?
1
*
(
7.5625
*
(
a
-=
1.5
/
2.75
)
*
a
+
.
75
):
2.5
/
2.75
>
a
?
1
*
(
7.5625
*
(
a
-=
2.25
/
2.75
)
*
a
+
.
9375
):
1
*
(
7.5625
*
(
a
-=
2.625
/
2.75
)
*
a
+
.
984375
)},
easeInOutBounce
:
function
(
a
){
return
.
5
>
a
?.
5
*
l
.
easeInBounce
(
2
*
a
):.
5
*
l
.
easeOutBounce
(
2
*
a
-
1
)
+
.
5
}},
m
=
a
.
canvas
.
width
,
n
=
a
.
canvas
.
height
;
window
.
devicePixelRatio
&&
(
a
.
canvas
.
style
.
width
=
m
+
"
px
"
,
a
.
canvas
.
style
.
height
=
n
+
"
px
"
,
a
.
canvas
.
height
=
n
*
window
.
devicePixelRatio
,
a
.
canvas
.
width
=
m
*
window
.
devicePixelRatio
,
a
.
scale
(
window
.
devicePixelRatio
,
window
.
devicePixelRatio
)),
this
.
Line
=
function
(
b
,
c
){
k
.
Line
.
defaults
=
{
scaleOverlay
:
!
1
,
scaleOverride
:
!
1
,
scaleSteps
:
null
,
scaleStepWidth
:
null
,
scaleStartValue
:
null
,
scaleLineColor
:
"
rgba(0,0,0,.1)
"
,
scaleLineWidth
:
1
,
scaleShowLabels
:
!
1
,
scaleLabel
:
"
<%=value%>
"
,
scaleFontFamily
:
"
'Arial'
"
,
scaleFontSize
:
12
,
scaleFontStyle
:
"
normal
"
,
scaleFontColor
:
"
#666
"
,
scaleShowGridLines
:
!
1
,
scaleGridLineColor
:
"
rgba(0,0,0,.05)
"
,
scaleGridLineWidth
:
1
,
bezierCurve
:
!
0
,
pointDot
:
!
1
,
pointDotRadius
:
4
,
pointDotStrokeWidth
:
2
,
datasetStroke
:
!
0
,
datasetStrokeWidth
:
1
,
datasetFill
:
!
0
,
animation
:
!
0
,
animationSteps
:
30
,
animationEasing
:
"
easeOutQuart
"
,
onAnimationComplete
:
null
};
var
d
=
c
?
i
(
k
.
Line
.
defaults
,
c
):
k
.
Line
.
defaults
;
return
new
p
(
b
,
d
,
a
)};
var
o
=
function
(
a
){
a
.
clearRect
(
0
,
0
,
m
,
n
)},
p
=
function
(
a
,
f
,
g
){
function
h
(
c
){
function
d
(
d
,
e
){
return
z
-
c
*
b
(
a
.
datasets
[
d
].
data
[
e
],
q
,
p
)}
function
e
(
a
){
return
y
+
v
*
a
}
for
(
var
h
=
0
;
h
<
a
.
datasets
.
length
;
h
++
){
g
.
strokeStyle
=
a
.
datasets
[
h
].
strokeColor
,
g
.
lineWidth
=
f
.
datasetStrokeWidth
,
g
.
beginPath
(),
g
.
moveTo
(
y
,
z
-
c
*
b
(
a
.
datasets
[
h
].
data
[
0
],
q
,
p
));
for
(
var
i
=
1
;
i
<
a
.
datasets
[
h
].
data
.
length
;
i
++
)
f
.
bezierCurve
?
g
.
bezierCurveTo
(
e
(
i
-
.
5
),
d
(
h
,
i
-
1
),
e
(
i
-
.
5
),
d
(
h
,
i
),
e
(
i
),
d
(
h
,
i
)):
g
.
lineTo
(
e
(
i
),
d
(
h
,
i
));
if
(
g
.
stroke
(),
f
.
datasetFill
?(
g
.
lineTo
(
y
+
v
*
(
a
.
datasets
[
h
].
data
.
length
-
1
),
z
),
g
.
lineTo
(
y
,
z
),
g
.
closePath
(),
g
.
fillStyle
=
a
.
datasets
[
h
].
fillColor
,
g
.
fill
()):
g
.
closePath
(),
f
.
pointDot
){
g
.
fillStyle
=
a
.
datasets
[
h
].
pointColor
,
g
.
strokeStyle
=
a
.
datasets
[
h
].
pointStrokeColor
,
g
.
lineWidth
=
f
.
pointDotStrokeWidth
;
for
(
var
j
=
0
;
j
<
a
.
datasets
[
h
].
data
.
length
;
j
++
)
g
.
beginPath
(),
g
.
arc
(
y
+
v
*
j
,
z
-
c
*
b
(
a
.
datasets
[
h
].
data
[
j
],
q
,
p
),
f
.
pointDotRadius
,
0
,
2
*
Math
.
PI
,
!
0
),
g
.
fill
(),
g
.
stroke
()}}}
function
i
(){
g
.
lineWidth
=
f
.
scaleLineWidth
,
g
.
strokeStyle
=
f
.
scaleLineColor
,
g
.
beginPath
(),
g
.
moveTo
(
m
-
w
/
2
+
5
,
z
),
g
.
lineTo
(
m
-
w
/
2
-
x
-
5
,
z
),
g
.
stroke
(),
A
>
0
?(
g
.
save
(),
g
.
textAlign
=
"
right
"
):
g
.
textAlign
=
"
center
"
,
g
.
fillStyle
=
f
.
scaleFontColor
;
for
(
var
b
=
0
;
b
<
a
.
labels
.
length
;
b
++
)
g
.
save
(),
g
.
beginPath
(),
g
.
moveTo
(
y
+
b
*
v
,
z
+
3
),
f
.
scaleShowGridLines
&&
b
>
0
?(
g
.
lineWidth
=
f
.
scaleGridLineWidth
,
g
.
strokeStyle
=
f
.
scaleGridLineColor
,
g
.
lineTo
(
y
+
b
*
v
,
5
)):
g
.
lineTo
(
y
+
b
*
v
,
z
+
3
),
g
.
stroke
();
g
.
lineWidth
=
f
.
scaleLineWidth
,
g
.
strokeStyle
=
f
.
scaleLineColor
,
g
.
textAlign
=
"
right
"
,
g
.
textBaseline
=
"
middle
"
;
for
(
var
c
=
0
;
c
<
q
.
steps
;
c
++
)
g
.
beginPath
(),
g
.
moveTo
(
y
-
3
,
z
-
(
c
+
1
)
*
p
),
f
.
scaleShowGridLines
?(
g
.
lineWidth
=
f
.
scaleGridLineWidth
,
g
.
strokeStyle
=
f
.
scaleGridLineColor
,
g
.
lineTo
(
y
+
x
+
5
,
z
-
(
c
+
1
)
*
p
)):
g
.
lineTo
(
y
-
.
5
,
z
-
(
c
+
1
)
*
p
),
g
.
stroke
(),
f
.
scaleShowLabels
&&
g
.
fillText
(
q
.
labels
[
c
],
y
-
8
,
z
-
(
c
+
1
)
*
p
)}
function
j
(){
x
=
m
,
v
=
x
/
(
a
.
labels
.
length
-
1
),
y
=
0
,
z
=
n
}
function
k
(){
o
=
n
,
g
.
font
=
f
.
scaleFontStyle
+
"
"
+
f
.
scaleFontSize
+
"
px
"
+
f
.
scaleFontFamily
,
w
=
1
;
for
(
var
b
=
0
;
b
<
a
.
labels
.
length
;
b
++
){
var
c
=
0
;
w
=
c
>
w
?
c
:
w
}
m
/
a
.
labels
.
length
<
w
?(
A
=
45
,
m
/
a
.
labels
.
length
<
Math
.
cos
(
A
)
*
w
?(
A
=
90
,
o
-=
w
):
o
-=
Math
.
sin
(
A
)
*
w
):
o
-=
f
.
scaleFontSize
,
r
=
f
.
scaleFontSize
,
o
=
n
,
s
=
o
}
function
l
(){
for
(
var
b
=
Number
.
MIN_VALUE
,
c
=
Number
.
MAX_VALUE
,
d
=
0
;
d
<
a
.
datasets
.
length
;
d
++
)
for
(
var
e
=
0
;
e
<
a
.
datasets
[
d
].
data
.
length
;
e
++
)
a
.
datasets
[
d
].
data
[
e
]
>
b
&&
(
b
=
a
.
datasets
[
d
].
data
[
e
]),
a
.
datasets
[
d
].
data
[
e
]
<
c
&&
(
c
=
a
.
datasets
[
d
].
data
[
e
]);
var
f
=
Math
.
floor
(
s
/
(.
66
*
r
)),
g
=
Math
.
floor
(
s
/
r
*
.
5
);
return
{
maxValue
:
b
,
minValue
:
c
,
maxSteps
:
f
,
minSteps
:
g
}}
var
o
,
p
,
q
,
r
,
s
,
t
,
u
,
v
,
w
,
x
,
y
,
z
,
A
=
0
;
k
(),
t
=
l
(),
u
=
f
.
scaleShowLabels
?
f
.
scaleLabel
:
""
,
f
.
scaleOverride
?(
q
=
{
steps
:
f
.
scaleSteps
,
stepValue
:
f
.
scaleStepWidth
,
graphMin
:
f
.
scaleStartValue
,
labels
:[]},
e
(
u
,
q
.
labels
,
q
.
steps
,
f
.
scaleStartValue
,
f
.
scaleStepWidth
)):
q
=
d
(
s
,
t
.
maxSteps
,
t
.
minSteps
,
t
.
maxValue
,
t
.
minValue
,
u
),
p
=
Math
.
floor
(
s
/
q
.
steps
),
j
(),
c
(
f
,
i
,
h
,
g
)},
q
=
function
(){
return
window
.
requestAnimationFrame
||
window
.
webkitRequestAnimationFrame
||
window
.
mozRequestAnimationFrame
||
window
.
oRequestAnimationFrame
||
window
.
msRequestAnimationFrame
||
function
(
a
){
window
.
setTimeout
(
a
,
1
e3
/
60
)}}(),
r
=
{}};
\ No newline at end of file
assets/chosen/js/chosen.all.js
浏览文件 @
d5052a2a
/*!
* ====================================================
* ZUI - v0.9.0 - 2014-07-23
* https://github.com/easysoft/zui
* ZUI - v1.0.0 - 2014-07-24
* http://easysoft.github.io/zui/
* GitHub: https://github.com/easysoft/zui.git
* Copyright (c) 2014 Catouse@easysoft; Licensed GNU
* ====================================================
* Copyright (c) 2014 cnezsoft.com; Licensed MIT
*/
/*!
...
...
@@ -1222,12 +1220,10 @@ This file is generated by `grunt build`, do not edit it by hand.
+
function
(
o
,
e
,
t
,
n
){
"
use strict
"
;
var
s
=
function
(
e
,
t
){
this
.
$
=
o
(
e
),
this
.
options
=
this
.
getOptions
(
t
),
this
.
lang
=
s
.
LANGS
[
this
.
options
.
lang
],
this
.
id
=
"
chosen-icons-
"
+
parseInt
(
1
e10
*
n
.
random
()
+
1
),
this
.
init
()};
s
.
DEFAULTS
=
{
canEmpty
:
!
0
,
lang
:
"
zh-cn
"
,
commonIcons
:[
"
heart
"
,
"
user
"
,
"
group
"
,
"
list-ul
"
,
"
th
"
,
"
star
"
,
"
star-empty
"
,
"
search
"
,
"
envelope
"
,
"
dashboard
"
,
"
sitemap
"
,
"
umbrella
"
,
"
lightbulb
"
,
"
envelope-alt
"
,
"
cog
"
,
"
ok
"
,
"
remove
"
,
"
home
"
,
"
time
"
,
"
flag
"
,
"
flag-alt
"
,
"
flag-checkered
"
,
"
qrcode
"
,
"
tag
"
,
"
tags
"
,
"
book
"
,
"
bookmark
"
,
"
bookmark-empty
"
,
"
print
"
,
"
camera
"
,
"
picture
"
,
"
globe
"
,
"
map-marker
"
,
"
edit
"
,
"
edit-sign
"
,
"
play
"
,
"
stop
"
,
"
plus-sign
"
,
"
minus-sign
"
,
"
remove-sign
"
,
"
ok-sign
"
,
"
check-sign
"
,
"
question-sign
"
,
"
info-sign
"
,
"
exclamation-sign
"
,
"
plus
"
,
"
plus-sign
"
,
"
minus
"
,
"
minus-sign
"
,
"
asterisk
"
,
"
calendar
"
,
"
calendar-empty
"
,
"
comment
"
,
"
comment-alt
"
,
"
comments
"
,
"
comments-alt
"
,
"
folder-close
"
,
"
folder-open
"
,
"
folder-close-alt
"
,
"
folder-open-alt
"
,
"
gears
"
,
"
thumbs-up-alt
"
,
"
thumbs-up
"
,
"
thumbs-down-alt
"
,
"
thumbs-down
"
,
"
pushpin
"
,
"
building
"
,
"
phone
"
,
"
rss
"
,
"
rss-sign
"
,
"
bullhorn
"
,
"
bell
"
,
"
bell-alt
"
,
"
certificate
"
,
"
wrench
"
,
"
tasks
"
,
"
cloud
"
,
"
beaker
"
,
"
magic
"
,
"
smile
"
,
"
frown
"
,
"
meh
"
,
"
code
"
,
"
location-arrow
"
],
webIcons
:[
"
share
"
,
"
pencil
"
,
"
trash
"
,
"
file-alt
"
,
"
file
"
,
"
file-text
"
,
"
download-alt
"
,
"
upload-alt
"
,
"
inbox
"
,
"
repeat
"
,
"
rotate-left
"
,
"
refresh
"
,
"
lock
"
,
"
unlock
"
,
"
check
"
,
"
check-empty
"
,
"
eye-open
"
,
"
eye-close
"
,
"
key
"
,
"
signin
"
,
"
signout
"
,
"
external-link
"
,
"
external-link-sign
"
,
"
link
"
,
"
reorder
"
,
"
quote-left
"
,
"
quote-right
"
,
"
spinner
"
,
"
reply
"
,
"
question
"
,
"
info
"
,
"
exclamation
"
,
"
archive
"
,
"
collapse
"
,
"
collapse-top
"
],
editorIcons
:[
"
table
"
,
"
copy
"
,
"
paperclip
"
,
"
save
"
,
"
list-ol
"
,
"
paste
"
,
"
keyboard
"
,
"
crop
"
,
"
unlink
"
,
"
sort-by-alphabet
"
,
"
sort-by-alphabet-alt
"
,
"
sort-by-attributes
"
,
"
sort-by-attributes-alt
"
,
"
sort-by-order
"
,
"
sort-by-order-alt
"
],
directionalIcons
:[
"
chevron-left
"
,
"
chevron-right
"
,
"
chevron-down
"
,
"
chevron-up
"
,
"
arrow-left
"
,
"
arrow-right
"
,
"
arrow-down
"
,
"
arrow-up
"
,
"
hand-right
"
,
"
hand-left
"
,
"
hand-up
"
,
"
hand-down
"
,
"
circle-arrow-left
"
,
"
circle-arrow-right
"
,
"
circle-arrow-up
"
,
"
circle-arrow-down
"
,
"
double-angle-left
"
,
"
double-angle-right
"
,
"
double-angle-down
"
,
"
double-angle-up
"
,
"
angle-left
"
,
"
angle-right
"
,
"
angle-down
"
,
"
angle-up
"
,
"
long-arrow-left
"
,
"
long-arrow-right
"
,
"
long-arrow-down
"
,
"
long-arrow-up
"
,
"
caret-left
"
,
"
caret-right
"
,
"
caret-down
"
,
"
caret-up
"
],
otherIcons
:[
"
desktop
"
,
"
laptop
"
,
"
tablet
"
,
"
mobile-phone
"
,
"
github
"
,
"
building
"
,
"
yen
"
,
"
cny
"
,
"
firefox
"
,
"
ie
"
,
"
opera
"
,
"
qq
"
,
"
lemon
"
,
"
sign-blank
"
,
"
circle
"
,
"
circle-blank
"
,
"
terminal
"
,
"
html5
"
,
"
female
"
,
"
male
"
,
"
andriod
"
,
"
apple
"
,
"
windows
"
,
"
weibo
"
,
"
renren
"
,
"
bug
"
,
"
moon
"
,
"
sun
"
]},
s
.
LANGS
=
{},
s
.
LANGS
[
"
zh-cn
"
]
=
{
commonIcons
:
"
常用图标
"
,
webIcons
:
"
Web 图标
"
,
editorIcons
:
"
编辑器图标
"
,
directionalIcons
:
"
箭头总汇
"
,
otherIcons
:
"
其他图标
"
},
s
.
LANGS
.
en
=
{
commonIcons
:
"
Common Icons
"
,
webIcons
:
"
Web Icons
"
,
editorIcons
:
"
Editor Icons
"
,
directionalIcons
:
"
Directional Icons
"
,
otherIcons
:
"
Other Icons
"
},
s
.
LANGS
[
"
zh-tw
"
]
=
{
commonIcons
:
"
常用圖標
"
,
webIcons
:
"
Web 圖標
"
,
editorIcons
:
"
編輯器圖標
"
,
directionalIcons
:
"
箭頭總匯
"
,
otherIcons
:
"
其他圖標
"
},
s
.
prototype
.
getOptions
=
function
(
e
){
return
e
=
o
.
extend
({},
s
.
DEFAULTS
,
this
.
$
.
data
(),
e
)},
s
.
prototype
.
init
=
function
(){
var
e
=
this
.
$
.
addClass
(
"
chosen-icons
"
).
addClass
(
this
.
id
);
e
.
empty
(),
this
.
options
.
canEmpty
&&
e
.
append
(
this
.
getOptionHtml
()),
e
.
append
(
this
.
getgroupHtml
(
"
commonIcons
"
)),
e
.
append
(
this
.
getgroupHtml
(
"
webIcons
"
)),
e
.
append
(
this
.
getgroupHtml
(
"
editorIcons
"
)),
e
.
append
(
this
.
getgroupHtml
(
"
directionalIcons
"
)),
e
.
append
(
this
.
getgroupHtml
(
"
otherIcons
"
)),
e
.
chosen
({
placeholder_text
:
"
"
,
disable_search
:
!
0
,
width
:
"
100%
"
,
inherit_select_classes
:
!
0
});
var
t
=
"
.chosen-container.
"
+
this
.
id
;
e
.
on
(
"
chosen:showing_dropdown
"
,
function
(){
o
(
t
+
"
.chosen-results .group-option
"
).
each
(
function
(){
var
e
=
o
(
this
).
addClass
(
"
icon
"
),
t
=
e
.
text
();
e
.
html
(
'
<i class="
'
+
t
+
'
" title="
'
+
t
+
'
"></i>
'
)})}).
change
(
function
(){
o
(
t
+
"
.chosen-single > span
"
);
var
e
=
o
(
this
).
val
();
o
(
t
+
"
.chosen-single > span
"
).
html
(
'
<i class="
'
+
e
+
'
"></i>
'
+
e
)});
var
n
=
e
.
data
(
"
value
"
);
n
&&
e
.
val
(
n
).
change
()},
s
.
prototype
.
getgroupHtml
=
function
(
o
){
var
e
=
this
.
options
[
o
],
t
=
'
<optgroup label="
'
+
this
.
lang
[
o
]
+
'
">
'
;
for
(
var
n
in
e
)
t
+=
this
.
getOptionHtml
(
e
[
n
]);
return
t
+
"
</optgroup>
"
},
s
.
prototype
.
getOptionHtml
=
function
(
o
){
return
o
=
o
&&
o
.
length
>
0
?
"
icon-
"
+
o
:
""
,
'
<option value="
'
+
o
+
'
">
'
+
o
+
"
</option>
"
},
o
.
fn
.
chosenIcons
=
function
(
e
){
return
this
.
each
(
function
(){
var
t
=
o
(
this
),
n
=
t
.
data
(
"
zui.chosenIcons
"
),
r
=
"
object
"
==
typeof
e
&&
e
;
n
||
t
.
data
(
"
zui.chosenIcons
"
,
n
=
new
s
(
this
,
r
)),
"
string
"
==
typeof
e
&&
n
[
e
]()})},
o
.
fn
.
chosenIcons
.
Constructor
=
s
}(
jQuery
,
window
,
document
,
Math
);
/*!
* ====================================================
* ZUI - v0.9.0 - 2014-07-23
* https://github.com/easysoft/zui
* ZUI - v1.0.0 - 2014-07-24
* http://easysoft.github.io/zui/
* GitHub: https://github.com/easysoft/zui.git
* Copyright (c) 2014 Catouse@easysoft; Licensed GNU
* ====================================================
* Copyright (c) 2014 cnezsoft.com; Licensed MIT
*/
/* ChosenIcons */
...
...
assets/chosen/js/chosen.all.min.js
浏览文件 @
d5052a2a
/*!
* ====================================================
* ZUI - v0.9.0 - 2014-07-23
* https://github.com/easysoft/zui
* ZUI - v1.0.0 - 2014-07-24
* http://easysoft.github.io/zui/
* GitHub: https://github.com/easysoft/zui.git
* Copyright (c) 2014 Catouse@easysoft; Licensed GNU
* ====================================================
* Copyright (c) 2014 cnezsoft.com; Licensed MIT
*/
(
function
(){
var
a
,
b
,
c
,
d
,
e
,
f
=
{}.
hasOwnProperty
,
g
=
function
(
a
,
b
){
function
c
(){
this
.
constructor
=
a
}
for
(
var
d
in
b
)
f
.
call
(
b
,
d
)
&&
(
a
[
d
]
=
b
[
d
]);
return
c
.
prototype
=
b
.
prototype
,
a
.
prototype
=
new
c
,
a
.
__super__
=
b
.
prototype
,
a
};
d
=
function
(){
function
a
(){
this
.
options_index
=
0
,
this
.
parsed
=
[]}
return
a
.
prototype
.
add_node
=
function
(
a
){
return
"
OPTGROUP
"
===
a
.
nodeName
.
toUpperCase
()?
this
.
add_group
(
a
):
this
.
add_option
(
a
)},
a
.
prototype
.
add_group
=
function
(
a
){
var
b
,
c
,
d
,
e
,
f
,
g
;
for
(
b
=
this
.
parsed
.
length
,
this
.
parsed
.
push
({
array_index
:
b
,
group
:
!
0
,
label
:
this
.
escapeExpression
(
a
.
label
),
children
:
0
,
disabled
:
a
.
disabled
}),
f
=
a
.
childNodes
,
g
=
[],
d
=
0
,
e
=
f
.
length
;
e
>
d
;
d
++
)
c
=
f
[
d
],
g
.
push
(
this
.
add_option
(
c
,
b
,
a
.
disabled
));
return
g
},
a
.
prototype
.
add_option
=
function
(
a
,
b
,
c
){
return
"
OPTION
"
===
a
.
nodeName
.
toUpperCase
()?(
""
!==
a
.
text
?(
null
!=
b
&&
(
this
.
parsed
[
b
].
children
+=
1
),
this
.
parsed
.
push
({
array_index
:
this
.
parsed
.
length
,
options_index
:
this
.
options_index
,
value
:
a
.
value
,
text
:
a
.
text
,
html
:
a
.
innerHTML
,
selected
:
a
.
selected
,
disabled
:
c
===!
0
?
c
:
a
.
disabled
,
group_array_index
:
b
,
classes
:
a
.
className
,
style
:
a
.
style
.
cssText
})):
this
.
parsed
.
push
({
array_index
:
this
.
parsed
.
length
,
options_index
:
this
.
options_index
,
empty
:
!
0
}),
this
.
options_index
+=
1
):
void
0
},
a
.
prototype
.
escapeExpression
=
function
(
a
){
var
b
,
c
;
return
null
==
a
||
a
===!
1
?
""
:
/
[\&\<\>\"\'\`]
/
.
test
(
a
)?(
b
=
{
"
<
"
:
"
<
"
,
"
>
"
:
"
>
"
,
'
"
'
:
"
"
"
,
"
'
"
:
"
'
"
,
"
`
"
:
"
`
"
},
c
=
/&
(?!\w
+;
)
|
[\<\>\"\'\`]
/g
,
a
.
replace
(
c
,
function
(
a
){
return
b
[
a
]
||
"
&
"
})):
a
},
a
}(),
d
.
select_to_array
=
function
(
a
){
var
b
,
c
,
e
,
f
,
g
;
for
(
c
=
new
d
,
g
=
a
.
childNodes
,
e
=
0
,
f
=
g
.
length
;
f
>
e
;
e
++
)
b
=
g
[
e
],
c
.
add_node
(
b
);
return
c
.
parsed
},
b
=
function
(){
function
a
(
b
,
c
){
this
.
form_field
=
b
,
this
.
options
=
null
!=
c
?
c
:{},
a
.
browser_is_supported
()
&&
(
this
.
is_multiple
=
this
.
form_field
.
multiple
,
this
.
set_default_text
(),
this
.
set_default_values
(),
this
.
setup
(),
this
.
set_up_html
(),
this
.
register_observers
())}
return
a
.
prototype
.
set_default_values
=
function
(){
var
a
=
this
;
return
this
.
click_test_action
=
function
(
b
){
return
a
.
test_active_click
(
b
)},
this
.
activate_action
=
function
(
b
){
return
a
.
activate_field
(
b
)},
this
.
active_field
=!
1
,
this
.
mouse_on_container
=!
1
,
this
.
results_showing
=!
1
,
this
.
result_highlighted
=
null
,
this
.
allow_single_deselect
=
null
!=
this
.
options
.
allow_single_deselect
&&
null
!=
this
.
form_field
.
options
[
0
]
&&
""
===
this
.
form_field
.
options
[
0
].
text
?
this
.
options
.
allow_single_deselect
:
!
1
,
this
.
disable_search_threshold
=
this
.
options
.
disable_search_threshold
||
0
,
this
.
disable_search
=
this
.
options
.
disable_search
||!
1
,
this
.
enable_split_word_search
=
null
!=
this
.
options
.
enable_split_word_search
?
this
.
options
.
enable_split_word_search
:
!
0
,
this
.
group_search
=
null
!=
this
.
options
.
group_search
?
this
.
options
.
group_search
:
!
0
,
this
.
search_contains
=
this
.
options
.
search_contains
||!
1
,
this
.
single_backstroke_delete
=
null
!=
this
.
options
.
single_backstroke_delete
?
this
.
options
.
single_backstroke_delete
:
!
0
,
this
.
max_selected_options
=
this
.
options
.
max_selected_options
||
1
/
0
,
this
.
inherit_select_classes
=
this
.
options
.
inherit_select_classes
||!
1
,
this
.
display_selected_options
=
null
!=
this
.
options
.
display_selected_options
?
this
.
options
.
display_selected_options
:
!
0
,
this
.
display_disabled_options
=
null
!=
this
.
options
.
display_disabled_options
?
this
.
options
.
display_disabled_options
:
!
0
},
a
.
prototype
.
set_default_text
=
function
(){
return
this
.
default_text
=
this
.
form_field
.
getAttribute
(
"
data-placeholder
"
)?
this
.
form_field
.
getAttribute
(
"
data-placeholder
"
):
this
.
is_multiple
?
this
.
options
.
placeholder_text_multiple
||
this
.
options
.
placeholder_text
||
a
.
default_multiple_text
:
this
.
options
.
placeholder_text_single
||
this
.
options
.
placeholder_text
||
a
.
default_single_text
,
this
.
results_none_found
=
this
.
form_field
.
getAttribute
(
"
data-no_results_text
"
)
||
this
.
options
.
no_results_text
||
a
.
default_no_result_text
},
a
.
prototype
.
mouse_enter
=
function
(){
return
this
.
mouse_on_container
=!
0
},
a
.
prototype
.
mouse_leave
=
function
(){
return
this
.
mouse_on_container
=!
1
},
a
.
prototype
.
input_focus
=
function
(){
var
a
=
this
;
if
(
this
.
is_multiple
){
if
(
!
this
.
active_field
)
return
setTimeout
(
function
(){
return
a
.
container_mousedown
()},
50
)}
else
if
(
!
this
.
active_field
)
return
this
.
activate_field
()},
a
.
prototype
.
input_blur
=
function
(){
var
a
=
this
;
return
this
.
mouse_on_container
?
void
0
:(
this
.
active_field
=!
1
,
setTimeout
(
function
(){
return
a
.
blur_test
()},
100
))},
a
.
prototype
.
results_option_build
=
function
(
a
){
var
b
,
c
,
d
,
e
,
f
;
for
(
b
=
""
,
f
=
this
.
results_data
,
d
=
0
,
e
=
f
.
length
;
e
>
d
;
d
++
)
c
=
f
[
d
],
b
+=
c
.
group
?
this
.
result_add_group
(
c
):
this
.
result_add_option
(
c
),(
null
!=
a
?
a
.
first
:
void
0
)
&&
(
c
.
selected
&&
this
.
is_multiple
?
this
.
choice_build
(
c
):
c
.
selected
&&!
this
.
is_multiple
&&
this
.
single_set_selected_text
(
c
.
text
));
return
b
},
a
.
prototype
.
result_add_option
=
function
(
a
){
var
b
,
c
;
return
a
.
search_match
&&
this
.
include_option_in_results
(
a
)?(
b
=
[],
a
.
disabled
||
a
.
selected
&&
this
.
is_multiple
||
b
.
push
(
"
active-result
"
),
!
a
.
disabled
||
a
.
selected
&&
this
.
is_multiple
||
b
.
push
(
"
disabled-result
"
),
a
.
selected
&&
b
.
push
(
"
result-selected
"
),
null
!=
a
.
group_array_index
&&
b
.
push
(
"
group-option
"
),
""
!==
a
.
classes
&&
b
.
push
(
a
.
classes
),
c
=
document
.
createElement
(
"
li
"
),
c
.
className
=
b
.
join
(
"
"
),
c
.
style
.
cssText
=
a
.
style
,
c
.
setAttribute
(
"
data-option-array-index
"
,
a
.
array_index
),
c
.
innerHTML
=
a
.
search_text
,
this
.
outerHTML
(
c
)):
""
},
a
.
prototype
.
result_add_group
=
function
(
a
){
var
b
;
return
(
a
.
search_match
||
a
.
group_match
)
&&
a
.
active_options
>
0
?(
b
=
document
.
createElement
(
"
li
"
),
b
.
className
=
"
group-result
"
,
b
.
innerHTML
=
a
.
search_text
,
this
.
outerHTML
(
b
)):
""
},
a
.
prototype
.
results_update_field
=
function
(){
return
this
.
set_default_text
(),
this
.
is_multiple
||
this
.
results_reset_cleanup
(),
this
.
result_clear_highlight
(),
this
.
results_build
(),
this
.
results_showing
?
this
.
winnow_results
():
void
0
},
a
.
prototype
.
reset_single_select_options
=
function
(){
var
a
,
b
,
c
,
d
,
e
;
for
(
d
=
this
.
results_data
,
e
=
[],
b
=
0
,
c
=
d
.
length
;
c
>
b
;
b
++
)
a
=
d
[
b
],
e
.
push
(
a
.
selected
?
a
.
selected
=!
1
:
void
0
);
return
e
},
a
.
prototype
.
results_toggle
=
function
(){
return
this
.
results_showing
?
this
.
results_hide
():
this
.
results_show
()},
a
.
prototype
.
results_search
=
function
(){
return
this
.
results_showing
?
this
.
winnow_results
():
this
.
results_show
()},
a
.
prototype
.
winnow_results
=
function
(){
var
a
,
b
,
c
,
d
,
e
,
f
,
g
,
h
,
i
,
j
,
k
,
l
,
m
;
for
(
this
.
no_results_clear
(),
e
=
0
,
g
=
this
.
get_search_text
(),
a
=
g
.
replace
(
/
[
-[
\]
{}()*+?.,
\\
^$|#
\s]
/g
,
"
\\
$&
"
),
d
=
this
.
search_contains
?
""
:
"
^
"
,
c
=
new
RegExp
(
d
+
a
,
"
i
"
),
j
=
new
RegExp
(
a
,
"
i
"
),
m
=
this
.
results_data
,
k
=
0
,
l
=
m
.
length
;
l
>
k
;
k
++
)
b
=
m
[
k
],
b
.
search_match
=!
1
,
f
=
null
,
this
.
include_option_in_results
(
b
)
&&
(
b
.
group
&&
(
b
.
group_match
=!
1
,
b
.
active_options
=
0
),
null
!=
b
.
group_array_index
&&
this
.
results_data
[
b
.
group_array_index
]
&&
(
f
=
this
.
results_data
[
b
.
group_array_index
],
0
===
f
.
active_options
&&
f
.
search_match
&&
(
e
+=
1
),
f
.
active_options
+=
1
),(
!
b
.
group
||
this
.
group_search
)
&&
(
b
.
search_text
=
b
.
group
?
b
.
label
:
b
.
html
,
b
.
search_match
=
this
.
search_string_match
(
b
.
search_text
,
c
),
b
.
search_match
&&!
b
.
group
&&
(
e
+=
1
),
b
.
search_match
?(
g
.
length
&&
(
h
=
b
.
search_text
.
search
(
j
),
i
=
b
.
search_text
.
substr
(
0
,
h
+
g
.
length
)
+
"
</em>
"
+
b
.
search_text
.
substr
(
h
+
g
.
length
),
b
.
search_text
=
i
.
substr
(
0
,
h
)
+
"
<em>
"
+
i
.
substr
(
h
)),
null
!=
f
&&
(
f
.
group_match
=!
0
)):
null
!=
b
.
group_array_index
&&
this
.
results_data
[
b
.
group_array_index
].
search_match
&&
(
b
.
search_match
=!
0
)));
return
this
.
result_clear_highlight
(),
1
>
e
&&
g
.
length
?(
this
.
update_results_content
(
""
),
this
.
no_results
(
g
)):(
this
.
update_results_content
(
this
.
results_option_build
()),
this
.
winnow_results_set_highlight
())},
a
.
prototype
.
search_string_match
=
function
(
a
,
b
){
var
c
,
d
,
e
,
f
;
if
(
b
.
test
(
a
))
return
!
0
;
if
(
this
.
enable_split_word_search
&&
(
a
.
indexOf
(
"
"
)
>=
0
||
0
===
a
.
indexOf
(
"
[
"
))
&&
(
d
=
a
.
replace
(
/
\[
|
\]
/g
,
""
).
split
(
"
"
),
d
.
length
))
for
(
e
=
0
,
f
=
d
.
length
;
f
>
e
;
e
++
)
if
(
c
=
d
[
e
],
b
.
test
(
c
))
return
!
0
},
a
.
prototype
.
choices_count
=
function
(){
var
a
,
b
,
c
,
d
;
if
(
null
!=
this
.
selected_option_count
)
return
this
.
selected_option_count
;
for
(
this
.
selected_option_count
=
0
,
d
=
this
.
form_field
.
options
,
b
=
0
,
c
=
d
.
length
;
c
>
b
;
b
++
)
a
=
d
[
b
],
a
.
selected
&&
(
this
.
selected_option_count
+=
1
);
return
this
.
selected_option_count
},
a
.
prototype
.
choices_click
=
function
(
a
){
return
a
.
preventDefault
(),
this
.
results_showing
||
this
.
is_disabled
?
void
0
:
this
.
results_show
()},
a
.
prototype
.
keyup_checker
=
function
(
a
){
var
b
,
c
;
switch
(
b
=
null
!=
(
c
=
a
.
which
)?
c
:
a
.
keyCode
,
this
.
search_field_scale
(),
b
){
case
8
:
if
(
this
.
is_multiple
&&
this
.
backstroke_length
<
1
&&
this
.
choices_count
()
>
0
)
return
this
.
keydown_backstroke
();
if
(
!
this
.
pending_backstroke
)
return
this
.
result_clear_highlight
(),
this
.
results_search
();
break
;
case
13
:
if
(
a
.
preventDefault
(),
this
.
results_showing
)
return
this
.
result_select
(
a
);
break
;
case
27
:
return
this
.
results_showing
&&
this
.
results_hide
(),
!
0
;
case
9
:
case
38
:
case
40
:
case
16
:
case
91
:
case
17
:
break
;
default
:
return
this
.
results_search
()}},
a
.
prototype
.
clipboard_event_checker
=
function
(){
var
a
=
this
;
return
setTimeout
(
function
(){
return
a
.
results_search
()},
50
)},
a
.
prototype
.
container_width
=
function
(){
return
null
!=
this
.
options
.
width
?
this
.
options
.
width
:
""
+
this
.
form_field
.
offsetWidth
+
"
px
"
},
a
.
prototype
.
include_option_in_results
=
function
(
a
){
return
this
.
is_multiple
&&!
this
.
display_selected_options
&&
a
.
selected
?
!
1
:
!
this
.
display_disabled_options
&&
a
.
disabled
?
!
1
:
a
.
empty
?
!
1
:
!
0
},
a
.
prototype
.
search_results_touchstart
=
function
(
a
){
return
this
.
touch_started
=!
0
,
this
.
search_results_mouseover
(
a
)},
a
.
prototype
.
search_results_touchmove
=
function
(
a
){
return
this
.
touch_started
=!
1
,
this
.
search_results_mouseout
(
a
)},
a
.
prototype
.
search_results_touchend
=
function
(
a
){
return
this
.
touch_started
?
this
.
search_results_mouseup
(
a
):
void
0
},
a
.
prototype
.
outerHTML
=
function
(
a
){
var
b
;
return
a
.
outerHTML
?
a
.
outerHTML
:(
b
=
document
.
createElement
(
"
div
"
),
b
.
appendChild
(
a
),
b
.
innerHTML
)},
a
.
browser_is_supported
=
function
(){
return
"
Microsoft Internet Explorer
"
===
window
.
navigator
.
appName
?
document
.
documentMode
>=
8
:
/iP
(
od|hone
)
/i
.
test
(
window
.
navigator
.
userAgent
)?
!
1
:
/Android/i
.
test
(
window
.
navigator
.
userAgent
)
&&
/Mobile/i
.
test
(
window
.
navigator
.
userAgent
)?
!
1
:
!
0
},
a
.
default_multiple_text
=
"
Select Some Options
"
,
a
.
default_single_text
=
"
Select an Option
"
,
a
.
default_no_result_text
=
"
No results match
"
,
a
}(),
a
=
jQuery
,
a
.
fn
.
extend
({
chosen
:
function
(
d
){
return
b
.
browser_is_supported
()?
this
.
each
(
function
(){
var
b
,
e
;
b
=
a
(
this
),
e
=
b
.
data
(
"
chosen
"
),
"
destroy
"
===
d
&&
e
?
e
.
destroy
():
e
||
b
.
data
(
"
chosen
"
,
new
c
(
this
,
d
))}):
this
}}),
c
=
function
(
b
){
function
c
(){
return
e
=
c
.
__super__
.
constructor
.
apply
(
this
,
arguments
)}
return
g
(
c
,
b
),
c
.
prototype
.
setup
=
function
(){
return
this
.
form_field_jq
=
a
(
this
.
form_field
),
this
.
current_selectedIndex
=
this
.
form_field
.
selectedIndex
,
this
.
is_rtl
=
this
.
form_field_jq
.
hasClass
(
"
chosen-rtl
"
)},
c
.
prototype
.
set_up_html
=
function
(){
var
b
,
c
;
return
b
=
[
"
chosen-container
"
],
b
.
push
(
"
chosen-container-
"
+
(
this
.
is_multiple
?
"
multi
"
:
"
single
"
)),
this
.
inherit_select_classes
&&
this
.
form_field
.
className
&&
b
.
push
(
this
.
form_field
.
className
),
this
.
is_rtl
&&
b
.
push
(
"
chosen-rtl
"
),
c
=
{
"
class
"
:
b
.
join
(
"
"
),
style
:
"
width:
"
+
this
.
container_width
()
+
"
;
"
,
title
:
this
.
form_field
.
title
},
this
.
form_field
.
id
.
length
&&
(
c
.
id
=
this
.
form_field
.
id
.
replace
(
/
[^\w]
/g
,
"
_
"
)
+
"
_chosen
"
),
this
.
container
=
a
(
"
<div />
"
,
c
),
this
.
container
.
html
(
this
.
is_multiple
?
'
<ul class="chosen-choices"><li class="search-field"><input type="text" value="
'
+
this
.
default_text
+
'
" class="default" autocomplete="off" style="width:25px;" /></li></ul><div class="chosen-drop"><ul class="chosen-results"></ul></div>
'
:
'
<a class="chosen-single chosen-default" tabindex="-1"><span>
'
+
this
.
default_text
+
'
</span><div><b></b></div></a><div class="chosen-drop"><div class="chosen-search"><input type="text" autocomplete="off" /></div><ul class="chosen-results"></ul></div>
'
),
this
.
form_field_jq
.
hide
().
after
(
this
.
container
),
this
.
dropdown
=
this
.
container
.
find
(
"
div.chosen-drop
"
).
first
(),
this
.
search_field
=
this
.
container
.
find
(
"
input
"
).
first
(),
this
.
search_results
=
this
.
container
.
find
(
"
ul.chosen-results
"
).
first
(),
this
.
search_field_scale
(),
this
.
search_no_results
=
this
.
container
.
find
(
"
li.no-results
"
).
first
(),
this
.
is_multiple
?(
this
.
search_choices
=
this
.
container
.
find
(
"
ul.chosen-choices
"
).
first
(),
this
.
search_container
=
this
.
container
.
find
(
"
li.search-field
"
).
first
()):(
this
.
search_container
=
this
.
container
.
find
(
"
div.chosen-search
"
).
first
(),
this
.
selected_item
=
this
.
container
.
find
(
"
.chosen-single
"
).
first
()),
this
.
results_build
(),
this
.
set_tab_index
(),
this
.
set_label_behavior
(),
this
.
form_field_jq
.
trigger
(
"
chosen:ready
"
,{
chosen
:
this
})},
c
.
prototype
.
register_observers
=
function
(){
var
a
=
this
;
return
this
.
container
.
bind
(
"
mousedown.chosen
"
,
function
(
b
){
a
.
container_mousedown
(
b
)}),
this
.
container
.
bind
(
"
mouseup.chosen
"
,
function
(
b
){
a
.
container_mouseup
(
b
)}),
this
.
container
.
bind
(
"
mouseenter.chosen
"
,
function
(
b
){
a
.
mouse_enter
(
b
)}),
this
.
container
.
bind
(
"
mouseleave.chosen
"
,
function
(
b
){
a
.
mouse_leave
(
b
)}),
this
.
search_results
.
bind
(
"
mouseup.chosen
"
,
function
(
b
){
a
.
search_results_mouseup
(
b
)}),
this
.
search_results
.
bind
(
"
mouseover.chosen
"
,
function
(
b
){
a
.
search_results_mouseover
(
b
)}),
this
.
search_results
.
bind
(
"
mouseout.chosen
"
,
function
(
b
){
a
.
search_results_mouseout
(
b
)}),
this
.
search_results
.
bind
(
"
mousewheel.chosen DOMMouseScroll.chosen
"
,
function
(
b
){
a
.
search_results_mousewheel
(
b
)}),
this
.
search_results
.
bind
(
"
touchstart.chosen
"
,
function
(
b
){
a
.
search_results_touchstart
(
b
)}),
this
.
search_results
.
bind
(
"
touchmove.chosen
"
,
function
(
b
){
a
.
search_results_touchmove
(
b
)}),
this
.
search_results
.
bind
(
"
touchend.chosen
"
,
function
(
b
){
a
.
search_results_touchend
(
b
)}),
this
.
form_field_jq
.
bind
(
"
chosen:updated.chosen
"
,
function
(
b
){
a
.
results_update_field
(
b
)}),
this
.
form_field_jq
.
bind
(
"
chosen:activate.chosen
"
,
function
(
b
){
a
.
activate_field
(
b
)}),
this
.
form_field_jq
.
bind
(
"
chosen:open.chosen
"
,
function
(
b
){
a
.
container_mousedown
(
b
)}),
this
.
form_field_jq
.
bind
(
"
chosen:close.chosen
"
,
function
(
b
){
a
.
input_blur
(
b
)}),
this
.
search_field
.
bind
(
"
blur.chosen
"
,
function
(
b
){
a
.
input_blur
(
b
)}),
this
.
search_field
.
bind
(
"
keyup.chosen
"
,
function
(
b
){
a
.
keyup_checker
(
b
)}),
this
.
search_field
.
bind
(
"
keydown.chosen
"
,
function
(
b
){
a
.
keydown_checker
(
b
)}),
this
.
search_field
.
bind
(
"
focus.chosen
"
,
function
(
b
){
a
.
input_focus
(
b
)}),
this
.
search_field
.
bind
(
"
cut.chosen
"
,
function
(
b
){
a
.
clipboard_event_checker
(
b
)}),
this
.
search_field
.
bind
(
"
paste.chosen
"
,
function
(
b
){
a
.
clipboard_event_checker
(
b
)}),
this
.
is_multiple
?
this
.
search_choices
.
bind
(
"
click.chosen
"
,
function
(
b
){
a
.
choices_click
(
b
)}):
this
.
container
.
bind
(
"
click.chosen
"
,
function
(
a
){
a
.
preventDefault
()})},
c
.
prototype
.
destroy
=
function
(){
return
a
(
this
.
container
[
0
].
ownerDocument
).
unbind
(
"
click.chosen
"
,
this
.
click_test_action
),
this
.
search_field
[
0
].
tabIndex
&&
(
this
.
form_field_jq
[
0
].
tabIndex
=
this
.
search_field
[
0
].
tabIndex
),
this
.
container
.
remove
(),
this
.
form_field_jq
.
removeData
(
"
chosen
"
),
this
.
form_field_jq
.
show
()},
c
.
prototype
.
search_field_disabled
=
function
(){
return
this
.
is_disabled
=
this
.
form_field_jq
[
0
].
disabled
,
this
.
is_disabled
?(
this
.
container
.
addClass
(
"
chosen-disabled
"
),
this
.
search_field
[
0
].
disabled
=!
0
,
this
.
is_multiple
||
this
.
selected_item
.
unbind
(
"
focus.chosen
"
,
this
.
activate_action
),
this
.
close_field
()):(
this
.
container
.
removeClass
(
"
chosen-disabled
"
),
this
.
search_field
[
0
].
disabled
=!
1
,
this
.
is_multiple
?
void
0
:
this
.
selected_item
.
bind
(
"
focus.chosen
"
,
this
.
activate_action
))},
c
.
prototype
.
container_mousedown
=
function
(
b
){
return
this
.
is_disabled
||
(
b
&&
"
mousedown
"
===
b
.
type
&&!
this
.
results_showing
&&
b
.
preventDefault
(),
null
!=
b
&&
a
(
b
.
target
).
hasClass
(
"
search-choice-close
"
))?
void
0
:(
this
.
active_field
?
this
.
is_multiple
||!
b
||
a
(
b
.
target
)[
0
]
!==
this
.
selected_item
[
0
]
&&!
a
(
b
.
target
).
parents
(
"
a.chosen-single
"
).
length
||
(
b
.
preventDefault
(),
this
.
results_toggle
()):(
this
.
is_multiple
&&
this
.
search_field
.
val
(
""
),
a
(
this
.
container
[
0
].
ownerDocument
).
bind
(
"
click.chosen
"
,
this
.
click_test_action
),
this
.
results_show
()),
this
.
activate_field
())},
c
.
prototype
.
container_mouseup
=
function
(
a
){
return
"
ABBR
"
!==
a
.
target
.
nodeName
||
this
.
is_disabled
?
void
0
:
this
.
results_reset
(
a
)},
c
.
prototype
.
search_results_mousewheel
=
function
(
a
){
var
b
;
return
a
.
originalEvent
&&
(
b
=-
a
.
originalEvent
.
wheelDelta
||
a
.
originalEvent
.
detail
),
null
!=
b
?(
a
.
preventDefault
(),
"
DOMMouseScroll
"
===
a
.
type
&&
(
b
=
40
*
b
),
this
.
search_results
.
scrollTop
(
b
+
this
.
search_results
.
scrollTop
())):
void
0
},
c
.
prototype
.
blur_test
=
function
(){
return
!
this
.
active_field
&&
this
.
container
.
hasClass
(
"
chosen-container-active
"
)?
this
.
close_field
():
void
0
},
c
.
prototype
.
close_field
=
function
(){
return
a
(
this
.
container
[
0
].
ownerDocument
).
unbind
(
"
click.chosen
"
,
this
.
click_test_action
),
this
.
active_field
=!
1
,
this
.
results_hide
(),
this
.
container
.
removeClass
(
"
chosen-container-active
"
),
this
.
clear_backstroke
(),
this
.
show_search_field_default
(),
this
.
search_field_scale
()},
c
.
prototype
.
activate_field
=
function
(){
return
this
.
container
.
addClass
(
"
chosen-container-active
"
),
this
.
active_field
=!
0
,
this
.
search_field
.
val
(
this
.
search_field
.
val
()),
this
.
search_field
.
focus
()},
c
.
prototype
.
test_active_click
=
function
(
b
){
var
c
;
return
c
=
a
(
b
.
target
).
closest
(
"
.chosen-container
"
),
c
.
length
&&
this
.
container
[
0
]
===
c
[
0
]?
this
.
active_field
=!
0
:
this
.
close_field
()},
c
.
prototype
.
results_build
=
function
(){
return
this
.
parsing
=!
0
,
this
.
selected_option_count
=
null
,
this
.
results_data
=
d
.
select_to_array
(
this
.
form_field
),
this
.
is_multiple
?
this
.
search_choices
.
find
(
"
li.search-choice
"
).
remove
():
this
.
is_multiple
||
(
this
.
single_set_selected_text
(),
this
.
disable_search
||
this
.
form_field
.
options
.
length
<=
this
.
disable_search_threshold
?(
this
.
search_field
[
0
].
readOnly
=!
0
,
this
.
container
.
addClass
(
"
chosen-container-single-nosearch
"
)):(
this
.
search_field
[
0
].
readOnly
=!
1
,
this
.
container
.
removeClass
(
"
chosen-container-single-nosearch
"
))),
this
.
update_results_content
(
this
.
results_option_build
({
first
:
!
0
})),
this
.
search_field_disabled
(),
this
.
show_search_field_default
(),
this
.
search_field_scale
(),
this
.
parsing
=!
1
},
c
.
prototype
.
result_do_highlight
=
function
(
a
){
var
b
,
c
,
d
,
e
,
f
;
if
(
a
.
length
){
if
(
this
.
result_clear_highlight
(),
this
.
result_highlight
=
a
,
this
.
result_highlight
.
addClass
(
"
highlighted
"
),
d
=
parseInt
(
this
.
search_results
.
css
(
"
maxHeight
"
),
10
),
f
=
this
.
search_results
.
scrollTop
(),
e
=
d
+
f
,
c
=
this
.
result_highlight
.
position
().
top
+
this
.
search_results
.
scrollTop
(),
b
=
c
+
this
.
result_highlight
.
outerHeight
(),
b
>=
e
)
return
this
.
search_results
.
scrollTop
(
b
-
d
>
0
?
b
-
d
:
0
);
if
(
f
>
c
)
return
this
.
search_results
.
scrollTop
(
c
)}},
c
.
prototype
.
result_clear_highlight
=
function
(){
return
this
.
result_highlight
&&
this
.
result_highlight
.
removeClass
(
"
highlighted
"
),
this
.
result_highlight
=
null
},
c
.
prototype
.
results_show
=
function
(){
return
this
.
is_multiple
&&
this
.
max_selected_options
<=
this
.
choices_count
()?(
this
.
form_field_jq
.
trigger
(
"
chosen:maxselected
"
,{
chosen
:
this
}),
!
1
):(
this
.
container
.
addClass
(
"
chosen-with-drop
"
),
this
.
results_showing
=!
0
,
this
.
search_field
.
focus
(),
this
.
search_field
.
val
(
this
.
search_field
.
val
()),
this
.
winnow_results
(),
this
.
form_field_jq
.
trigger
(
"
chosen:showing_dropdown
"
,{
chosen
:
this
}))},
c
.
prototype
.
update_results_content
=
function
(
a
){
return
this
.
search_results
.
html
(
a
)},
c
.
prototype
.
results_hide
=
function
(){
return
this
.
results_showing
&&
(
this
.
result_clear_highlight
(),
this
.
container
.
removeClass
(
"
chosen-with-drop
"
),
this
.
form_field_jq
.
trigger
(
"
chosen:hiding_dropdown
"
,{
chosen
:
this
})),
this
.
results_showing
=!
1
},
c
.
prototype
.
set_tab_index
=
function
(){
var
a
;
return
this
.
form_field
.
tabIndex
?(
a
=
this
.
form_field
.
tabIndex
,
this
.
form_field
.
tabIndex
=-
1
,
this
.
search_field
[
0
].
tabIndex
=
a
):
void
0
},
c
.
prototype
.
set_label_behavior
=
function
(){
var
b
=
this
;
return
this
.
form_field_label
=
this
.
form_field_jq
.
parents
(
"
label
"
),
!
this
.
form_field_label
.
length
&&
this
.
form_field
.
id
.
length
&&
(
this
.
form_field_label
=
a
(
"
label[for='
"
+
this
.
form_field
.
id
+
"
']
"
)),
this
.
form_field_label
.
length
>
0
?
this
.
form_field_label
.
bind
(
"
click.chosen
"
,
function
(
a
){
return
b
.
is_multiple
?
b
.
container_mousedown
(
a
):
b
.
activate_field
()}):
void
0
},
c
.
prototype
.
show_search_field_default
=
function
(){
return
this
.
is_multiple
&&
this
.
choices_count
()
<
1
&&!
this
.
active_field
?(
this
.
search_field
.
val
(
this
.
default_text
),
this
.
search_field
.
addClass
(
"
default
"
)):(
this
.
search_field
.
val
(
""
),
this
.
search_field
.
removeClass
(
"
default
"
))},
c
.
prototype
.
search_results_mouseup
=
function
(
b
){
var
c
;
return
c
=
a
(
b
.
target
).
hasClass
(
"
active-result
"
)?
a
(
b
.
target
):
a
(
b
.
target
).
parents
(
"
.active-result
"
).
first
(),
c
.
length
?(
this
.
result_highlight
=
c
,
this
.
result_select
(
b
),
this
.
search_field
.
focus
()):
void
0
},
c
.
prototype
.
search_results_mouseover
=
function
(
b
){
var
c
;
return
c
=
a
(
b
.
target
).
hasClass
(
"
active-result
"
)?
a
(
b
.
target
):
a
(
b
.
target
).
parents
(
"
.active-result
"
).
first
(),
c
?
this
.
result_do_highlight
(
c
):
void
0
},
c
.
prototype
.
search_results_mouseout
=
function
(
b
){
return
a
(
b
.
target
).
hasClass
(
"
active-result
"
)?
this
.
result_clear_highlight
():
void
0
},
c
.
prototype
.
choice_build
=
function
(
b
){
var
c
,
d
,
e
=
this
;
return
c
=
a
(
"
<li />
"
,{
"
class
"
:
"
search-choice
"
}).
html
(
"
<span>
"
+
b
.
html
+
"
</span>
"
),
b
.
disabled
?
c
.
addClass
(
"
search-choice-disabled
"
):(
d
=
a
(
"
<a />
"
,{
"
class
"
:
"
search-choice-close
"
,
"
data-option-array-index
"
:
b
.
array_index
}),
d
.
bind
(
"
click.chosen
"
,
function
(
a
){
return
e
.
choice_destroy_link_click
(
a
)}),
c
.
append
(
d
)),
this
.
search_container
.
before
(
c
)},
c
.
prototype
.
choice_destroy_link_click
=
function
(
b
){
return
b
.
preventDefault
(),
b
.
stopPropagation
(),
this
.
is_disabled
?
void
0
:
this
.
choice_destroy
(
a
(
b
.
target
))},
c
.
prototype
.
choice_destroy
=
function
(
a
){
return
this
.
result_deselect
(
a
[
0
].
getAttribute
(
"
data-option-array-index
"
))?(
this
.
show_search_field_default
(),
this
.
is_multiple
&&
this
.
choices_count
()
>
0
&&
this
.
search_field
.
val
().
length
<
1
&&
this
.
results_hide
(),
a
.
parents
(
"
li
"
).
first
().
remove
(),
this
.
search_field_scale
()):
void
0
},
c
.
prototype
.
results_reset
=
function
(){
return
this
.
reset_single_select_options
(),
this
.
form_field
.
options
[
0
].
selected
=!
0
,
this
.
single_set_selected_text
(),
this
.
show_search_field_default
(),
this
.
results_reset_cleanup
(),
this
.
form_field_jq
.
trigger
(
"
change
"
),
this
.
active_field
?
this
.
results_hide
():
void
0
},
c
.
prototype
.
results_reset_cleanup
=
function
(){
return
this
.
current_selectedIndex
=
this
.
form_field
.
selectedIndex
,
this
.
selected_item
.
find
(
"
abbr
"
).
remove
()},
c
.
prototype
.
result_select
=
function
(
a
){
var
b
,
c
;
return
this
.
result_highlight
?(
b
=
this
.
result_highlight
,
this
.
result_clear_highlight
(),
this
.
is_multiple
&&
this
.
max_selected_options
<=
this
.
choices_count
()?(
this
.
form_field_jq
.
trigger
(
"
chosen:maxselected
"
,{
chosen
:
this
}),
!
1
):(
this
.
is_multiple
?
b
.
removeClass
(
"
active-result
"
):
this
.
reset_single_select_options
(),
c
=
this
.
results_data
[
b
[
0
].
getAttribute
(
"
data-option-array-index
"
)],
c
.
selected
=!
0
,
this
.
form_field
.
options
[
c
.
options_index
].
selected
=!
0
,
this
.
selected_option_count
=
null
,
this
.
is_multiple
?
this
.
choice_build
(
c
):
this
.
single_set_selected_text
(
c
.
text
),(
a
.
metaKey
||
a
.
ctrlKey
)
&&
this
.
is_multiple
||
this
.
results_hide
(),
this
.
search_field
.
val
(
""
),(
this
.
is_multiple
||
this
.
form_field
.
selectedIndex
!==
this
.
current_selectedIndex
)
&&
this
.
form_field_jq
.
trigger
(
"
change
"
,{
selected
:
this
.
form_field
.
options
[
c
.
options_index
].
value
}),
this
.
current_selectedIndex
=
this
.
form_field
.
selectedIndex
,
this
.
search_field_scale
())):
void
0
},
c
.
prototype
.
single_set_selected_text
=
function
(
a
){
return
null
==
a
&&
(
a
=
this
.
default_text
),
a
===
this
.
default_text
?
this
.
selected_item
.
addClass
(
"
chosen-default
"
):(
this
.
single_deselect_control_build
(),
this
.
selected_item
.
removeClass
(
"
chosen-default
"
)),
this
.
selected_item
.
find
(
"
span
"
).
text
(
a
)},
c
.
prototype
.
result_deselect
=
function
(
a
){
var
b
;
return
b
=
this
.
results_data
[
a
],
this
.
form_field
.
options
[
b
.
options_index
].
disabled
?
!
1
:(
b
.
selected
=!
1
,
this
.
form_field
.
options
[
b
.
options_index
].
selected
=!
1
,
this
.
selected_option_count
=
null
,
this
.
result_clear_highlight
(),
this
.
results_showing
&&
this
.
winnow_results
(),
this
.
form_field_jq
.
trigger
(
"
change
"
,{
deselected
:
this
.
form_field
.
options
[
b
.
options_index
].
value
}),
this
.
search_field_scale
(),
!
0
)},
c
.
prototype
.
single_deselect_control_build
=
function
(){
return
this
.
allow_single_deselect
?(
this
.
selected_item
.
find
(
"
abbr
"
).
length
||
this
.
selected_item
.
find
(
"
span
"
).
first
().
after
(
'
<abbr class="search-choice-close"></abbr>
'
),
this
.
selected_item
.
addClass
(
"
chosen-single-with-deselect
"
)):
void
0
},
c
.
prototype
.
get_search_text
=
function
(){
return
this
.
search_field
.
val
()
===
this
.
default_text
?
""
:
a
(
"
<div/>
"
).
text
(
a
.
trim
(
this
.
search_field
.
val
())).
html
()},
c
.
prototype
.
winnow_results_set_highlight
=
function
(){
var
a
,
b
;
return
b
=
this
.
is_multiple
?[]:
this
.
search_results
.
find
(
"
.result-selected.active-result
"
),
a
=
b
.
length
?
b
.
first
():
this
.
search_results
.
find
(
"
.active-result
"
).
first
(),
null
!=
a
?
this
.
result_do_highlight
(
a
):
void
0
},
c
.
prototype
.
no_results
=
function
(
b
){
var
c
;
return
c
=
a
(
'
<li class="no-results">
'
+
this
.
results_none_found
+
'
"<span></span>"</li>
'
),
c
.
find
(
"
span
"
).
first
().
html
(
b
),
this
.
search_results
.
append
(
c
),
this
.
form_field_jq
.
trigger
(
"
chosen:no_results
"
,{
chosen
:
this
})},
c
.
prototype
.
no_results_clear
=
function
(){
return
this
.
search_results
.
find
(
"
.no-results
"
).
remove
()},
c
.
prototype
.
keydown_arrow
=
function
(){
var
a
;
return
this
.
results_showing
&&
this
.
result_highlight
?(
a
=
this
.
result_highlight
.
nextAll
(
"
li.active-result
"
).
first
())?
this
.
result_do_highlight
(
a
):
void
0
:
this
.
results_show
()},
c
.
prototype
.
keyup_arrow
=
function
(){
var
a
;
return
this
.
results_showing
||
this
.
is_multiple
?
this
.
result_highlight
?(
a
=
this
.
result_highlight
.
prevAll
(
"
li.active-result
"
),
a
.
length
?
this
.
result_do_highlight
(
a
.
first
()):(
this
.
choices_count
()
>
0
&&
this
.
results_hide
(),
this
.
result_clear_highlight
())):
void
0
:
this
.
results_show
()},
c
.
prototype
.
keydown_backstroke
=
function
(){
var
a
;
return
this
.
pending_backstroke
?(
this
.
choice_destroy
(
this
.
pending_backstroke
.
find
(
"
a
"
).
first
()),
this
.
clear_backstroke
()):(
a
=
this
.
search_container
.
siblings
(
"
li.search-choice
"
).
last
(),
a
.
length
&&!
a
.
hasClass
(
"
search-choice-disabled
"
)?(
this
.
pending_backstroke
=
a
,
this
.
single_backstroke_delete
?
this
.
keydown_backstroke
():
this
.
pending_backstroke
.
addClass
(
"
search-choice-focus
"
)):
void
0
)},
c
.
prototype
.
clear_backstroke
=
function
(){
return
this
.
pending_backstroke
&&
this
.
pending_backstroke
.
removeClass
(
"
search-choice-focus
"
),
this
.
pending_backstroke
=
null
},
c
.
prototype
.
keydown_checker
=
function
(
a
){
var
b
,
c
;
switch
(
b
=
null
!=
(
c
=
a
.
which
)?
c
:
a
.
keyCode
,
this
.
search_field_scale
(),
8
!==
b
&&
this
.
pending_backstroke
&&
this
.
clear_backstroke
(),
b
){
case
8
:
this
.
backstroke_length
=
this
.
search_field
.
val
().
length
;
break
;
case
9
:
this
.
results_showing
&&!
this
.
is_multiple
&&
this
.
result_select
(
a
),
this
.
mouse_on_container
=!
1
;
break
;
case
13
:
a
.
preventDefault
();
break
;
case
38
:
a
.
preventDefault
(),
this
.
keyup_arrow
();
break
;
case
40
:
a
.
preventDefault
(),
this
.
keydown_arrow
()}},
c
.
prototype
.
search_field_scale
=
function
(){
var
b
,
c
,
d
,
e
,
f
,
g
,
h
,
i
,
j
;
if
(
this
.
is_multiple
){
for
(
d
=
0
,
h
=
0
,
f
=
"
position:absolute; left: -1000px; top: -1000px; display:none;
"
,
g
=
[
"
font-size
"
,
"
font-style
"
,
"
font-weight
"
,
"
font-family
"
,
"
line-height
"
,
"
text-transform
"
,
"
letter-spacing
"
],
i
=
0
,
j
=
g
.
length
;
j
>
i
;
i
++
)
e
=
g
[
i
],
f
+=
e
+
"
:
"
+
this
.
search_field
.
css
(
e
)
+
"
;
"
;
return
b
=
a
(
"
<div />
"
,{
style
:
f
}),
b
.
text
(
this
.
search_field
.
val
()),
a
(
"
body
"
).
append
(
b
),
h
=
b
.
width
()
+
25
,
b
.
remove
(),
c
=
this
.
container
.
outerWidth
(),
h
>
c
-
10
&&
(
h
=
c
-
10
),
this
.
search_field
.
css
({
width
:
h
+
"
px
"
})}},
c
}(
b
)}).
call
(
this
),
+
function
(
a
,
b
,
c
,
d
){
"
use strict
"
;
var
e
=
function
(
b
,
c
){
this
.
$
=
a
(
b
),
this
.
options
=
this
.
getOptions
(
c
),
this
.
lang
=
e
.
LANGS
[
this
.
options
.
lang
],
this
.
id
=
"
chosen-icons-
"
+
parseInt
(
1
e10
*
d
.
random
()
+
1
),
this
.
init
()};
e
.
DEFAULTS
=
{
canEmpty
:
!
0
,
lang
:
"
zh-cn
"
,
commonIcons
:[
"
heart
"
,
"
user
"
,
"
group
"
,
"
list-ul
"
,
"
th
"
,
"
star
"
,
"
star-empty
"
,
"
search
"
,
"
envelope
"
,
"
dashboard
"
,
"
sitemap
"
,
"
umbrella
"
,
"
lightbulb
"
,
"
envelope-alt
"
,
"
cog
"
,
"
ok
"
,
"
remove
"
,
"
home
"
,
"
time
"
,
"
flag
"
,
"
flag-alt
"
,
"
flag-checkered
"
,
"
qrcode
"
,
"
tag
"
,
"
tags
"
,
"
book
"
,
"
bookmark
"
,
"
bookmark-empty
"
,
"
print
"
,
"
camera
"
,
"
picture
"
,
"
globe
"
,
"
map-marker
"
,
"
edit
"
,
"
edit-sign
"
,
"
play
"
,
"
stop
"
,
"
plus-sign
"
,
"
minus-sign
"
,
"
remove-sign
"
,
"
ok-sign
"
,
"
check-sign
"
,
"
question-sign
"
,
"
info-sign
"
,
"
exclamation-sign
"
,
"
plus
"
,
"
plus-sign
"
,
"
minus
"
,
"
minus-sign
"
,
"
asterisk
"
,
"
calendar
"
,
"
calendar-empty
"
,
"
comment
"
,
"
comment-alt
"
,
"
comments
"
,
"
comments-alt
"
,
"
folder-close
"
,
"
folder-open
"
,
"
folder-close-alt
"
,
"
folder-open-alt
"
,
"
gears
"
,
"
thumbs-up-alt
"
,
"
thumbs-up
"
,
"
thumbs-down-alt
"
,
"
thumbs-down
"
,
"
pushpin
"
,
"
building
"
,
"
phone
"
,
"
rss
"
,
"
rss-sign
"
,
"
bullhorn
"
,
"
bell
"
,
"
bell-alt
"
,
"
certificate
"
,
"
wrench
"
,
"
tasks
"
,
"
cloud
"
,
"
beaker
"
,
"
magic
"
,
"
smile
"
,
"
frown
"
,
"
meh
"
,
"
code
"
,
"
location-arrow
"
],
webIcons
:[
"
share
"
,
"
pencil
"
,
"
trash
"
,
"
file-alt
"
,
"
file
"
,
"
file-text
"
,
"
download-alt
"
,
"
upload-alt
"
,
"
inbox
"
,
"
repeat
"
,
"
rotate-left
"
,
"
refresh
"
,
"
lock
"
,
"
unlock
"
,
"
check
"
,
"
check-empty
"
,
"
eye-open
"
,
"
eye-close
"
,
"
key
"
,
"
signin
"
,
"
signout
"
,
"
external-link
"
,
"
external-link-sign
"
,
"
link
"
,
"
reorder
"
,
"
quote-left
"
,
"
quote-right
"
,
"
spinner
"
,
"
reply
"
,
"
question
"
,
"
info
"
,
"
exclamation
"
,
"
archive
"
,
"
collapse
"
,
"
collapse-top
"
],
editorIcons
:[
"
table
"
,
"
copy
"
,
"
paperclip
"
,
"
save
"
,
"
list-ol
"
,
"
paste
"
,
"
keyboard
"
,
"
crop
"
,
"
unlink
"
,
"
sort-by-alphabet
"
,
"
sort-by-alphabet-alt
"
,
"
sort-by-attributes
"
,
"
sort-by-attributes-alt
"
,
"
sort-by-order
"
,
"
sort-by-order-alt
"
],
directionalIcons
:[
"
chevron-left
"
,
"
chevron-right
"
,
"
chevron-down
"
,
"
chevron-up
"
,
"
arrow-left
"
,
"
arrow-right
"
,
"
arrow-down
"
,
"
arrow-up
"
,
"
hand-right
"
,
"
hand-left
"
,
"
hand-up
"
,
"
hand-down
"
,
"
circle-arrow-left
"
,
"
circle-arrow-right
"
,
"
circle-arrow-up
"
,
"
circle-arrow-down
"
,
"
double-angle-left
"
,
"
double-angle-right
"
,
"
double-angle-down
"
,
"
double-angle-up
"
,
"
angle-left
"
,
"
angle-right
"
,
"
angle-down
"
,
"
angle-up
"
,
"
long-arrow-left
"
,
"
long-arrow-right
"
,
"
long-arrow-down
"
,
"
long-arrow-up
"
,
"
caret-left
"
,
"
caret-right
"
,
"
caret-down
"
,
"
caret-up
"
],
otherIcons
:[
"
desktop
"
,
"
laptop
"
,
"
tablet
"
,
"
mobile-phone
"
,
"
github
"
,
"
building
"
,
"
yen
"
,
"
cny
"
,
"
firefox
"
,
"
ie
"
,
"
opera
"
,
"
qq
"
,
"
lemon
"
,
"
sign-blank
"
,
"
circle
"
,
"
circle-blank
"
,
"
terminal
"
,
"
html5
"
,
"
female
"
,
"
male
"
,
"
andriod
"
,
"
apple
"
,
"
windows
"
,
"
weibo
"
,
"
renren
"
,
"
bug
"
,
"
moon
"
,
"
sun
"
]},
e
.
LANGS
=
{},
e
.
LANGS
[
"
zh-cn
"
]
=
{
commonIcons
:
"
常用图标
"
,
webIcons
:
"
Web 图标
"
,
editorIcons
:
"
编辑器图标
"
,
directionalIcons
:
"
箭头总汇
"
,
otherIcons
:
"
其他图标
"
},
e
.
LANGS
.
en
=
{
commonIcons
:
"
Common Icons
"
,
webIcons
:
"
Web Icons
"
,
editorIcons
:
"
Editor Icons
"
,
directionalIcons
:
"
Directional Icons
"
,
otherIcons
:
"
Other Icons
"
},
e
.
LANGS
[
"
zh-tw
"
]
=
{
commonIcons
:
"
常用圖標
"
,
webIcons
:
"
Web 圖標
"
,
editorIcons
:
"
編輯器圖標
"
,
directionalIcons
:
"
箭頭總匯
"
,
otherIcons
:
"
其他圖標
"
},
e
.
prototype
.
getOptions
=
function
(
b
){
return
b
=
a
.
extend
({},
e
.
DEFAULTS
,
this
.
$
.
data
(),
b
)},
e
.
prototype
.
init
=
function
(){
var
b
=
this
.
$
.
addClass
(
"
chosen-icons
"
).
addClass
(
this
.
id
);
b
.
empty
(),
this
.
options
.
canEmpty
&&
b
.
append
(
this
.
getOptionHtml
()),
b
.
append
(
this
.
getgroupHtml
(
"
commonIcons
"
)),
b
.
append
(
this
.
getgroupHtml
(
"
webIcons
"
)),
b
.
append
(
this
.
getgroupHtml
(
"
editorIcons
"
)),
b
.
append
(
this
.
getgroupHtml
(
"
directionalIcons
"
)),
b
.
append
(
this
.
getgroupHtml
(
"
otherIcons
"
)),
b
.
chosen
({
placeholder_text
:
"
"
,
disable_search
:
!
0
,
width
:
"
100%
"
,
inherit_select_classes
:
!
0
});
var
c
=
"
.chosen-container.
"
+
this
.
id
;
b
.
on
(
"
chosen:showing_dropdown
"
,
function
(){
a
(
c
+
"
.chosen-results .group-option
"
).
each
(
function
(){
var
b
=
a
(
this
).
addClass
(
"
icon
"
),
c
=
b
.
text
();
b
.
html
(
'
<i class="
'
+
c
+
'
" title="
'
+
c
+
'
"></i>
'
)})}).
change
(
function
(){
a
(
c
+
"
.chosen-single > span
"
);
var
b
=
a
(
this
).
val
();
a
(
c
+
"
.chosen-single > span
"
).
html
(
'
<i class="
'
+
b
+
'
"></i>
'
+
b
)});
var
d
=
b
.
data
(
"
value
"
);
d
&&
b
.
val
(
d
).
change
()},
e
.
prototype
.
getgroupHtml
=
function
(
a
){
var
b
=
this
.
options
[
a
],
c
=
'
<optgroup label="
'
+
this
.
lang
[
a
]
+
'
">
'
;
for
(
var
d
in
b
)
c
+=
this
.
getOptionHtml
(
b
[
d
]);
return
c
+
"
</optgroup>
"
},
e
.
prototype
.
getOptionHtml
=
function
(
a
){
return
a
=
a
&&
a
.
length
>
0
?
"
icon-
"
+
a
:
""
,
'
<option value="
'
+
a
+
'
">
'
+
a
+
"
</option>
"
},
a
.
fn
.
chosenIcons
=
function
(
b
){
return
this
.
each
(
function
(){
var
c
=
a
(
this
),
d
=
c
.
data
(
"
zui.chosenIcons
"
),
f
=
"
object
"
==
typeof
b
&&
b
;
d
||
c
.
data
(
"
zui.chosenIcons
"
,
d
=
new
e
(
this
,
f
)),
"
string
"
==
typeof
b
&&
d
[
b
]()})},
a
.
fn
.
chosenIcons
.
Constructor
=
e
}(
jQuery
,
window
,
document
,
Math
),
+
function
(
a
,
b
,
c
,
d
){
"
use strict
"
;
var
e
=
function
(
b
,
c
){
this
.
$
=
a
(
b
),
this
.
options
=
this
.
getOptions
(
c
),
this
.
lang
=
e
.
LANGS
[
this
.
options
.
lang
],
this
.
id
=
"
chosen-icons-
"
+
parseInt
(
1
e10
*
d
.
random
()
+
1
),
this
.
init
()};
e
.
DEFAULTS
=
{
canEmpty
:
!
0
,
lang
:
"
zh-cn
"
,
commonIcons
:[
"
heart
"
,
"
user
"
,
"
group
"
,
"
list-ul
"
,
"
th
"
,
"
th-large
"
,
"
star
"
,
"
star-empty
"
,
"
search
"
,
"
envelope
"
,
"
dashboard
"
,
"
sitemap
"
,
"
umbrella
"
,
"
lightbulb
"
,
"
envelope-alt
"
,
"
cog
"
,
"
ok
"
,
"
remove
"
,
"
home
"
,
"
time
"
,
"
flag
"
,
"
flag-alt
"
,
"
flag-checkered
"
,
"
qrcode
"
,
"
tag
"
,
"
tags
"
,
"
book
"
,
"
bookmark
"
,
"
bookmark-empty
"
,
"
print
"
,
"
camera
"
,
"
picture
"
,
"
globe
"
,
"
map-marker
"
,
"
edit
"
,
"
edit-sign
"
,
"
play
"
,
"
stop
"
,
"
plus-sign
"
,
"
minus-sign
"
,
"
remove-sign
"
,
"
ok-sign
"
,
"
check-sign
"
,
"
question-sign
"
,
"
info-sign
"
,
"
exclamation-sign
"
,
"
plus
"
,
"
plus-sign
"
,
"
minus
"
,
"
minus-sign
"
,
"
asterisk
"
,
"
calendar
"
,
"
calendar-empty
"
,
"
comment
"
,
"
comment-alt
"
,
"
comments
"
,
"
comments-alt
"
,
"
folder-close
"
,
"
folder-open
"
,
"
folder-close-alt
"
,
"
folder-open-alt
"
,
"
thumbs-up
"
,
"
thumbs-down
"
,
"
pushpin
"
,
"
building
"
,
"
phone
"
,
"
rss
"
,
"
rss-sign
"
,
"
bullhorn
"
,
"
bell
"
,
"
bell-alt
"
,
"
certificate
"
,
"
wrench
"
,
"
tasks
"
,
"
cloud
"
,
"
beaker
"
,
"
magic
"
,
"
smile
"
,
"
frown
"
,
"
meh
"
,
"
code
"
,
"
location-arrow
"
],
webIcons
:[
"
share
"
,
"
pencil
"
,
"
trash
"
,
"
file-alt
"
,
"
file
"
,
"
file-text
"
,
"
download-alt
"
,
"
upload-alt
"
,
"
inbox
"
,
"
repeat
"
,
"
refresh
"
,
"
lock
"
,
"
check
"
,
"
check-empty
"
,
"
eye-open
"
,
"
eye-close
"
,
"
key
"
,
"
signin
"
,
"
signout
"
,
"
external-link
"
,
"
external-link-sign
"
,
"
link
"
,
"
reorder
"
,
"
quote-left
"
,
"
quote-right
"
,
"
spinner
"
,
"
reply
"
,
"
question
"
,
"
info
"
,
"
archive
"
,
"
collapse
"
,
"
collapse-top
"
],
editorIcons
:[
"
table
"
,
"
copy
"
,
"
save
"
,
"
list-ol
"
,
"
paste
"
,
"
keyboard
"
,
"
paper-clip
"
,
"
crop
"
,
"
unlink
"
,
"
sort-by-alphabet
"
,
"
sort-by-alphabet-alt
"
,
"
sort-by-attributes
"
,
"
sort-by-attributes-alt
"
,
"
sort-by-order
"
,
"
sort-by-order-alt
"
],
directionalIcons
:[
"
chevron-left
"
,
"
chevron-right
"
,
"
chevron-down
"
,
"
chevron-up
"
,
"
arrow-left
"
,
"
arrow-right
"
,
"
arrow-down
"
,
"
arrow-up
"
,
"
hand-right
"
,
"
hand-left
"
,
"
hand-up
"
,
"
hand-down
"
,
"
circle-arrow-left
"
,
"
circle-arrow-right
"
,
"
circle-arrow-up
"
,
"
circle-arrow-down
"
,
"
double-angle-left
"
,
"
double-angle-right
"
,
"
double-angle-down
"
,
"
double-angle-up
"
,
"
angle-left
"
,
"
angle-right
"
,
"
angle-down
"
,
"
angle-up
"
,
"
long-arrow-left
"
,
"
long-arrow-right
"
,
"
long-arrow-down
"
,
"
long-arrow-up
"
,
"
caret-left
"
,
"
caret-right
"
,
"
caret-down
"
,
"
caret-up
"
],
otherIcons
:[
"
desktop
"
,
"
laptop
"
,
"
tablet
"
,
"
mobile
"
,
"
building
"
,
"
firefox
"
,
"
ie
"
,
"
opera
"
,
"
qq
"
,
"
lemon
"
,
"
sign-blank
"
,
"
circle
"
,
"
circle-blank
"
,
"
terminal
"
,
"
html5
"
,
"
android
"
,
"
apple
"
,
"
windows
"
,
"
weibo
"
,
"
renren
"
,
"
bug
"
,
"
moon
"
,
"
sun
"
]},
e
.
LANGS
=
{},
e
.
LANGS
[
"
zh-cn
"
]
=
{
emptyIcon
:
"
[没有图标]
"
,
commonIcons
:
"
常用图标
"
,
webIcons
:
"
Web 图标
"
,
editorIcons
:
"
编辑器图标
"
,
directionalIcons
:
"
箭头总汇
"
,
otherIcons
:
"
其他图标
"
},
e
.
LANGS
.
en
=
{
emptyIcon
:
"
[No Icon]
"
,
commonIcons
:
"
Common Icons
"
,
webIcons
:
"
Web Icons
"
,
editorIcons
:
"
Editor Icons
"
,
directionalIcons
:
"
Directional Icons
"
,
otherIcons
:
"
Other Icons
"
},
e
.
LANGS
[
"
zh-tw
"
]
=
{
emptyIcon
:
"
[沒有圖標]
"
,
commonIcons
:
"
常用圖標
"
,
webIcons
:
"
Web 圖標
"
,
editorIcons
:
"
編輯器圖標
"
,
directionalIcons
:
"
箭頭總匯
"
,
otherIcons
:
"
其他圖標
"
},
e
.
prototype
.
getOptions
=
function
(
b
){
return
b
=
a
.
extend
({},
e
.
DEFAULTS
,
this
.
$
.
data
(),
b
)
...
...
assets/chosen/js/chosen.icons.js
浏览文件 @
d5052a2a
/*!
* ====================================================
* ZUI - v0.9.0 - 2014-07-23
* https://github.com/easysoft/zui
* ZUI - v1.0.0 - 2014-07-24
* http://easysoft.github.io/zui/
* GitHub: https://github.com/easysoft/zui.git
* Copyright (c) 2014 Catouse@easysoft; Licensed GNU
* ====================================================
* Copyright (c) 2014 cnezsoft.com; Licensed MIT
*/
/* ChosenIcons */
...
...
assets/chosen/js/chosen.icons.min.js
浏览文件 @
d5052a2a
/*!
* ====================================================
* ZUI - v0.9.0 - 2014-07-23
* https://github.com/easysoft/zui
* ZUI - v1.0.0 - 2014-07-24
* http://easysoft.github.io/zui/
* GitHub: https://github.com/easysoft/zui.git
* Copyright (c) 2014 Catouse@easysoft; Licensed GNU
* ====================================================
* Copyright (c) 2014 cnezsoft.com; Licensed MIT
*/
+
function
(
a
,
b
,
c
,
d
){
"
use strict
"
;
var
e
=
function
(
b
,
c
){
this
.
$
=
a
(
b
),
this
.
options
=
this
.
getOptions
(
c
),
this
.
lang
=
e
.
LANGS
[
this
.
options
.
lang
],
this
.
id
=
"
chosen-icons-
"
+
parseInt
(
1
e10
*
d
.
random
()
+
1
),
this
.
init
()};
e
.
DEFAULTS
=
{
canEmpty
:
!
0
,
lang
:
"
zh-cn
"
,
commonIcons
:[
"
heart
"
,
"
user
"
,
"
group
"
,
"
list-ul
"
,
"
th
"
,
"
th-large
"
,
"
star
"
,
"
star-empty
"
,
"
search
"
,
"
envelope
"
,
"
dashboard
"
,
"
sitemap
"
,
"
umbrella
"
,
"
lightbulb
"
,
"
envelope-alt
"
,
"
cog
"
,
"
ok
"
,
"
remove
"
,
"
home
"
,
"
time
"
,
"
flag
"
,
"
flag-alt
"
,
"
flag-checkered
"
,
"
qrcode
"
,
"
tag
"
,
"
tags
"
,
"
book
"
,
"
bookmark
"
,
"
bookmark-empty
"
,
"
print
"
,
"
camera
"
,
"
picture
"
,
"
globe
"
,
"
map-marker
"
,
"
edit
"
,
"
edit-sign
"
,
"
play
"
,
"
stop
"
,
"
plus-sign
"
,
"
minus-sign
"
,
"
remove-sign
"
,
"
ok-sign
"
,
"
check-sign
"
,
"
question-sign
"
,
"
info-sign
"
,
"
exclamation-sign
"
,
"
plus
"
,
"
plus-sign
"
,
"
minus
"
,
"
minus-sign
"
,
"
asterisk
"
,
"
calendar
"
,
"
calendar-empty
"
,
"
comment
"
,
"
comment-alt
"
,
"
comments
"
,
"
comments-alt
"
,
"
folder-close
"
,
"
folder-open
"
,
"
folder-close-alt
"
,
"
folder-open-alt
"
,
"
thumbs-up
"
,
"
thumbs-down
"
,
"
pushpin
"
,
"
building
"
,
"
phone
"
,
"
rss
"
,
"
rss-sign
"
,
"
bullhorn
"
,
"
bell
"
,
"
bell-alt
"
,
"
certificate
"
,
"
wrench
"
,
"
tasks
"
,
"
cloud
"
,
"
beaker
"
,
"
magic
"
,
"
smile
"
,
"
frown
"
,
"
meh
"
,
"
code
"
,
"
location-arrow
"
],
webIcons
:[
"
share
"
,
"
pencil
"
,
"
trash
"
,
"
file-alt
"
,
"
file
"
,
"
file-text
"
,
"
download-alt
"
,
"
upload-alt
"
,
"
inbox
"
,
"
repeat
"
,
"
refresh
"
,
"
lock
"
,
"
check
"
,
"
check-empty
"
,
"
eye-open
"
,
"
eye-close
"
,
"
key
"
,
"
signin
"
,
"
signout
"
,
"
external-link
"
,
"
external-link-sign
"
,
"
link
"
,
"
reorder
"
,
"
quote-left
"
,
"
quote-right
"
,
"
spinner
"
,
"
reply
"
,
"
question
"
,
"
info
"
,
"
archive
"
,
"
collapse
"
,
"
collapse-top
"
],
editorIcons
:[
"
table
"
,
"
copy
"
,
"
save
"
,
"
list-ol
"
,
"
paste
"
,
"
keyboard
"
,
"
paper-clip
"
,
"
crop
"
,
"
unlink
"
,
"
sort-by-alphabet
"
,
"
sort-by-alphabet-alt
"
,
"
sort-by-attributes
"
,
"
sort-by-attributes-alt
"
,
"
sort-by-order
"
,
"
sort-by-order-alt
"
],
directionalIcons
:[
"
chevron-left
"
,
"
chevron-right
"
,
"
chevron-down
"
,
"
chevron-up
"
,
"
arrow-left
"
,
"
arrow-right
"
,
"
arrow-down
"
,
"
arrow-up
"
,
"
hand-right
"
,
"
hand-left
"
,
"
hand-up
"
,
"
hand-down
"
,
"
circle-arrow-left
"
,
"
circle-arrow-right
"
,
"
circle-arrow-up
"
,
"
circle-arrow-down
"
,
"
double-angle-left
"
,
"
double-angle-right
"
,
"
double-angle-down
"
,
"
double-angle-up
"
,
"
angle-left
"
,
"
angle-right
"
,
"
angle-down
"
,
"
angle-up
"
,
"
long-arrow-left
"
,
"
long-arrow-right
"
,
"
long-arrow-down
"
,
"
long-arrow-up
"
,
"
caret-left
"
,
"
caret-right
"
,
"
caret-down
"
,
"
caret-up
"
],
otherIcons
:[
"
desktop
"
,
"
laptop
"
,
"
tablet
"
,
"
mobile
"
,
"
building
"
,
"
firefox
"
,
"
ie
"
,
"
opera
"
,
"
qq
"
,
"
lemon
"
,
"
sign-blank
"
,
"
circle
"
,
"
circle-blank
"
,
"
terminal
"
,
"
html5
"
,
"
android
"
,
"
apple
"
,
"
windows
"
,
"
weibo
"
,
"
renren
"
,
"
bug
"
,
"
moon
"
,
"
sun
"
]},
e
.
LANGS
=
{},
e
.
LANGS
[
"
zh-cn
"
]
=
{
emptyIcon
:
"
[没有图标]
"
,
commonIcons
:
"
常用图标
"
,
webIcons
:
"
Web 图标
"
,
editorIcons
:
"
编辑器图标
"
,
directionalIcons
:
"
箭头总汇
"
,
otherIcons
:
"
其他图标
"
},
e
.
LANGS
.
en
=
{
emptyIcon
:
"
[No Icon]
"
,
commonIcons
:
"
Common Icons
"
,
webIcons
:
"
Web Icons
"
,
editorIcons
:
"
Editor Icons
"
,
directionalIcons
:
"
Directional Icons
"
,
otherIcons
:
"
Other Icons
"
},
e
.
LANGS
[
"
zh-tw
"
]
=
{
emptyIcon
:
"
[沒有圖標]
"
,
commonIcons
:
"
常用圖標
"
,
webIcons
:
"
Web 圖標
"
,
editorIcons
:
"
編輯器圖標
"
,
directionalIcons
:
"
箭頭總匯
"
,
otherIcons
:
"
其他圖標
"
},
e
.
prototype
.
getOptions
=
function
(
b
){
return
b
=
a
.
extend
({},
e
.
DEFAULTS
,
this
.
$
.
data
(),
b
)},
e
.
prototype
.
init
=
function
(){
var
b
=
this
.
$
.
addClass
(
"
chosen-icons
"
).
addClass
(
this
.
id
);
b
.
empty
(),
this
.
options
.
canEmpty
&&
b
.
append
(
this
.
getOptionHtml
());
var
c
=
this
.
lang
;
b
.
append
(
this
.
getgroupHtml
(
"
commonIcons
"
)),
b
.
append
(
this
.
getgroupHtml
(
"
webIcons
"
)),
b
.
append
(
this
.
getgroupHtml
(
"
editorIcons
"
)),
b
.
append
(
this
.
getgroupHtml
(
"
directionalIcons
"
)),
b
.
append
(
this
.
getgroupHtml
(
"
otherIcons
"
)),
b
.
chosen
({
placeholder_text
:
"
"
,
disable_search
:
!
0
,
width
:
"
100%
"
,
inherit_select_classes
:
!
0
});
var
d
=
"
.chosen-container.
"
+
this
.
id
;
b
.
on
(
"
chosen:showing_dropdown
"
,
function
(){
a
(
d
+
"
.chosen-results .group-option
"
).
each
(
function
(){
var
b
=
a
(
this
).
addClass
(
"
icon
"
),
c
=
a
(
this
).
text
();
b
.
html
(
'
<i class="icon-
'
+
c
+
'
" title="
'
+
c
+
'
"></i>
'
)})}).
change
(
function
(){
var
b
=
a
(
d
+
"
.chosen-single > span
"
),
e
=
a
(
this
).
val
();
b
.
html
(
e
&&
e
.
length
>
0
?
'
<i class="
'
+
e
+
'
"></i> <span class="text-muted">
'
+
e
.
substr
(
5
).
replace
(
/-/g
,
"
"
)
+
"
</span>
"
:
'
<span class="text-muted">
'
+
c
.
emptyIcon
+
"
</span>
"
)});
var
e
=
b
.
data
(
"
value
"
);
e
&&
b
.
val
(
e
).
change
()},
e
.
prototype
.
getgroupHtml
=
function
(
a
){
var
b
=
this
.
options
[
a
],
c
=
'
<optgroup label="
'
+
this
.
lang
[
a
]
+
'
">
'
;
for
(
var
d
in
b
)
c
+=
this
.
getOptionHtml
(
b
[
d
]);
return
c
+
"
</optgroup>
"
},
e
.
prototype
.
getOptionHtml
=
function
(
a
){
return
name
=
a
,
a
&&
a
.
length
>
0
?
a
=
"
icon-
"
+
a
:(
a
=
""
,
name
=
this
.
lang
.
emptyIcon
),
'
<option value="
'
+
a
+
'
">
'
+
name
+
"
</option>
"
},
a
.
fn
.
chosenIcons
=
function
(
b
){
return
this
.
each
(
function
(){
var
c
=
a
(
this
),
d
=
c
.
data
(
"
zui.chosenIcons
"
),
f
=
"
object
"
==
typeof
b
&&
b
;
d
||
c
.
data
(
"
zui.chosenIcons
"
,
d
=
new
e
(
this
,
f
)),
"
string
"
==
typeof
b
&&
d
[
b
]()})},
a
.
fn
.
chosenIcons
.
Constructor
=
e
}(
jQuery
,
window
,
document
,
Math
);
\ No newline at end of file
assets/datetimepicker/js/datetimepicker.min.js
浏览文件 @
d5052a2a
/*!
* ====================================================
* ZUI - v0.9.0 - 2014-07-23
* https://github.com/easysoft/zui
* ZUI - v1.0.0 - 2014-07-24
* http://easysoft.github.io/zui/
* GitHub: https://github.com/easysoft/zui.git
* Copyright (c) 2014 Catouse@easysoft; Licensed GNU
* ====================================================
* Copyright (c) 2014 cnezsoft.com; Licensed MIT
*/
!
function
(
a
){
function
b
(){
return
new
Date
(
Date
.
UTC
.
apply
(
Date
,
arguments
))}
var
c
=
function
(
b
,
c
){
var
f
=
this
;
this
.
element
=
a
(
b
),
this
.
language
=
c
.
language
||
this
.
element
.
data
(
"
date-language
"
)
||
"
en
"
,
this
.
language
=
this
.
language
in
d
?
this
.
language
:
"
en
"
,
this
.
isRTL
=
d
[
this
.
language
].
rtl
||!
1
,
this
.
formatType
=
c
.
formatType
||
this
.
element
.
data
(
"
format-type
"
)
||
"
standard
"
,
this
.
format
=
e
.
parseFormat
(
c
.
format
||
this
.
element
.
data
(
"
date-format
"
)
||
d
[
this
.
language
].
format
||
e
.
getDefaultFormat
(
this
.
formatType
,
"
input
"
),
this
.
formatType
),
this
.
isInline
=!
1
,
this
.
isVisible
=!
1
,
this
.
isInput
=
this
.
element
.
is
(
"
input
"
),
this
.
component
=
this
.
element
.
is
(
"
.date
"
)?
this
.
element
.
find
(
"
.input-group-addon .icon-th, .input-group-addon .icon-time, .input-group-addon .icon-calendar
"
).
parent
():
!
1
,
this
.
componentReset
=
this
.
element
.
is
(
"
.date
"
)?
this
.
element
.
find
(
"
.input-group-addon .icon-remove
"
).
parent
():
!
1
,
this
.
hasInput
=
this
.
component
&&
this
.
element
.
find
(
"
input
"
).
length
,
this
.
component
&&
0
===
this
.
component
.
length
&&
(
this
.
component
=!
1
),
this
.
linkField
=
c
.
linkField
||
this
.
element
.
data
(
"
link-field
"
)
||!
1
,
this
.
linkFormat
=
e
.
parseFormat
(
c
.
linkFormat
||
this
.
element
.
data
(
"
link-format
"
)
||
e
.
getDefaultFormat
(
this
.
formatType
,
"
link
"
),
this
.
formatType
),
this
.
minuteStep
=
c
.
minuteStep
||
this
.
element
.
data
(
"
minute-step
"
)
||
5
,
this
.
pickerPosition
=
c
.
pickerPosition
||
this
.
element
.
data
(
"
picker-position
"
)
||
"
bottom-right
"
,
this
.
showMeridian
=
c
.
showMeridian
||
this
.
element
.
data
(
"
show-meridian
"
)
||!
1
,
this
.
initialDate
=
c
.
initialDate
||
new
Date
,
this
.
_attachEvents
(),
this
.
formatViewType
=
"
datetime
"
,
"
formatViewType
"
in
c
?
this
.
formatViewType
=
c
.
formatViewType
:
"
formatViewType
"
in
this
.
element
.
data
()
&&
(
this
.
formatViewType
=
this
.
element
.
data
(
"
formatViewType
"
)),
this
.
minView
=
0
,
"
minView
"
in
c
?
this
.
minView
=
c
.
minView
:
"
minView
"
in
this
.
element
.
data
()
&&
(
this
.
minView
=
this
.
element
.
data
(
"
min-view
"
)),
this
.
minView
=
e
.
convertViewMode
(
this
.
minView
),
this
.
maxView
=
e
.
modes
.
length
-
1
,
"
maxView
"
in
c
?
this
.
maxView
=
c
.
maxView
:
"
maxView
"
in
this
.
element
.
data
()
&&
(
this
.
maxView
=
this
.
element
.
data
(
"
max-view
"
)),
this
.
maxView
=
e
.
convertViewMode
(
this
.
maxView
),
this
.
wheelViewModeNavigation
=!
1
,
"
wheelViewModeNavigation
"
in
c
?
this
.
wheelViewModeNavigation
=
c
.
wheelViewModeNavigation
:
"
wheelViewModeNavigation
"
in
this
.
element
.
data
()
&&
(
this
.
wheelViewModeNavigation
=
this
.
element
.
data
(
"
view-mode-wheel-navigation
"
)),
this
.
wheelViewModeNavigationInverseDirection
=!
1
,
"
wheelViewModeNavigationInverseDirection
"
in
c
?
this
.
wheelViewModeNavigationInverseDirection
=
c
.
wheelViewModeNavigationInverseDirection
:
"
wheelViewModeNavigationInverseDirection
"
in
this
.
element
.
data
()
&&
(
this
.
wheelViewModeNavigationInverseDirection
=
this
.
element
.
data
(
"
view-mode-wheel-navigation-inverse-dir
"
)),
this
.
wheelViewModeNavigationDelay
=
100
,
"
wheelViewModeNavigationDelay
"
in
c
?
this
.
wheelViewModeNavigationDelay
=
c
.
wheelViewModeNavigationDelay
:
"
wheelViewModeNavigationDelay
"
in
this
.
element
.
data
()
&&
(
this
.
wheelViewModeNavigationDelay
=
this
.
element
.
data
(
"
view-mode-wheel-navigation-delay
"
)),
this
.
startViewMode
=
2
,
"
startView
"
in
c
?
this
.
startViewMode
=
c
.
startView
:
"
startView
"
in
this
.
element
.
data
()
&&
(
this
.
startViewMode
=
this
.
element
.
data
(
"
start-view
"
)),
this
.
startViewMode
=
e
.
convertViewMode
(
this
.
startViewMode
),
this
.
viewMode
=
this
.
startViewMode
,
this
.
viewSelect
=
this
.
minView
,
"
viewSelect
"
in
c
?
this
.
viewSelect
=
c
.
viewSelect
:
"
viewSelect
"
in
this
.
element
.
data
()
&&
(
this
.
viewSelect
=
this
.
element
.
data
(
"
view-select
"
)),
this
.
viewSelect
=
e
.
convertViewMode
(
this
.
viewSelect
),
this
.
forceParse
=!
0
,
"
forceParse
"
in
c
?
this
.
forceParse
=
c
.
forceParse
:
"
dateForceParse
"
in
this
.
element
.
data
()
&&
(
this
.
forceParse
=
this
.
element
.
data
(
"
date-force-parse
"
)),
this
.
picker
=
a
(
e
.
template
).
appendTo
(
this
.
isInline
?
this
.
element
:
"
body
"
).
on
({
click
:
a
.
proxy
(
this
.
click
,
this
),
mousedown
:
a
.
proxy
(
this
.
mousedown
,
this
)}),
this
.
wheelViewModeNavigation
&&
(
a
.
fn
.
mousewheel
?
this
.
picker
.
on
({
mousewheel
:
a
.
proxy
(
this
.
mousewheel
,
this
)}):
console
.
log
(
"
Mouse Wheel event is not supported. Please include the jQuery Mouse Wheel plugin before enabling this option
"
)),
this
.
picker
.
addClass
(
this
.
isInline
?
"
datetimepicker-inline
"
:
"
datetimepicker-dropdown-
"
+
this
.
pickerPosition
+
"
dropdown-menu
"
),
this
.
isRTL
&&
(
this
.
picker
.
addClass
(
"
datetimepicker-rtl
"
),
this
.
picker
.
find
(
"
.prev span, .next span
"
).
toggleClass
(
"
icon-arrow-left icon-arrow-right
"
)),
a
(
document
).
on
(
"
mousedown
"
,
function
(
b
){
0
===
a
(
b
.
target
).
closest
(
"
.datetimepicker
"
).
length
&&
f
.
hide
()}),
this
.
autoclose
=!
1
,
"
autoclose
"
in
c
?
this
.
autoclose
=
c
.
autoclose
:
"
dateAutoclose
"
in
this
.
element
.
data
()
&&
(
this
.
autoclose
=
this
.
element
.
data
(
"
date-autoclose
"
)),
this
.
keyboardNavigation
=!
0
,
"
keyboardNavigation
"
in
c
?
this
.
keyboardNavigation
=
c
.
keyboardNavigation
:
"
dateKeyboardNavigation
"
in
this
.
element
.
data
()
&&
(
this
.
keyboardNavigation
=
this
.
element
.
data
(
"
date-keyboard-navigation
"
)),
this
.
todayBtn
=
c
.
todayBtn
||
this
.
element
.
data
(
"
date-today-btn
"
)
||!
1
,
this
.
todayHighlight
=
c
.
todayHighlight
||
this
.
element
.
data
(
"
date-today-highlight
"
)
||!
1
,
this
.
weekStart
=
(
c
.
weekStart
||
this
.
element
.
data
(
"
date-weekstart
"
)
||
d
[
this
.
language
].
weekStart
||
0
)
%
7
,
this
.
weekEnd
=
(
this
.
weekStart
+
6
)
%
7
,
this
.
startDate
=-
1
/
0
,
this
.
endDate
=
1
/
0
,
this
.
daysOfWeekDisabled
=
[],
this
.
setStartDate
(
c
.
startDate
||
this
.
element
.
data
(
"
date-startdate
"
)),
this
.
setEndDate
(
c
.
endDate
||
this
.
element
.
data
(
"
date-enddate
"
)),
this
.
setDaysOfWeekDisabled
(
c
.
daysOfWeekDisabled
||
this
.
element
.
data
(
"
date-days-of-week-disabled
"
)),
this
.
fillDow
(),
this
.
fillMonths
(),
this
.
update
(),
this
.
showMode
(),
this
.
isInline
&&
this
.
show
()};
c
.
prototype
=
{
constructor
:
c
,
_events
:[],
_attachEvents
:
function
(){
this
.
_detachEvents
(),
this
.
isInput
?
this
.
_events
=
[[
this
.
element
,{
focus
:
a
.
proxy
(
this
.
show
,
this
),
keyup
:
a
.
proxy
(
this
.
update
,
this
),
keydown
:
a
.
proxy
(
this
.
keydown
,
this
)}]]:
this
.
component
&&
this
.
hasInput
?(
this
.
_events
=
[[
this
.
element
.
find
(
"
input
"
),{
focus
:
a
.
proxy
(
this
.
show
,
this
),
keyup
:
a
.
proxy
(
this
.
update
,
this
),
keydown
:
a
.
proxy
(
this
.
keydown
,
this
)}],[
this
.
component
,{
click
:
a
.
proxy
(
this
.
show
,
this
)}]],
this
.
componentReset
&&
this
.
_events
.
push
([
this
.
componentReset
,{
click
:
a
.
proxy
(
this
.
reset
,
this
)}])):
this
.
element
.
is
(
"
div
"
)?
this
.
isInline
=!
0
:
this
.
_events
=
[[
this
.
element
,{
click
:
a
.
proxy
(
this
.
show
,
this
)}]];
for
(
var
b
,
c
,
d
=
0
;
d
<
this
.
_events
.
length
;
d
++
)
b
=
this
.
_events
[
d
][
0
],
c
=
this
.
_events
[
d
][
1
],
b
.
on
(
c
)},
_detachEvents
:
function
(){
for
(
var
a
,
b
,
c
=
0
;
c
<
this
.
_events
.
length
;
c
++
)
a
=
this
.
_events
[
c
][
0
],
b
=
this
.
_events
[
c
][
1
],
a
.
off
(
b
);
this
.
_events
=
[]},
show
:
function
(
b
){
this
.
picker
.
show
(),
this
.
height
=
this
.
component
?
this
.
component
.
outerHeight
():
this
.
element
.
outerHeight
(),
this
.
forceParse
&&
this
.
update
(),
this
.
place
(),
a
(
window
).
on
(
"
resize
"
,
a
.
proxy
(
this
.
place
,
this
)),
b
&&
(
b
.
stopPropagation
(),
b
.
preventDefault
()),
this
.
isVisible
=!
0
,
this
.
element
.
trigger
({
type
:
"
show
"
,
date
:
this
.
date
})},
hide
:
function
(){
this
.
isVisible
&&
(
this
.
isInline
||
(
this
.
picker
.
hide
(),
a
(
window
).
off
(
"
resize
"
,
this
.
place
),
this
.
viewMode
=
this
.
startViewMode
,
this
.
showMode
(),
this
.
isInput
||
a
(
document
).
off
(
"
mousedown
"
,
this
.
hide
),
this
.
forceParse
&&
(
this
.
isInput
&&
this
.
element
.
val
()
||
this
.
hasInput
&&
this
.
element
.
find
(
"
input
"
).
val
())
&&
this
.
setValue
(),
this
.
isVisible
=!
1
,
this
.
element
.
trigger
({
type
:
"
hide
"
,
date
:
this
.
date
})))},
remove
:
function
(){
this
.
_detachEvents
(),
this
.
picker
.
remove
(),
delete
this
.
picker
,
delete
this
.
element
.
data
().
datetimepicker
},
getDate
:
function
(){
var
a
=
this
.
getUTCDate
();
return
new
Date
(
a
.
getTime
()
+
6
e4
*
a
.
getTimezoneOffset
())},
getUTCDate
:
function
(){
return
this
.
date
},
setDate
:
function
(
a
){
this
.
setUTCDate
(
new
Date
(
a
.
getTime
()
-
6
e4
*
a
.
getTimezoneOffset
()))},
setUTCDate
:
function
(
a
){
a
>=
this
.
startDate
&&
a
<=
this
.
endDate
?(
this
.
date
=
a
,
this
.
setValue
(),
this
.
viewDate
=
this
.
date
,
this
.
fill
()):
this
.
element
.
trigger
({
type
:
"
outOfRange
"
,
date
:
a
,
startDate
:
this
.
startDate
,
endDate
:
this
.
endDate
})},
setFormat
:
function
(
a
){
this
.
format
=
e
.
parseFormat
(
a
,
this
.
formatType
);
var
b
;
this
.
isInput
?
b
=
this
.
element
:
this
.
component
&&
(
b
=
this
.
element
.
find
(
"
input
"
)),
b
&&
b
.
val
()
&&
this
.
setValue
()},
setValue
:
function
(){
var
b
=
this
.
getFormattedDate
();
this
.
isInput
?
this
.
element
.
val
(
b
):(
this
.
component
&&
this
.
element
.
find
(
"
input
"
).
val
(
b
),
this
.
element
.
data
(
"
date
"
,
b
)),
this
.
linkField
&&
a
(
"
#
"
+
this
.
linkField
).
val
(
this
.
getFormattedDate
(
this
.
linkFormat
))},
getFormattedDate
:
function
(
a
){
return
void
0
==
a
&&
(
a
=
this
.
format
),
e
.
formatDate
(
this
.
date
,
a
,
this
.
language
,
this
.
formatType
)},
setStartDate
:
function
(
a
){
this
.
startDate
=
a
||-
1
/
0
,
this
.
startDate
!==-
1
/
0
&&
(
this
.
startDate
=
e
.
parseDate
(
this
.
startDate
,
this
.
format
,
this
.
language
,
this
.
formatType
)),
this
.
update
(),
this
.
updateNavArrows
()},
setEndDate
:
function
(
a
){
this
.
endDate
=
a
||
1
/
0
,
1
/
0
!==
this
.
endDate
&&
(
this
.
endDate
=
e
.
parseDate
(
this
.
endDate
,
this
.
format
,
this
.
language
,
this
.
formatType
)),
this
.
update
(),
this
.
updateNavArrows
()},
setDaysOfWeekDisabled
:
function
(
b
){
this
.
daysOfWeekDisabled
=
b
||
[],
a
.
isArray
(
this
.
daysOfWeekDisabled
)
||
(
this
.
daysOfWeekDisabled
=
this
.
daysOfWeekDisabled
.
split
(
/,
\s
*/
)),
this
.
daysOfWeekDisabled
=
a
.
map
(
this
.
daysOfWeekDisabled
,
function
(
a
){
return
parseInt
(
a
,
10
)}),
this
.
update
(),
this
.
updateNavArrows
()},
place
:
function
(){
if
(
!
this
.
isInline
){
var
b
=
0
;
a
(
"
div
"
).
each
(
function
(){
var
c
=
parseInt
(
a
(
this
).
css
(
"
zIndex
"
),
10
);
c
>
b
&&
(
b
=
c
)});
var
c
,
d
,
e
,
f
=
b
+
10
;
this
.
component
?(
c
=
this
.
component
.
offset
(),
e
=
c
.
left
,(
"
bottom-left
"
==
this
.
pickerPosition
||
"
top-left
"
==
this
.
pickerPosition
)
&&
(
e
+=
this
.
component
.
outerWidth
()
-
this
.
picker
.
outerWidth
())):(
c
=
this
.
element
.
offset
(),
e
=
c
.
left
),
d
=
"
top-left
"
==
this
.
pickerPosition
||
"
top-right
"
==
this
.
pickerPosition
?
c
.
top
-
this
.
picker
.
outerHeight
():
c
.
top
+
this
.
height
,
this
.
picker
.
css
({
top
:
d
,
left
:
e
,
zIndex
:
f
})}},
update
:
function
(){
var
a
,
b
=!
1
;
arguments
&&
arguments
.
length
&&
(
"
string
"
==
typeof
arguments
[
0
]
||
arguments
[
0
]
instanceof
Date
)?(
a
=
arguments
[
0
],
b
=!
0
):(
a
=
this
.
element
.
data
(
"
date
"
)
||
(
this
.
isInput
?
this
.
element
.
val
():
this
.
element
.
find
(
"
input
"
).
val
())
||
this
.
initialDate
,(
"
string
"
==
typeof
a
||
a
instanceof
String
)
&&
(
a
=
a
.
replace
(
/^
\s
+|
\s
+$/g
,
""
))),
a
||
(
a
=
new
Date
,
b
=!
1
),
this
.
date
=
e
.
parseDate
(
a
,
this
.
format
,
this
.
language
,
this
.
formatType
),
b
&&
this
.
setValue
(),
this
.
viewDate
=
new
Date
(
this
.
date
<
this
.
startDate
?
this
.
startDate
:
this
.
date
>
this
.
endDate
?
this
.
endDate
:
this
.
date
),
this
.
fill
()},
fillDow
:
function
(){
for
(
var
a
=
this
.
weekStart
,
b
=
"
<tr>
"
;
a
<
this
.
weekStart
+
7
;)
b
+=
'
<th class="dow">
'
+
d
[
this
.
language
].
daysMin
[
a
++%
7
]
+
"
</th>
"
;
b
+=
"
</tr>
"
,
this
.
picker
.
find
(
"
.datetimepicker-days thead
"
).
append
(
b
)},
fillMonths
:
function
(){
for
(
var
a
=
""
,
b
=
0
;
12
>
b
;)
a
+=
'
<span class="month">
'
+
d
[
this
.
language
].
monthsShort
[
b
++
]
+
"
</span>
"
;
this
.
picker
.
find
(
"
.datetimepicker-months td
"
).
html
(
a
)},
fill
:
function
(){
if
(
null
!=
this
.
date
&&
null
!=
this
.
viewDate
){
var
c
=
new
Date
(
this
.
viewDate
),
f
=
c
.
getUTCFullYear
(),
g
=
c
.
getUTCMonth
(),
h
=
c
.
getUTCDate
(),
i
=
c
.
getUTCHours
(),
j
=
c
.
getUTCMinutes
(),
k
=
this
.
startDate
!==-
1
/
0
?
this
.
startDate
.
getUTCFullYear
():
-
1
/
0
,
l
=
this
.
startDate
!==-
1
/
0
?
this
.
startDate
.
getUTCMonth
():
-
1
/
0
,
m
=
1
/
0
!==
this
.
endDate
?
this
.
endDate
.
getUTCFullYear
():
1
/
0
,
n
=
1
/
0
!==
this
.
endDate
?
this
.
endDate
.
getUTCMonth
():
1
/
0
,
o
=
new
b
(
this
.
date
.
getUTCFullYear
(),
this
.
date
.
getUTCMonth
(),
this
.
date
.
getUTCDate
()).
valueOf
(),
p
=
new
Date
;
if
(
this
.
picker
.
find
(
"
.datetimepicker-days thead th:eq(1)
"
).
text
(
d
[
this
.
language
].
months
[
g
]
+
"
"
+
f
),
"
time
"
==
this
.
formatViewType
){
var
q
=
i
%
12
?
i
%
12
:
12
,
r
=
(
10
>
q
?
"
0
"
:
""
)
+
q
,
s
=
(
10
>
j
?
"
0
"
:
""
)
+
j
,
t
=
d
[
this
.
language
].
meridiem
[
12
>
i
?
0
:
1
];
this
.
picker
.
find
(
"
.datetimepicker-hours thead th:eq(1)
"
).
text
(
r
+
"
:
"
+
s
+
"
"
+
t
.
toUpperCase
()),
this
.
picker
.
find
(
"
.datetimepicker-minutes thead th:eq(1)
"
).
text
(
r
+
"
:
"
+
s
+
"
"
+
t
.
toUpperCase
())}
else
this
.
picker
.
find
(
"
.datetimepicker-hours thead th:eq(1)
"
).
text
(
h
+
"
"
+
d
[
this
.
language
].
months
[
g
]
+
"
"
+
f
),
this
.
picker
.
find
(
"
.datetimepicker-minutes thead th:eq(1)
"
).
text
(
h
+
"
"
+
d
[
this
.
language
].
months
[
g
]
+
"
"
+
f
);
this
.
picker
.
find
(
"
tfoot th.today
"
).
text
(
d
[
this
.
language
].
today
).
toggle
(
this
.
todayBtn
!==!
1
),
this
.
updateNavArrows
(),
this
.
fillMonths
();
var
u
=
b
(
f
,
g
-
1
,
28
,
0
,
0
,
0
,
0
),
v
=
e
.
getDaysInMonth
(
u
.
getUTCFullYear
(),
u
.
getUTCMonth
());
u
.
setUTCDate
(
v
),
u
.
setUTCDate
(
v
-
(
u
.
getUTCDay
()
-
this
.
weekStart
+
7
)
%
7
);
var
w
=
new
Date
(
u
);
w
.
setUTCDate
(
w
.
getUTCDate
()
+
42
),
w
=
w
.
valueOf
();
for
(
var
x
,
y
=
[];
u
.
valueOf
()
<
w
;)
u
.
getUTCDay
()
==
this
.
weekStart
&&
y
.
push
(
"
<tr>
"
),
x
=
""
,
u
.
getUTCFullYear
()
<
f
||
u
.
getUTCFullYear
()
==
f
&&
u
.
getUTCMonth
()
<
g
?
x
+=
"
old
"
:(
u
.
getUTCFullYear
()
>
f
||
u
.
getUTCFullYear
()
==
f
&&
u
.
getUTCMonth
()
>
g
)
&&
(
x
+=
"
new
"
),
this
.
todayHighlight
&&
u
.
getUTCFullYear
()
==
p
.
getFullYear
()
&&
u
.
getUTCMonth
()
==
p
.
getMonth
()
&&
u
.
getUTCDate
()
==
p
.
getDate
()
&&
(
x
+=
"
today
"
),
u
.
valueOf
()
==
o
&&
(
x
+=
"
active
"
),(
u
.
valueOf
()
+
864
e5
<=
this
.
startDate
||
u
.
valueOf
()
>
this
.
endDate
||-
1
!==
a
.
inArray
(
u
.
getUTCDay
(),
this
.
daysOfWeekDisabled
))
&&
(
x
+=
"
disabled
"
),
y
.
push
(
'
<td class="day
'
+
x
+
'
">
'
+
u
.
getUTCDate
()
+
"
</td>
"
),
u
.
getUTCDay
()
==
this
.
weekEnd
&&
y
.
push
(
"
</tr>
"
),
u
.
setUTCDate
(
u
.
getUTCDate
()
+
1
);
this
.
picker
.
find
(
"
.datetimepicker-days tbody
"
).
empty
().
append
(
y
.
join
(
""
)),
y
=
[];
for
(
var
z
=
""
,
A
=
""
,
B
=
""
,
C
=
0
;
24
>
C
;
C
++
){
var
D
=
b
(
f
,
g
,
h
,
C
);
x
=
""
,
D
.
valueOf
()
+
36
e5
<=
this
.
startDate
||
D
.
valueOf
()
>
this
.
endDate
?
x
+=
"
disabled
"
:
i
==
C
&&
(
x
+=
"
active
"
),
this
.
showMeridian
&&
2
==
d
[
this
.
language
].
meridiem
.
length
?(
A
=
12
>
C
?
d
[
this
.
language
].
meridiem
[
0
]:
d
[
this
.
language
].
meridiem
[
1
],
A
!=
B
&&
(
""
!=
B
&&
y
.
push
(
"
</fieldset>
"
),
y
.
push
(
'
<fieldset class="hour"><legend>
'
+
A
.
toUpperCase
()
+
"
</legend>
"
)),
B
=
A
,
z
=
C
%
12
?
C
%
12
:
12
,
y
.
push
(
'
<span class="hour
'
+
x
+
"
hour_
"
+
(
12
>
C
?
"
am
"
:
"
pm
"
)
+
'
">
'
+
z
+
"
</span>
"
),
23
==
C
&&
y
.
push
(
"
</fieldset>
"
)):(
z
=
C
+
"
:00
"
,
y
.
push
(
'
<span class="hour
'
+
x
+
'
">
'
+
z
+
"
</span>
"
))}
this
.
picker
.
find
(
"
.datetimepicker-hours td
"
).
html
(
y
.
join
(
""
)),
y
=
[],
z
=
""
,
A
=
""
,
B
=
""
;
for
(
var
C
=
0
;
60
>
C
;
C
+=
this
.
minuteStep
){
var
D
=
b
(
f
,
g
,
h
,
i
,
C
,
0
);
x
=
""
,
D
.
valueOf
()
<
this
.
startDate
||
D
.
valueOf
()
>
this
.
endDate
?
x
+=
"
disabled
"
:
Math
.
floor
(
j
/
this
.
minuteStep
)
==
Math
.
floor
(
C
/
this
.
minuteStep
)
&&
(
x
+=
"
active
"
),
this
.
showMeridian
&&
2
==
d
[
this
.
language
].
meridiem
.
length
?(
A
=
12
>
i
?
d
[
this
.
language
].
meridiem
[
0
]:
d
[
this
.
language
].
meridiem
[
1
],
A
!=
B
&&
(
""
!=
B
&&
y
.
push
(
"
</fieldset>
"
),
y
.
push
(
'
<fieldset class="minute"><legend>
'
+
A
.
toUpperCase
()
+
"
</legend>
"
)),
B
=
A
,
z
=
i
%
12
?
i
%
12
:
12
,
y
.
push
(
'
<span class="minute
'
+
x
+
'
">
'
+
z
+
"
:
"
+
(
10
>
C
?
"
0
"
+
C
:
C
)
+
"
</span>
"
),
59
==
C
&&
y
.
push
(
"
</fieldset>
"
)):(
z
=
C
+
"
:00
"
,
y
.
push
(
'
<span class="minute
'
+
x
+
'
">
'
+
i
+
"
:
"
+
(
10
>
C
?
"
0
"
+
C
:
C
)
+
"
</span>
"
))}
this
.
picker
.
find
(
"
.datetimepicker-minutes td
"
).
html
(
y
.
join
(
""
));
var
E
=
this
.
date
.
getUTCFullYear
(),
F
=
this
.
picker
.
find
(
"
.datetimepicker-months
"
).
find
(
"
th:eq(1)
"
).
text
(
f
).
end
().
find
(
"
span
"
).
removeClass
(
"
active
"
);
E
==
f
&&
F
.
eq
(
this
.
date
.
getUTCMonth
()).
addClass
(
"
active
"
),(
k
>
f
||
f
>
m
)
&&
F
.
addClass
(
"
disabled
"
),
f
==
k
&&
F
.
slice
(
0
,
l
).
addClass
(
"
disabled
"
),
f
==
m
&&
F
.
slice
(
n
+
1
).
addClass
(
"
disabled
"
),
y
=
""
,
f
=
10
*
parseInt
(
f
/
10
,
10
);
var
G
=
this
.
picker
.
find
(
"
.datetimepicker-years
"
).
find
(
"
th:eq(1)
"
).
text
(
f
+
"
-
"
+
(
f
+
9
)).
end
().
find
(
"
td
"
);
f
-=
1
;
for
(
var
C
=-
1
;
11
>
C
;
C
++
)
y
+=
'
<span class="year
'
+
(
-
1
==
C
||
10
==
C
?
"
old
"
:
""
)
+
(
E
==
f
?
"
active
"
:
""
)
+
(
k
>
f
||
f
>
m
?
"
disabled
"
:
""
)
+
'
">
'
+
f
+
"
</span>
"
,
f
+=
1
;
G
.
html
(
y
),
this
.
place
()}},
updateNavArrows
:
function
(){
var
a
=
new
Date
(
this
.
viewDate
),
b
=
a
.
getUTCFullYear
(),
c
=
a
.
getUTCMonth
(),
d
=
a
.
getUTCDate
(),
e
=
a
.
getUTCHours
();
switch
(
this
.
viewMode
){
case
0
:
this
.
picker
.
find
(
"
.prev
"
).
css
(
this
.
startDate
!==-
1
/
0
&&
b
<=
this
.
startDate
.
getUTCFullYear
()
&&
c
<=
this
.
startDate
.
getUTCMonth
()
&&
d
<=
this
.
startDate
.
getUTCDate
()
&&
e
<=
this
.
startDate
.
getUTCHours
()?{
visibility
:
"
hidden
"
}:{
visibility
:
"
visible
"
}),
this
.
picker
.
find
(
"
.next
"
).
css
(
1
/
0
!==
this
.
endDate
&&
b
>=
this
.
endDate
.
getUTCFullYear
()
&&
c
>=
this
.
endDate
.
getUTCMonth
()
&&
d
>=
this
.
endDate
.
getUTCDate
()
&&
e
>=
this
.
endDate
.
getUTCHours
()?{
visibility
:
"
hidden
"
}:{
visibility
:
"
visible
"
});
break
;
case
1
:
this
.
picker
.
find
(
"
.prev
"
).
css
(
this
.
startDate
!==-
1
/
0
&&
b
<=
this
.
startDate
.
getUTCFullYear
()
&&
c
<=
this
.
startDate
.
getUTCMonth
()
&&
d
<=
this
.
startDate
.
getUTCDate
()?{
visibility
:
"
hidden
"
}:{
visibility
:
"
visible
"
}),
this
.
picker
.
find
(
"
.next
"
).
css
(
1
/
0
!==
this
.
endDate
&&
b
>=
this
.
endDate
.
getUTCFullYear
()
&&
c
>=
this
.
endDate
.
getUTCMonth
()
&&
d
>=
this
.
endDate
.
getUTCDate
()?{
visibility
:
"
hidden
"
}:{
visibility
:
"
visible
"
});
break
;
case
2
:
this
.
picker
.
find
(
"
.prev
"
).
css
(
this
.
startDate
!==-
1
/
0
&&
b
<=
this
.
startDate
.
getUTCFullYear
()
&&
c
<=
this
.
startDate
.
getUTCMonth
()?{
visibility
:
"
hidden
"
}:{
visibility
:
"
visible
"
}),
this
.
picker
.
find
(
"
.next
"
).
css
(
1
/
0
!==
this
.
endDate
&&
b
>=
this
.
endDate
.
getUTCFullYear
()
&&
c
>=
this
.
endDate
.
getUTCMonth
()?{
visibility
:
"
hidden
"
}:{
visibility
:
"
visible
"
});
break
;
case
3
:
case
4
:
this
.
picker
.
find
(
"
.prev
"
).
css
(
this
.
startDate
!==-
1
/
0
&&
b
<=
this
.
startDate
.
getUTCFullYear
()?{
visibility
:
"
hidden
"
}:{
visibility
:
"
visible
"
}),
this
.
picker
.
find
(
"
.next
"
).
css
(
1
/
0
!==
this
.
endDate
&&
b
>=
this
.
endDate
.
getUTCFullYear
()?{
visibility
:
"
hidden
"
}:{
visibility
:
"
visible
"
})}},
mousewheel
:
function
(
b
){
if
(
b
.
preventDefault
(),
b
.
stopPropagation
(),
!
this
.
wheelPause
){
this
.
wheelPause
=!
0
;
var
c
=
b
.
originalEvent
,
d
=
c
.
wheelDelta
,
e
=
d
>
0
?
1
:
0
===
d
?
0
:
-
1
;
this
.
wheelViewModeNavigationInverseDirection
&&
(
e
=-
e
),
this
.
showMode
(
e
),
setTimeout
(
a
.
proxy
(
function
(){
this
.
wheelPause
=!
1
},
this
),
this
.
wheelViewModeNavigationDelay
)}},
click
:
function
(
c
){
c
.
stopPropagation
(),
c
.
preventDefault
();
var
d
=
a
(
c
.
target
).
closest
(
"
span, td, th, legend
"
);
if
(
1
==
d
.
length
){
if
(
d
.
is
(
"
.disabled
"
))
return
void
this
.
element
.
trigger
({
type
:
"
outOfRange
"
,
date
:
this
.
viewDate
,
startDate
:
this
.
startDate
,
endDate
:
this
.
endDate
});
switch
(
d
[
0
].
nodeName
.
toLowerCase
()){
case
"
th
"
:
switch
(
d
[
0
].
className
){
case
"
switch
"
:
this
.
showMode
(
1
);
break
;
case
"
prev
"
:
case
"
next
"
:
var
f
=
e
.
modes
[
this
.
viewMode
].
navStep
*
(
"
prev
"
==
d
[
0
].
className
?
-
1
:
1
);
switch
(
this
.
viewMode
){
case
0
:
this
.
viewDate
=
this
.
moveHour
(
this
.
viewDate
,
f
);
break
;
case
1
:
this
.
viewDate
=
this
.
moveDate
(
this
.
viewDate
,
f
);
break
;
case
2
:
this
.
viewDate
=
this
.
moveMonth
(
this
.
viewDate
,
f
);
break
;
case
3
:
case
4
:
this
.
viewDate
=
this
.
moveYear
(
this
.
viewDate
,
f
)}
this
.
fill
();
break
;
case
"
today
"
:
var
g
=
new
Date
;
g
=
b
(
g
.
getFullYear
(),
g
.
getMonth
(),
g
.
getDate
(),
g
.
getHours
(),
g
.
getMinutes
(),
g
.
getSeconds
(),
0
),
g
<
this
.
startDate
?
g
=
this
.
startDate
:
g
>
this
.
endDate
&&
(
g
=
this
.
endDate
),
this
.
viewMode
=
this
.
startViewMode
,
this
.
showMode
(
0
),
this
.
_setDate
(
g
),
this
.
fill
(),
this
.
autoclose
&&
this
.
hide
()}
break
;
case
"
span
"
:
if
(
!
d
.
is
(
"
.disabled
"
)){
var
h
=
this
.
viewDate
.
getUTCFullYear
(),
i
=
this
.
viewDate
.
getUTCMonth
(),
j
=
this
.
viewDate
.
getUTCDate
(),
k
=
this
.
viewDate
.
getUTCHours
(),
l
=
this
.
viewDate
.
getUTCMinutes
(),
m
=
this
.
viewDate
.
getUTCSeconds
();
if
(
d
.
is
(
"
.month
"
)?(
this
.
viewDate
.
setUTCDate
(
1
),
i
=
d
.
parent
().
find
(
"
span
"
).
index
(
d
),
j
=
this
.
viewDate
.
getUTCDate
(),
this
.
viewDate
.
setUTCMonth
(
i
),
this
.
element
.
trigger
({
type
:
"
changeMonth
"
,
date
:
this
.
viewDate
}),
this
.
viewSelect
>=
3
&&
this
.
_setDate
(
b
(
h
,
i
,
j
,
k
,
l
,
m
,
0
))):
d
.
is
(
"
.year
"
)?(
this
.
viewDate
.
setUTCDate
(
1
),
h
=
parseInt
(
d
.
text
(),
10
)
||
0
,
this
.
viewDate
.
setUTCFullYear
(
h
),
this
.
element
.
trigger
({
type
:
"
changeYear
"
,
date
:
this
.
viewDate
}),
this
.
viewSelect
>=
4
&&
this
.
_setDate
(
b
(
h
,
i
,
j
,
k
,
l
,
m
,
0
))):
d
.
is
(
"
.hour
"
)?(
k
=
parseInt
(
d
.
text
(),
10
)
||
0
,(
d
.
hasClass
(
"
hour_am
"
)
||
d
.
hasClass
(
"
hour_pm
"
))
&&
(
12
==
k
&&
d
.
hasClass
(
"
hour_am
"
)?
k
=
0
:
12
!=
k
&&
d
.
hasClass
(
"
hour_pm
"
)
&&
(
k
+=
12
)),
this
.
viewDate
.
setUTCHours
(
k
),
this
.
element
.
trigger
({
type
:
"
changeHour
"
,
date
:
this
.
viewDate
}),
this
.
viewSelect
>=
1
&&
this
.
_setDate
(
b
(
h
,
i
,
j
,
k
,
l
,
m
,
0
))):
d
.
is
(
"
.minute
"
)
&&
(
l
=
parseInt
(
d
.
text
().
substr
(
d
.
text
().
indexOf
(
"
:
"
)
+
1
),
10
)
||
0
,
this
.
viewDate
.
setUTCMinutes
(
l
),
this
.
element
.
trigger
({
type
:
"
changeMinute
"
,
date
:
this
.
viewDate
}),
this
.
viewSelect
>=
0
&&
this
.
_setDate
(
b
(
h
,
i
,
j
,
k
,
l
,
m
,
0
))),
0
!=
this
.
viewMode
){
var
n
=
this
.
viewMode
;
this
.
showMode
(
-
1
),
this
.
fill
(),
n
==
this
.
viewMode
&&
this
.
autoclose
&&
this
.
hide
()}
else
this
.
fill
(),
this
.
autoclose
&&
this
.
hide
()}
break
;
case
"
td
"
:
if
(
d
.
is
(
"
.day
"
)
&&!
d
.
is
(
"
.disabled
"
)){
var
j
=
parseInt
(
d
.
text
(),
10
)
||
1
,
h
=
this
.
viewDate
.
getUTCFullYear
(),
i
=
this
.
viewDate
.
getUTCMonth
(),
k
=
this
.
viewDate
.
getUTCHours
(),
l
=
this
.
viewDate
.
getUTCMinutes
(),
m
=
this
.
viewDate
.
getUTCSeconds
();
d
.
is
(
"
.old
"
)?
0
===
i
?(
i
=
11
,
h
-=
1
):
i
-=
1
:
d
.
is
(
"
.new
"
)
&&
(
11
==
i
?(
i
=
0
,
h
+=
1
):
i
+=
1
),
this
.
viewDate
.
setUTCFullYear
(
h
),
this
.
viewDate
.
setUTCMonth
(
i
,
j
),
this
.
element
.
trigger
({
type
:
"
changeDay
"
,
date
:
this
.
viewDate
}),
this
.
viewSelect
>=
2
&&
this
.
_setDate
(
b
(
h
,
i
,
j
,
k
,
l
,
m
,
0
))}
var
n
=
this
.
viewMode
;
this
.
showMode
(
-
1
),
this
.
fill
(),
n
==
this
.
viewMode
&&
this
.
autoclose
&&
this
.
hide
()}}},
_setDate
:
function
(
a
,
b
){
b
&&
"
date
"
!=
b
||
(
this
.
date
=
a
),
b
&&
"
view
"
!=
b
||
(
this
.
viewDate
=
a
),
this
.
fill
(),
this
.
setValue
();
var
c
;
this
.
isInput
?
c
=
this
.
element
:
this
.
component
&&
(
c
=
this
.
element
.
find
(
"
input
"
)),
c
&&
(
c
.
change
(),
this
.
autoclose
&&
(
!
b
||
"
date
"
==
b
)),
this
.
element
.
trigger
({
type
:
"
changeDate
"
,
date
:
this
.
date
})},
moveMinute
:
function
(
a
,
b
){
if
(
!
b
)
return
a
;
var
c
=
new
Date
(
a
.
valueOf
());
return
c
.
setUTCMinutes
(
c
.
getUTCMinutes
()
+
b
*
this
.
minuteStep
),
c
},
moveHour
:
function
(
a
,
b
){
if
(
!
b
)
return
a
;
var
c
=
new
Date
(
a
.
valueOf
());
return
c
.
setUTCHours
(
c
.
getUTCHours
()
+
b
),
c
},
moveDate
:
function
(
a
,
b
){
if
(
!
b
)
return
a
;
var
c
=
new
Date
(
a
.
valueOf
());
return
c
.
setUTCDate
(
c
.
getUTCDate
()
+
b
),
c
},
moveMonth
:
function
(
a
,
b
){
if
(
!
b
)
return
a
;
var
c
,
d
,
e
=
new
Date
(
a
.
valueOf
()),
f
=
e
.
getUTCDate
(),
g
=
e
.
getUTCMonth
(),
h
=
Math
.
abs
(
b
);
if
(
b
=
b
>
0
?
1
:
-
1
,
1
==
h
)
d
=-
1
==
b
?
function
(){
return
e
.
getUTCMonth
()
==
g
}:
function
(){
return
e
.
getUTCMonth
()
!=
c
},
c
=
g
+
b
,
e
.
setUTCMonth
(
c
),(
0
>
c
||
c
>
11
)
&&
(
c
=
(
c
+
12
)
%
12
);
else
{
for
(
var
i
=
0
;
h
>
i
;
i
++
)
e
=
this
.
moveMonth
(
e
,
b
);
c
=
e
.
getUTCMonth
(),
e
.
setUTCDate
(
f
),
d
=
function
(){
return
c
!=
e
.
getUTCMonth
()}}
for
(;
d
();)
e
.
setUTCDate
(
--
f
),
e
.
setUTCMonth
(
c
);
return
e
},
moveYear
:
function
(
a
,
b
){
return
this
.
moveMonth
(
a
,
12
*
b
)},
dateWithinRange
:
function
(
a
){
return
a
>=
this
.
startDate
&&
a
<=
this
.
endDate
},
keydown
:
function
(
a
){
if
(
this
.
picker
.
is
(
"
:not(:visible)
"
))
return
void
(
27
==
a
.
keyCode
&&
this
.
show
());
var
b
,
c
,
d
,
e
=!
1
;
switch
(
a
.
keyCode
){
case
27
:
this
.
hide
(),
a
.
preventDefault
();
break
;
case
37
:
case
39
:
if
(
!
this
.
keyboardNavigation
)
break
;
b
=
37
==
a
.
keyCode
?
-
1
:
1
,
viewMode
=
this
.
viewMode
,
a
.
ctrlKey
?
viewMode
+=
2
:
a
.
shiftKey
&&
(
viewMode
+=
1
),
4
==
viewMode
?(
c
=
this
.
moveYear
(
this
.
date
,
b
),
d
=
this
.
moveYear
(
this
.
viewDate
,
b
)):
3
==
viewMode
?(
c
=
this
.
moveMonth
(
this
.
date
,
b
),
d
=
this
.
moveMonth
(
this
.
viewDate
,
b
)):
2
==
viewMode
?(
c
=
this
.
moveDate
(
this
.
date
,
b
),
d
=
this
.
moveDate
(
this
.
viewDate
,
b
)):
1
==
viewMode
?(
c
=
this
.
moveHour
(
this
.
date
,
b
),
d
=
this
.
moveHour
(
this
.
viewDate
,
b
)):
0
==
viewMode
&&
(
c
=
this
.
moveMinute
(
this
.
date
,
b
),
d
=
this
.
moveMinute
(
this
.
viewDate
,
b
)),
this
.
dateWithinRange
(
c
)
&&
(
this
.
date
=
c
,
this
.
viewDate
=
d
,
this
.
setValue
(),
this
.
update
(),
a
.
preventDefault
(),
e
=!
0
);
break
;
case
38
:
case
40
:
if
(
!
this
.
keyboardNavigation
)
break
;
b
=
38
==
a
.
keyCode
?
-
1
:
1
,
viewMode
=
this
.
viewMode
,
a
.
ctrlKey
?
viewMode
+=
2
:
a
.
shiftKey
&&
(
viewMode
+=
1
),
4
==
viewMode
?(
c
=
this
.
moveYear
(
this
.
date
,
b
),
d
=
this
.
moveYear
(
this
.
viewDate
,
b
)):
3
==
viewMode
?(
c
=
this
.
moveMonth
(
this
.
date
,
b
),
d
=
this
.
moveMonth
(
this
.
viewDate
,
b
)):
2
==
viewMode
?(
c
=
this
.
moveDate
(
this
.
date
,
7
*
b
),
d
=
this
.
moveDate
(
this
.
viewDate
,
7
*
b
)):
1
==
viewMode
?
this
.
showMeridian
?(
c
=
this
.
moveHour
(
this
.
date
,
6
*
b
),
d
=
this
.
moveHour
(
this
.
viewDate
,
6
*
b
)):(
c
=
this
.
moveHour
(
this
.
date
,
4
*
b
),
d
=
this
.
moveHour
(
this
.
viewDate
,
4
*
b
)):
0
==
viewMode
&&
(
c
=
this
.
moveMinute
(
this
.
date
,
4
*
b
),
d
=
this
.
moveMinute
(
this
.
viewDate
,
4
*
b
)),
this
.
dateWithinRange
(
c
)
&&
(
this
.
date
=
c
,
this
.
viewDate
=
d
,
this
.
setValue
(),
this
.
update
(),
a
.
preventDefault
(),
e
=!
0
);
break
;
case
13
:
if
(
0
!=
this
.
viewMode
){
var
f
=
this
.
viewMode
;
this
.
showMode
(
-
1
),
this
.
fill
(),
f
==
this
.
viewMode
&&
this
.
autoclose
&&
this
.
hide
()}
else
this
.
fill
(),
this
.
autoclose
&&
this
.
hide
();
a
.
preventDefault
();
break
;
case
9
:
this
.
hide
()}
if
(
e
){
var
g
;
this
.
isInput
?
g
=
this
.
element
:
this
.
component
&&
(
g
=
this
.
element
.
find
(
"
input
"
)),
g
&&
g
.
change
(),
this
.
element
.
trigger
({
type
:
"
changeDate
"
,
date
:
this
.
date
})}},
showMode
:
function
(
a
){
if
(
a
){
var
b
=
Math
.
max
(
0
,
Math
.
min
(
e
.
modes
.
length
-
1
,
this
.
viewMode
+
a
));
b
>=
this
.
minView
&&
b
<=
this
.
maxView
&&
(
this
.
element
.
trigger
({
type
:
"
changeMode
"
,
date
:
this
.
viewDate
,
oldViewMode
:
this
.
viewMode
,
newViewMode
:
b
}),
this
.
viewMode
=
b
)}
this
.
picker
.
find
(
"
>div
"
).
hide
().
filter
(
"
.datetimepicker-
"
+
e
.
modes
[
this
.
viewMode
].
clsName
).
css
(
"
display
"
,
"
block
"
),
this
.
updateNavArrows
()},
reset
:
function
(){
this
.
_setDate
(
null
,
"
date
"
)}},
a
.
fn
.
datetimepicker
=
function
(
b
){
var
d
=
Array
.
apply
(
null
,
arguments
);
return
d
.
shift
(),
this
.
each
(
function
(){
var
e
=
a
(
this
),
f
=
e
.
data
(
"
datetimepicker
"
),
g
=
"
object
"
==
typeof
b
&&
b
;
f
||
e
.
data
(
"
datetimepicker
"
,
f
=
new
c
(
this
,
a
.
extend
({},
a
.
fn
.
datetimepicker
.
defaults
,
g
))),
"
string
"
==
typeof
b
&&
"
function
"
==
typeof
f
[
b
]
&&
f
[
b
].
apply
(
f
,
d
)})},
a
.
fn
.
datetimepicker
.
defaults
=
{},
a
.
fn
.
datetimepicker
.
Constructor
=
c
;
var
d
=
a
.
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
"
}};
d
[
"
zh-cn
"
]
=
{
days
:[
"
星期日
"
,
"
星期一
"
,
"
星期二
"
,
"
星期三
"
,
"
星期四
"
,
"
星期五
"
,
"
星期六
"
,
"
星期日
"
],
daysShort
:[
"
周日
"
,
"
周一
"
,
"
周二
"
,
"
周三
"
,
"
周四
"
,
"
周五
"
,
"
周六
"
,
"
周日
"
],
daysMin
:[
"
日
"
,
"
一
"
,
"
二
"
,
"
三
"
,
"
四
"
,
"
五
"
,
"
六
"
,
"
日
"
],
months
:[
"
一月
"
,
"
二月
"
,
"
三月
"
,
"
四月
"
,
"
五月
"
,
"
六月
"
,
"
七月
"
,
"
八月
"
,
"
九月
"
,
"
十月
"
,
"
十一月
"
,
"
十二月
"
],
monthsShort
:[
"
一月
"
,
"
二月
"
,
"
三月
"
,
"
四月
"
,
"
五月
"
,
"
六月
"
,
"
七月
"
,
"
八月
"
,
"
九月
"
,
"
十月
"
,
"
十一月
"
,
"
十二月
"
],
today
:
"
今日
"
,
suffix
:[],
meridiem
:[]},
d
[
"
zh-tw
"
]
=
{
days
:[
"
星期日
"
,
"
星期一
"
,
"
星期二
"
,
"
星期三
"
,
"
星期四
"
,
"
星期五
"
,
"
星期六
"
,
"
星期日
"
],
daysShort
:[
"
周日
"
,
"
周一
"
,
"
周二
"
,
"
周三
"
,
"
周四
"
,
"
周五
"
,
"
周六
"
,
"
周日
"
],
daysMin
:[
"
日
"
,
"
一
"
,
"
二
"
,
"
三
"
,
"
四
"
,
"
五
"
,
"
六
"
,
"
日
"
],
months
:[
"
一月
"
,
"
二月
"
,
"
三月
"
,
"
四月
"
,
"
五月
"
,
"
六月
"
,
"
七月
"
,
"
八月
"
,
"
九月
"
,
"
十月
"
,
"
十一月
"
,
"
十二月
"
],
monthsShort
:[
"
一月
"
,
"
二月
"
,
"
三月
"
,
"
四月
"
,
"
五月
"
,
"
六月
"
,
"
七月
"
,
"
八月
"
,
"
九月
"
,
"
十月
"
,
"
十一月
"
,
"
十二月
"
],
today
:
"
今天
"
,
suffix
:[],
meridiem
:[
"
上午
"
,
"
下午
"
]};
var
e
=
{
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
(
a
){
return
a
%
4
===
0
&&
a
%
100
!==
0
||
a
%
400
===
0
},
getDaysInMonth
:
function
(
a
,
b
){
return
[
31
,
e
.
isLeapYear
(
a
)?
29
:
28
,
31
,
30
,
31
,
30
,
31
,
31
,
30
,
31
,
30
,
31
][
b
]},
getDefaultFormat
:
function
(
a
,
b
){
if
(
"
standard
"
==
a
)
return
"
input
"
==
b
?
"
yyyy-mm-dd hh:ii
"
:
"
yyyy-mm-dd hh:ii:ss
"
;
if
(
"
php
"
==
a
)
return
"
input
"
==
b
?
"
Y-m-d H:i
"
:
"
Y-m-d H:i:s
"
;
throw
new
Error
(
"
Invalid format type.
"
)},
validParts
:
function
(
a
){
if
(
"
standard
"
==
a
)
return
/hh
?
|HH
?
|p|P|ii
?
|ss
?
|dd
?
|DD
?
|mm
?
|MM
?
|yy
(?:
yy
)?
/g
;
if
(
"
php
"
==
a
)
return
/
[
dDjlNwzFmMnStyYaABgGhHis
]
/g
;
throw
new
Error
(
"
Invalid format type.
"
)},
nonpunctuation
:
/
[^
-
\/
:-@
\[
-`{-~
\t\n\r
TZ
]
+/g
,
parseFormat
:
function
(
a
,
b
){
var
c
=
a
.
replace
(
this
.
validParts
(
b
),
"
\
x00
"
).
split
(
"
\
x00
"
),
d
=
a
.
match
(
this
.
validParts
(
b
));
if
(
!
c
||!
c
.
length
||!
d
||
0
==
d
.
length
)
throw
new
Error
(
"
Invalid date format.
"
);
return
{
separators
:
c
,
parts
:
d
}},
parseDate
:
function
(
e
,
f
,
g
,
h
){
if
(
e
instanceof
Date
){
var
i
=
new
Date
(
e
.
valueOf
()
-
6
e4
*
e
.
getTimezoneOffset
());
return
i
.
setMilliseconds
(
0
),
i
}
if
(
/^
\d{4}\-\d{1,2}\-\d{1,2}
$/
.
test
(
e
)
&&
(
f
=
this
.
parseFormat
(
"
yyyy-mm-dd
"
,
h
)),
/^
\d{4}\-\d{1,2}\-\d{1,2}[
T
]\d{1,2}\:\d{1,2}
$/
.
test
(
e
)
&&
(
f
=
this
.
parseFormat
(
"
yyyy-mm-dd hh:ii
"
,
h
)),
/^
\d{4}\-\d{1,2}\-\d{1,2}[
T
]\d{1,2}\:\d{1,2}\:\d{1,2}[
Z
]{0,1}
$/
.
test
(
e
)
&&
(
f
=
this
.
parseFormat
(
"
yyyy-mm-dd hh:ii:ss
"
,
h
)),
/^
[
-+
]\d
+
[
dmwy
]([\s
,
]
+
[
-+
]\d
+
[
dmwy
])
*$/
.
test
(
e
)){
var
j
,
k
,
l
=
/
([
-+
]\d
+
)([
dmwy
])
/
,
m
=
e
.
match
(
/
([
-+
]\d
+
)([
dmwy
])
/g
);
e
=
new
Date
;
for
(
var
n
=
0
;
n
<
m
.
length
;
n
++
)
switch
(
j
=
l
.
exec
(
m
[
n
]),
k
=
parseInt
(
j
[
1
]),
j
[
2
]){
case
"
d
"
:
e
.
setUTCDate
(
e
.
getUTCDate
()
+
k
);
break
;
case
"
m
"
:
e
=
c
.
prototype
.
moveMonth
.
call
(
c
.
prototype
,
e
,
k
);
break
;
case
"
w
"
:
e
.
setUTCDate
(
e
.
getUTCDate
()
+
7
*
k
);
break
;
case
"
y
"
:
e
=
c
.
prototype
.
moveYear
.
call
(
c
.
prototype
,
e
,
k
)}
return
b
(
e
.
getUTCFullYear
(),
e
.
getUTCMonth
(),
e
.
getUTCDate
(),
e
.
getUTCHours
(),
e
.
getUTCMinutes
(),
e
.
getUTCSeconds
(),
0
)}
var
o
,
p
,
j
,
m
=
e
&&
e
.
match
(
this
.
nonpunctuation
)
||
[],
e
=
new
Date
(
0
,
0
,
0
,
0
,
0
,
0
,
0
),
q
=
{},
r
=
[
"
hh
"
,
"
h
"
,
"
ii
"
,
"
i
"
,
"
ss
"
,
"
s
"
,
"
yyyy
"
,
"
yy
"
,
"
M
"
,
"
MM
"
,
"
m
"
,
"
mm
"
,
"
D
"
,
"
DD
"
,
"
d
"
,
"
dd
"
,
"
H
"
,
"
HH
"
,
"
p
"
,
"
P
"
],
s
=
{
hh
:
function
(
a
,
b
){
return
a
.
setUTCHours
(
b
)},
h
:
function
(
a
,
b
){
return
a
.
setUTCHours
(
b
)},
HH
:
function
(
a
,
b
){
return
a
.
setUTCHours
(
12
==
b
?
0
:
b
)},
H
:
function
(
a
,
b
){
return
a
.
setUTCHours
(
12
==
b
?
0
:
b
)},
ii
:
function
(
a
,
b
){
return
a
.
setUTCMinutes
(
b
)},
i
:
function
(
a
,
b
){
return
a
.
setUTCMinutes
(
b
)},
ss
:
function
(
a
,
b
){
return
a
.
setUTCSeconds
(
b
)},
s
:
function
(
a
,
b
){
return
a
.
setUTCSeconds
(
b
)},
yyyy
:
function
(
a
,
b
){
return
a
.
setUTCFullYear
(
b
)},
yy
:
function
(
a
,
b
){
return
a
.
setUTCFullYear
(
2
e3
+
b
)},
m
:
function
(
a
,
b
){
for
(
b
-=
1
;
0
>
b
;)
b
+=
12
;
for
(
b
%=
12
,
a
.
setUTCMonth
(
b
);
a
.
getUTCMonth
()
!=
b
;)
a
.
setUTCDate
(
a
.
getUTCDate
()
-
1
);
return
a
},
d
:
function
(
a
,
b
){
return
a
.
setUTCDate
(
b
)},
p
:
function
(
a
,
b
){
return
a
.
setUTCHours
(
1
==
b
?
a
.
getUTCHours
()
+
12
:
a
.
getUTCHours
())}};
if
(
s
.
M
=
s
.
MM
=
s
.
mm
=
s
.
m
,
s
.
dd
=
s
.
d
,
s
.
P
=
s
.
p
,
e
=
b
(
e
.
getFullYear
(),
e
.
getMonth
(),
e
.
getDate
(),
e
.
getHours
(),
e
.
getMinutes
(),
e
.
getSeconds
()),
m
.
length
==
f
.
parts
.
length
){
for
(
var
n
=
0
,
t
=
f
.
parts
.
length
;
t
>
n
;
n
++
){
if
(
o
=
parseInt
(
m
[
n
],
10
),
j
=
f
.
parts
[
n
],
isNaN
(
o
))
switch
(
j
){
case
"
MM
"
:
p
=
a
(
d
[
g
].
months
).
filter
(
function
(){
var
a
=
this
.
slice
(
0
,
m
[
n
].
length
),
b
=
m
[
n
].
slice
(
0
,
a
.
length
);
return
a
==
b
}),
o
=
a
.
inArray
(
p
[
0
],
d
[
g
].
months
)
+
1
;
break
;
case
"
M
"
:
p
=
a
(
d
[
g
].
monthsShort
).
filter
(
function
(){
var
a
=
this
.
slice
(
0
,
m
[
n
].
length
),
b
=
m
[
n
].
slice
(
0
,
a
.
length
);
return
a
==
b
}),
o
=
a
.
inArray
(
p
[
0
],
d
[
g
].
monthsShort
)
+
1
;
break
;
case
"
p
"
:
case
"
P
"
:
o
=
a
.
inArray
(
m
[
n
].
toLowerCase
(),
d
[
g
].
meridiem
)}
q
[
j
]
=
o
}
for
(
var
u
,
n
=
0
;
n
<
r
.
length
;
n
++
)
u
=
r
[
n
],
u
in
q
&&!
isNaN
(
q
[
u
])
&&
s
[
u
](
e
,
q
[
u
])}
return
e
},
formatDate
:
function
(
b
,
c
,
f
,
g
){
if
(
null
==
b
)
return
""
;
var
h
;
if
(
"
standard
"
==
g
)
h
=
{
yy
:
b
.
getUTCFullYear
().
toString
().
substring
(
2
),
yyyy
:
b
.
getUTCFullYear
(),
m
:
b
.
getUTCMonth
()
+
1
,
M
:
d
[
f
].
monthsShort
[
b
.
getUTCMonth
()],
MM
:
d
[
f
].
months
[
b
.
getUTCMonth
()],
d
:
b
.
getUTCDate
(),
D
:
d
[
f
].
daysShort
[
b
.
getUTCDay
()],
DD
:
d
[
f
].
days
[
b
.
getUTCDay
()],
p
:
2
==
d
[
f
].
meridiem
.
length
?
d
[
f
].
meridiem
[
b
.
getUTCHours
()
<
12
?
0
:
1
]:
""
,
h
:
b
.
getUTCHours
(),
i
:
b
.
getUTCMinutes
(),
s
:
b
.
getUTCSeconds
()},
h
.
H
=
2
==
d
[
f
].
meridiem
.
length
?
h
.
h
%
12
==
0
?
12
:
h
.
h
%
12
:
h
.
h
,
h
.
HH
=
(
h
.
H
<
10
?
"
0
"
:
""
)
+
h
.
H
,
h
.
P
=
h
.
p
.
toUpperCase
(),
h
.
hh
=
(
h
.
h
<
10
?
"
0
"
:
""
)
+
h
.
h
,
h
.
ii
=
(
h
.
i
<
10
?
"
0
"
:
""
)
+
h
.
i
,
h
.
ss
=
(
h
.
s
<
10
?
"
0
"
:
""
)
+
h
.
s
,
h
.
dd
=
(
h
.
d
<
10
?
"
0
"
:
""
)
+
h
.
d
,
h
.
mm
=
(
h
.
m
<
10
?
"
0
"
:
""
)
+
h
.
m
;
else
{
if
(
"
php
"
!=
g
)
throw
new
Error
(
"
Invalid format type.
"
);
h
=
{
y
:
b
.
getUTCFullYear
().
toString
().
substring
(
2
),
Y
:
b
.
getUTCFullYear
(),
F
:
d
[
f
].
months
[
b
.
getUTCMonth
()],
M
:
d
[
f
].
monthsShort
[
b
.
getUTCMonth
()],
n
:
b
.
getUTCMonth
()
+
1
,
t
:
e
.
getDaysInMonth
(
b
.
getUTCFullYear
(),
b
.
getUTCMonth
()),
j
:
b
.
getUTCDate
(),
l
:
d
[
f
].
days
[
b
.
getUTCDay
()],
D
:
d
[
f
].
daysShort
[
b
.
getUTCDay
()],
w
:
b
.
getUTCDay
(),
N
:
0
==
b
.
getUTCDay
()?
7
:
b
.
getUTCDay
(),
S
:
b
.
getUTCDate
()
%
10
<=
d
[
f
].
suffix
.
length
?
d
[
f
].
suffix
[
b
.
getUTCDate
()
%
10
-
1
]:
""
,
a
:
2
==
d
[
f
].
meridiem
.
length
?
d
[
f
].
meridiem
[
b
.
getUTCHours
()
<
12
?
0
:
1
]:
""
,
g
:
b
.
getUTCHours
()
%
12
==
0
?
12
:
b
.
getUTCHours
()
%
12
,
G
:
b
.
getUTCHours
(),
i
:
b
.
getUTCMinutes
(),
s
:
b
.
getUTCSeconds
()},
h
.
m
=
(
h
.
n
<
10
?
"
0
"
:
""
)
+
h
.
n
,
h
.
d
=
(
h
.
j
<
10
?
"
0
"
:
""
)
+
h
.
j
,
h
.
A
=
h
.
a
.
toString
().
toUpperCase
(),
h
.
h
=
(
h
.
g
<
10
?
"
0
"
:
""
)
+
h
.
g
,
h
.
H
=
(
h
.
G
<
10
?
"
0
"
:
""
)
+
h
.
G
,
h
.
i
=
(
h
.
i
<
10
?
"
0
"
:
""
)
+
h
.
i
,
h
.
s
=
(
h
.
s
<
10
?
"
0
"
:
""
)
+
h
.
s
}
for
(
var
b
=
[],
i
=
a
.
extend
([],
c
.
separators
),
j
=
0
,
k
=
c
.
parts
.
length
;
k
>
j
;
j
++
)
i
.
length
&&
b
.
push
(
i
.
shift
()),
b
.
push
(
h
[
c
.
parts
[
j
]]);
return
i
.
length
&&
b
.
push
(
i
.
shift
()),
b
.
join
(
""
)},
convertViewMode
:
function
(
a
){
switch
(
a
){
case
4
:
case
"
decade
"
:
a
=
4
;
break
;
case
3
:
case
"
year
"
:
a
=
3
;
break
;
case
2
:
case
"
month
"
:
a
=
2
;
break
;
case
1
:
case
"
day
"
:
a
=
1
;
break
;
case
0
:
case
"
hour
"
:
a
=
0
}
return
a
},
headTemplate
:
'
<thead><tr><th class="prev"><i class="icon-arrow-left"/></th><th colspan="5" class="switch"></th><th class="next"><i class="icon-arrow-right"/></th></tr></thead>
'
,
contTemplate
:
'
<tbody><tr><td colspan="7"></td></tr></tbody>
'
,
footTemplate
:
'
<tfoot><tr><th colspan="7" class="today"></th></tr></tfoot>
'
};
e
.
template
=
'
<div class="datetimepicker"><div class="datetimepicker-minutes"><table class=" table-condensed">
'
+
e
.
headTemplate
+
e
.
contTemplate
+
e
.
footTemplate
+
'
</table></div><div class="datetimepicker-hours"><table class=" table-condensed">
'
+
e
.
headTemplate
+
e
.
contTemplate
+
e
.
footTemplate
+
'
</table></div><div class="datetimepicker-days"><table class=" table-condensed">
'
+
e
.
headTemplate
+
"
<tbody></tbody>
"
+
e
.
footTemplate
+
'
</table></div><div class="datetimepicker-months"><table class="table-condensed">
'
+
e
.
headTemplate
+
e
.
contTemplate
+
e
.
footTemplate
+
'
</table></div><div class="datetimepicker-years"><table class="table-condensed">
'
+
e
.
headTemplate
+
e
.
contTemplate
+
e
.
footTemplate
+
"
</table></div></div>
"
,
a
.
fn
.
datetimepicker
.
DPGlobal
=
e
,
a
.
fn
.
datetimepicker
.
noConflict
=
function
(){
return
a
.
fn
.
datetimepicker
=
old
,
this
},
a
(
document
).
on
(
"
focus.datetimepicker.data-api click.datetimepicker.data-api
"
,
'
[data-provide="datetimepicker"]
'
,
function
(
b
){
var
c
=
a
(
this
);
c
.
data
(
"
datetimepicker
"
)
||
(
b
.
preventDefault
(),
c
.
datetimepicker
(
"
show
"
))}),
a
(
function
(){
a
(
'
[data-provide="datetimepicker-inline"]
'
).
datetimepicker
()})}(
window
.
jQuery
);
\ No newline at end of file
dist/css/zui-theme.css
浏览文件 @
d5052a2a
/*!
* ====================================================
* ZUI - v0.9.0 - 2014-07-23
* https://github.com/easysoft/zui
* ZUI - v1.0.0 - 2014-07-24
* http://easysoft.github.io/zui/
* GitHub: https://github.com/easysoft/zui.git
* Copyright (c) 2014 Catouse@easysoft; Licensed GNU
* ====================================================
* Copyright (c) 2014 cnezsoft.com; Licensed MIT
*/
/* Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*/
...
...
dist/css/zui-theme.min.css
浏览文件 @
d5052a2a
/*!
* ====================================================
* ZUI - v0.9.0 - 2014-07-23
* https://github.com/easysoft/zui
* ZUI - v1.0.0 - 2014-07-24
* http://easysoft.github.io/zui/
* GitHub: https://github.com/easysoft/zui.git
* Copyright (c) 2014 Catouse@easysoft; Licensed GNU
* ====================================================
* Copyright (c) 2014 cnezsoft.com; Licensed MIT
*/
/* Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*/
...
...
dist/css/zui.css
浏览文件 @
d5052a2a
/*!
* ====================================================
* ZUI - v0.9.0 - 2014-07-23
* https://github.com/easysoft/zui
* ZUI - v1.0.0 - 2014-07-24
* http://easysoft.github.io/zui/
* GitHub: https://github.com/easysoft/zui.git
* Copyright (c) 2014 Catouse@easysoft; Licensed GNU
* ====================================================
* Copyright (c) 2014 cnezsoft.com; Licensed MIT
*/
/* Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*/
...
...
dist/css/zui.lite.css
浏览文件 @
d5052a2a
/*!
* ====================================================
* ZUI - v0.9.0 - 2014-07-23
* https://github.com/easysoft/zui
* ZUI - v1.0.0 - 2014-07-24
* http://easysoft.github.io/zui/
* GitHub: https://github.com/easysoft/zui.git
* Copyright (c) 2014 Catouse@easysoft; Licensed GNU
* ====================================================
* Copyright (c) 2014 cnezsoft.com; Licensed MIT
*/
/* Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*/
...
...
dist/css/zui.lite.min.css
浏览文件 @
d5052a2a
/*!
* ====================================================
* ZUI - v0.9.0 - 2014-07-23
* https://github.com/easysoft/zui
* ZUI - v1.0.0 - 2014-07-24
* http://easysoft.github.io/zui/
* GitHub: https://github.com/easysoft/zui.git
* Copyright (c) 2014 Catouse@easysoft; Licensed GNU
* ====================================================
* Copyright (c) 2014 cnezsoft.com; Licensed MIT
*/
/* Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*/
...
...
dist/css/zui.min.css
浏览文件 @
d5052a2a
/*!
* ====================================================
* ZUI - v0.9.0 - 2014-07-23
* https://github.com/easysoft/zui
* ZUI - v1.0.0 - 2014-07-24
* http://easysoft.github.io/zui/
* GitHub: https://github.com/easysoft/zui.git
* Copyright (c) 2014 Catouse@easysoft; Licensed GNU
* ====================================================
* Copyright (c) 2014 cnezsoft.com; Licensed MIT
*/
/* Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*/
...
...
dist/js/zui.js
浏览文件 @
d5052a2a
/*!
* ====================================================
* ZUI - v0.9.0 - 2014-07-23
* https://github.com/easysoft/zui
* ZUI - v1.0.0 - 2014-07-24
* http://easysoft.github.io/zui/
* GitHub: https://github.com/easysoft/zui.git
* Copyright (c) 2014 Catouse@easysoft; Licensed GNU
* ====================================================
* Copyright (c) 2014 cnezsoft.com; Licensed MIT
*/
/* Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*/
...
...
dist/js/zui.lite.js
浏览文件 @
d5052a2a
/*!
* ====================================================
* ZUI - v0.9.0 - 2014-07-23
* https://github.com/easysoft/zui
* ZUI - v1.0.0 - 2014-07-24
* http://easysoft.github.io/zui/
* GitHub: https://github.com/easysoft/zui.git
* Copyright (c) 2014 Catouse@easysoft; Licensed GNU
* ====================================================
* Copyright (c) 2014 cnezsoft.com; Licensed MIT
*/
/* Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*/
...
...
dist/js/zui.lite.min.js
浏览文件 @
d5052a2a
/*!
* ====================================================
* ZUI - v0.9.0 - 2014-07-23
* https://github.com/easysoft/zui
* ZUI - v1.0.0 - 2014-07-24
* http://easysoft.github.io/zui/
* GitHub: https://github.com/easysoft/zui.git
* Copyright (c) 2014 Catouse@easysoft; Licensed GNU
* ====================================================
* Copyright (c) 2014 cnezsoft.com; Licensed MIT
*/
/* Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*/
...
...
dist/js/zui.min.js
浏览文件 @
d5052a2a
/*!
* ====================================================
* ZUI - v0.9.0 - 2014-07-23
* https://github.com/easysoft/zui
* ZUI - v1.0.0 - 2014-07-24
* http://easysoft.github.io/zui/
* GitHub: https://github.com/easysoft/zui.git
* Copyright (c) 2014 Catouse@easysoft; Licensed GNU
* ====================================================
* Copyright (c) 2014 cnezsoft.com; Licensed MIT
*/
/* Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*/
...
...
index.html
浏览文件 @
d5052a2a
...
...
@@ -34,22 +34,22 @@ base_url: "./"
<li
class=
"nav-heading"
>
开始
</li>
<li><a
href=
"docs/start.html#about"
>
约定
</a></li>
<li><a
href=
"docs/start.html#files"
>
文件目录结构
</a></li>
<li><a
href=
"start.html#lite"
>
关于简洁版
</a></li>
<li><a
href=
"start.html#grunt"
>
编译及定制
</a></li>
<li><a
href=
"start.html#browsers"
>
受支持的平台
</a></li>
<li><a
href=
"
docs/
start.html#lite"
>
关于简洁版
</a></li>
<li><a
href=
"
docs/
start.html#grunt"
>
编译及定制
</a></li>
<li><a
href=
"
docs/
start.html#browsers"
>
受支持的平台
</a></li>
</ul>
<ul
class=
"nav navbar-nav collapsed"
>
<li
class=
"nav-heading"
>
基础
</li>
<li><a
href=
"basic.html#hello"
>
Hello world
</a></li>
<li><a
href=
"basic.html#global"
>
全局样式表
</a></li>
<li><a
href=
"basic.html#ie"
>
兼容IE浏览器
</a></li>
<li><a
href=
"basic.html#responsive"
>
响应式设计
</a></li>
<li><a
href=
"basic.html#grid"
>
栅格系统
</a></li>
<li><a
href=
"basic.html#type"
>
文字排版
</a></li>
<li><a
href=
"basic.html#utility"
>
辅助类
</a></li>
<li><a
href=
"basic.html#scrollbars"
>
滚动条
</a></li>
<li><a
href=
"basic.html#colorset"
>
配色
</a></li>
<li><a
href=
"basic.html#themes"
>
主题
</a></li>
<li><a
href=
"
docs/
basic.html#hello"
>
Hello world
</a></li>
<li><a
href=
"
docs/
basic.html#global"
>
全局样式表
</a></li>
<li><a
href=
"
docs/
basic.html#ie"
>
兼容IE浏览器
</a></li>
<li><a
href=
"
docs/
basic.html#responsive"
>
响应式设计
</a></li>
<li><a
href=
"
docs/
basic.html#grid"
>
栅格系统
</a></li>
<li><a
href=
"
docs/
basic.html#type"
>
文字排版
</a></li>
<li><a
href=
"
docs/
basic.html#utility"
>
辅助类
</a></li>
<li><a
href=
"
docs/
basic.html#scrollbars"
>
滚动条
</a></li>
<li><a
href=
"
docs/
basic.html#colorset"
>
配色
</a></li>
<li><a
href=
"
docs/
basic.html#themes"
>
主题
</a></li>
</ul>
<ul
class=
"nav navbar-nav collapsed"
>
<li
class=
"nav-heading"
>
控件
</li>
...
...
@@ -112,7 +112,7 @@ base_url: "./"
<div
id=
"main"
>
<div
class=
"jumbotron text-center"
>
<h1>
ZUI
</h1>
<p
class=
'text-muted'
>
一个开源
免费的前端框架,用于快速构建禅道系列
跨屏应用。
</p>
<p
class=
'text-muted'
>
一个开源
前端实践方案,帮助你快速构现代
跨屏应用。
</p>
<br>
<p>
<a
target=
"_blank"
href=
"https://github.com/easysoft/zui"
class=
"btn btn-success"
><i
class=
"icon-code"
></i>
项目
</a>
...
...
@@ -123,8 +123,8 @@ base_url: "./"
<h2
class=
'text-special'
>
特色
</h2>
<ul
class=
'list-unstyled'
>
<li>
简单美观,易于使用,快速构建简洁大方的现代web应用。
</li>
<li>
新颖
但健壮,采用html5但支持大部分
流行的移动及桌面浏览器平台,一些旧的浏览器也能够降级支持。
</li>
<li>
轻快独立稳定,最佳的可用性能,最大限度的不依赖于
其他框架,以优先支持禅道官方产品为主,不做大而全的解决方案
。
</li>
<li>
新颖
健壮,采用HTML5且支持所有
流行的移动及桌面浏览器平台,一些旧的浏览器也能够降级支持。
</li>
<li>
轻快独立稳定,最佳的可用性能,最大限度的不依赖于
外部组件
。
</li>
<li>
全平台响应,一次编写,响应任何尺寸的设备。
</li>
</ul>
<hr>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录