Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
jfV5pc
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
管理员
jfV5pc
Commits
b9cf285a
Commit
b9cf285a
authored
Jul 23, 2018
by
周添尉
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改登录页
parent
724c2318
Show whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
3849 additions
and
286 deletions
+3849
-286
jquery-1.10.1.min.js
WebContent/lib/plug/fancyBox-2.1.5/lib/jquery-1.10.1.min.js
+6
-0
jquery-1.9.0.min.js
WebContent/lib/plug/fancyBox-2.1.5/lib/jquery-1.9.0.min.js
+5
-0
jquery.mousewheel-3.0.6.pack.js
...b/plug/fancyBox-2.1.5/lib/jquery.mousewheel-3.0.6.pack.js
+14
-0
blank.gif
WebContent/lib/plug/fancyBox-2.1.5/source/blank.gif
+0
-0
fancybox_loading.gif
...ntent/lib/plug/fancyBox-2.1.5/source/fancybox_loading.gif
+0
-0
fancybox_loading@2x.gif
...nt/lib/plug/fancyBox-2.1.5/source/fancybox_loading@2x.gif
+0
-0
fancybox_overlay.png
...ntent/lib/plug/fancyBox-2.1.5/source/fancybox_overlay.png
+0
-0
fancybox_sprite.png
...ontent/lib/plug/fancyBox-2.1.5/source/fancybox_sprite.png
+0
-0
fancybox_sprite@2x.png
...ent/lib/plug/fancyBox-2.1.5/source/fancybox_sprite@2x.png
+0
-0
fancybox_buttons.png
...b/plug/fancyBox-2.1.5/source/helpers/fancybox_buttons.png
+0
-0
jquery.fancybox-buttons.css
...fancyBox-2.1.5/source/helpers/jquery.fancybox-buttons.css
+98
-0
jquery.fancybox-buttons.js
.../fancyBox-2.1.5/source/helpers/jquery.fancybox-buttons.js
+122
-0
jquery.fancybox-media.js
...ug/fancyBox-2.1.5/source/helpers/jquery.fancybox-media.js
+200
-0
jquery.fancybox-thumbs.css
.../fancyBox-2.1.5/source/helpers/jquery.fancybox-thumbs.css
+56
-0
jquery.fancybox-thumbs.js
...g/fancyBox-2.1.5/source/helpers/jquery.fancybox-thumbs.js
+163
-0
jquery.fancybox.css
...ontent/lib/plug/fancyBox-2.1.5/source/jquery.fancybox.css
+275
-0
jquery.fancybox.js
WebContent/lib/plug/fancyBox-2.1.5/source/jquery.fancybox.js
+2020
-0
jquery.fancybox.pack.js
...nt/lib/plug/fancyBox-2.1.5/source/jquery.fancybox.pack.js
+47
-0
inputTips.js
WebContent/lib/plug/inputTips/inputTips.js
+128
-0
login3_bg.jpg
WebContent/system/pages/login/img/login3_bg.jpg
+0
-0
sampleLogin.jsp
WebContent/system/pages/login/sampleLogin.jsp
+269
-286
sampleLogin.jsp.bak
WebContent/system/pages/login/sampleLogin.jsp.bak
+446
-0
No files found.
WebContent/lib/plug/fancyBox-2.1.5/lib/jquery-1.10.1.min.js
0 → 100644
View file @
b9cf285a
/*! jQuery v1.10.1 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
//@ sourceMappingURL=jquery-1.10.1.min.map
*/
(
function
(
e
,
t
){
var
n
,
r
,
i
=
typeof
t
,
o
=
e
.
location
,
a
=
e
.
document
,
s
=
a
.
documentElement
,
l
=
e
.
jQuery
,
u
=
e
.
$
,
c
=
{},
p
=
[],
f
=
"1.10.1"
,
d
=
p
.
concat
,
h
=
p
.
push
,
g
=
p
.
slice
,
m
=
p
.
indexOf
,
y
=
c
.
toString
,
v
=
c
.
hasOwnProperty
,
b
=
f
.
trim
,
x
=
function
(
e
,
t
){
return
new
x
.
fn
.
init
(
e
,
t
,
r
)},
w
=
/
[
+-
]?(?:\d
*
\.
|
)\d
+
(?:[
eE
][
+-
]?\d
+|
)
/
.
source
,
T
=
/
\S
+/g
,
C
=
/^
[\s\u
FEFF
\x
A0
]
+|
[\s\u
FEFF
\x
A0
]
+$/g
,
N
=
/^
(?:\s
*
(
<
[\w\W]
+>
)[^
>
]
*|#
([\w
-
]
*
))
$/
,
k
=
/^<
(\w
+
)\s
*
\/?
>
(?:
<
\/\1
>|
)
$/
,
E
=
/^
[\]
,:{}
\s]
*$/
,
S
=
/
(?:
^|:|,
)(?:\s
*
\[)
+/g
,
A
=
/
\\(?:[
"
\\\/
bfnrt
]
|u
[\d
a-fA-F
]{4})
/g
,
j
=
/"
[^
"
\\\r\n]
*"|true|false|null|-
?(?:\d
+
\.
|
)\d
+
(?:[
eE
][
+-
]?\d
+|
)
/g
,
D
=
/^-ms-/
,
L
=
/-
([\d
a-z
])
/gi
,
H
=
function
(
e
,
t
){
return
t
.
toUpperCase
()},
q
=
function
(
e
){(
a
.
addEventListener
||
"load"
===
e
.
type
||
"complete"
===
a
.
readyState
)
&&
(
_
(),
x
.
ready
())},
_
=
function
(){
a
.
addEventListener
?(
a
.
removeEventListener
(
"DOMContentLoaded"
,
q
,
!
1
),
e
.
removeEventListener
(
"load"
,
q
,
!
1
)):(
a
.
detachEvent
(
"onreadystatechange"
,
q
),
e
.
detachEvent
(
"onload"
,
q
))};
x
.
fn
=
x
.
prototype
=
{
jquery
:
f
,
constructor
:
x
,
init
:
function
(
e
,
n
,
r
){
var
i
,
o
;
if
(
!
e
)
return
this
;
if
(
"string"
==
typeof
e
){
if
(
i
=
"<"
===
e
.
charAt
(
0
)
&&
">"
===
e
.
charAt
(
e
.
length
-
1
)
&&
e
.
length
>=
3
?[
null
,
e
,
null
]:
N
.
exec
(
e
),
!
i
||!
i
[
1
]
&&
n
)
return
!
n
||
n
.
jquery
?(
n
||
r
).
find
(
e
):
this
.
constructor
(
n
).
find
(
e
);
if
(
i
[
1
]){
if
(
n
=
n
instanceof
x
?
n
[
0
]:
n
,
x
.
merge
(
this
,
x
.
parseHTML
(
i
[
1
],
n
&&
n
.
nodeType
?
n
.
ownerDocument
||
n
:
a
,
!
0
)),
k
.
test
(
i
[
1
])
&&
x
.
isPlainObject
(
n
))
for
(
i
in
n
)
x
.
isFunction
(
this
[
i
])?
this
[
i
](
n
[
i
]):
this
.
attr
(
i
,
n
[
i
]);
return
this
}
if
(
o
=
a
.
getElementById
(
i
[
2
]),
o
&&
o
.
parentNode
){
if
(
o
.
id
!==
i
[
2
])
return
r
.
find
(
e
);
this
.
length
=
1
,
this
[
0
]
=
o
}
return
this
.
context
=
a
,
this
.
selector
=
e
,
this
}
return
e
.
nodeType
?(
this
.
context
=
this
[
0
]
=
e
,
this
.
length
=
1
,
this
):
x
.
isFunction
(
e
)?
r
.
ready
(
e
):(
e
.
selector
!==
t
&&
(
this
.
selector
=
e
.
selector
,
this
.
context
=
e
.
context
),
x
.
makeArray
(
e
,
this
))},
selector
:
""
,
length
:
0
,
toArray
:
function
(){
return
g
.
call
(
this
)},
get
:
function
(
e
){
return
null
==
e
?
this
.
toArray
():
0
>
e
?
this
[
this
.
length
+
e
]:
this
[
e
]},
pushStack
:
function
(
e
){
var
t
=
x
.
merge
(
this
.
constructor
(),
e
);
return
t
.
prevObject
=
this
,
t
.
context
=
this
.
context
,
t
},
each
:
function
(
e
,
t
){
return
x
.
each
(
this
,
e
,
t
)},
ready
:
function
(
e
){
return
x
.
ready
.
promise
().
done
(
e
),
this
},
slice
:
function
(){
return
this
.
pushStack
(
g
.
apply
(
this
,
arguments
))},
first
:
function
(){
return
this
.
eq
(
0
)},
last
:
function
(){
return
this
.
eq
(
-
1
)},
eq
:
function
(
e
){
var
t
=
this
.
length
,
n
=+
e
+
(
0
>
e
?
t
:
0
);
return
this
.
pushStack
(
n
>=
0
&&
t
>
n
?[
this
[
n
]]:[])},
map
:
function
(
e
){
return
this
.
pushStack
(
x
.
map
(
this
,
function
(
t
,
n
){
return
e
.
call
(
t
,
n
,
t
)}))},
end
:
function
(){
return
this
.
prevObject
||
this
.
constructor
(
null
)},
push
:
h
,
sort
:[].
sort
,
splice
:[].
splice
},
x
.
fn
.
init
.
prototype
=
x
.
fn
,
x
.
extend
=
x
.
fn
.
extend
=
function
(){
var
e
,
n
,
r
,
i
,
o
,
a
,
s
=
arguments
[
0
]
||
{},
l
=
1
,
u
=
arguments
.
length
,
c
=!
1
;
for
(
"boolean"
==
typeof
s
&&
(
c
=
s
,
s
=
arguments
[
1
]
||
{},
l
=
2
),
"object"
==
typeof
s
||
x
.
isFunction
(
s
)
||
(
s
=
{}),
u
===
l
&&
(
s
=
this
,
--
l
);
u
>
l
;
l
++
)
if
(
null
!=
(
o
=
arguments
[
l
]))
for
(
i
in
o
)
e
=
s
[
i
],
r
=
o
[
i
],
s
!==
r
&&
(
c
&&
r
&&
(
x
.
isPlainObject
(
r
)
||
(
n
=
x
.
isArray
(
r
)))?(
n
?(
n
=!
1
,
a
=
e
&&
x
.
isArray
(
e
)?
e
:[]):
a
=
e
&&
x
.
isPlainObject
(
e
)?
e
:{},
s
[
i
]
=
x
.
extend
(
c
,
a
,
r
)):
r
!==
t
&&
(
s
[
i
]
=
r
));
return
s
},
x
.
extend
({
expando
:
"jQuery"
+
(
f
+
Math
.
random
()).
replace
(
/
\D
/g
,
""
),
noConflict
:
function
(
t
){
return
e
.
$
===
x
&&
(
e
.
$
=
u
),
t
&&
e
.
jQuery
===
x
&&
(
e
.
jQuery
=
l
),
x
},
isReady
:
!
1
,
readyWait
:
1
,
holdReady
:
function
(
e
){
e
?
x
.
readyWait
++
:
x
.
ready
(
!
0
)},
ready
:
function
(
e
){
if
(
e
===!
0
?
!--
x
.
readyWait
:
!
x
.
isReady
){
if
(
!
a
.
body
)
return
setTimeout
(
x
.
ready
);
x
.
isReady
=!
0
,
e
!==!
0
&&--
x
.
readyWait
>
0
||
(
n
.
resolveWith
(
a
,[
x
]),
x
.
fn
.
trigger
&&
x
(
a
).
trigger
(
"ready"
).
off
(
"ready"
))}},
isFunction
:
function
(
e
){
return
"function"
===
x
.
type
(
e
)},
isArray
:
Array
.
isArray
||
function
(
e
){
return
"array"
===
x
.
type
(
e
)},
isWindow
:
function
(
e
){
return
null
!=
e
&&
e
==
e
.
window
},
isNumeric
:
function
(
e
){
return
!
isNaN
(
parseFloat
(
e
))
&&
isFinite
(
e
)},
type
:
function
(
e
){
return
null
==
e
?
e
+
""
:
"object"
==
typeof
e
||
"function"
==
typeof
e
?
c
[
y
.
call
(
e
)]
||
"object"
:
typeof
e
},
isPlainObject
:
function
(
e
){
var
n
;
if
(
!
e
||
"object"
!==
x
.
type
(
e
)
||
e
.
nodeType
||
x
.
isWindow
(
e
))
return
!
1
;
try
{
if
(
e
.
constructor
&&!
v
.
call
(
e
,
"constructor"
)
&&!
v
.
call
(
e
.
constructor
.
prototype
,
"isPrototypeOf"
))
return
!
1
}
catch
(
r
){
return
!
1
}
if
(
x
.
support
.
ownLast
)
for
(
n
in
e
)
return
v
.
call
(
e
,
n
);
for
(
n
in
e
);
return
n
===
t
||
v
.
call
(
e
,
n
)},
isEmptyObject
:
function
(
e
){
var
t
;
for
(
t
in
e
)
return
!
1
;
return
!
0
},
error
:
function
(
e
){
throw
Error
(
e
)},
parseHTML
:
function
(
e
,
t
,
n
){
if
(
!
e
||
"string"
!=
typeof
e
)
return
null
;
"boolean"
==
typeof
t
&&
(
n
=
t
,
t
=!
1
),
t
=
t
||
a
;
var
r
=
k
.
exec
(
e
),
i
=!
n
&&
[];
return
r
?[
t
.
createElement
(
r
[
1
])]:(
r
=
x
.
buildFragment
([
e
],
t
,
i
),
i
&&
x
(
i
).
remove
(),
x
.
merge
([],
r
.
childNodes
))},
parseJSON
:
function
(
n
){
return
e
.
JSON
&&
e
.
JSON
.
parse
?
e
.
JSON
.
parse
(
n
):
null
===
n
?
n
:
"string"
==
typeof
n
&&
(
n
=
x
.
trim
(
n
),
n
&&
E
.
test
(
n
.
replace
(
A
,
"@"
).
replace
(
j
,
"]"
).
replace
(
S
,
""
)))?
Function
(
"return "
+
n
)():(
x
.
error
(
"Invalid JSON: "
+
n
),
t
)},
parseXML
:
function
(
n
){
var
r
,
i
;
if
(
!
n
||
"string"
!=
typeof
n
)
return
null
;
try
{
e
.
DOMParser
?(
i
=
new
DOMParser
,
r
=
i
.
parseFromString
(
n
,
"text/xml"
)):(
r
=
new
ActiveXObject
(
"Microsoft.XMLDOM"
),
r
.
async
=
"false"
,
r
.
loadXML
(
n
))}
catch
(
o
){
r
=
t
}
return
r
&&
r
.
documentElement
&&!
r
.
getElementsByTagName
(
"parsererror"
).
length
||
x
.
error
(
"Invalid XML: "
+
n
),
r
},
noop
:
function
(){},
globalEval
:
function
(
t
){
t
&&
x
.
trim
(
t
)
&&
(
e
.
execScript
||
function
(
t
){
e
.
eval
.
call
(
e
,
t
)})(
t
)},
camelCase
:
function
(
e
){
return
e
.
replace
(
D
,
"ms-"
).
replace
(
L
,
H
)},
nodeName
:
function
(
e
,
t
){
return
e
.
nodeName
&&
e
.
nodeName
.
toLowerCase
()
===
t
.
toLowerCase
()},
each
:
function
(
e
,
t
,
n
){
var
r
,
i
=
0
,
o
=
e
.
length
,
a
=
M
(
e
);
if
(
n
){
if
(
a
){
for
(;
o
>
i
;
i
++
)
if
(
r
=
t
.
apply
(
e
[
i
],
n
),
r
===!
1
)
break
}
else
for
(
i
in
e
)
if
(
r
=
t
.
apply
(
e
[
i
],
n
),
r
===!
1
)
break
}
else
if
(
a
){
for
(;
o
>
i
;
i
++
)
if
(
r
=
t
.
call
(
e
[
i
],
i
,
e
[
i
]),
r
===!
1
)
break
}
else
for
(
i
in
e
)
if
(
r
=
t
.
call
(
e
[
i
],
i
,
e
[
i
]),
r
===!
1
)
break
;
return
e
},
trim
:
b
&&!
b
.
call
(
"
\
ufeff
\
u00a0"
)?
function
(
e
){
return
null
==
e
?
""
:
b
.
call
(
e
)}:
function
(
e
){
return
null
==
e
?
""
:(
e
+
""
).
replace
(
C
,
""
)},
makeArray
:
function
(
e
,
t
){
var
n
=
t
||
[];
return
null
!=
e
&&
(
M
(
Object
(
e
))?
x
.
merge
(
n
,
"string"
==
typeof
e
?[
e
]:
e
):
h
.
call
(
n
,
e
)),
n
},
inArray
:
function
(
e
,
t
,
n
){
var
r
;
if
(
t
){
if
(
m
)
return
m
.
call
(
t
,
e
,
n
);
for
(
r
=
t
.
length
,
n
=
n
?
0
>
n
?
Math
.
max
(
0
,
r
+
n
):
n
:
0
;
r
>
n
;
n
++
)
if
(
n
in
t
&&
t
[
n
]
===
e
)
return
n
}
return
-
1
},
merge
:
function
(
e
,
n
){
var
r
=
n
.
length
,
i
=
e
.
length
,
o
=
0
;
if
(
"number"
==
typeof
r
)
for
(;
r
>
o
;
o
++
)
e
[
i
++
]
=
n
[
o
];
else
while
(
n
[
o
]
!==
t
)
e
[
i
++
]
=
n
[
o
++
];
return
e
.
length
=
i
,
e
},
grep
:
function
(
e
,
t
,
n
){
var
r
,
i
=
[],
o
=
0
,
a
=
e
.
length
;
for
(
n
=!!
n
;
a
>
o
;
o
++
)
r
=!!
t
(
e
[
o
],
o
),
n
!==
r
&&
i
.
push
(
e
[
o
]);
return
i
},
map
:
function
(
e
,
t
,
n
){
var
r
,
i
=
0
,
o
=
e
.
length
,
a
=
M
(
e
),
s
=
[];
if
(
a
)
for
(;
o
>
i
;
i
++
)
r
=
t
(
e
[
i
],
i
,
n
),
null
!=
r
&&
(
s
[
s
.
length
]
=
r
);
else
for
(
i
in
e
)
r
=
t
(
e
[
i
],
i
,
n
),
null
!=
r
&&
(
s
[
s
.
length
]
=
r
);
return
d
.
apply
([],
s
)},
guid
:
1
,
proxy
:
function
(
e
,
n
){
var
r
,
i
,
o
;
return
"string"
==
typeof
n
&&
(
o
=
e
[
n
],
n
=
e
,
e
=
o
),
x
.
isFunction
(
e
)?(
r
=
g
.
call
(
arguments
,
2
),
i
=
function
(){
return
e
.
apply
(
n
||
this
,
r
.
concat
(
g
.
call
(
arguments
)))},
i
.
guid
=
e
.
guid
=
e
.
guid
||
x
.
guid
++
,
i
):
t
},
access
:
function
(
e
,
n
,
r
,
i
,
o
,
a
,
s
){
var
l
=
0
,
u
=
e
.
length
,
c
=
null
==
r
;
if
(
"object"
===
x
.
type
(
r
)){
o
=!
0
;
for
(
l
in
r
)
x
.
access
(
e
,
n
,
l
,
r
[
l
],
!
0
,
a
,
s
)}
else
if
(
i
!==
t
&&
(
o
=!
0
,
x
.
isFunction
(
i
)
||
(
s
=!
0
),
c
&&
(
s
?(
n
.
call
(
e
,
i
),
n
=
null
):(
c
=
n
,
n
=
function
(
e
,
t
,
n
){
return
c
.
call
(
x
(
e
),
n
)})),
n
))
for
(;
u
>
l
;
l
++
)
n
(
e
[
l
],
r
,
s
?
i
:
i
.
call
(
e
[
l
],
l
,
n
(
e
[
l
],
r
)));
return
o
?
e
:
c
?
n
.
call
(
e
):
u
?
n
(
e
[
0
],
r
):
a
},
now
:
function
(){
return
(
new
Date
).
getTime
()},
swap
:
function
(
e
,
t
,
n
,
r
){
var
i
,
o
,
a
=
{};
for
(
o
in
t
)
a
[
o
]
=
e
.
style
[
o
],
e
.
style
[
o
]
=
t
[
o
];
i
=
n
.
apply
(
e
,
r
||
[]);
for
(
o
in
t
)
e
.
style
[
o
]
=
a
[
o
];
return
i
}}),
x
.
ready
.
promise
=
function
(
t
){
if
(
!
n
)
if
(
n
=
x
.
Deferred
(),
"complete"
===
a
.
readyState
)
setTimeout
(
x
.
ready
);
else
if
(
a
.
addEventListener
)
a
.
addEventListener
(
"DOMContentLoaded"
,
q
,
!
1
),
e
.
addEventListener
(
"load"
,
q
,
!
1
);
else
{
a
.
attachEvent
(
"onreadystatechange"
,
q
),
e
.
attachEvent
(
"onload"
,
q
);
var
r
=!
1
;
try
{
r
=
null
==
e
.
frameElement
&&
a
.
documentElement
}
catch
(
i
){}
r
&&
r
.
doScroll
&&
function
o
(){
if
(
!
x
.
isReady
){
try
{
r
.
doScroll
(
"left"
)}
catch
(
e
){
return
setTimeout
(
o
,
50
)}
_
(),
x
.
ready
()}}()}
return
n
.
promise
(
t
)},
x
.
each
(
"Boolean Number String Function Array Date RegExp Object Error"
.
split
(
" "
),
function
(
e
,
t
){
c
[
"[object "
+
t
+
"]"
]
=
t
.
toLowerCase
()});
function
M
(
e
){
var
t
=
e
.
length
,
n
=
x
.
type
(
e
);
return
x
.
isWindow
(
e
)?
!
1
:
1
===
e
.
nodeType
&&
t
?
!
0
:
"array"
===
n
||
"function"
!==
n
&&
(
0
===
t
||
"number"
==
typeof
t
&&
t
>
0
&&
t
-
1
in
e
)}
r
=
x
(
a
),
function
(
e
,
t
){
var
n
,
r
,
i
,
o
,
a
,
s
,
l
,
u
,
c
,
p
,
f
,
d
,
h
,
g
,
m
,
y
,
v
,
b
=
"sizzle"
+-
new
Date
,
w
=
e
.
document
,
T
=
0
,
C
=
0
,
N
=
lt
(),
k
=
lt
(),
E
=
lt
(),
S
=!
1
,
A
=
function
(){
return
0
},
j
=
typeof
t
,
D
=
1
<<
31
,
L
=
{}.
hasOwnProperty
,
H
=
[],
q
=
H
.
pop
,
_
=
H
.
push
,
M
=
H
.
push
,
O
=
H
.
slice
,
F
=
H
.
indexOf
||
function
(
e
){
var
t
=
0
,
n
=
this
.
length
;
for
(;
n
>
t
;
t
++
)
if
(
this
[
t
]
===
e
)
return
t
;
return
-
1
},
B
=
"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped"
,
P
=
"[
\\
x20
\\
t
\\
r
\\
n
\\
f]"
,
R
=
"(?:
\\\\
.|[
\\
w-]|[^
\\
x00-
\\
xa0])+"
,
W
=
R
.
replace
(
"w"
,
"w#"
),
$
=
"
\\
["
+
P
+
"*("
+
R
+
")"
+
P
+
"*(?:([*^$|!~]?=)"
+
P
+
"*(?:(['
\"
])((?:
\\\\
.|[^
\\\\
])*?)
\\
3|("
+
W
+
")|)|)"
+
P
+
"*
\\
]"
,
I
=
":("
+
R
+
")(?:
\\
(((['
\"
])((?:
\\\\
.|[^
\\\\
])*?)
\\
3|((?:
\\\\
.|[^
\\\\
()[
\\
]]|"
+
$
.
replace
(
3
,
8
)
+
")*)|.*)
\\
)|)"
,
z
=
RegExp
(
"^"
+
P
+
"+|((?:^|[^
\\\\
])(?:
\\\\
.)*)"
+
P
+
"+$"
,
"g"
),
X
=
RegExp
(
"^"
+
P
+
"*,"
+
P
+
"*"
),
U
=
RegExp
(
"^"
+
P
+
"*([>+~]|"
+
P
+
")"
+
P
+
"*"
),
V
=
RegExp
(
P
+
"*[+~]"
),
Y
=
RegExp
(
"="
+
P
+
"*([^
\\
]'
\"
]*)"
+
P
+
"*
\\
]"
,
"g"
),
J
=
RegExp
(
I
),
G
=
RegExp
(
"^"
+
W
+
"$"
),
Q
=
{
ID
:
RegExp
(
"^#("
+
R
+
")"
),
CLASS
:
RegExp
(
"^
\\
.("
+
R
+
")"
),
TAG
:
RegExp
(
"^("
+
R
.
replace
(
"w"
,
"w*"
)
+
")"
),
ATTR
:
RegExp
(
"^"
+
$
),
PSEUDO
:
RegExp
(
"^"
+
I
),
CHILD
:
RegExp
(
"^:(only|first|last|nth|nth-last)-(child|of-type)(?:
\\
("
+
P
+
"*(even|odd|(([+-]|)(
\\
d*)n|)"
+
P
+
"*(?:([+-]|)"
+
P
+
"*(
\\
d+)|))"
+
P
+
"*
\\
)|)"
,
"i"
),
bool
:
RegExp
(
"^(?:"
+
B
+
")$"
,
"i"
),
needsContext
:
RegExp
(
"^"
+
P
+
"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:
\\
("
+
P
+
"*((?:-
\\
d)?
\\
d*)"
+
P
+
"*
\\
)|)(?=[^-]|$)"
,
"i"
)},
K
=
/^
[^
{
]
+
\{\s
*
\[
native
\w
/
,
Z
=
/^
(?:
#
([\w
-
]
+
)
|
(\w
+
)
|
\.([\w
-
]
+
))
$/
,
et
=
/^
(?:
input|select|textarea|button
)
$/i
,
tt
=
/^h
\d
$/i
,
nt
=
/'|
\\
/g
,
rt
=
RegExp
(
"
\\\\
([
\\
da-f]{1,6}"
+
P
+
"?|("
+
P
+
")|.)"
,
"ig"
),
it
=
function
(
e
,
t
,
n
){
var
r
=
"0x"
+
t
-
65536
;
return
r
!==
r
||
n
?
t
:
0
>
r
?
String
.
fromCharCode
(
r
+
65536
):
String
.
fromCharCode
(
55296
|
r
>>
10
,
56320
|
1023
&
r
)};
try
{
M
.
apply
(
H
=
O
.
call
(
w
.
childNodes
),
w
.
childNodes
),
H
[
w
.
childNodes
.
length
].
nodeType
}
catch
(
ot
){
M
=
{
apply
:
H
.
length
?
function
(
e
,
t
){
_
.
apply
(
e
,
O
.
call
(
t
))}:
function
(
e
,
t
){
var
n
=
e
.
length
,
r
=
0
;
while
(
e
[
n
++
]
=
t
[
r
++
]);
e
.
length
=
n
-
1
}}}
function
at
(
e
,
t
,
n
,
i
){
var
o
,
a
,
s
,
l
,
u
,
c
,
d
,
m
,
y
,
x
;
if
((
t
?
t
.
ownerDocument
||
t
:
w
)
!==
f
&&
p
(
t
),
t
=
t
||
f
,
n
=
n
||
[],
!
e
||
"string"
!=
typeof
e
)
return
n
;
if
(
1
!==
(
l
=
t
.
nodeType
)
&&
9
!==
l
)
return
[];
if
(
h
&&!
i
){
if
(
o
=
Z
.
exec
(
e
))
if
(
s
=
o
[
1
]){
if
(
9
===
l
){
if
(
a
=
t
.
getElementById
(
s
),
!
a
||!
a
.
parentNode
)
return
n
;
if
(
a
.
id
===
s
)
return
n
.
push
(
a
),
n
}
else
if
(
t
.
ownerDocument
&&
(
a
=
t
.
ownerDocument
.
getElementById
(
s
))
&&
v
(
t
,
a
)
&&
a
.
id
===
s
)
return
n
.
push
(
a
),
n
}
else
{
if
(
o
[
2
])
return
M
.
apply
(
n
,
t
.
getElementsByTagName
(
e
)),
n
;
if
((
s
=
o
[
3
])
&&
r
.
getElementsByClassName
&&
t
.
getElementsByClassName
)
return
M
.
apply
(
n
,
t
.
getElementsByClassName
(
s
)),
n
}
if
(
r
.
qsa
&&
(
!
g
||!
g
.
test
(
e
))){
if
(
m
=
d
=
b
,
y
=
t
,
x
=
9
===
l
&&
e
,
1
===
l
&&
"object"
!==
t
.
nodeName
.
toLowerCase
()){
c
=
bt
(
e
),(
d
=
t
.
getAttribute
(
"id"
))?
m
=
d
.
replace
(
nt
,
"
\\
$&"
):
t
.
setAttribute
(
"id"
,
m
),
m
=
"[id='"
+
m
+
"'] "
,
u
=
c
.
length
;
while
(
u
--
)
c
[
u
]
=
m
+
xt
(
c
[
u
]);
y
=
V
.
test
(
e
)
&&
t
.
parentNode
||
t
,
x
=
c
.
join
(
","
)}
if
(
x
)
try
{
return
M
.
apply
(
n
,
y
.
querySelectorAll
(
x
)),
n
}
catch
(
T
){}
finally
{
d
||
t
.
removeAttribute
(
"id"
)}}}
return
At
(
e
.
replace
(
z
,
"$1"
),
t
,
n
,
i
)}
function
st
(
e
){
return
K
.
test
(
e
+
""
)}
function
lt
(){
var
e
=
[];
function
t
(
n
,
r
){
return
e
.
push
(
n
+=
" "
)
>
o
.
cacheLength
&&
delete
t
[
e
.
shift
()],
t
[
n
]
=
r
}
return
t
}
function
ut
(
e
){
return
e
[
b
]
=!
0
,
e
}
function
ct
(
e
){
var
t
=
f
.
createElement
(
"div"
);
try
{
return
!!
e
(
t
)}
catch
(
n
){
return
!
1
}
finally
{
t
.
parentNode
&&
t
.
parentNode
.
removeChild
(
t
),
t
=
null
}}
function
pt
(
e
,
t
,
n
){
e
=
e
.
split
(
"|"
);
var
r
,
i
=
e
.
length
,
a
=
n
?
null
:
t
;
while
(
i
--
)(
r
=
o
.
attrHandle
[
e
[
i
]])
&&
r
!==
t
||
(
o
.
attrHandle
[
e
[
i
]]
=
a
)}
function
ft
(
e
,
t
){
var
n
=
e
.
getAttributeNode
(
t
);
return
n
&&
n
.
specified
?
n
.
value
:
e
[
t
]
===!
0
?
t
.
toLowerCase
():
null
}
function
dt
(
e
,
t
){
return
e
.
getAttribute
(
t
,
"type"
===
t
.
toLowerCase
()?
1
:
2
)}
function
ht
(
e
){
return
"input"
===
e
.
nodeName
.
toLowerCase
()?
e
.
defaultValue
:
t
}
function
gt
(
e
,
t
){
var
n
=
t
&&
e
,
r
=
n
&&
1
===
e
.
nodeType
&&
1
===
t
.
nodeType
&&
(
~
t
.
sourceIndex
||
D
)
-
(
~
e
.
sourceIndex
||
D
);
if
(
r
)
return
r
;
if
(
n
)
while
(
n
=
n
.
nextSibling
)
if
(
n
===
t
)
return
-
1
;
return
e
?
1
:
-
1
}
function
mt
(
e
){
return
function
(
t
){
var
n
=
t
.
nodeName
.
toLowerCase
();
return
"input"
===
n
&&
t
.
type
===
e
}}
function
yt
(
e
){
return
function
(
t
){
var
n
=
t
.
nodeName
.
toLowerCase
();
return
(
"input"
===
n
||
"button"
===
n
)
&&
t
.
type
===
e
}}
function
vt
(
e
){
return
ut
(
function
(
t
){
return
t
=+
t
,
ut
(
function
(
n
,
r
){
var
i
,
o
=
e
([],
n
.
length
,
t
),
a
=
o
.
length
;
while
(
a
--
)
n
[
i
=
o
[
a
]]
&&
(
n
[
i
]
=!
(
r
[
i
]
=
n
[
i
]))})})}
s
=
at
.
isXML
=
function
(
e
){
var
t
=
e
&&
(
e
.
ownerDocument
||
e
).
documentElement
;
return
t
?
"HTML"
!==
t
.
nodeName
:
!
1
},
r
=
at
.
support
=
{},
p
=
at
.
setDocument
=
function
(
e
){
var
n
=
e
?
e
.
ownerDocument
||
e
:
w
,
i
=
n
.
parentWindow
;
return
n
!==
f
&&
9
===
n
.
nodeType
&&
n
.
documentElement
?(
f
=
n
,
d
=
n
.
documentElement
,
h
=!
s
(
n
),
i
&&
i
.
frameElement
&&
i
.
attachEvent
(
"onbeforeunload"
,
function
(){
p
()}),
r
.
attributes
=
ct
(
function
(
e
){
return
e
.
innerHTML
=
"<a href='#'></a>"
,
pt
(
"type|href|height|width"
,
dt
,
"#"
===
e
.
firstChild
.
getAttribute
(
"href"
)),
pt
(
B
,
ft
,
null
==
e
.
getAttribute
(
"disabled"
)),
e
.
className
=
"i"
,
!
e
.
getAttribute
(
"className"
)}),
r
.
input
=
ct
(
function
(
e
){
return
e
.
innerHTML
=
"<input>"
,
e
.
firstChild
.
setAttribute
(
"value"
,
""
),
""
===
e
.
firstChild
.
getAttribute
(
"value"
)}),
pt
(
"value"
,
ht
,
r
.
attributes
&&
r
.
input
),
r
.
getElementsByTagName
=
ct
(
function
(
e
){
return
e
.
appendChild
(
n
.
createComment
(
""
)),
!
e
.
getElementsByTagName
(
"*"
).
length
}),
r
.
getElementsByClassName
=
ct
(
function
(
e
){
return
e
.
innerHTML
=
"<div class='a'></div><div class='a i'></div>"
,
e
.
firstChild
.
className
=
"i"
,
2
===
e
.
getElementsByClassName
(
"i"
).
length
}),
r
.
getById
=
ct
(
function
(
e
){
return
d
.
appendChild
(
e
).
id
=
b
,
!
n
.
getElementsByName
||!
n
.
getElementsByName
(
b
).
length
}),
r
.
getById
?(
o
.
find
.
ID
=
function
(
e
,
t
){
if
(
typeof
t
.
getElementById
!==
j
&&
h
){
var
n
=
t
.
getElementById
(
e
);
return
n
&&
n
.
parentNode
?[
n
]:[]}},
o
.
filter
.
ID
=
function
(
e
){
var
t
=
e
.
replace
(
rt
,
it
);
return
function
(
e
){
return
e
.
getAttribute
(
"id"
)
===
t
}}):(
delete
o
.
find
.
ID
,
o
.
filter
.
ID
=
function
(
e
){
var
t
=
e
.
replace
(
rt
,
it
);
return
function
(
e
){
var
n
=
typeof
e
.
getAttributeNode
!==
j
&&
e
.
getAttributeNode
(
"id"
);
return
n
&&
n
.
value
===
t
}}),
o
.
find
.
TAG
=
r
.
getElementsByTagName
?
function
(
e
,
n
){
return
typeof
n
.
getElementsByTagName
!==
j
?
n
.
getElementsByTagName
(
e
):
t
}:
function
(
e
,
t
){
var
n
,
r
=
[],
i
=
0
,
o
=
t
.
getElementsByTagName
(
e
);
if
(
"*"
===
e
){
while
(
n
=
o
[
i
++
])
1
===
n
.
nodeType
&&
r
.
push
(
n
);
return
r
}
return
o
},
o
.
find
.
CLASS
=
r
.
getElementsByClassName
&&
function
(
e
,
n
){
return
typeof
n
.
getElementsByClassName
!==
j
&&
h
?
n
.
getElementsByClassName
(
e
):
t
},
m
=
[],
g
=
[],(
r
.
qsa
=
st
(
n
.
querySelectorAll
))
&&
(
ct
(
function
(
e
){
e
.
innerHTML
=
"<select><option selected=''></option></select>"
,
e
.
querySelectorAll
(
"[selected]"
).
length
||
g
.
push
(
"
\\
["
+
P
+
"*(?:value|"
+
B
+
")"
),
e
.
querySelectorAll
(
":checked"
).
length
||
g
.
push
(
":checked"
)}),
ct
(
function
(
e
){
var
t
=
n
.
createElement
(
"input"
);
t
.
setAttribute
(
"type"
,
"hidden"
),
e
.
appendChild
(
t
).
setAttribute
(
"t"
,
""
),
e
.
querySelectorAll
(
"[t^='']"
).
length
&&
g
.
push
(
"[*^$]="
+
P
+
"*(?:''|
\"\"
)"
),
e
.
querySelectorAll
(
":enabled"
).
length
||
g
.
push
(
":enabled"
,
":disabled"
),
e
.
querySelectorAll
(
"*,:x"
),
g
.
push
(
",.*:"
)})),(
r
.
matchesSelector
=
st
(
y
=
d
.
webkitMatchesSelector
||
d
.
mozMatchesSelector
||
d
.
oMatchesSelector
||
d
.
msMatchesSelector
))
&&
ct
(
function
(
e
){
r
.
disconnectedMatch
=
y
.
call
(
e
,
"div"
),
y
.
call
(
e
,
"[s!='']:x"
),
m
.
push
(
"!="
,
I
)}),
g
=
g
.
length
&&
RegExp
(
g
.
join
(
"|"
)),
m
=
m
.
length
&&
RegExp
(
m
.
join
(
"|"
)),
v
=
st
(
d
.
contains
)
||
d
.
compareDocumentPosition
?
function
(
e
,
t
){
var
n
=
9
===
e
.
nodeType
?
e
.
documentElement
:
e
,
r
=
t
&&
t
.
parentNode
;
return
e
===
r
||!
(
!
r
||
1
!==
r
.
nodeType
||!
(
n
.
contains
?
n
.
contains
(
r
):
e
.
compareDocumentPosition
&&
16
&
e
.
compareDocumentPosition
(
r
)))}:
function
(
e
,
t
){
if
(
t
)
while
(
t
=
t
.
parentNode
)
if
(
t
===
e
)
return
!
0
;
return
!
1
},
r
.
sortDetached
=
ct
(
function
(
e
){
return
1
&
e
.
compareDocumentPosition
(
n
.
createElement
(
"div"
))}),
A
=
d
.
compareDocumentPosition
?
function
(
e
,
t
){
if
(
e
===
t
)
return
S
=!
0
,
0
;
var
i
=
t
.
compareDocumentPosition
&&
e
.
compareDocumentPosition
&&
e
.
compareDocumentPosition
(
t
);
return
i
?
1
&
i
||!
r
.
sortDetached
&&
t
.
compareDocumentPosition
(
e
)
===
i
?
e
===
n
||
v
(
w
,
e
)?
-
1
:
t
===
n
||
v
(
w
,
t
)?
1
:
c
?
F
.
call
(
c
,
e
)
-
F
.
call
(
c
,
t
):
0
:
4
&
i
?
-
1
:
1
:
e
.
compareDocumentPosition
?
-
1
:
1
}:
function
(
e
,
t
){
var
r
,
i
=
0
,
o
=
e
.
parentNode
,
a
=
t
.
parentNode
,
s
=
[
e
],
l
=
[
t
];
if
(
e
===
t
)
return
S
=!
0
,
0
;
if
(
!
o
||!
a
)
return
e
===
n
?
-
1
:
t
===
n
?
1
:
o
?
-
1
:
a
?
1
:
c
?
F
.
call
(
c
,
e
)
-
F
.
call
(
c
,
t
):
0
;
if
(
o
===
a
)
return
gt
(
e
,
t
);
r
=
e
;
while
(
r
=
r
.
parentNode
)
s
.
unshift
(
r
);
r
=
t
;
while
(
r
=
r
.
parentNode
)
l
.
unshift
(
r
);
while
(
s
[
i
]
===
l
[
i
])
i
++
;
return
i
?
gt
(
s
[
i
],
l
[
i
]):
s
[
i
]
===
w
?
-
1
:
l
[
i
]
===
w
?
1
:
0
},
n
):
f
},
at
.
matches
=
function
(
e
,
t
){
return
at
(
e
,
null
,
null
,
t
)},
at
.
matchesSelector
=
function
(
e
,
t
){
if
((
e
.
ownerDocument
||
e
)
!==
f
&&
p
(
e
),
t
=
t
.
replace
(
Y
,
"='$1']"
),
!
(
!
r
.
matchesSelector
||!
h
||
m
&&
m
.
test
(
t
)
||
g
&&
g
.
test
(
t
)))
try
{
var
n
=
y
.
call
(
e
,
t
);
if
(
n
||
r
.
disconnectedMatch
||
e
.
document
&&
11
!==
e
.
document
.
nodeType
)
return
n
}
catch
(
i
){}
return
at
(
t
,
f
,
null
,[
e
]).
length
>
0
},
at
.
contains
=
function
(
e
,
t
){
return
(
e
.
ownerDocument
||
e
)
!==
f
&&
p
(
e
),
v
(
e
,
t
)},
at
.
attr
=
function
(
e
,
n
){(
e
.
ownerDocument
||
e
)
!==
f
&&
p
(
e
);
var
i
=
o
.
attrHandle
[
n
.
toLowerCase
()],
a
=
i
&&
L
.
call
(
o
.
attrHandle
,
n
.
toLowerCase
())?
i
(
e
,
n
,
!
h
):
t
;
return
a
===
t
?
r
.
attributes
||!
h
?
e
.
getAttribute
(
n
):(
a
=
e
.
getAttributeNode
(
n
))
&&
a
.
specified
?
a
.
value
:
null
:
a
},
at
.
error
=
function
(
e
){
throw
Error
(
"Syntax error, unrecognized expression: "
+
e
)},
at
.
uniqueSort
=
function
(
e
){
var
t
,
n
=
[],
i
=
0
,
o
=
0
;
if
(
S
=!
r
.
detectDuplicates
,
c
=!
r
.
sortStable
&&
e
.
slice
(
0
),
e
.
sort
(
A
),
S
){
while
(
t
=
e
[
o
++
])
t
===
e
[
o
]
&&
(
i
=
n
.
push
(
o
));
while
(
i
--
)
e
.
splice
(
n
[
i
],
1
)}
return
e
},
a
=
at
.
getText
=
function
(
e
){
var
t
,
n
=
""
,
r
=
0
,
i
=
e
.
nodeType
;
if
(
i
){
if
(
1
===
i
||
9
===
i
||
11
===
i
){
if
(
"string"
==
typeof
e
.
textContent
)
return
e
.
textContent
;
for
(
e
=
e
.
firstChild
;
e
;
e
=
e
.
nextSibling
)
n
+=
a
(
e
)}
else
if
(
3
===
i
||
4
===
i
)
return
e
.
nodeValue
}
else
for
(;
t
=
e
[
r
];
r
++
)
n
+=
a
(
t
);
return
n
},
o
=
at
.
selectors
=
{
cacheLength
:
50
,
createPseudo
:
ut
,
match
:
Q
,
attrHandle
:{},
find
:{},
relative
:{
">"
:{
dir
:
"parentNode"
,
first
:
!
0
},
" "
:{
dir
:
"parentNode"
},
"+"
:{
dir
:
"previousSibling"
,
first
:
!
0
},
"~"
:{
dir
:
"previousSibling"
}},
preFilter
:{
ATTR
:
function
(
e
){
return
e
[
1
]
=
e
[
1
].
replace
(
rt
,
it
),
e
[
3
]
=
(
e
[
4
]
||
e
[
5
]
||
""
).
replace
(
rt
,
it
),
"~="
===
e
[
2
]
&&
(
e
[
3
]
=
" "
+
e
[
3
]
+
" "
),
e
.
slice
(
0
,
4
)},
CHILD
:
function
(
e
){
return
e
[
1
]
=
e
[
1
].
toLowerCase
(),
"nth"
===
e
[
1
].
slice
(
0
,
3
)?(
e
[
3
]
||
at
.
error
(
e
[
0
]),
e
[
4
]
=+
(
e
[
4
]?
e
[
5
]
+
(
e
[
6
]
||
1
):
2
*
(
"even"
===
e
[
3
]
||
"odd"
===
e
[
3
])),
e
[
5
]
=+
(
e
[
7
]
+
e
[
8
]
||
"odd"
===
e
[
3
])):
e
[
3
]
&&
at
.
error
(
e
[
0
]),
e
},
PSEUDO
:
function
(
e
){
var
n
,
r
=!
e
[
5
]
&&
e
[
2
];
return
Q
.
CHILD
.
test
(
e
[
0
])?
null
:(
e
[
3
]
&&
e
[
4
]
!==
t
?
e
[
2
]
=
e
[
4
]:
r
&&
J
.
test
(
r
)
&&
(
n
=
bt
(
r
,
!
0
))
&&
(
n
=
r
.
indexOf
(
")"
,
r
.
length
-
n
)
-
r
.
length
)
&&
(
e
[
0
]
=
e
[
0
].
slice
(
0
,
n
),
e
[
2
]
=
r
.
slice
(
0
,
n
)),
e
.
slice
(
0
,
3
))}},
filter
:{
TAG
:
function
(
e
){
var
t
=
e
.
replace
(
rt
,
it
).
toLowerCase
();
return
"*"
===
e
?
function
(){
return
!
0
}:
function
(
e
){
return
e
.
nodeName
&&
e
.
nodeName
.
toLowerCase
()
===
t
}},
CLASS
:
function
(
e
){
var
t
=
N
[
e
+
" "
];
return
t
||
(
t
=
RegExp
(
"(^|"
+
P
+
")"
+
e
+
"("
+
P
+
"|$)"
))
&&
N
(
e
,
function
(
e
){
return
t
.
test
(
"string"
==
typeof
e
.
className
&&
e
.
className
||
typeof
e
.
getAttribute
!==
j
&&
e
.
getAttribute
(
"class"
)
||
""
)})},
ATTR
:
function
(
e
,
t
,
n
){
return
function
(
r
){
var
i
=
at
.
attr
(
r
,
e
);
return
null
==
i
?
"!="
===
t
:
t
?(
i
+=
""
,
"="
===
t
?
i
===
n
:
"!="
===
t
?
i
!==
n
:
"^="
===
t
?
n
&&
0
===
i
.
indexOf
(
n
):
"*="
===
t
?
n
&&
i
.
indexOf
(
n
)
>-
1
:
"$="
===
t
?
n
&&
i
.
slice
(
-
n
.
length
)
===
n
:
"~="
===
t
?(
" "
+
i
+
" "
).
indexOf
(
n
)
>-
1
:
"|="
===
t
?
i
===
n
||
i
.
slice
(
0
,
n
.
length
+
1
)
===
n
+
"-"
:
!
1
):
!
0
}},
CHILD
:
function
(
e
,
t
,
n
,
r
,
i
){
var
o
=
"nth"
!==
e
.
slice
(
0
,
3
),
a
=
"last"
!==
e
.
slice
(
-
4
),
s
=
"of-type"
===
t
;
return
1
===
r
&&
0
===
i
?
function
(
e
){
return
!!
e
.
parentNode
}:
function
(
t
,
n
,
l
){
var
u
,
c
,
p
,
f
,
d
,
h
,
g
=
o
!==
a
?
"nextSibling"
:
"previousSibling"
,
m
=
t
.
parentNode
,
y
=
s
&&
t
.
nodeName
.
toLowerCase
(),
v
=!
l
&&!
s
;
if
(
m
){
if
(
o
){
while
(
g
){
p
=
t
;
while
(
p
=
p
[
g
])
if
(
s
?
p
.
nodeName
.
toLowerCase
()
===
y
:
1
===
p
.
nodeType
)
return
!
1
;
h
=
g
=
"only"
===
e
&&!
h
&&
"nextSibling"
}
return
!
0
}
if
(
h
=
[
a
?
m
.
firstChild
:
m
.
lastChild
],
a
&&
v
){
c
=
m
[
b
]
||
(
m
[
b
]
=
{}),
u
=
c
[
e
]
||
[],
d
=
u
[
0
]
===
T
&&
u
[
1
],
f
=
u
[
0
]
===
T
&&
u
[
2
],
p
=
d
&&
m
.
childNodes
[
d
];
while
(
p
=++
d
&&
p
&&
p
[
g
]
||
(
f
=
d
=
0
)
||
h
.
pop
())
if
(
1
===
p
.
nodeType
&&++
f
&&
p
===
t
){
c
[
e
]
=
[
T
,
d
,
f
];
break
}}
else
if
(
v
&&
(
u
=
(
t
[
b
]
||
(
t
[
b
]
=
{}))[
e
])
&&
u
[
0
]
===
T
)
f
=
u
[
1
];
else
while
(
p
=++
d
&&
p
&&
p
[
g
]
||
(
f
=
d
=
0
)
||
h
.
pop
())
if
((
s
?
p
.
nodeName
.
toLowerCase
()
===
y
:
1
===
p
.
nodeType
)
&&++
f
&&
(
v
&&
((
p
[
b
]
||
(
p
[
b
]
=
{}))[
e
]
=
[
T
,
f
]),
p
===
t
))
break
;
return
f
-=
i
,
f
===
r
||
0
===
f
%
r
&&
f
/
r
>=
0
}}},
PSEUDO
:
function
(
e
,
t
){
var
n
,
r
=
o
.
pseudos
[
e
]
||
o
.
setFilters
[
e
.
toLowerCase
()]
||
at
.
error
(
"unsupported pseudo: "
+
e
);
return
r
[
b
]?
r
(
t
):
r
.
length
>
1
?(
n
=
[
e
,
e
,
""
,
t
],
o
.
setFilters
.
hasOwnProperty
(
e
.
toLowerCase
())?
ut
(
function
(
e
,
n
){
var
i
,
o
=
r
(
e
,
t
),
a
=
o
.
length
;
while
(
a
--
)
i
=
F
.
call
(
e
,
o
[
a
]),
e
[
i
]
=!
(
n
[
i
]
=
o
[
a
])}):
function
(
e
){
return
r
(
e
,
0
,
n
)}):
r
}},
pseudos
:{
not
:
ut
(
function
(
e
){
var
t
=
[],
n
=
[],
r
=
l
(
e
.
replace
(
z
,
"$1"
));
return
r
[
b
]?
ut
(
function
(
e
,
t
,
n
,
i
){
var
o
,
a
=
r
(
e
,
null
,
i
,[]),
s
=
e
.
length
;
while
(
s
--
)(
o
=
a
[
s
])
&&
(
e
[
s
]
=!
(
t
[
s
]
=
o
))}):
function
(
e
,
i
,
o
){
return
t
[
0
]
=
e
,
r
(
t
,
null
,
o
,
n
),
!
n
.
pop
()}}),
has
:
ut
(
function
(
e
){
return
function
(
t
){
return
at
(
e
,
t
).
length
>
0
}}),
contains
:
ut
(
function
(
e
){
return
function
(
t
){
return
(
t
.
textContent
||
t
.
innerText
||
a
(
t
)).
indexOf
(
e
)
>-
1
}}),
lang
:
ut
(
function
(
e
){
return
G
.
test
(
e
||
""
)
||
at
.
error
(
"unsupported lang: "
+
e
),
e
=
e
.
replace
(
rt
,
it
).
toLowerCase
(),
function
(
t
){
var
n
;
do
if
(
n
=
h
?
t
.
lang
:
t
.
getAttribute
(
"xml:lang"
)
||
t
.
getAttribute
(
"lang"
))
return
n
=
n
.
toLowerCase
(),
n
===
e
||
0
===
n
.
indexOf
(
e
+
"-"
);
while
((
t
=
t
.
parentNode
)
&&
1
===
t
.
nodeType
);
return
!
1
}}),
target
:
function
(
t
){
var
n
=
e
.
location
&&
e
.
location
.
hash
;
return
n
&&
n
.
slice
(
1
)
===
t
.
id
},
root
:
function
(
e
){
return
e
===
d
},
focus
:
function
(
e
){
return
e
===
f
.
activeElement
&&
(
!
f
.
hasFocus
||
f
.
hasFocus
())
&&!!
(
e
.
type
||
e
.
href
||~
e
.
tabIndex
)},
enabled
:
function
(
e
){
return
e
.
disabled
===!
1
},
disabled
:
function
(
e
){
return
e
.
disabled
===!
0
},
checked
:
function
(
e
){
var
t
=
e
.
nodeName
.
toLowerCase
();
return
"input"
===
t
&&!!
e
.
checked
||
"option"
===
t
&&!!
e
.
selected
},
selected
:
function
(
e
){
return
e
.
parentNode
&&
e
.
parentNode
.
selectedIndex
,
e
.
selected
===!
0
},
empty
:
function
(
e
){
for
(
e
=
e
.
firstChild
;
e
;
e
=
e
.
nextSibling
)
if
(
e
.
nodeName
>
"@"
||
3
===
e
.
nodeType
||
4
===
e
.
nodeType
)
return
!
1
;
return
!
0
},
parent
:
function
(
e
){
return
!
o
.
pseudos
.
empty
(
e
)},
header
:
function
(
e
){
return
tt
.
test
(
e
.
nodeName
)},
input
:
function
(
e
){
return
et
.
test
(
e
.
nodeName
)},
button
:
function
(
e
){
var
t
=
e
.
nodeName
.
toLowerCase
();
return
"input"
===
t
&&
"button"
===
e
.
type
||
"button"
===
t
},
text
:
function
(
e
){
var
t
;
return
"input"
===
e
.
nodeName
.
toLowerCase
()
&&
"text"
===
e
.
type
&&
(
null
==
(
t
=
e
.
getAttribute
(
"type"
))
||
t
.
toLowerCase
()
===
e
.
type
)},
first
:
vt
(
function
(){
return
[
0
]}),
last
:
vt
(
function
(
e
,
t
){
return
[
t
-
1
]}),
eq
:
vt
(
function
(
e
,
t
,
n
){
return
[
0
>
n
?
n
+
t
:
n
]}),
even
:
vt
(
function
(
e
,
t
){
var
n
=
0
;
for
(;
t
>
n
;
n
+=
2
)
e
.
push
(
n
);
return
e
}),
odd
:
vt
(
function
(
e
,
t
){
var
n
=
1
;
for
(;
t
>
n
;
n
+=
2
)
e
.
push
(
n
);
return
e
}),
lt
:
vt
(
function
(
e
,
t
,
n
){
var
r
=
0
>
n
?
n
+
t
:
n
;
for
(;
--
r
>=
0
;)
e
.
push
(
r
);
return
e
}),
gt
:
vt
(
function
(
e
,
t
,
n
){
var
r
=
0
>
n
?
n
+
t
:
n
;
for
(;
t
>++
r
;)
e
.
push
(
r
);
return
e
})}};
for
(
n
in
{
radio
:
!
0
,
checkbox
:
!
0
,
file
:
!
0
,
password
:
!
0
,
image
:
!
0
})
o
.
pseudos
[
n
]
=
mt
(
n
);
for
(
n
in
{
submit
:
!
0
,
reset
:
!
0
})
o
.
pseudos
[
n
]
=
yt
(
n
);
function
bt
(
e
,
t
){
var
n
,
r
,
i
,
a
,
s
,
l
,
u
,
c
=
k
[
e
+
" "
];
if
(
c
)
return
t
?
0
:
c
.
slice
(
0
);
s
=
e
,
l
=
[],
u
=
o
.
preFilter
;
while
(
s
){(
!
n
||
(
r
=
X
.
exec
(
s
)))
&&
(
r
&&
(
s
=
s
.
slice
(
r
[
0
].
length
)
||
s
),
l
.
push
(
i
=
[])),
n
=!
1
,(
r
=
U
.
exec
(
s
))
&&
(
n
=
r
.
shift
(),
i
.
push
({
value
:
n
,
type
:
r
[
0
].
replace
(
z
,
" "
)}),
s
=
s
.
slice
(
n
.
length
));
for
(
a
in
o
.
filter
)
!
(
r
=
Q
[
a
].
exec
(
s
))
||
u
[
a
]
&&!
(
r
=
u
[
a
](
r
))
||
(
n
=
r
.
shift
(),
i
.
push
({
value
:
n
,
type
:
a
,
matches
:
r
}),
s
=
s
.
slice
(
n
.
length
));
if
(
!
n
)
break
}
return
t
?
s
.
length
:
s
?
at
.
error
(
e
):
k
(
e
,
l
).
slice
(
0
)}
function
xt
(
e
){
var
t
=
0
,
n
=
e
.
length
,
r
=
""
;
for
(;
n
>
t
;
t
++
)
r
+=
e
[
t
].
value
;
return
r
}
function
wt
(
e
,
t
,
n
){
var
r
=
t
.
dir
,
o
=
n
&&
"parentNode"
===
r
,
a
=
C
++
;
return
t
.
first
?
function
(
t
,
n
,
i
){
while
(
t
=
t
[
r
])
if
(
1
===
t
.
nodeType
||
o
)
return
e
(
t
,
n
,
i
)}:
function
(
t
,
n
,
s
){
var
l
,
u
,
c
,
p
=
T
+
" "
+
a
;
if
(
s
){
while
(
t
=
t
[
r
])
if
((
1
===
t
.
nodeType
||
o
)
&&
e
(
t
,
n
,
s
))
return
!
0
}
else
while
(
t
=
t
[
r
])
if
(
1
===
t
.
nodeType
||
o
)
if
(
c
=
t
[
b
]
||
(
t
[
b
]
=
{}),(
u
=
c
[
r
])
&&
u
[
0
]
===
p
){
if
((
l
=
u
[
1
])
===!
0
||
l
===
i
)
return
l
===!
0
}
else
if
(
u
=
c
[
r
]
=
[
p
],
u
[
1
]
=
e
(
t
,
n
,
s
)
||
i
,
u
[
1
]
===!
0
)
return
!
0
}}
function
Tt
(
e
){
return
e
.
length
>
1
?
function
(
t
,
n
,
r
){
var
i
=
e
.
length
;
while
(
i
--
)
if
(
!
e
[
i
](
t
,
n
,
r
))
return
!
1
;
return
!
0
}:
e
[
0
]}
function
Ct
(
e
,
t
,
n
,
r
,
i
){
var
o
,
a
=
[],
s
=
0
,
l
=
e
.
length
,
u
=
null
!=
t
;
for
(;
l
>
s
;
s
++
)(
o
=
e
[
s
])
&&
(
!
n
||
n
(
o
,
r
,
i
))
&&
(
a
.
push
(
o
),
u
&&
t
.
push
(
s
));
return
a
}
function
Nt
(
e
,
t
,
n
,
r
,
i
,
o
){
return
r
&&!
r
[
b
]
&&
(
r
=
Nt
(
r
)),
i
&&!
i
[
b
]
&&
(
i
=
Nt
(
i
,
o
)),
ut
(
function
(
o
,
a
,
s
,
l
){
var
u
,
c
,
p
,
f
=
[],
d
=
[],
h
=
a
.
length
,
g
=
o
||
St
(
t
||
"*"
,
s
.
nodeType
?[
s
]:
s
,[]),
m
=!
e
||!
o
&&
t
?
g
:
Ct
(
g
,
f
,
e
,
s
,
l
),
y
=
n
?
i
||
(
o
?
e
:
h
||
r
)?[]:
a
:
m
;
if
(
n
&&
n
(
m
,
y
,
s
,
l
),
r
){
u
=
Ct
(
y
,
d
),
r
(
u
,[],
s
,
l
),
c
=
u
.
length
;
while
(
c
--
)(
p
=
u
[
c
])
&&
(
y
[
d
[
c
]]
=!
(
m
[
d
[
c
]]
=
p
))}
if
(
o
){
if
(
i
||
e
){
if
(
i
){
u
=
[],
c
=
y
.
length
;
while
(
c
--
)(
p
=
y
[
c
])
&&
u
.
push
(
m
[
c
]
=
p
);
i
(
null
,
y
=
[],
u
,
l
)}
c
=
y
.
length
;
while
(
c
--
)(
p
=
y
[
c
])
&&
(
u
=
i
?
F
.
call
(
o
,
p
):
f
[
c
])
>-
1
&&
(
o
[
u
]
=!
(
a
[
u
]
=
p
))}}
else
y
=
Ct
(
y
===
a
?
y
.
splice
(
h
,
y
.
length
):
y
),
i
?
i
(
null
,
a
,
y
,
l
):
M
.
apply
(
a
,
y
)})}
function
kt
(
e
){
var
t
,
n
,
r
,
i
=
e
.
length
,
a
=
o
.
relative
[
e
[
0
].
type
],
s
=
a
||
o
.
relative
[
" "
],
l
=
a
?
1
:
0
,
c
=
wt
(
function
(
e
){
return
e
===
t
},
s
,
!
0
),
p
=
wt
(
function
(
e
){
return
F
.
call
(
t
,
e
)
>-
1
},
s
,
!
0
),
f
=
[
function
(
e
,
n
,
r
){
return
!
a
&&
(
r
||
n
!==
u
)
||
((
t
=
n
).
nodeType
?
c
(
e
,
n
,
r
):
p
(
e
,
n
,
r
))}];
for
(;
i
>
l
;
l
++
)
if
(
n
=
o
.
relative
[
e
[
l
].
type
])
f
=
[
wt
(
Tt
(
f
),
n
)];
else
{
if
(
n
=
o
.
filter
[
e
[
l
].
type
].
apply
(
null
,
e
[
l
].
matches
),
n
[
b
]){
for
(
r
=++
l
;
i
>
r
;
r
++
)
if
(
o
.
relative
[
e
[
r
].
type
])
break
;
return
Nt
(
l
>
1
&&
Tt
(
f
),
l
>
1
&&
xt
(
e
.
slice
(
0
,
l
-
1
).
concat
({
value
:
" "
===
e
[
l
-
2
].
type
?
"*"
:
""
})).
replace
(
z
,
"$1"
),
n
,
r
>
l
&&
kt
(
e
.
slice
(
l
,
r
)),
i
>
r
&&
kt
(
e
=
e
.
slice
(
r
)),
i
>
r
&&
xt
(
e
))}
f
.
push
(
n
)}
return
Tt
(
f
)}
function
Et
(
e
,
t
){
var
n
=
0
,
r
=
t
.
length
>
0
,
a
=
e
.
length
>
0
,
s
=
function
(
s
,
l
,
c
,
p
,
d
){
var
h
,
g
,
m
,
y
=
[],
v
=
0
,
b
=
"0"
,
x
=
s
&&
[],
w
=
null
!=
d
,
C
=
u
,
N
=
s
||
a
&&
o
.
find
.
TAG
(
"*"
,
d
&&
l
.
parentNode
||
l
),
k
=
T
+=
null
==
C
?
1
:
Math
.
random
()
||
.
1
;
for
(
w
&&
(
u
=
l
!==
f
&&
l
,
i
=
n
);
null
!=
(
h
=
N
[
b
]);
b
++
){
if
(
a
&&
h
){
g
=
0
;
while
(
m
=
e
[
g
++
])
if
(
m
(
h
,
l
,
c
)){
p
.
push
(
h
);
break
}
w
&&
(
T
=
k
,
i
=++
n
)}
r
&&
((
h
=!
m
&&
h
)
&&
v
--
,
s
&&
x
.
push
(
h
))}
if
(
v
+=
b
,
r
&&
b
!==
v
){
g
=
0
;
while
(
m
=
t
[
g
++
])
m
(
x
,
y
,
l
,
c
);
if
(
s
){
if
(
v
>
0
)
while
(
b
--
)
x
[
b
]
||
y
[
b
]
||
(
y
[
b
]
=
q
.
call
(
p
));
y
=
Ct
(
y
)}
M
.
apply
(
p
,
y
),
w
&&!
s
&&
y
.
length
>
0
&&
v
+
t
.
length
>
1
&&
at
.
uniqueSort
(
p
)}
return
w
&&
(
T
=
k
,
u
=
C
),
x
};
return
r
?
ut
(
s
):
s
}
l
=
at
.
compile
=
function
(
e
,
t
){
var
n
,
r
=
[],
i
=
[],
o
=
E
[
e
+
" "
];
if
(
!
o
){
t
||
(
t
=
bt
(
e
)),
n
=
t
.
length
;
while
(
n
--
)
o
=
kt
(
t
[
n
]),
o
[
b
]?
r
.
push
(
o
):
i
.
push
(
o
);
o
=
E
(
e
,
Et
(
i
,
r
))}
return
o
};
function
St
(
e
,
t
,
n
){
var
r
=
0
,
i
=
t
.
length
;
for
(;
i
>
r
;
r
++
)
at
(
e
,
t
[
r
],
n
);
return
n
}
function
At
(
e
,
t
,
n
,
i
){
var
a
,
s
,
u
,
c
,
p
,
f
=
bt
(
e
);
if
(
!
i
&&
1
===
f
.
length
){
if
(
s
=
f
[
0
]
=
f
[
0
].
slice
(
0
),
s
.
length
>
2
&&
"ID"
===
(
u
=
s
[
0
]).
type
&&
r
.
getById
&&
9
===
t
.
nodeType
&&
h
&&
o
.
relative
[
s
[
1
].
type
]){
if
(
t
=
(
o
.
find
.
ID
(
u
.
matches
[
0
].
replace
(
rt
,
it
),
t
)
||
[])[
0
],
!
t
)
return
n
;
e
=
e
.
slice
(
s
.
shift
().
value
.
length
)}
a
=
Q
.
needsContext
.
test
(
e
)?
0
:
s
.
length
;
while
(
a
--
){
if
(
u
=
s
[
a
],
o
.
relative
[
c
=
u
.
type
])
break
;
if
((
p
=
o
.
find
[
c
])
&&
(
i
=
p
(
u
.
matches
[
0
].
replace
(
rt
,
it
),
V
.
test
(
s
[
0
].
type
)
&&
t
.
parentNode
||
t
))){
if
(
s
.
splice
(
a
,
1
),
e
=
i
.
length
&&
xt
(
s
),
!
e
)
return
M
.
apply
(
n
,
i
),
n
;
break
}}}
return
l
(
e
,
f
)(
i
,
t
,
!
h
,
n
,
V
.
test
(
e
)),
n
}
o
.
pseudos
.
nth
=
o
.
pseudos
.
eq
;
function
jt
(){}
jt
.
prototype
=
o
.
filters
=
o
.
pseudos
,
o
.
setFilters
=
new
jt
,
r
.
sortStable
=
b
.
split
(
""
).
sort
(
A
).
join
(
""
)
===
b
,
p
(),[
0
,
0
].
sort
(
A
),
r
.
detectDuplicates
=
S
,
x
.
find
=
at
,
x
.
expr
=
at
.
selectors
,
x
.
expr
[
":"
]
=
x
.
expr
.
pseudos
,
x
.
unique
=
at
.
uniqueSort
,
x
.
text
=
at
.
getText
,
x
.
isXMLDoc
=
at
.
isXML
,
x
.
contains
=
at
.
contains
}(
e
);
var
O
=
{};
function
F
(
e
){
var
t
=
O
[
e
]
=
{};
return
x
.
each
(
e
.
match
(
T
)
||
[],
function
(
e
,
n
){
t
[
n
]
=!
0
}),
t
}
x
.
Callbacks
=
function
(
e
){
e
=
"string"
==
typeof
e
?
O
[
e
]
||
F
(
e
):
x
.
extend
({},
e
);
var
n
,
r
,
i
,
o
,
a
,
s
,
l
=
[],
u
=!
e
.
once
&&
[],
c
=
function
(
t
){
for
(
r
=
e
.
memory
&&
t
,
i
=!
0
,
a
=
s
||
0
,
s
=
0
,
o
=
l
.
length
,
n
=!
0
;
l
&&
o
>
a
;
a
++
)
if
(
l
[
a
].
apply
(
t
[
0
],
t
[
1
])
===!
1
&&
e
.
stopOnFalse
){
r
=!
1
;
break
}
n
=!
1
,
l
&&
(
u
?
u
.
length
&&
c
(
u
.
shift
()):
r
?
l
=
[]:
p
.
disable
())},
p
=
{
add
:
function
(){
if
(
l
){
var
t
=
l
.
length
;(
function
i
(
t
){
x
.
each
(
t
,
function
(
t
,
n
){
var
r
=
x
.
type
(
n
);
"function"
===
r
?
e
.
unique
&&
p
.
has
(
n
)
||
l
.
push
(
n
):
n
&&
n
.
length
&&
"string"
!==
r
&&
i
(
n
)})})(
arguments
),
n
?
o
=
l
.
length
:
r
&&
(
s
=
t
,
c
(
r
))}
return
this
},
remove
:
function
(){
return
l
&&
x
.
each
(
arguments
,
function
(
e
,
t
){
var
r
;
while
((
r
=
x
.
inArray
(
t
,
l
,
r
))
>-
1
)
l
.
splice
(
r
,
1
),
n
&&
(
o
>=
r
&&
o
--
,
a
>=
r
&&
a
--
)}),
this
},
has
:
function
(
e
){
return
e
?
x
.
inArray
(
e
,
l
)
>-
1
:
!
(
!
l
||!
l
.
length
)},
empty
:
function
(){
return
l
=
[],
o
=
0
,
this
},
disable
:
function
(){
return
l
=
u
=
r
=
t
,
this
},
disabled
:
function
(){
return
!
l
},
lock
:
function
(){
return
u
=
t
,
r
||
p
.
disable
(),
this
},
locked
:
function
(){
return
!
u
},
fireWith
:
function
(
e
,
t
){
return
t
=
t
||
[],
t
=
[
e
,
t
.
slice
?
t
.
slice
():
t
],
!
l
||
i
&&!
u
||
(
n
?
u
.
push
(
t
):
c
(
t
)),
this
},
fire
:
function
(){
return
p
.
fireWith
(
this
,
arguments
),
this
},
fired
:
function
(){
return
!!
i
}};
return
p
},
x
.
extend
({
Deferred
:
function
(
e
){
var
t
=
[[
"resolve"
,
"done"
,
x
.
Callbacks
(
"once memory"
),
"resolved"
],[
"reject"
,
"fail"
,
x
.
Callbacks
(
"once memory"
),
"rejected"
],[
"notify"
,
"progress"
,
x
.
Callbacks
(
"memory"
)]],
n
=
"pending"
,
r
=
{
state
:
function
(){
return
n
},
always
:
function
(){
return
i
.
done
(
arguments
).
fail
(
arguments
),
this
},
then
:
function
(){
var
e
=
arguments
;
return
x
.
Deferred
(
function
(
n
){
x
.
each
(
t
,
function
(
t
,
o
){
var
a
=
o
[
0
],
s
=
x
.
isFunction
(
e
[
t
])
&&
e
[
t
];
i
[
o
[
1
]](
function
(){
var
e
=
s
&&
s
.
apply
(
this
,
arguments
);
e
&&
x
.
isFunction
(
e
.
promise
)?
e
.
promise
().
done
(
n
.
resolve
).
fail
(
n
.
reject
).
progress
(
n
.
notify
):
n
[
a
+
"With"
](
this
===
r
?
n
.
promise
():
this
,
s
?[
e
]:
arguments
)})}),
e
=
null
}).
promise
()},
promise
:
function
(
e
){
return
null
!=
e
?
x
.
extend
(
e
,
r
):
r
}},
i
=
{};
return
r
.
pipe
=
r
.
then
,
x
.
each
(
t
,
function
(
e
,
o
){
var
a
=
o
[
2
],
s
=
o
[
3
];
r
[
o
[
1
]]
=
a
.
add
,
s
&&
a
.
add
(
function
(){
n
=
s
},
t
[
1
^
e
][
2
].
disable
,
t
[
2
][
2
].
lock
),
i
[
o
[
0
]]
=
function
(){
return
i
[
o
[
0
]
+
"With"
](
this
===
i
?
r
:
this
,
arguments
),
this
},
i
[
o
[
0
]
+
"With"
]
=
a
.
fireWith
}),
r
.
promise
(
i
),
e
&&
e
.
call
(
i
,
i
),
i
},
when
:
function
(
e
){
var
t
=
0
,
n
=
g
.
call
(
arguments
),
r
=
n
.
length
,
i
=
1
!==
r
||
e
&&
x
.
isFunction
(
e
.
promise
)?
r
:
0
,
o
=
1
===
i
?
e
:
x
.
Deferred
(),
a
=
function
(
e
,
t
,
n
){
return
function
(
r
){
t
[
e
]
=
this
,
n
[
e
]
=
arguments
.
length
>
1
?
g
.
call
(
arguments
):
r
,
n
===
s
?
o
.
notifyWith
(
t
,
n
):
--
i
||
o
.
resolveWith
(
t
,
n
)}},
s
,
l
,
u
;
if
(
r
>
1
)
for
(
s
=
Array
(
r
),
l
=
Array
(
r
),
u
=
Array
(
r
);
r
>
t
;
t
++
)
n
[
t
]
&&
x
.
isFunction
(
n
[
t
].
promise
)?
n
[
t
].
promise
().
done
(
a
(
t
,
u
,
n
)).
fail
(
o
.
reject
).
progress
(
a
(
t
,
l
,
s
)):
--
i
;
return
i
||
o
.
resolveWith
(
u
,
n
),
o
.
promise
()}}),
x
.
support
=
function
(
t
){
var
n
,
r
,
o
,
s
,
l
,
u
,
c
,
p
,
f
,
d
=
a
.
createElement
(
"div"
);
if
(
d
.
setAttribute
(
"className"
,
"t"
),
d
.
innerHTML
=
" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>"
,
n
=
d
.
getElementsByTagName
(
"*"
)
||
[],
r
=
d
.
getElementsByTagName
(
"a"
)[
0
],
!
r
||!
r
.
style
||!
n
.
length
)
return
t
;
s
=
a
.
createElement
(
"select"
),
u
=
s
.
appendChild
(
a
.
createElement
(
"option"
)),
o
=
d
.
getElementsByTagName
(
"input"
)[
0
],
r
.
style
.
cssText
=
"top:1px;float:left;opacity:.5"
,
t
.
getSetAttribute
=
"t"
!==
d
.
className
,
t
.
leadingWhitespace
=
3
===
d
.
firstChild
.
nodeType
,
t
.
tbody
=!
d
.
getElementsByTagName
(
"tbody"
).
length
,
t
.
htmlSerialize
=!!
d
.
getElementsByTagName
(
"link"
).
length
,
t
.
style
=
/top/
.
test
(
r
.
getAttribute
(
"style"
)),
t
.
hrefNormalized
=
"/a"
===
r
.
getAttribute
(
"href"
),
t
.
opacity
=
/^0.5/
.
test
(
r
.
style
.
opacity
),
t
.
cssFloat
=!!
r
.
style
.
cssFloat
,
t
.
checkOn
=!!
o
.
value
,
t
.
optSelected
=
u
.
selected
,
t
.
enctype
=!!
a
.
createElement
(
"form"
).
enctype
,
t
.
html5Clone
=
"<:nav></:nav>"
!==
a
.
createElement
(
"nav"
).
cloneNode
(
!
0
).
outerHTML
,
t
.
inlineBlockNeedsLayout
=!
1
,
t
.
shrinkWrapBlocks
=!
1
,
t
.
pixelPosition
=!
1
,
t
.
deleteExpando
=!
0
,
t
.
noCloneEvent
=!
0
,
t
.
reliableMarginRight
=!
0
,
t
.
boxSizingReliable
=!
0
,
o
.
checked
=!
0
,
t
.
noCloneChecked
=
o
.
cloneNode
(
!
0
).
checked
,
s
.
disabled
=!
0
,
t
.
optDisabled
=!
u
.
disabled
;
try
{
delete
d
.
test
}
catch
(
h
){
t
.
deleteExpando
=!
1
}
o
=
a
.
createElement
(
"input"
),
o
.
setAttribute
(
"value"
,
""
),
t
.
input
=
""
===
o
.
getAttribute
(
"value"
),
o
.
value
=
"t"
,
o
.
setAttribute
(
"type"
,
"radio"
),
t
.
radioValue
=
"t"
===
o
.
value
,
o
.
setAttribute
(
"checked"
,
"t"
),
o
.
setAttribute
(
"name"
,
"t"
),
l
=
a
.
createDocumentFragment
(),
l
.
appendChild
(
o
),
t
.
appendChecked
=
o
.
checked
,
t
.
checkClone
=
l
.
cloneNode
(
!
0
).
cloneNode
(
!
0
).
lastChild
.
checked
,
d
.
attachEvent
&&
(
d
.
attachEvent
(
"onclick"
,
function
(){
t
.
noCloneEvent
=!
1
}),
d
.
cloneNode
(
!
0
).
click
());
for
(
f
in
{
submit
:
!
0
,
change
:
!
0
,
focusin
:
!
0
})
d
.
setAttribute
(
c
=
"on"
+
f
,
"t"
),
t
[
f
+
"Bubbles"
]
=
c
in
e
||
d
.
attributes
[
c
].
expando
===!
1
;
d
.
style
.
backgroundClip
=
"content-box"
,
d
.
cloneNode
(
!
0
).
style
.
backgroundClip
=
""
,
t
.
clearCloneStyle
=
"content-box"
===
d
.
style
.
backgroundClip
;
for
(
f
in
x
(
t
))
break
;
return
t
.
ownLast
=
"0"
!==
f
,
x
(
function
(){
var
n
,
r
,
o
,
s
=
"padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;"
,
l
=
a
.
getElementsByTagName
(
"body"
)[
0
];
l
&&
(
n
=
a
.
createElement
(
"div"
),
n
.
style
.
cssText
=
"border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px"
,
l
.
appendChild
(
n
).
appendChild
(
d
),
d
.
innerHTML
=
"<table><tr><td></td><td>t</td></tr></table>"
,
o
=
d
.
getElementsByTagName
(
"td"
),
o
[
0
].
style
.
cssText
=
"padding:0;margin:0;border:0;display:none"
,
p
=
0
===
o
[
0
].
offsetHeight
,
o
[
0
].
style
.
display
=
""
,
o
[
1
].
style
.
display
=
"none"
,
t
.
reliableHiddenOffsets
=
p
&&
0
===
o
[
0
].
offsetHeight
,
d
.
innerHTML
=
""
,
d
.
style
.
cssText
=
"box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"
,
x
.
swap
(
l
,
null
!=
l
.
style
.
zoom
?{
zoom
:
1
}:{},
function
(){
t
.
boxSizing
=
4
===
d
.
offsetWidth
}),
e
.
getComputedStyle
&&
(
t
.
pixelPosition
=
"1%"
!==
(
e
.
getComputedStyle
(
d
,
null
)
||
{}).
top
,
t
.
boxSizingReliable
=
"4px"
===
(
e
.
getComputedStyle
(
d
,
null
)
||
{
width
:
"4px"
}).
width
,
r
=
d
.
appendChild
(
a
.
createElement
(
"div"
)),
r
.
style
.
cssText
=
d
.
style
.
cssText
=
s
,
r
.
style
.
marginRight
=
r
.
style
.
width
=
"0"
,
d
.
style
.
width
=
"1px"
,
t
.
reliableMarginRight
=!
parseFloat
((
e
.
getComputedStyle
(
r
,
null
)
||
{}).
marginRight
)),
typeof
d
.
style
.
zoom
!==
i
&&
(
d
.
innerHTML
=
""
,
d
.
style
.
cssText
=
s
+
"width:1px;padding:1px;display:inline;zoom:1"
,
t
.
inlineBlockNeedsLayout
=
3
===
d
.
offsetWidth
,
d
.
style
.
display
=
"block"
,
d
.
innerHTML
=
"<div></div>"
,
d
.
firstChild
.
style
.
width
=
"5px"
,
t
.
shrinkWrapBlocks
=
3
!==
d
.
offsetWidth
,
t
.
inlineBlockNeedsLayout
&&
(
l
.
style
.
zoom
=
1
)),
l
.
removeChild
(
n
),
n
=
d
=
o
=
r
=
null
)
}),
n
=
s
=
l
=
u
=
r
=
o
=
null
,
t
}({});
var
B
=
/
(?:\{[\s\S]
*
\}
|
\[[\s\S]
*
\])
$/
,
P
=
/
([
A-Z
])
/g
;
function
R
(
e
,
n
,
r
,
i
){
if
(
x
.
acceptData
(
e
)){
var
o
,
a
,
s
=
x
.
expando
,
l
=
e
.
nodeType
,
u
=
l
?
x
.
cache
:
e
,
c
=
l
?
e
[
s
]:
e
[
s
]
&&
s
;
if
(
c
&&
u
[
c
]
&&
(
i
||
u
[
c
].
data
)
||
r
!==
t
||
"string"
!=
typeof
n
)
return
c
||
(
c
=
l
?
e
[
s
]
=
p
.
pop
()
||
x
.
guid
++
:
s
),
u
[
c
]
||
(
u
[
c
]
=
l
?{}:{
toJSON
:
x
.
noop
}),(
"object"
==
typeof
n
||
"function"
==
typeof
n
)
&&
(
i
?
u
[
c
]
=
x
.
extend
(
u
[
c
],
n
):
u
[
c
].
data
=
x
.
extend
(
u
[
c
].
data
,
n
)),
a
=
u
[
c
],
i
||
(
a
.
data
||
(
a
.
data
=
{}),
a
=
a
.
data
),
r
!==
t
&&
(
a
[
x
.
camelCase
(
n
)]
=
r
),
"string"
==
typeof
n
?(
o
=
a
[
n
],
null
==
o
&&
(
o
=
a
[
x
.
camelCase
(
n
)])):
o
=
a
,
o
}}
function
W
(
e
,
t
,
n
){
if
(
x
.
acceptData
(
e
)){
var
r
,
i
,
o
=
e
.
nodeType
,
a
=
o
?
x
.
cache
:
e
,
s
=
o
?
e
[
x
.
expando
]:
x
.
expando
;
if
(
a
[
s
]){
if
(
t
&&
(
r
=
n
?
a
[
s
]:
a
[
s
].
data
)){
x
.
isArray
(
t
)?
t
=
t
.
concat
(
x
.
map
(
t
,
x
.
camelCase
)):
t
in
r
?
t
=
[
t
]:(
t
=
x
.
camelCase
(
t
),
t
=
t
in
r
?[
t
]:
t
.
split
(
" "
)),
i
=
t
.
length
;
while
(
i
--
)
delete
r
[
t
[
i
]];
if
(
n
?
!
I
(
r
):
!
x
.
isEmptyObject
(
r
))
return
}(
n
||
(
delete
a
[
s
].
data
,
I
(
a
[
s
])))
&&
(
o
?
x
.
cleanData
([
e
],
!
0
):
x
.
support
.
deleteExpando
||
a
!=
a
.
window
?
delete
a
[
s
]:
a
[
s
]
=
null
)}}}
x
.
extend
({
cache
:{},
noData
:{
applet
:
!
0
,
embed
:
!
0
,
object
:
"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
},
hasData
:
function
(
e
){
return
e
=
e
.
nodeType
?
x
.
cache
[
e
[
x
.
expando
]]:
e
[
x
.
expando
],
!!
e
&&!
I
(
e
)},
data
:
function
(
e
,
t
,
n
){
return
R
(
e
,
t
,
n
)},
removeData
:
function
(
e
,
t
){
return
W
(
e
,
t
)},
_data
:
function
(
e
,
t
,
n
){
return
R
(
e
,
t
,
n
,
!
0
)},
_removeData
:
function
(
e
,
t
){
return
W
(
e
,
t
,
!
0
)},
acceptData
:
function
(
e
){
if
(
e
.
nodeType
&&
1
!==
e
.
nodeType
&&
9
!==
e
.
nodeType
)
return
!
1
;
var
t
=
e
.
nodeName
&&
x
.
noData
[
e
.
nodeName
.
toLowerCase
()];
return
!
t
||
t
!==!
0
&&
e
.
getAttribute
(
"classid"
)
===
t
}}),
x
.
fn
.
extend
({
data
:
function
(
e
,
n
){
var
r
,
i
,
o
=
null
,
a
=
0
,
s
=
this
[
0
];
if
(
e
===
t
){
if
(
this
.
length
&&
(
o
=
x
.
data
(
s
),
1
===
s
.
nodeType
&&!
x
.
_data
(
s
,
"parsedAttrs"
))){
for
(
r
=
s
.
attributes
;
r
.
length
>
a
;
a
++
)
i
=
r
[
a
].
name
,
0
===
i
.
indexOf
(
"data-"
)
&&
(
i
=
x
.
camelCase
(
i
.
slice
(
5
)),
$
(
s
,
i
,
o
[
i
]));
x
.
_data
(
s
,
"parsedAttrs"
,
!
0
)}
return
o
}
return
"object"
==
typeof
e
?
this
.
each
(
function
(){
x
.
data
(
this
,
e
)}):
arguments
.
length
>
1
?
this
.
each
(
function
(){
x
.
data
(
this
,
e
,
n
)}):
s
?
$
(
s
,
e
,
x
.
data
(
s
,
e
)):
null
},
removeData
:
function
(
e
){
return
this
.
each
(
function
(){
x
.
removeData
(
this
,
e
)})}});
function
$
(
e
,
n
,
r
){
if
(
r
===
t
&&
1
===
e
.
nodeType
){
var
i
=
"data-"
+
n
.
replace
(
P
,
"-$1"
).
toLowerCase
();
if
(
r
=
e
.
getAttribute
(
i
),
"string"
==
typeof
r
){
try
{
r
=
"true"
===
r
?
!
0
:
"false"
===
r
?
!
1
:
"null"
===
r
?
null
:
+
r
+
""
===
r
?
+
r
:
B
.
test
(
r
)?
x
.
parseJSON
(
r
):
r
}
catch
(
o
){}
x
.
data
(
e
,
n
,
r
)}
else
r
=
t
}
return
r
}
function
I
(
e
){
var
t
;
for
(
t
in
e
)
if
((
"data"
!==
t
||!
x
.
isEmptyObject
(
e
[
t
]))
&&
"toJSON"
!==
t
)
return
!
1
;
return
!
0
}
x
.
extend
({
queue
:
function
(
e
,
n
,
r
){
var
i
;
return
e
?(
n
=
(
n
||
"fx"
)
+
"queue"
,
i
=
x
.
_data
(
e
,
n
),
r
&&
(
!
i
||
x
.
isArray
(
r
)?
i
=
x
.
_data
(
e
,
n
,
x
.
makeArray
(
r
)):
i
.
push
(
r
)),
i
||
[]):
t
},
dequeue
:
function
(
e
,
t
){
t
=
t
||
"fx"
;
var
n
=
x
.
queue
(
e
,
t
),
r
=
n
.
length
,
i
=
n
.
shift
(),
o
=
x
.
_queueHooks
(
e
,
t
),
a
=
function
(){
x
.
dequeue
(
e
,
t
)};
"inprogress"
===
i
&&
(
i
=
n
.
shift
(),
r
--
),
i
&&
(
"fx"
===
t
&&
n
.
unshift
(
"inprogress"
),
delete
o
.
stop
,
i
.
call
(
e
,
a
,
o
)),
!
r
&&
o
&&
o
.
empty
.
fire
()},
_queueHooks
:
function
(
e
,
t
){
var
n
=
t
+
"queueHooks"
;
return
x
.
_data
(
e
,
n
)
||
x
.
_data
(
e
,
n
,{
empty
:
x
.
Callbacks
(
"once memory"
).
add
(
function
(){
x
.
_removeData
(
e
,
t
+
"queue"
),
x
.
_removeData
(
e
,
n
)})})}}),
x
.
fn
.
extend
({
queue
:
function
(
e
,
n
){
var
r
=
2
;
return
"string"
!=
typeof
e
&&
(
n
=
e
,
e
=
"fx"
,
r
--
),
r
>
arguments
.
length
?
x
.
queue
(
this
[
0
],
e
):
n
===
t
?
this
:
this
.
each
(
function
(){
var
t
=
x
.
queue
(
this
,
e
,
n
);
x
.
_queueHooks
(
this
,
e
),
"fx"
===
e
&&
"inprogress"
!==
t
[
0
]
&&
x
.
dequeue
(
this
,
e
)})},
dequeue
:
function
(
e
){
return
this
.
each
(
function
(){
x
.
dequeue
(
this
,
e
)})},
delay
:
function
(
e
,
t
){
return
e
=
x
.
fx
?
x
.
fx
.
speeds
[
e
]
||
e
:
e
,
t
=
t
||
"fx"
,
this
.
queue
(
t
,
function
(
t
,
n
){
var
r
=
setTimeout
(
t
,
e
);
n
.
stop
=
function
(){
clearTimeout
(
r
)}})},
clearQueue
:
function
(
e
){
return
this
.
queue
(
e
||
"fx"
,[])},
promise
:
function
(
e
,
n
){
var
r
,
i
=
1
,
o
=
x
.
Deferred
(),
a
=
this
,
s
=
this
.
length
,
l
=
function
(){
--
i
||
o
.
resolveWith
(
a
,[
a
])};
"string"
!=
typeof
e
&&
(
n
=
e
,
e
=
t
),
e
=
e
||
"fx"
;
while
(
s
--
)
r
=
x
.
_data
(
a
[
s
],
e
+
"queueHooks"
),
r
&&
r
.
empty
&&
(
i
++
,
r
.
empty
.
add
(
l
));
return
l
(),
o
.
promise
(
n
)}});
var
z
,
X
,
U
=
/
[\t\r\n\f]
/g
,
V
=
/
\r
/g
,
Y
=
/^
(?:
input|select|textarea|button|object
)
$/i
,
J
=
/^
(?:
a|area
)
$/i
,
G
=
/^
(?:
checked|selected
)
$/i
,
Q
=
x
.
support
.
getSetAttribute
,
K
=
x
.
support
.
input
;
x
.
fn
.
extend
({
attr
:
function
(
e
,
t
){
return
x
.
access
(
this
,
x
.
attr
,
e
,
t
,
arguments
.
length
>
1
)},
removeAttr
:
function
(
e
){
return
this
.
each
(
function
(){
x
.
removeAttr
(
this
,
e
)})},
prop
:
function
(
e
,
t
){
return
x
.
access
(
this
,
x
.
prop
,
e
,
t
,
arguments
.
length
>
1
)},
removeProp
:
function
(
e
){
return
e
=
x
.
propFix
[
e
]
||
e
,
this
.
each
(
function
(){
try
{
this
[
e
]
=
t
,
delete
this
[
e
]}
catch
(
n
){}})},
addClass
:
function
(
e
){
var
t
,
n
,
r
,
i
,
o
,
a
=
0
,
s
=
this
.
length
,
l
=
"string"
==
typeof
e
&&
e
;
if
(
x
.
isFunction
(
e
))
return
this
.
each
(
function
(
t
){
x
(
this
).
addClass
(
e
.
call
(
this
,
t
,
this
.
className
))});
if
(
l
)
for
(
t
=
(
e
||
""
).
match
(
T
)
||
[];
s
>
a
;
a
++
)
if
(
n
=
this
[
a
],
r
=
1
===
n
.
nodeType
&&
(
n
.
className
?(
" "
+
n
.
className
+
" "
).
replace
(
U
,
" "
):
" "
)){
o
=
0
;
while
(
i
=
t
[
o
++
])
0
>
r
.
indexOf
(
" "
+
i
+
" "
)
&&
(
r
+=
i
+
" "
);
n
.
className
=
x
.
trim
(
r
)}
return
this
},
removeClass
:
function
(
e
){
var
t
,
n
,
r
,
i
,
o
,
a
=
0
,
s
=
this
.
length
,
l
=
0
===
arguments
.
length
||
"string"
==
typeof
e
&&
e
;
if
(
x
.
isFunction
(
e
))
return
this
.
each
(
function
(
t
){
x
(
this
).
removeClass
(
e
.
call
(
this
,
t
,
this
.
className
))});
if
(
l
)
for
(
t
=
(
e
||
""
).
match
(
T
)
||
[];
s
>
a
;
a
++
)
if
(
n
=
this
[
a
],
r
=
1
===
n
.
nodeType
&&
(
n
.
className
?(
" "
+
n
.
className
+
" "
).
replace
(
U
,
" "
):
""
)){
o
=
0
;
while
(
i
=
t
[
o
++
])
while
(
r
.
indexOf
(
" "
+
i
+
" "
)
>=
0
)
r
=
r
.
replace
(
" "
+
i
+
" "
,
" "
);
n
.
className
=
e
?
x
.
trim
(
r
):
""
}
return
this
},
toggleClass
:
function
(
e
,
t
){
var
n
=
typeof
e
,
r
=
"boolean"
==
typeof
t
;
return
x
.
isFunction
(
e
)?
this
.
each
(
function
(
n
){
x
(
this
).
toggleClass
(
e
.
call
(
this
,
n
,
this
.
className
,
t
),
t
)}):
this
.
each
(
function
(){
if
(
"string"
===
n
){
var
o
,
a
=
0
,
s
=
x
(
this
),
l
=
t
,
u
=
e
.
match
(
T
)
||
[];
while
(
o
=
u
[
a
++
])
l
=
r
?
l
:
!
s
.
hasClass
(
o
),
s
[
l
?
"addClass"
:
"removeClass"
](
o
)}
else
(
n
===
i
||
"boolean"
===
n
)
&&
(
this
.
className
&&
x
.
_data
(
this
,
"__className__"
,
this
.
className
),
this
.
className
=
this
.
className
||
e
===!
1
?
""
:
x
.
_data
(
this
,
"__className__"
)
||
""
)})},
hasClass
:
function
(
e
){
var
t
=
" "
+
e
+
" "
,
n
=
0
,
r
=
this
.
length
;
for
(;
r
>
n
;
n
++
)
if
(
1
===
this
[
n
].
nodeType
&&
(
" "
+
this
[
n
].
className
+
" "
).
replace
(
U
,
" "
).
indexOf
(
t
)
>=
0
)
return
!
0
;
return
!
1
},
val
:
function
(
e
){
var
n
,
r
,
i
,
o
=
this
[
0
];{
if
(
arguments
.
length
)
return
i
=
x
.
isFunction
(
e
),
this
.
each
(
function
(
n
){
var
o
;
1
===
this
.
nodeType
&&
(
o
=
i
?
e
.
call
(
this
,
n
,
x
(
this
).
val
()):
e
,
null
==
o
?
o
=
""
:
"number"
==
typeof
o
?
o
+=
""
:
x
.
isArray
(
o
)
&&
(
o
=
x
.
map
(
o
,
function
(
e
){
return
null
==
e
?
""
:
e
+
""
})),
r
=
x
.
valHooks
[
this
.
type
]
||
x
.
valHooks
[
this
.
nodeName
.
toLowerCase
()],
r
&&
"set"
in
r
&&
r
.
set
(
this
,
o
,
"value"
)
!==
t
||
(
this
.
value
=
o
))});
if
(
o
)
return
r
=
x
.
valHooks
[
o
.
type
]
||
x
.
valHooks
[
o
.
nodeName
.
toLowerCase
()],
r
&&
"get"
in
r
&&
(
n
=
r
.
get
(
o
,
"value"
))
!==
t
?
n
:(
n
=
o
.
value
,
"string"
==
typeof
n
?
n
.
replace
(
V
,
""
):
null
==
n
?
""
:
n
)}}}),
x
.
extend
({
valHooks
:{
option
:{
get
:
function
(
e
){
var
t
=
x
.
find
.
attr
(
e
,
"value"
);
return
null
!=
t
?
t
:
e
.
text
}},
select
:{
get
:
function
(
e
){
var
t
,
n
,
r
=
e
.
options
,
i
=
e
.
selectedIndex
,
o
=
"select-one"
===
e
.
type
||
0
>
i
,
a
=
o
?
null
:[],
s
=
o
?
i
+
1
:
r
.
length
,
l
=
0
>
i
?
s
:
o
?
i
:
0
;
for
(;
s
>
l
;
l
++
)
if
(
n
=
r
[
l
],
!
(
!
n
.
selected
&&
l
!==
i
||
(
x
.
support
.
optDisabled
?
n
.
disabled
:
null
!==
n
.
getAttribute
(
"disabled"
))
||
n
.
parentNode
.
disabled
&&
x
.
nodeName
(
n
.
parentNode
,
"optgroup"
))){
if
(
t
=
x
(
n
).
val
(),
o
)
return
t
;
a
.
push
(
t
)}
return
a
},
set
:
function
(
e
,
t
){
var
n
,
r
,
i
=
e
.
options
,
o
=
x
.
makeArray
(
t
),
a
=
i
.
length
;
while
(
a
--
)
r
=
i
[
a
],(
r
.
selected
=
x
.
inArray
(
x
(
r
).
val
(),
o
)
>=
0
)
&&
(
n
=!
0
);
return
n
||
(
e
.
selectedIndex
=-
1
),
o
}}},
attr
:
function
(
e
,
n
,
r
){
var
o
,
a
,
s
=
e
.
nodeType
;
if
(
e
&&
3
!==
s
&&
8
!==
s
&&
2
!==
s
)
return
typeof
e
.
getAttribute
===
i
?
x
.
prop
(
e
,
n
,
r
):(
1
===
s
&&
x
.
isXMLDoc
(
e
)
||
(
n
=
n
.
toLowerCase
(),
o
=
x
.
attrHooks
[
n
]
||
(
x
.
expr
.
match
.
bool
.
test
(
n
)?
X
:
z
)),
r
===
t
?
o
&&
"get"
in
o
&&
null
!==
(
a
=
o
.
get
(
e
,
n
))?
a
:(
a
=
x
.
find
.
attr
(
e
,
n
),
null
==
a
?
t
:
a
):
null
!==
r
?
o
&&
"set"
in
o
&&
(
a
=
o
.
set
(
e
,
r
,
n
))
!==
t
?
a
:(
e
.
setAttribute
(
n
,
r
+
""
),
r
):(
x
.
removeAttr
(
e
,
n
),
t
))},
removeAttr
:
function
(
e
,
t
){
var
n
,
r
,
i
=
0
,
o
=
t
&&
t
.
match
(
T
);
if
(
o
&&
1
===
e
.
nodeType
)
while
(
n
=
o
[
i
++
])
r
=
x
.
propFix
[
n
]
||
n
,
x
.
expr
.
match
.
bool
.
test
(
n
)?
K
&&
Q
||!
G
.
test
(
n
)?
e
[
r
]
=!
1
:
e
[
x
.
camelCase
(
"default-"
+
n
)]
=
e
[
r
]
=!
1
:
x
.
attr
(
e
,
n
,
""
),
e
.
removeAttribute
(
Q
?
n
:
r
)},
attrHooks
:{
type
:{
set
:
function
(
e
,
t
){
if
(
!
x
.
support
.
radioValue
&&
"radio"
===
t
&&
x
.
nodeName
(
e
,
"input"
)){
var
n
=
e
.
value
;
return
e
.
setAttribute
(
"type"
,
t
),
n
&&
(
e
.
value
=
n
),
t
}}}},
propFix
:{
"for"
:
"htmlFor"
,
"class"
:
"className"
},
prop
:
function
(
e
,
n
,
r
){
var
i
,
o
,
a
,
s
=
e
.
nodeType
;
if
(
e
&&
3
!==
s
&&
8
!==
s
&&
2
!==
s
)
return
a
=
1
!==
s
||!
x
.
isXMLDoc
(
e
),
a
&&
(
n
=
x
.
propFix
[
n
]
||
n
,
o
=
x
.
propHooks
[
n
]),
r
!==
t
?
o
&&
"set"
in
o
&&
(
i
=
o
.
set
(
e
,
r
,
n
))
!==
t
?
i
:
e
[
n
]
=
r
:
o
&&
"get"
in
o
&&
null
!==
(
i
=
o
.
get
(
e
,
n
))?
i
:
e
[
n
]},
propHooks
:{
tabIndex
:{
get
:
function
(
e
){
var
t
=
x
.
find
.
attr
(
e
,
"tabindex"
);
return
t
?
parseInt
(
t
,
10
):
Y
.
test
(
e
.
nodeName
)
||
J
.
test
(
e
.
nodeName
)
&&
e
.
href
?
0
:
-
1
}}}}),
X
=
{
set
:
function
(
e
,
t
,
n
){
return
t
===!
1
?
x
.
removeAttr
(
e
,
n
):
K
&&
Q
||!
G
.
test
(
n
)?
e
.
setAttribute
(
!
Q
&&
x
.
propFix
[
n
]
||
n
,
n
):
e
[
x
.
camelCase
(
"default-"
+
n
)]
=
e
[
n
]
=!
0
,
n
}},
x
.
each
(
x
.
expr
.
match
.
bool
.
source
.
match
(
/
\w
+/g
),
function
(
e
,
n
){
var
r
=
x
.
expr
.
attrHandle
[
n
]
||
x
.
find
.
attr
;
x
.
expr
.
attrHandle
[
n
]
=
K
&&
Q
||!
G
.
test
(
n
)?
function
(
e
,
n
,
i
){
var
o
=
x
.
expr
.
attrHandle
[
n
],
a
=
i
?
t
:(
x
.
expr
.
attrHandle
[
n
]
=
t
)
!=
r
(
e
,
n
,
i
)?
n
.
toLowerCase
():
null
;
return
x
.
expr
.
attrHandle
[
n
]
=
o
,
a
}:
function
(
e
,
n
,
r
){
return
r
?
t
:
e
[
x
.
camelCase
(
"default-"
+
n
)]?
n
.
toLowerCase
():
null
}}),
K
&&
Q
||
(
x
.
attrHooks
.
value
=
{
set
:
function
(
e
,
n
,
r
){
return
x
.
nodeName
(
e
,
"input"
)?(
e
.
defaultValue
=
n
,
t
):
z
&&
z
.
set
(
e
,
n
,
r
)}}),
Q
||
(
z
=
{
set
:
function
(
e
,
n
,
r
){
var
i
=
e
.
getAttributeNode
(
r
);
return
i
||
e
.
setAttributeNode
(
i
=
e
.
ownerDocument
.
createAttribute
(
r
)),
i
.
value
=
n
+=
""
,
"value"
===
r
||
n
===
e
.
getAttribute
(
r
)?
n
:
t
}},
x
.
expr
.
attrHandle
.
id
=
x
.
expr
.
attrHandle
.
name
=
x
.
expr
.
attrHandle
.
coords
=
function
(
e
,
n
,
r
){
var
i
;
return
r
?
t
:(
i
=
e
.
getAttributeNode
(
n
))
&&
""
!==
i
.
value
?
i
.
value
:
null
},
x
.
valHooks
.
button
=
{
get
:
function
(
e
,
n
){
var
r
=
e
.
getAttributeNode
(
n
);
return
r
&&
r
.
specified
?
r
.
value
:
t
},
set
:
z
.
set
},
x
.
attrHooks
.
contenteditable
=
{
set
:
function
(
e
,
t
,
n
){
z
.
set
(
e
,
""
===
t
?
!
1
:
t
,
n
)}},
x
.
each
([
"width"
,
"height"
],
function
(
e
,
n
){
x
.
attrHooks
[
n
]
=
{
set
:
function
(
e
,
r
){
return
""
===
r
?(
e
.
setAttribute
(
n
,
"auto"
),
r
):
t
}}})),
x
.
support
.
hrefNormalized
||
x
.
each
([
"href"
,
"src"
],
function
(
e
,
t
){
x
.
propHooks
[
t
]
=
{
get
:
function
(
e
){
return
e
.
getAttribute
(
t
,
4
)}}}),
x
.
support
.
style
||
(
x
.
attrHooks
.
style
=
{
get
:
function
(
e
){
return
e
.
style
.
cssText
||
t
},
set
:
function
(
e
,
t
){
return
e
.
style
.
cssText
=
t
+
""
}}),
x
.
support
.
optSelected
||
(
x
.
propHooks
.
selected
=
{
get
:
function
(
e
){
var
t
=
e
.
parentNode
;
return
t
&&
(
t
.
selectedIndex
,
t
.
parentNode
&&
t
.
parentNode
.
selectedIndex
),
null
}}),
x
.
each
([
"tabIndex"
,
"readOnly"
,
"maxLength"
,
"cellSpacing"
,
"cellPadding"
,
"rowSpan"
,
"colSpan"
,
"useMap"
,
"frameBorder"
,
"contentEditable"
],
function
(){
x
.
propFix
[
this
.
toLowerCase
()]
=
this
}),
x
.
support
.
enctype
||
(
x
.
propFix
.
enctype
=
"encoding"
),
x
.
each
([
"radio"
,
"checkbox"
],
function
(){
x
.
valHooks
[
this
]
=
{
set
:
function
(
e
,
n
){
return
x
.
isArray
(
n
)?
e
.
checked
=
x
.
inArray
(
x
(
e
).
val
(),
n
)
>=
0
:
t
}},
x
.
support
.
checkOn
||
(
x
.
valHooks
[
this
].
get
=
function
(
e
){
return
null
===
e
.
getAttribute
(
"value"
)?
"on"
:
e
.
value
})});
var
Z
=
/^
(?:
input|select|textarea
)
$/i
,
et
=
/^key/
,
tt
=
/^
(?:
mouse|contextmenu
)
|click/
,
nt
=
/^
(?:
focusinfocus|focusoutblur
)
$/
,
rt
=
/^
([^
.
]
*
)(?:\.(
.+
)
|
)
$/
;
function
it
(){
return
!
0
}
function
ot
(){
return
!
1
}
function
at
(){
try
{
return
a
.
activeElement
}
catch
(
e
){}}
x
.
event
=
{
global
:{},
add
:
function
(
e
,
n
,
r
,
o
,
a
){
var
s
,
l
,
u
,
c
,
p
,
f
,
d
,
h
,
g
,
m
,
y
,
v
=
x
.
_data
(
e
);
if
(
v
){
r
.
handler
&&
(
c
=
r
,
r
=
c
.
handler
,
a
=
c
.
selector
),
r
.
guid
||
(
r
.
guid
=
x
.
guid
++
),(
l
=
v
.
events
)
||
(
l
=
v
.
events
=
{}),(
f
=
v
.
handle
)
||
(
f
=
v
.
handle
=
function
(
e
){
return
typeof
x
===
i
||
e
&&
x
.
event
.
triggered
===
e
.
type
?
t
:
x
.
event
.
dispatch
.
apply
(
f
.
elem
,
arguments
)},
f
.
elem
=
e
),
n
=
(
n
||
""
).
match
(
T
)
||
[
""
],
u
=
n
.
length
;
while
(
u
--
)
s
=
rt
.
exec
(
n
[
u
])
||
[],
g
=
y
=
s
[
1
],
m
=
(
s
[
2
]
||
""
).
split
(
"."
).
sort
(),
g
&&
(
p
=
x
.
event
.
special
[
g
]
||
{},
g
=
(
a
?
p
.
delegateType
:
p
.
bindType
)
||
g
,
p
=
x
.
event
.
special
[
g
]
||
{},
d
=
x
.
extend
({
type
:
g
,
origType
:
y
,
data
:
o
,
handler
:
r
,
guid
:
r
.
guid
,
selector
:
a
,
needsContext
:
a
&&
x
.
expr
.
match
.
needsContext
.
test
(
a
),
namespace
:
m
.
join
(
"."
)},
c
),(
h
=
l
[
g
])
||
(
h
=
l
[
g
]
=
[],
h
.
delegateCount
=
0
,
p
.
setup
&&
p
.
setup
.
call
(
e
,
o
,
m
,
f
)
!==!
1
||
(
e
.
addEventListener
?
e
.
addEventListener
(
g
,
f
,
!
1
):
e
.
attachEvent
&&
e
.
attachEvent
(
"on"
+
g
,
f
))),
p
.
add
&&
(
p
.
add
.
call
(
e
,
d
),
d
.
handler
.
guid
||
(
d
.
handler
.
guid
=
r
.
guid
)),
a
?
h
.
splice
(
h
.
delegateCount
++
,
0
,
d
):
h
.
push
(
d
),
x
.
event
.
global
[
g
]
=!
0
);
e
=
null
}},
remove
:
function
(
e
,
t
,
n
,
r
,
i
){
var
o
,
a
,
s
,
l
,
u
,
c
,
p
,
f
,
d
,
h
,
g
,
m
=
x
.
hasData
(
e
)
&&
x
.
_data
(
e
);
if
(
m
&&
(
c
=
m
.
events
)){
t
=
(
t
||
""
).
match
(
T
)
||
[
""
],
u
=
t
.
length
;
while
(
u
--
)
if
(
s
=
rt
.
exec
(
t
[
u
])
||
[],
d
=
g
=
s
[
1
],
h
=
(
s
[
2
]
||
""
).
split
(
"."
).
sort
(),
d
){
p
=
x
.
event
.
special
[
d
]
||
{},
d
=
(
r
?
p
.
delegateType
:
p
.
bindType
)
||
d
,
f
=
c
[
d
]
||
[],
s
=
s
[
2
]
&&
RegExp
(
"(^|
\\
.)"
+
h
.
join
(
"
\\
.(?:.*
\\
.|)"
)
+
"(
\\
.|$)"
),
l
=
o
=
f
.
length
;
while
(
o
--
)
a
=
f
[
o
],
!
i
&&
g
!==
a
.
origType
||
n
&&
n
.
guid
!==
a
.
guid
||
s
&&!
s
.
test
(
a
.
namespace
)
||
r
&&
r
!==
a
.
selector
&&
(
"**"
!==
r
||!
a
.
selector
)
||
(
f
.
splice
(
o
,
1
),
a
.
selector
&&
f
.
delegateCount
--
,
p
.
remove
&&
p
.
remove
.
call
(
e
,
a
));
l
&&!
f
.
length
&&
(
p
.
teardown
&&
p
.
teardown
.
call
(
e
,
h
,
m
.
handle
)
!==!
1
||
x
.
removeEvent
(
e
,
d
,
m
.
handle
),
delete
c
[
d
])}
else
for
(
d
in
c
)
x
.
event
.
remove
(
e
,
d
+
t
[
u
],
n
,
r
,
!
0
);
x
.
isEmptyObject
(
c
)
&&
(
delete
m
.
handle
,
x
.
_removeData
(
e
,
"events"
))}},
trigger
:
function
(
n
,
r
,
i
,
o
){
var
s
,
l
,
u
,
c
,
p
,
f
,
d
,
h
=
[
i
||
a
],
g
=
v
.
call
(
n
,
"type"
)?
n
.
type
:
n
,
m
=
v
.
call
(
n
,
"namespace"
)?
n
.
namespace
.
split
(
"."
):[];
if
(
u
=
f
=
i
=
i
||
a
,
3
!==
i
.
nodeType
&&
8
!==
i
.
nodeType
&&!
nt
.
test
(
g
+
x
.
event
.
triggered
)
&&
(
g
.
indexOf
(
"."
)
>=
0
&&
(
m
=
g
.
split
(
"."
),
g
=
m
.
shift
(),
m
.
sort
()),
l
=
0
>
g
.
indexOf
(
":"
)
&&
"on"
+
g
,
n
=
n
[
x
.
expando
]?
n
:
new
x
.
Event
(
g
,
"object"
==
typeof
n
&&
n
),
n
.
isTrigger
=
o
?
2
:
3
,
n
.
namespace
=
m
.
join
(
"."
),
n
.
namespace_re
=
n
.
namespace
?
RegExp
(
"(^|
\\
.)"
+
m
.
join
(
"
\\
.(?:.*
\\
.|)"
)
+
"(
\\
.|$)"
):
null
,
n
.
result
=
t
,
n
.
target
||
(
n
.
target
=
i
),
r
=
null
==
r
?[
n
]:
x
.
makeArray
(
r
,[
n
]),
p
=
x
.
event
.
special
[
g
]
||
{},
o
||!
p
.
trigger
||
p
.
trigger
.
apply
(
i
,
r
)
!==!
1
)){
if
(
!
o
&&!
p
.
noBubble
&&!
x
.
isWindow
(
i
)){
for
(
c
=
p
.
delegateType
||
g
,
nt
.
test
(
c
+
g
)
||
(
u
=
u
.
parentNode
);
u
;
u
=
u
.
parentNode
)
h
.
push
(
u
),
f
=
u
;
f
===
(
i
.
ownerDocument
||
a
)
&&
h
.
push
(
f
.
defaultView
||
f
.
parentWindow
||
e
)}
d
=
0
;
while
((
u
=
h
[
d
++
])
&&!
n
.
isPropagationStopped
())
n
.
type
=
d
>
1
?
c
:
p
.
bindType
||
g
,
s
=
(
x
.
_data
(
u
,
"events"
)
||
{})[
n
.
type
]
&&
x
.
_data
(
u
,
"handle"
),
s
&&
s
.
apply
(
u
,
r
),
s
=
l
&&
u
[
l
],
s
&&
x
.
acceptData
(
u
)
&&
s
.
apply
&&
s
.
apply
(
u
,
r
)
===!
1
&&
n
.
preventDefault
();
if
(
n
.
type
=
g
,
!
o
&&!
n
.
isDefaultPrevented
()
&&
(
!
p
.
_default
||
p
.
_default
.
apply
(
h
.
pop
(),
r
)
===!
1
)
&&
x
.
acceptData
(
i
)
&&
l
&&
i
[
g
]
&&!
x
.
isWindow
(
i
)){
f
=
i
[
l
],
f
&&
(
i
[
l
]
=
null
),
x
.
event
.
triggered
=
g
;
try
{
i
[
g
]()}
catch
(
y
){}
x
.
event
.
triggered
=
t
,
f
&&
(
i
[
l
]
=
f
)}
return
n
.
result
}},
dispatch
:
function
(
e
){
e
=
x
.
event
.
fix
(
e
);
var
n
,
r
,
i
,
o
,
a
,
s
=
[],
l
=
g
.
call
(
arguments
),
u
=
(
x
.
_data
(
this
,
"events"
)
||
{})[
e
.
type
]
||
[],
c
=
x
.
event
.
special
[
e
.
type
]
||
{};
if
(
l
[
0
]
=
e
,
e
.
delegateTarget
=
this
,
!
c
.
preDispatch
||
c
.
preDispatch
.
call
(
this
,
e
)
!==!
1
){
s
=
x
.
event
.
handlers
.
call
(
this
,
e
,
u
),
n
=
0
;
while
((
o
=
s
[
n
++
])
&&!
e
.
isPropagationStopped
()){
e
.
currentTarget
=
o
.
elem
,
a
=
0
;
while
((
i
=
o
.
handlers
[
a
++
])
&&!
e
.
isImmediatePropagationStopped
())(
!
e
.
namespace_re
||
e
.
namespace_re
.
test
(
i
.
namespace
))
&&
(
e
.
handleObj
=
i
,
e
.
data
=
i
.
data
,
r
=
((
x
.
event
.
special
[
i
.
origType
]
||
{}).
handle
||
i
.
handler
).
apply
(
o
.
elem
,
l
),
r
!==
t
&&
(
e
.
result
=
r
)
===!
1
&&
(
e
.
preventDefault
(),
e
.
stopPropagation
()))}
return
c
.
postDispatch
&&
c
.
postDispatch
.
call
(
this
,
e
),
e
.
result
}},
handlers
:
function
(
e
,
n
){
var
r
,
i
,
o
,
a
,
s
=
[],
l
=
n
.
delegateCount
,
u
=
e
.
target
;
if
(
l
&&
u
.
nodeType
&&
(
!
e
.
button
||
"click"
!==
e
.
type
))
for
(;
u
!=
this
;
u
=
u
.
parentNode
||
this
)
if
(
1
===
u
.
nodeType
&&
(
u
.
disabled
!==!
0
||
"click"
!==
e
.
type
)){
for
(
o
=
[],
a
=
0
;
l
>
a
;
a
++
)
i
=
n
[
a
],
r
=
i
.
selector
+
" "
,
o
[
r
]
===
t
&&
(
o
[
r
]
=
i
.
needsContext
?
x
(
r
,
this
).
index
(
u
)
>=
0
:
x
.
find
(
r
,
this
,
null
,[
u
]).
length
),
o
[
r
]
&&
o
.
push
(
i
);
o
.
length
&&
s
.
push
({
elem
:
u
,
handlers
:
o
})}
return
n
.
length
>
l
&&
s
.
push
({
elem
:
this
,
handlers
:
n
.
slice
(
l
)}),
s
},
fix
:
function
(
e
){
if
(
e
[
x
.
expando
])
return
e
;
var
t
,
n
,
r
,
i
=
e
.
type
,
o
=
e
,
s
=
this
.
fixHooks
[
i
];
s
||
(
this
.
fixHooks
[
i
]
=
s
=
tt
.
test
(
i
)?
this
.
mouseHooks
:
et
.
test
(
i
)?
this
.
keyHooks
:{}),
r
=
s
.
props
?
this
.
props
.
concat
(
s
.
props
):
this
.
props
,
e
=
new
x
.
Event
(
o
),
t
=
r
.
length
;
while
(
t
--
)
n
=
r
[
t
],
e
[
n
]
=
o
[
n
];
return
e
.
target
||
(
e
.
target
=
o
.
srcElement
||
a
),
3
===
e
.
target
.
nodeType
&&
(
e
.
target
=
e
.
target
.
parentNode
),
e
.
metaKey
=!!
e
.
metaKey
,
s
.
filter
?
s
.
filter
(
e
,
o
):
e
},
props
:
"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which"
.
split
(
" "
),
fixHooks
:{},
keyHooks
:{
props
:
"char charCode key keyCode"
.
split
(
" "
),
filter
:
function
(
e
,
t
){
return
null
==
e
.
which
&&
(
e
.
which
=
null
!=
t
.
charCode
?
t
.
charCode
:
t
.
keyCode
),
e
}},
mouseHooks
:{
props
:
"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement"
.
split
(
" "
),
filter
:
function
(
e
,
n
){
var
r
,
i
,
o
,
s
=
n
.
button
,
l
=
n
.
fromElement
;
return
null
==
e
.
pageX
&&
null
!=
n
.
clientX
&&
(
i
=
e
.
target
.
ownerDocument
||
a
,
o
=
i
.
documentElement
,
r
=
i
.
body
,
e
.
pageX
=
n
.
clientX
+
(
o
&&
o
.
scrollLeft
||
r
&&
r
.
scrollLeft
||
0
)
-
(
o
&&
o
.
clientLeft
||
r
&&
r
.
clientLeft
||
0
),
e
.
pageY
=
n
.
clientY
+
(
o
&&
o
.
scrollTop
||
r
&&
r
.
scrollTop
||
0
)
-
(
o
&&
o
.
clientTop
||
r
&&
r
.
clientTop
||
0
)),
!
e
.
relatedTarget
&&
l
&&
(
e
.
relatedTarget
=
l
===
e
.
target
?
n
.
toElement
:
l
),
e
.
which
||
s
===
t
||
(
e
.
which
=
1
&
s
?
1
:
2
&
s
?
3
:
4
&
s
?
2
:
0
),
e
}},
special
:{
load
:{
noBubble
:
!
0
},
focus
:{
trigger
:
function
(){
if
(
this
!==
at
()
&&
this
.
focus
)
try
{
return
this
.
focus
(),
!
1
}
catch
(
e
){}},
delegateType
:
"focusin"
},
blur
:{
trigger
:
function
(){
return
this
===
at
()
&&
this
.
blur
?(
this
.
blur
(),
!
1
):
t
},
delegateType
:
"focusout"
},
click
:{
trigger
:
function
(){
return
x
.
nodeName
(
this
,
"input"
)
&&
"checkbox"
===
this
.
type
&&
this
.
click
?(
this
.
click
(),
!
1
):
t
},
_default
:
function
(
e
){
return
x
.
nodeName
(
e
.
target
,
"a"
)}},
beforeunload
:{
postDispatch
:
function
(
e
){
e
.
result
!==
t
&&
(
e
.
originalEvent
.
returnValue
=
e
.
result
)}}},
simulate
:
function
(
e
,
t
,
n
,
r
){
var
i
=
x
.
extend
(
new
x
.
Event
,
n
,{
type
:
e
,
isSimulated
:
!
0
,
originalEvent
:{}});
r
?
x
.
event
.
trigger
(
i
,
null
,
t
):
x
.
event
.
dispatch
.
call
(
t
,
i
),
i
.
isDefaultPrevented
()
&&
n
.
preventDefault
()}},
x
.
removeEvent
=
a
.
removeEventListener
?
function
(
e
,
t
,
n
){
e
.
removeEventListener
&&
e
.
removeEventListener
(
t
,
n
,
!
1
)}:
function
(
e
,
t
,
n
){
var
r
=
"on"
+
t
;
e
.
detachEvent
&&
(
typeof
e
[
r
]
===
i
&&
(
e
[
r
]
=
null
),
e
.
detachEvent
(
r
,
n
))},
x
.
Event
=
function
(
e
,
n
){
return
this
instanceof
x
.
Event
?(
e
&&
e
.
type
?(
this
.
originalEvent
=
e
,
this
.
type
=
e
.
type
,
this
.
isDefaultPrevented
=
e
.
defaultPrevented
||
e
.
returnValue
===!
1
||
e
.
getPreventDefault
&&
e
.
getPreventDefault
()?
it
:
ot
):
this
.
type
=
e
,
n
&&
x
.
extend
(
this
,
n
),
this
.
timeStamp
=
e
&&
e
.
timeStamp
||
x
.
now
(),
this
[
x
.
expando
]
=!
0
,
t
):
new
x
.
Event
(
e
,
n
)},
x
.
Event
.
prototype
=
{
isDefaultPrevented
:
ot
,
isPropagationStopped
:
ot
,
isImmediatePropagationStopped
:
ot
,
preventDefault
:
function
(){
var
e
=
this
.
originalEvent
;
this
.
isDefaultPrevented
=
it
,
e
&&
(
e
.
preventDefault
?
e
.
preventDefault
():
e
.
returnValue
=!
1
)},
stopPropagation
:
function
(){
var
e
=
this
.
originalEvent
;
this
.
isPropagationStopped
=
it
,
e
&&
(
e
.
stopPropagation
&&
e
.
stopPropagation
(),
e
.
cancelBubble
=!
0
)},
stopImmediatePropagation
:
function
(){
this
.
isImmediatePropagationStopped
=
it
,
this
.
stopPropagation
()}},
x
.
each
({
mouseenter
:
"mouseover"
,
mouseleave
:
"mouseout"
},
function
(
e
,
t
){
x
.
event
.
special
[
e
]
=
{
delegateType
:
t
,
bindType
:
t
,
handle
:
function
(
e
){
var
n
,
r
=
this
,
i
=
e
.
relatedTarget
,
o
=
e
.
handleObj
;
return
(
!
i
||
i
!==
r
&&!
x
.
contains
(
r
,
i
))
&&
(
e
.
type
=
o
.
origType
,
n
=
o
.
handler
.
apply
(
this
,
arguments
),
e
.
type
=
t
),
n
}}}),
x
.
support
.
submitBubbles
||
(
x
.
event
.
special
.
submit
=
{
setup
:
function
(){
return
x
.
nodeName
(
this
,
"form"
)?
!
1
:(
x
.
event
.
add
(
this
,
"click._submit keypress._submit"
,
function
(
e
){
var
n
=
e
.
target
,
r
=
x
.
nodeName
(
n
,
"input"
)
||
x
.
nodeName
(
n
,
"button"
)?
n
.
form
:
t
;
r
&&!
x
.
_data
(
r
,
"submitBubbles"
)
&&
(
x
.
event
.
add
(
r
,
"submit._submit"
,
function
(
e
){
e
.
_submit_bubble
=!
0
}),
x
.
_data
(
r
,
"submitBubbles"
,
!
0
))}),
t
)},
postDispatch
:
function
(
e
){
e
.
_submit_bubble
&&
(
delete
e
.
_submit_bubble
,
this
.
parentNode
&&!
e
.
isTrigger
&&
x
.
event
.
simulate
(
"submit"
,
this
.
parentNode
,
e
,
!
0
))},
teardown
:
function
(){
return
x
.
nodeName
(
this
,
"form"
)?
!
1
:(
x
.
event
.
remove
(
this
,
"._submit"
),
t
)}}),
x
.
support
.
changeBubbles
||
(
x
.
event
.
special
.
change
=
{
setup
:
function
(){
return
Z
.
test
(
this
.
nodeName
)?((
"checkbox"
===
this
.
type
||
"radio"
===
this
.
type
)
&&
(
x
.
event
.
add
(
this
,
"propertychange._change"
,
function
(
e
){
"checked"
===
e
.
originalEvent
.
propertyName
&&
(
this
.
_just_changed
=!
0
)}),
x
.
event
.
add
(
this
,
"click._change"
,
function
(
e
){
this
.
_just_changed
&&!
e
.
isTrigger
&&
(
this
.
_just_changed
=!
1
),
x
.
event
.
simulate
(
"change"
,
this
,
e
,
!
0
)})),
!
1
):(
x
.
event
.
add
(
this
,
"beforeactivate._change"
,
function
(
e
){
var
t
=
e
.
target
;
Z
.
test
(
t
.
nodeName
)
&&!
x
.
_data
(
t
,
"changeBubbles"
)
&&
(
x
.
event
.
add
(
t
,
"change._change"
,
function
(
e
){
!
this
.
parentNode
||
e
.
isSimulated
||
e
.
isTrigger
||
x
.
event
.
simulate
(
"change"
,
this
.
parentNode
,
e
,
!
0
)}),
x
.
_data
(
t
,
"changeBubbles"
,
!
0
))}),
t
)},
handle
:
function
(
e
){
var
n
=
e
.
target
;
return
this
!==
n
||
e
.
isSimulated
||
e
.
isTrigger
||
"radio"
!==
n
.
type
&&
"checkbox"
!==
n
.
type
?
e
.
handleObj
.
handler
.
apply
(
this
,
arguments
):
t
},
teardown
:
function
(){
return
x
.
event
.
remove
(
this
,
"._change"
),
!
Z
.
test
(
this
.
nodeName
)}}),
x
.
support
.
focusinBubbles
||
x
.
each
({
focus
:
"focusin"
,
blur
:
"focusout"
},
function
(
e
,
t
){
var
n
=
0
,
r
=
function
(
e
){
x
.
event
.
simulate
(
t
,
e
.
target
,
x
.
event
.
fix
(
e
),
!
0
)};
x
.
event
.
special
[
t
]
=
{
setup
:
function
(){
0
===
n
++&&
a
.
addEventListener
(
e
,
r
,
!
0
)},
teardown
:
function
(){
0
===--
n
&&
a
.
removeEventListener
(
e
,
r
,
!
0
)}}}),
x
.
fn
.
extend
({
on
:
function
(
e
,
n
,
r
,
i
,
o
){
var
a
,
s
;
if
(
"object"
==
typeof
e
){
"string"
!=
typeof
n
&&
(
r
=
r
||
n
,
n
=
t
);
for
(
a
in
e
)
this
.
on
(
a
,
n
,
r
,
e
[
a
],
o
);
return
this
}
if
(
null
==
r
&&
null
==
i
?(
i
=
n
,
r
=
n
=
t
):
null
==
i
&&
(
"string"
==
typeof
n
?(
i
=
r
,
r
=
t
):(
i
=
r
,
r
=
n
,
n
=
t
)),
i
===!
1
)
i
=
ot
;
else
if
(
!
i
)
return
this
;
return
1
===
o
&&
(
s
=
i
,
i
=
function
(
e
){
return
x
().
off
(
e
),
s
.
apply
(
this
,
arguments
)},
i
.
guid
=
s
.
guid
||
(
s
.
guid
=
x
.
guid
++
)),
this
.
each
(
function
(){
x
.
event
.
add
(
this
,
e
,
i
,
r
,
n
)})},
one
:
function
(
e
,
t
,
n
,
r
){
return
this
.
on
(
e
,
t
,
n
,
r
,
1
)},
off
:
function
(
e
,
n
,
r
){
var
i
,
o
;
if
(
e
&&
e
.
preventDefault
&&
e
.
handleObj
)
return
i
=
e
.
handleObj
,
x
(
e
.
delegateTarget
).
off
(
i
.
namespace
?
i
.
origType
+
"."
+
i
.
namespace
:
i
.
origType
,
i
.
selector
,
i
.
handler
),
this
;
if
(
"object"
==
typeof
e
){
for
(
o
in
e
)
this
.
off
(
o
,
n
,
e
[
o
]);
return
this
}
return
(
n
===!
1
||
"function"
==
typeof
n
)
&&
(
r
=
n
,
n
=
t
),
r
===!
1
&&
(
r
=
ot
),
this
.
each
(
function
(){
x
.
event
.
remove
(
this
,
e
,
r
,
n
)})},
trigger
:
function
(
e
,
t
){
return
this
.
each
(
function
(){
x
.
event
.
trigger
(
e
,
t
,
this
)})},
triggerHandler
:
function
(
e
,
n
){
var
r
=
this
[
0
];
return
r
?
x
.
event
.
trigger
(
e
,
n
,
r
,
!
0
):
t
}});
var
st
=
/^.
[^
:#
\[\.
,
]
*$/
,
lt
=
/^
(?:
parents|prev
(?:
Until|All
))
/
,
ut
=
x
.
expr
.
match
.
needsContext
,
ct
=
{
children
:
!
0
,
contents
:
!
0
,
next
:
!
0
,
prev
:
!
0
};
x
.
fn
.
extend
({
find
:
function
(
e
){
var
t
,
n
=
[],
r
=
this
,
i
=
r
.
length
;
if
(
"string"
!=
typeof
e
)
return
this
.
pushStack
(
x
(
e
).
filter
(
function
(){
for
(
t
=
0
;
i
>
t
;
t
++
)
if
(
x
.
contains
(
r
[
t
],
this
))
return
!
0
}));
for
(
t
=
0
;
i
>
t
;
t
++
)
x
.
find
(
e
,
r
[
t
],
n
);
return
n
=
this
.
pushStack
(
i
>
1
?
x
.
unique
(
n
):
n
),
n
.
selector
=
this
.
selector
?
this
.
selector
+
" "
+
e
:
e
,
n
},
has
:
function
(
e
){
var
t
,
n
=
x
(
e
,
this
),
r
=
n
.
length
;
return
this
.
filter
(
function
(){
for
(
t
=
0
;
r
>
t
;
t
++
)
if
(
x
.
contains
(
this
,
n
[
t
]))
return
!
0
})},
not
:
function
(
e
){
return
this
.
pushStack
(
ft
(
this
,
e
||
[],
!
0
))},
filter
:
function
(
e
){
return
this
.
pushStack
(
ft
(
this
,
e
||
[],
!
1
))},
is
:
function
(
e
){
return
!!
ft
(
this
,
"string"
==
typeof
e
&&
ut
.
test
(
e
)?
x
(
e
):
e
||
[],
!
1
).
length
},
closest
:
function
(
e
,
t
){
var
n
,
r
=
0
,
i
=
this
.
length
,
o
=
[],
a
=
ut
.
test
(
e
)
||
"string"
!=
typeof
e
?
x
(
e
,
t
||
this
.
context
):
0
;
for
(;
i
>
r
;
r
++
)
for
(
n
=
this
[
r
];
n
&&
n
!==
t
;
n
=
n
.
parentNode
)
if
(
11
>
n
.
nodeType
&&
(
a
?
a
.
index
(
n
)
>-
1
:
1
===
n
.
nodeType
&&
x
.
find
.
matchesSelector
(
n
,
e
))){
n
=
o
.
push
(
n
);
break
}
return
this
.
pushStack
(
o
.
length
>
1
?
x
.
unique
(
o
):
o
)},
index
:
function
(
e
){
return
e
?
"string"
==
typeof
e
?
x
.
inArray
(
this
[
0
],
x
(
e
)):
x
.
inArray
(
e
.
jquery
?
e
[
0
]:
e
,
this
):
this
[
0
]
&&
this
[
0
].
parentNode
?
this
.
first
().
prevAll
().
length
:
-
1
},
add
:
function
(
e
,
t
){
var
n
=
"string"
==
typeof
e
?
x
(
e
,
t
):
x
.
makeArray
(
e
&&
e
.
nodeType
?[
e
]:
e
),
r
=
x
.
merge
(
this
.
get
(),
n
);
return
this
.
pushStack
(
x
.
unique
(
r
))},
addBack
:
function
(
e
){
return
this
.
add
(
null
==
e
?
this
.
prevObject
:
this
.
prevObject
.
filter
(
e
))}});
function
pt
(
e
,
t
){
do
e
=
e
[
t
];
while
(
e
&&
1
!==
e
.
nodeType
);
return
e
}
x
.
each
({
parent
:
function
(
e
){
var
t
=
e
.
parentNode
;
return
t
&&
11
!==
t
.
nodeType
?
t
:
null
},
parents
:
function
(
e
){
return
x
.
dir
(
e
,
"parentNode"
)},
parentsUntil
:
function
(
e
,
t
,
n
){
return
x
.
dir
(
e
,
"parentNode"
,
n
)},
next
:
function
(
e
){
return
pt
(
e
,
"nextSibling"
)},
prev
:
function
(
e
){
return
pt
(
e
,
"previousSibling"
)},
nextAll
:
function
(
e
){
return
x
.
dir
(
e
,
"nextSibling"
)},
prevAll
:
function
(
e
){
return
x
.
dir
(
e
,
"previousSibling"
)},
nextUntil
:
function
(
e
,
t
,
n
){
return
x
.
dir
(
e
,
"nextSibling"
,
n
)},
prevUntil
:
function
(
e
,
t
,
n
){
return
x
.
dir
(
e
,
"previousSibling"
,
n
)},
siblings
:
function
(
e
){
return
x
.
sibling
((
e
.
parentNode
||
{}).
firstChild
,
e
)},
children
:
function
(
e
){
return
x
.
sibling
(
e
.
firstChild
)},
contents
:
function
(
e
){
return
x
.
nodeName
(
e
,
"iframe"
)?
e
.
contentDocument
||
e
.
contentWindow
.
document
:
x
.
merge
([],
e
.
childNodes
)}},
function
(
e
,
t
){
x
.
fn
[
e
]
=
function
(
n
,
r
){
var
i
=
x
.
map
(
this
,
t
,
n
);
return
"Until"
!==
e
.
slice
(
-
5
)
&&
(
r
=
n
),
r
&&
"string"
==
typeof
r
&&
(
i
=
x
.
filter
(
r
,
i
)),
this
.
length
>
1
&&
(
ct
[
e
]
||
(
i
=
x
.
unique
(
i
)),
lt
.
test
(
e
)
&&
(
i
=
i
.
reverse
())),
this
.
pushStack
(
i
)}}),
x
.
extend
({
filter
:
function
(
e
,
t
,
n
){
var
r
=
t
[
0
];
return
n
&&
(
e
=
":not("
+
e
+
")"
),
1
===
t
.
length
&&
1
===
r
.
nodeType
?
x
.
find
.
matchesSelector
(
r
,
e
)?[
r
]:[]:
x
.
find
.
matches
(
e
,
x
.
grep
(
t
,
function
(
e
){
return
1
===
e
.
nodeType
}))},
dir
:
function
(
e
,
n
,
r
){
var
i
=
[],
o
=
e
[
n
];
while
(
o
&&
9
!==
o
.
nodeType
&&
(
r
===
t
||
1
!==
o
.
nodeType
||!
x
(
o
).
is
(
r
)))
1
===
o
.
nodeType
&&
i
.
push
(
o
),
o
=
o
[
n
];
return
i
},
sibling
:
function
(
e
,
t
){
var
n
=
[];
for
(;
e
;
e
=
e
.
nextSibling
)
1
===
e
.
nodeType
&&
e
!==
t
&&
n
.
push
(
e
);
return
n
}});
function
ft
(
e
,
t
,
n
){
if
(
x
.
isFunction
(
t
))
return
x
.
grep
(
e
,
function
(
e
,
r
){
return
!!
t
.
call
(
e
,
r
,
e
)
!==
n
});
if
(
t
.
nodeType
)
return
x
.
grep
(
e
,
function
(
e
){
return
e
===
t
!==
n
});
if
(
"string"
==
typeof
t
){
if
(
st
.
test
(
t
))
return
x
.
filter
(
t
,
e
,
n
);
t
=
x
.
filter
(
t
,
e
)}
return
x
.
grep
(
e
,
function
(
e
){
return
x
.
inArray
(
e
,
t
)
>=
0
!==
n
})}
function
dt
(
e
){
var
t
=
ht
.
split
(
"|"
),
n
=
e
.
createDocumentFragment
();
if
(
n
.
createElement
)
while
(
t
.
length
)
n
.
createElement
(
t
.
pop
());
return
n
}
var
ht
=
"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video"
,
gt
=
/ jQuery
\d
+="
(?:
null|
\d
+
)
"/g
,
mt
=
RegExp
(
"<(?:"
+
ht
+
")[
\\
s/>]"
,
"i"
),
yt
=
/^
\s
+/
,
vt
=
/<
(?!
area|br|col|embed|hr|img|input|link|meta|param
)(([\w
:
]
+
)[^
>
]
*
)\/
>/gi
,
bt
=
/<
([\w
:
]
+
)
/
,
xt
=
/<tbody/i
,
wt
=
/<|&#
?\w
+;/
,
Tt
=
/<
(?:
script|style|link
)
/i
,
Ct
=
/^
(?:
checkbox|radio
)
$/i
,
Nt
=
/checked
\s
*
(?:[^
=
]
|=
\s
*.checked.
)
/i
,
kt
=
/^$|
\/(?:
java|ecma
)
script/i
,
Et
=
/^true
\/(
.*
)
/
,
St
=
/^
\s
*<!
(?:\[
CDATA
\[
|--
)
|
(?:\]\]
|--
)
>
\s
*$/g
,
At
=
{
option
:[
1
,
"<select multiple='multiple'>"
,
"</select>"
],
legend
:[
1
,
"<fieldset>"
,
"</fieldset>"
],
area
:[
1
,
"<map>"
,
"</map>"
],
param
:[
1
,
"<object>"
,
"</object>"
],
thead
:[
1
,
"<table>"
,
"</table>"
],
tr
:[
2
,
"<table><tbody>"
,
"</tbody></table>"
],
col
:[
2
,
"<table><tbody></tbody><colgroup>"
,
"</colgroup></table>"
],
td
:[
3
,
"<table><tbody><tr>"
,
"</tr></tbody></table>"
],
_default
:
x
.
support
.
htmlSerialize
?[
0
,
""
,
""
]:[
1
,
"X<div>"
,
"</div>"
]},
jt
=
dt
(
a
),
Dt
=
jt
.
appendChild
(
a
.
createElement
(
"div"
));
At
.
optgroup
=
At
.
option
,
At
.
tbody
=
At
.
tfoot
=
At
.
colgroup
=
At
.
caption
=
At
.
thead
,
At
.
th
=
At
.
td
,
x
.
fn
.
extend
({
text
:
function
(
e
){
return
x
.
access
(
this
,
function
(
e
){
return
e
===
t
?
x
.
text
(
this
):
this
.
empty
().
append
((
this
[
0
]
&&
this
[
0
].
ownerDocument
||
a
).
createTextNode
(
e
))},
null
,
e
,
arguments
.
length
)},
append
:
function
(){
return
this
.
domManip
(
arguments
,
function
(
e
){
if
(
1
===
this
.
nodeType
||
11
===
this
.
nodeType
||
9
===
this
.
nodeType
){
var
t
=
Lt
(
this
,
e
);
t
.
appendChild
(
e
)}})},
prepend
:
function
(){
return
this
.
domManip
(
arguments
,
function
(
e
){
if
(
1
===
this
.
nodeType
||
11
===
this
.
nodeType
||
9
===
this
.
nodeType
){
var
t
=
Lt
(
this
,
e
);
t
.
insertBefore
(
e
,
t
.
firstChild
)}})},
before
:
function
(){
return
this
.
domManip
(
arguments
,
function
(
e
){
this
.
parentNode
&&
this
.
parentNode
.
insertBefore
(
e
,
this
)})},
after
:
function
(){
return
this
.
domManip
(
arguments
,
function
(
e
){
this
.
parentNode
&&
this
.
parentNode
.
insertBefore
(
e
,
this
.
nextSibling
)})},
remove
:
function
(
e
,
t
){
var
n
,
r
=
e
?
x
.
filter
(
e
,
this
):
this
,
i
=
0
;
for
(;
null
!=
(
n
=
r
[
i
]);
i
++
)
t
||
1
!==
n
.
nodeType
||
x
.
cleanData
(
Ft
(
n
)),
n
.
parentNode
&&
(
t
&&
x
.
contains
(
n
.
ownerDocument
,
n
)
&&
_t
(
Ft
(
n
,
"script"
)),
n
.
parentNode
.
removeChild
(
n
));
return
this
},
empty
:
function
(){
var
e
,
t
=
0
;
for
(;
null
!=
(
e
=
this
[
t
]);
t
++
){
1
===
e
.
nodeType
&&
x
.
cleanData
(
Ft
(
e
,
!
1
));
while
(
e
.
firstChild
)
e
.
removeChild
(
e
.
firstChild
);
e
.
options
&&
x
.
nodeName
(
e
,
"select"
)
&&
(
e
.
options
.
length
=
0
)}
return
this
},
clone
:
function
(
e
,
t
){
return
e
=
null
==
e
?
!
1
:
e
,
t
=
null
==
t
?
e
:
t
,
this
.
map
(
function
(){
return
x
.
clone
(
this
,
e
,
t
)})},
html
:
function
(
e
){
return
x
.
access
(
this
,
function
(
e
){
var
n
=
this
[
0
]
||
{},
r
=
0
,
i
=
this
.
length
;
if
(
e
===
t
)
return
1
===
n
.
nodeType
?
n
.
innerHTML
.
replace
(
gt
,
""
):
t
;
if
(
!
(
"string"
!=
typeof
e
||
Tt
.
test
(
e
)
||!
x
.
support
.
htmlSerialize
&&
mt
.
test
(
e
)
||!
x
.
support
.
leadingWhitespace
&&
yt
.
test
(
e
)
||
At
[(
bt
.
exec
(
e
)
||
[
""
,
""
])[
1
].
toLowerCase
()])){
e
=
e
.
replace
(
vt
,
"<$1></$2>"
);
try
{
for
(;
i
>
r
;
r
++
)
n
=
this
[
r
]
||
{},
1
===
n
.
nodeType
&&
(
x
.
cleanData
(
Ft
(
n
,
!
1
)),
n
.
innerHTML
=
e
);
n
=
0
}
catch
(
o
){}}
n
&&
this
.
empty
().
append
(
e
)},
null
,
e
,
arguments
.
length
)},
replaceWith
:
function
(){
var
e
=
x
.
map
(
this
,
function
(
e
){
return
[
e
.
nextSibling
,
e
.
parentNode
]}),
t
=
0
;
return
this
.
domManip
(
arguments
,
function
(
n
){
var
r
=
e
[
t
++
],
i
=
e
[
t
++
];
i
&&
(
r
&&
r
.
parentNode
!==
i
&&
(
r
=
this
.
nextSibling
),
x
(
this
).
remove
(),
i
.
insertBefore
(
n
,
r
))},
!
0
),
t
?
this
:
this
.
remove
()},
detach
:
function
(
e
){
return
this
.
remove
(
e
,
!
0
)},
domManip
:
function
(
e
,
t
,
n
){
e
=
d
.
apply
([],
e
);
var
r
,
i
,
o
,
a
,
s
,
l
,
u
=
0
,
c
=
this
.
length
,
p
=
this
,
f
=
c
-
1
,
h
=
e
[
0
],
g
=
x
.
isFunction
(
h
);
if
(
g
||!
(
1
>=
c
||
"string"
!=
typeof
h
||
x
.
support
.
checkClone
)
&&
Nt
.
test
(
h
))
return
this
.
each
(
function
(
r
){
var
i
=
p
.
eq
(
r
);
g
&&
(
e
[
0
]
=
h
.
call
(
this
,
r
,
i
.
html
())),
i
.
domManip
(
e
,
t
,
n
)});
if
(
c
&&
(
l
=
x
.
buildFragment
(
e
,
this
[
0
].
ownerDocument
,
!
1
,
!
n
&&
this
),
r
=
l
.
firstChild
,
1
===
l
.
childNodes
.
length
&&
(
l
=
r
),
r
)){
for
(
a
=
x
.
map
(
Ft
(
l
,
"script"
),
Ht
),
o
=
a
.
length
;
c
>
u
;
u
++
)
i
=
l
,
u
!==
f
&&
(
i
=
x
.
clone
(
i
,
!
0
,
!
0
),
o
&&
x
.
merge
(
a
,
Ft
(
i
,
"script"
))),
t
.
call
(
this
[
u
],
i
,
u
);
if
(
o
)
for
(
s
=
a
[
a
.
length
-
1
].
ownerDocument
,
x
.
map
(
a
,
qt
),
u
=
0
;
o
>
u
;
u
++
)
i
=
a
[
u
],
kt
.
test
(
i
.
type
||
""
)
&&!
x
.
_data
(
i
,
"globalEval"
)
&&
x
.
contains
(
s
,
i
)
&&
(
i
.
src
?
x
.
_evalUrl
(
i
.
src
):
x
.
globalEval
((
i
.
text
||
i
.
textContent
||
i
.
innerHTML
||
""
).
replace
(
St
,
""
)));
l
=
r
=
null
}
return
this
}});
function
Lt
(
e
,
t
){
return
x
.
nodeName
(
e
,
"table"
)
&&
x
.
nodeName
(
1
===
t
.
nodeType
?
t
:
t
.
firstChild
,
"tr"
)?
e
.
getElementsByTagName
(
"tbody"
)[
0
]
||
e
.
appendChild
(
e
.
ownerDocument
.
createElement
(
"tbody"
)):
e
}
function
Ht
(
e
){
return
e
.
type
=
(
null
!==
x
.
find
.
attr
(
e
,
"type"
))
+
"/"
+
e
.
type
,
e
}
function
qt
(
e
){
var
t
=
Et
.
exec
(
e
.
type
);
return
t
?
e
.
type
=
t
[
1
]:
e
.
removeAttribute
(
"type"
),
e
}
function
_t
(
e
,
t
){
var
n
,
r
=
0
;
for
(;
null
!=
(
n
=
e
[
r
]);
r
++
)
x
.
_data
(
n
,
"globalEval"
,
!
t
||
x
.
_data
(
t
[
r
],
"globalEval"
))}
function
Mt
(
e
,
t
){
if
(
1
===
t
.
nodeType
&&
x
.
hasData
(
e
)){
var
n
,
r
,
i
,
o
=
x
.
_data
(
e
),
a
=
x
.
_data
(
t
,
o
),
s
=
o
.
events
;
if
(
s
){
delete
a
.
handle
,
a
.
events
=
{};
for
(
n
in
s
)
for
(
r
=
0
,
i
=
s
[
n
].
length
;
i
>
r
;
r
++
)
x
.
event
.
add
(
t
,
n
,
s
[
n
][
r
])}
a
.
data
&&
(
a
.
data
=
x
.
extend
({},
a
.
data
))}}
function
Ot
(
e
,
t
){
var
n
,
r
,
i
;
if
(
1
===
t
.
nodeType
){
if
(
n
=
t
.
nodeName
.
toLowerCase
(),
!
x
.
support
.
noCloneEvent
&&
t
[
x
.
expando
]){
i
=
x
.
_data
(
t
);
for
(
r
in
i
.
events
)
x
.
removeEvent
(
t
,
r
,
i
.
handle
);
t
.
removeAttribute
(
x
.
expando
)}
"script"
===
n
&&
t
.
text
!==
e
.
text
?(
Ht
(
t
).
text
=
e
.
text
,
qt
(
t
)):
"object"
===
n
?(
t
.
parentNode
&&
(
t
.
outerHTML
=
e
.
outerHTML
),
x
.
support
.
html5Clone
&&
e
.
innerHTML
&&!
x
.
trim
(
t
.
innerHTML
)
&&
(
t
.
innerHTML
=
e
.
innerHTML
)):
"input"
===
n
&&
Ct
.
test
(
e
.
type
)?(
t
.
defaultChecked
=
t
.
checked
=
e
.
checked
,
t
.
value
!==
e
.
value
&&
(
t
.
value
=
e
.
value
)):
"option"
===
n
?
t
.
defaultSelected
=
t
.
selected
=
e
.
defaultSelected
:(
"input"
===
n
||
"textarea"
===
n
)
&&
(
t
.
defaultValue
=
e
.
defaultValue
)}}
x
.
each
({
appendTo
:
"append"
,
prependTo
:
"prepend"
,
insertBefore
:
"before"
,
insertAfter
:
"after"
,
replaceAll
:
"replaceWith"
},
function
(
e
,
t
){
x
.
fn
[
e
]
=
function
(
e
){
var
n
,
r
=
0
,
i
=
[],
o
=
x
(
e
),
a
=
o
.
length
-
1
;
for
(;
a
>=
r
;
r
++
)
n
=
r
===
a
?
this
:
this
.
clone
(
!
0
),
x
(
o
[
r
])[
t
](
n
),
h
.
apply
(
i
,
n
.
get
());
return
this
.
pushStack
(
i
)}});
function
Ft
(
e
,
n
){
var
r
,
o
,
a
=
0
,
s
=
typeof
e
.
getElementsByTagName
!==
i
?
e
.
getElementsByTagName
(
n
||
"*"
):
typeof
e
.
querySelectorAll
!==
i
?
e
.
querySelectorAll
(
n
||
"*"
):
t
;
if
(
!
s
)
for
(
s
=
[],
r
=
e
.
childNodes
||
e
;
null
!=
(
o
=
r
[
a
]);
a
++
)
!
n
||
x
.
nodeName
(
o
,
n
)?
s
.
push
(
o
):
x
.
merge
(
s
,
Ft
(
o
,
n
));
return
n
===
t
||
n
&&
x
.
nodeName
(
e
,
n
)?
x
.
merge
([
e
],
s
):
s
}
function
Bt
(
e
){
Ct
.
test
(
e
.
type
)
&&
(
e
.
defaultChecked
=
e
.
checked
)}
x
.
extend
({
clone
:
function
(
e
,
t
,
n
){
var
r
,
i
,
o
,
a
,
s
,
l
=
x
.
contains
(
e
.
ownerDocument
,
e
);
if
(
x
.
support
.
html5Clone
||
x
.
isXMLDoc
(
e
)
||!
mt
.
test
(
"<"
+
e
.
nodeName
+
">"
)?
o
=
e
.
cloneNode
(
!
0
):(
Dt
.
innerHTML
=
e
.
outerHTML
,
Dt
.
removeChild
(
o
=
Dt
.
firstChild
)),
!
(
x
.
support
.
noCloneEvent
&&
x
.
support
.
noCloneChecked
||
1
!==
e
.
nodeType
&&
11
!==
e
.
nodeType
||
x
.
isXMLDoc
(
e
)))
for
(
r
=
Ft
(
o
),
s
=
Ft
(
e
),
a
=
0
;
null
!=
(
i
=
s
[
a
]);
++
a
)
r
[
a
]
&&
Ot
(
i
,
r
[
a
]);
if
(
t
)
if
(
n
)
for
(
s
=
s
||
Ft
(
e
),
r
=
r
||
Ft
(
o
),
a
=
0
;
null
!=
(
i
=
s
[
a
]);
a
++
)
Mt
(
i
,
r
[
a
]);
else
Mt
(
e
,
o
);
return
r
=
Ft
(
o
,
"script"
),
r
.
length
>
0
&&
_t
(
r
,
!
l
&&
Ft
(
e
,
"script"
)),
r
=
s
=
i
=
null
,
o
},
buildFragment
:
function
(
e
,
t
,
n
,
r
){
var
i
,
o
,
a
,
s
,
l
,
u
,
c
,
p
=
e
.
length
,
f
=
dt
(
t
),
d
=
[],
h
=
0
;
for
(;
p
>
h
;
h
++
)
if
(
o
=
e
[
h
],
o
||
0
===
o
)
if
(
"object"
===
x
.
type
(
o
))
x
.
merge
(
d
,
o
.
nodeType
?[
o
]:
o
);
else
if
(
wt
.
test
(
o
)){
s
=
s
||
f
.
appendChild
(
t
.
createElement
(
"div"
)),
l
=
(
bt
.
exec
(
o
)
||
[
""
,
""
])[
1
].
toLowerCase
(),
c
=
At
[
l
]
||
At
.
_default
,
s
.
innerHTML
=
c
[
1
]
+
o
.
replace
(
vt
,
"<$1></$2>"
)
+
c
[
2
],
i
=
c
[
0
];
while
(
i
--
)
s
=
s
.
lastChild
;
if
(
!
x
.
support
.
leadingWhitespace
&&
yt
.
test
(
o
)
&&
d
.
push
(
t
.
createTextNode
(
yt
.
exec
(
o
)[
0
])),
!
x
.
support
.
tbody
){
o
=
"table"
!==
l
||
xt
.
test
(
o
)?
"<table>"
!==
c
[
1
]
||
xt
.
test
(
o
)?
0
:
s
:
s
.
firstChild
,
i
=
o
&&
o
.
childNodes
.
length
;
while
(
i
--
)
x
.
nodeName
(
u
=
o
.
childNodes
[
i
],
"tbody"
)
&&!
u
.
childNodes
.
length
&&
o
.
removeChild
(
u
)}
x
.
merge
(
d
,
s
.
childNodes
),
s
.
textContent
=
""
;
while
(
s
.
firstChild
)
s
.
removeChild
(
s
.
firstChild
);
s
=
f
.
lastChild
}
else
d
.
push
(
t
.
createTextNode
(
o
));
s
&&
f
.
removeChild
(
s
),
x
.
support
.
appendChecked
||
x
.
grep
(
Ft
(
d
,
"input"
),
Bt
),
h
=
0
;
while
(
o
=
d
[
h
++
])
if
((
!
r
||-
1
===
x
.
inArray
(
o
,
r
))
&&
(
a
=
x
.
contains
(
o
.
ownerDocument
,
o
),
s
=
Ft
(
f
.
appendChild
(
o
),
"script"
),
a
&&
_t
(
s
),
n
)){
i
=
0
;
while
(
o
=
s
[
i
++
])
kt
.
test
(
o
.
type
||
""
)
&&
n
.
push
(
o
)}
return
s
=
null
,
f
},
cleanData
:
function
(
e
,
t
){
var
n
,
r
,
o
,
a
,
s
=
0
,
l
=
x
.
expando
,
u
=
x
.
cache
,
c
=
x
.
support
.
deleteExpando
,
f
=
x
.
event
.
special
;
for
(;
null
!=
(
n
=
e
[
s
]);
s
++
)
if
((
t
||
x
.
acceptData
(
n
))
&&
(
o
=
n
[
l
],
a
=
o
&&
u
[
o
])){
if
(
a
.
events
)
for
(
r
in
a
.
events
)
f
[
r
]?
x
.
event
.
remove
(
n
,
r
):
x
.
removeEvent
(
n
,
r
,
a
.
handle
);
u
[
o
]
&&
(
delete
u
[
o
],
c
?
delete
n
[
l
]:
typeof
n
.
removeAttribute
!==
i
?
n
.
removeAttribute
(
l
):
n
[
l
]
=
null
,
p
.
push
(
o
))}},
_evalUrl
:
function
(
e
){
return
x
.
ajax
({
url
:
e
,
type
:
"GET"
,
dataType
:
"script"
,
async
:
!
1
,
global
:
!
1
,
"throws"
:
!
0
})}}),
x
.
fn
.
extend
({
wrapAll
:
function
(
e
){
if
(
x
.
isFunction
(
e
))
return
this
.
each
(
function
(
t
){
x
(
this
).
wrapAll
(
e
.
call
(
this
,
t
))});
if
(
this
[
0
]){
var
t
=
x
(
e
,
this
[
0
].
ownerDocument
).
eq
(
0
).
clone
(
!
0
);
this
[
0
].
parentNode
&&
t
.
insertBefore
(
this
[
0
]),
t
.
map
(
function
(){
var
e
=
this
;
while
(
e
.
firstChild
&&
1
===
e
.
firstChild
.
nodeType
)
e
=
e
.
firstChild
;
return
e
}).
append
(
this
)}
return
this
},
wrapInner
:
function
(
e
){
return
x
.
isFunction
(
e
)?
this
.
each
(
function
(
t
){
x
(
this
).
wrapInner
(
e
.
call
(
this
,
t
))}):
this
.
each
(
function
(){
var
t
=
x
(
this
),
n
=
t
.
contents
();
n
.
length
?
n
.
wrapAll
(
e
):
t
.
append
(
e
)})},
wrap
:
function
(
e
){
var
t
=
x
.
isFunction
(
e
);
return
this
.
each
(
function
(
n
){
x
(
this
).
wrapAll
(
t
?
e
.
call
(
this
,
n
):
e
)})},
unwrap
:
function
(){
return
this
.
parent
().
each
(
function
(){
x
.
nodeName
(
this
,
"body"
)
||
x
(
this
).
replaceWith
(
this
.
childNodes
)}).
end
()}});
var
Pt
,
Rt
,
Wt
,
$t
=
/alpha
\([^
)
]
*
\)
/i
,
It
=
/opacity
\s
*=
\s
*
([^
)
]
*
)
/
,
zt
=
/^
(
top|right|bottom|left
)
$/
,
Xt
=
/^
(
none|table
(?!
-c
[
ea
])
.+
)
/
,
Ut
=
/^margin/
,
Vt
=
RegExp
(
"^("
+
w
+
")(.*)$"
,
"i"
),
Yt
=
RegExp
(
"^("
+
w
+
")(?!px)[a-z%]+$"
,
"i"
),
Jt
=
RegExp
(
"^([+-])=("
+
w
+
")"
,
"i"
),
Gt
=
{
BODY
:
"block"
},
Qt
=
{
position
:
"absolute"
,
visibility
:
"hidden"
,
display
:
"block"
},
Kt
=
{
letterSpacing
:
0
,
fontWeight
:
400
},
Zt
=
[
"Top"
,
"Right"
,
"Bottom"
,
"Left"
],
en
=
[
"Webkit"
,
"O"
,
"Moz"
,
"ms"
];
function
tn
(
e
,
t
){
if
(
t
in
e
)
return
t
;
var
n
=
t
.
charAt
(
0
).
toUpperCase
()
+
t
.
slice
(
1
),
r
=
t
,
i
=
en
.
length
;
while
(
i
--
)
if
(
t
=
en
[
i
]
+
n
,
t
in
e
)
return
t
;
return
r
}
function
nn
(
e
,
t
){
return
e
=
t
||
e
,
"none"
===
x
.
css
(
e
,
"display"
)
||!
x
.
contains
(
e
.
ownerDocument
,
e
)}
function
rn
(
e
,
t
){
var
n
,
r
,
i
,
o
=
[],
a
=
0
,
s
=
e
.
length
;
for
(;
s
>
a
;
a
++
)
r
=
e
[
a
],
r
.
style
&&
(
o
[
a
]
=
x
.
_data
(
r
,
"olddisplay"
),
n
=
r
.
style
.
display
,
t
?(
o
[
a
]
||
"none"
!==
n
||
(
r
.
style
.
display
=
""
),
""
===
r
.
style
.
display
&&
nn
(
r
)
&&
(
o
[
a
]
=
x
.
_data
(
r
,
"olddisplay"
,
ln
(
r
.
nodeName
)))):
o
[
a
]
||
(
i
=
nn
(
r
),(
n
&&
"none"
!==
n
||!
i
)
&&
x
.
_data
(
r
,
"olddisplay"
,
i
?
n
:
x
.
css
(
r
,
"display"
))));
for
(
a
=
0
;
s
>
a
;
a
++
)
r
=
e
[
a
],
r
.
style
&&
(
t
&&
"none"
!==
r
.
style
.
display
&&
""
!==
r
.
style
.
display
||
(
r
.
style
.
display
=
t
?
o
[
a
]
||
""
:
"none"
));
return
e
}
x
.
fn
.
extend
({
css
:
function
(
e
,
n
){
return
x
.
access
(
this
,
function
(
e
,
n
,
r
){
var
i
,
o
,
a
=
{},
s
=
0
;
if
(
x
.
isArray
(
n
)){
for
(
o
=
Rt
(
e
),
i
=
n
.
length
;
i
>
s
;
s
++
)
a
[
n
[
s
]]
=
x
.
css
(
e
,
n
[
s
],
!
1
,
o
);
return
a
}
return
r
!==
t
?
x
.
style
(
e
,
n
,
r
):
x
.
css
(
e
,
n
)},
e
,
n
,
arguments
.
length
>
1
)},
show
:
function
(){
return
rn
(
this
,
!
0
)},
hide
:
function
(){
return
rn
(
this
)},
toggle
:
function
(
e
){
var
t
=
"boolean"
==
typeof
e
;
return
this
.
each
(
function
(){(
t
?
e
:
nn
(
this
))?
x
(
this
).
show
():
x
(
this
).
hide
()})}}),
x
.
extend
({
cssHooks
:{
opacity
:{
get
:
function
(
e
,
t
){
if
(
t
){
var
n
=
Wt
(
e
,
"opacity"
);
return
""
===
n
?
"1"
:
n
}}}},
cssNumber
:{
columnCount
:
!
0
,
fillOpacity
:
!
0
,
fontWeight
:
!
0
,
lineHeight
:
!
0
,
opacity
:
!
0
,
orphans
:
!
0
,
widows
:
!
0
,
zIndex
:
!
0
,
zoom
:
!
0
},
cssProps
:{
"float"
:
x
.
support
.
cssFloat
?
"cssFloat"
:
"styleFloat"
},
style
:
function
(
e
,
n
,
r
,
i
){
if
(
e
&&
3
!==
e
.
nodeType
&&
8
!==
e
.
nodeType
&&
e
.
style
){
var
o
,
a
,
s
,
l
=
x
.
camelCase
(
n
),
u
=
e
.
style
;
if
(
n
=
x
.
cssProps
[
l
]
||
(
x
.
cssProps
[
l
]
=
tn
(
u
,
l
)),
s
=
x
.
cssHooks
[
n
]
||
x
.
cssHooks
[
l
],
r
===
t
)
return
s
&&
"get"
in
s
&&
(
o
=
s
.
get
(
e
,
!
1
,
i
))
!==
t
?
o
:
u
[
n
];
if
(
a
=
typeof
r
,
"string"
===
a
&&
(
o
=
Jt
.
exec
(
r
))
&&
(
r
=
(
o
[
1
]
+
1
)
*
o
[
2
]
+
parseFloat
(
x
.
css
(
e
,
n
)),
a
=
"number"
),
!
(
null
==
r
||
"number"
===
a
&&
isNaN
(
r
)
||
(
"number"
!==
a
||
x
.
cssNumber
[
l
]
||
(
r
+=
"px"
),
x
.
support
.
clearCloneStyle
||
""
!==
r
||
0
!==
n
.
indexOf
(
"background"
)
||
(
u
[
n
]
=
"inherit"
),
s
&&
"set"
in
s
&&
(
r
=
s
.
set
(
e
,
r
,
i
))
===
t
)))
try
{
u
[
n
]
=
r
}
catch
(
c
){}}},
css
:
function
(
e
,
n
,
r
,
i
){
var
o
,
a
,
s
,
l
=
x
.
camelCase
(
n
);
return
n
=
x
.
cssProps
[
l
]
||
(
x
.
cssProps
[
l
]
=
tn
(
e
.
style
,
l
)),
s
=
x
.
cssHooks
[
n
]
||
x
.
cssHooks
[
l
],
s
&&
"get"
in
s
&&
(
a
=
s
.
get
(
e
,
!
0
,
r
)),
a
===
t
&&
(
a
=
Wt
(
e
,
n
,
i
)),
"normal"
===
a
&&
n
in
Kt
&&
(
a
=
Kt
[
n
]),
""
===
r
||
r
?(
o
=
parseFloat
(
a
),
r
===!
0
||
x
.
isNumeric
(
o
)?
o
||
0
:
a
):
a
}}),
e
.
getComputedStyle
?(
Rt
=
function
(
t
){
return
e
.
getComputedStyle
(
t
,
null
)},
Wt
=
function
(
e
,
n
,
r
){
var
i
,
o
,
a
,
s
=
r
||
Rt
(
e
),
l
=
s
?
s
.
getPropertyValue
(
n
)
||
s
[
n
]:
t
,
u
=
e
.
style
;
return
s
&&
(
""
!==
l
||
x
.
contains
(
e
.
ownerDocument
,
e
)
||
(
l
=
x
.
style
(
e
,
n
)),
Yt
.
test
(
l
)
&&
Ut
.
test
(
n
)
&&
(
i
=
u
.
width
,
o
=
u
.
minWidth
,
a
=
u
.
maxWidth
,
u
.
minWidth
=
u
.
maxWidth
=
u
.
width
=
l
,
l
=
s
.
width
,
u
.
width
=
i
,
u
.
minWidth
=
o
,
u
.
maxWidth
=
a
)),
l
}):
a
.
documentElement
.
currentStyle
&&
(
Rt
=
function
(
e
){
return
e
.
currentStyle
},
Wt
=
function
(
e
,
n
,
r
){
var
i
,
o
,
a
,
s
=
r
||
Rt
(
e
),
l
=
s
?
s
[
n
]:
t
,
u
=
e
.
style
;
return
null
==
l
&&
u
&&
u
[
n
]
&&
(
l
=
u
[
n
]),
Yt
.
test
(
l
)
&&!
zt
.
test
(
n
)
&&
(
i
=
u
.
left
,
o
=
e
.
runtimeStyle
,
a
=
o
&&
o
.
left
,
a
&&
(
o
.
left
=
e
.
currentStyle
.
left
),
u
.
left
=
"fontSize"
===
n
?
"1em"
:
l
,
l
=
u
.
pixelLeft
+
"px"
,
u
.
left
=
i
,
a
&&
(
o
.
left
=
a
)),
""
===
l
?
"auto"
:
l
});
function
on
(
e
,
t
,
n
){
var
r
=
Vt
.
exec
(
t
);
return
r
?
Math
.
max
(
0
,
r
[
1
]
-
(
n
||
0
))
+
(
r
[
2
]
||
"px"
):
t
}
function
an
(
e
,
t
,
n
,
r
,
i
){
var
o
=
n
===
(
r
?
"border"
:
"content"
)?
4
:
"width"
===
t
?
1
:
0
,
a
=
0
;
for
(;
4
>
o
;
o
+=
2
)
"margin"
===
n
&&
(
a
+=
x
.
css
(
e
,
n
+
Zt
[
o
],
!
0
,
i
)),
r
?(
"content"
===
n
&&
(
a
-=
x
.
css
(
e
,
"padding"
+
Zt
[
o
],
!
0
,
i
)),
"margin"
!==
n
&&
(
a
-=
x
.
css
(
e
,
"border"
+
Zt
[
o
]
+
"Width"
,
!
0
,
i
))):(
a
+=
x
.
css
(
e
,
"padding"
+
Zt
[
o
],
!
0
,
i
),
"padding"
!==
n
&&
(
a
+=
x
.
css
(
e
,
"border"
+
Zt
[
o
]
+
"Width"
,
!
0
,
i
)));
return
a
}
function
sn
(
e
,
t
,
n
){
var
r
=!
0
,
i
=
"width"
===
t
?
e
.
offsetWidth
:
e
.
offsetHeight
,
o
=
Rt
(
e
),
a
=
x
.
support
.
boxSizing
&&
"border-box"
===
x
.
css
(
e
,
"boxSizing"
,
!
1
,
o
);
if
(
0
>=
i
||
null
==
i
){
if
(
i
=
Wt
(
e
,
t
,
o
),(
0
>
i
||
null
==
i
)
&&
(
i
=
e
.
style
[
t
]),
Yt
.
test
(
i
))
return
i
;
r
=
a
&&
(
x
.
support
.
boxSizingReliable
||
i
===
e
.
style
[
t
]),
i
=
parseFloat
(
i
)
||
0
}
return
i
+
an
(
e
,
t
,
n
||
(
a
?
"border"
:
"content"
),
r
,
o
)
+
"px"
}
function
ln
(
e
){
var
t
=
a
,
n
=
Gt
[
e
];
return
n
||
(
n
=
un
(
e
,
t
),
"none"
!==
n
&&
n
||
(
Pt
=
(
Pt
||
x
(
"<iframe frameborder='0' width='0' height='0'/>"
).
css
(
"cssText"
,
"display:block !important"
)).
appendTo
(
t
.
documentElement
),
t
=
(
Pt
[
0
].
contentWindow
||
Pt
[
0
].
contentDocument
).
document
,
t
.
write
(
"<!doctype html><html><body>"
),
t
.
close
(),
n
=
un
(
e
,
t
),
Pt
.
detach
()),
Gt
[
e
]
=
n
),
n
}
function
un
(
e
,
t
){
var
n
=
x
(
t
.
createElement
(
e
)).
appendTo
(
t
.
body
),
r
=
x
.
css
(
n
[
0
],
"display"
);
return
n
.
remove
(),
r
}
x
.
each
([
"height"
,
"width"
],
function
(
e
,
n
){
x
.
cssHooks
[
n
]
=
{
get
:
function
(
e
,
r
,
i
){
return
r
?
0
===
e
.
offsetWidth
&&
Xt
.
test
(
x
.
css
(
e
,
"display"
))?
x
.
swap
(
e
,
Qt
,
function
(){
return
sn
(
e
,
n
,
i
)}):
sn
(
e
,
n
,
i
):
t
},
set
:
function
(
e
,
t
,
r
){
var
i
=
r
&&
Rt
(
e
);
return
on
(
e
,
t
,
r
?
an
(
e
,
n
,
r
,
x
.
support
.
boxSizing
&&
"border-box"
===
x
.
css
(
e
,
"boxSizing"
,
!
1
,
i
),
i
):
0
)}}}),
x
.
support
.
opacity
||
(
x
.
cssHooks
.
opacity
=
{
get
:
function
(
e
,
t
){
return
It
.
test
((
t
&&
e
.
currentStyle
?
e
.
currentStyle
.
filter
:
e
.
style
.
filter
)
||
""
)?.
01
*
parseFloat
(
RegExp
.
$1
)
+
""
:
t
?
"1"
:
""
},
set
:
function
(
e
,
t
){
var
n
=
e
.
style
,
r
=
e
.
currentStyle
,
i
=
x
.
isNumeric
(
t
)?
"alpha(opacity="
+
100
*
t
+
")"
:
""
,
o
=
r
&&
r
.
filter
||
n
.
filter
||
""
;
n
.
zoom
=
1
,(
t
>=
1
||
""
===
t
)
&&
""
===
x
.
trim
(
o
.
replace
(
$t
,
""
))
&&
n
.
removeAttribute
&&
(
n
.
removeAttribute
(
"filter"
),
""
===
t
||
r
&&!
r
.
filter
)
||
(
n
.
filter
=
$t
.
test
(
o
)?
o
.
replace
(
$t
,
i
):
o
+
" "
+
i
)}}),
x
(
function
(){
x
.
support
.
reliableMarginRight
||
(
x
.
cssHooks
.
marginRight
=
{
get
:
function
(
e
,
n
){
return
n
?
x
.
swap
(
e
,{
display
:
"inline-block"
},
Wt
,[
e
,
"marginRight"
]):
t
}}),
!
x
.
support
.
pixelPosition
&&
x
.
fn
.
position
&&
x
.
each
([
"top"
,
"left"
],
function
(
e
,
n
){
x
.
cssHooks
[
n
]
=
{
get
:
function
(
e
,
r
){
return
r
?(
r
=
Wt
(
e
,
n
),
Yt
.
test
(
r
)?
x
(
e
).
position
()[
n
]
+
"px"
:
r
):
t
}}})}),
x
.
expr
&&
x
.
expr
.
filters
&&
(
x
.
expr
.
filters
.
hidden
=
function
(
e
){
return
0
>=
e
.
offsetWidth
&&
0
>=
e
.
offsetHeight
||!
x
.
support
.
reliableHiddenOffsets
&&
"none"
===
(
e
.
style
&&
e
.
style
.
display
||
x
.
css
(
e
,
"display"
))},
x
.
expr
.
filters
.
visible
=
function
(
e
){
return
!
x
.
expr
.
filters
.
hidden
(
e
)}),
x
.
each
({
margin
:
""
,
padding
:
""
,
border
:
"Width"
},
function
(
e
,
t
){
x
.
cssHooks
[
e
+
t
]
=
{
expand
:
function
(
n
){
var
r
=
0
,
i
=
{},
o
=
"string"
==
typeof
n
?
n
.
split
(
" "
):[
n
];
for
(;
4
>
r
;
r
++
)
i
[
e
+
Zt
[
r
]
+
t
]
=
o
[
r
]
||
o
[
r
-
2
]
||
o
[
0
];
return
i
}},
Ut
.
test
(
e
)
||
(
x
.
cssHooks
[
e
+
t
].
set
=
on
)});
var
cn
=
/%20/g
,
pn
=
/
\[\]
$/
,
fn
=
/
\r?\n
/g
,
dn
=
/^
(?:
submit|button|image|reset|file
)
$/i
,
hn
=
/^
(?:
input|select|textarea|keygen
)
/i
;
x
.
fn
.
extend
({
serialize
:
function
(){
return
x
.
param
(
this
.
serializeArray
())},
serializeArray
:
function
(){
return
this
.
map
(
function
(){
var
e
=
x
.
prop
(
this
,
"elements"
);
return
e
?
x
.
makeArray
(
e
):
this
}).
filter
(
function
(){
var
e
=
this
.
type
;
return
this
.
name
&&!
x
(
this
).
is
(
":disabled"
)
&&
hn
.
test
(
this
.
nodeName
)
&&!
dn
.
test
(
e
)
&&
(
this
.
checked
||!
Ct
.
test
(
e
))}).
map
(
function
(
e
,
t
){
var
n
=
x
(
this
).
val
();
return
null
==
n
?
null
:
x
.
isArray
(
n
)?
x
.
map
(
n
,
function
(
e
){
return
{
name
:
t
.
name
,
value
:
e
.
replace
(
fn
,
"
\
r
\
n"
)}}):{
name
:
t
.
name
,
value
:
n
.
replace
(
fn
,
"
\
r
\
n"
)}}).
get
()}}),
x
.
param
=
function
(
e
,
n
){
var
r
,
i
=
[],
o
=
function
(
e
,
t
){
t
=
x
.
isFunction
(
t
)?
t
():
null
==
t
?
""
:
t
,
i
[
i
.
length
]
=
encodeURIComponent
(
e
)
+
"="
+
encodeURIComponent
(
t
)};
if
(
n
===
t
&&
(
n
=
x
.
ajaxSettings
&&
x
.
ajaxSettings
.
traditional
),
x
.
isArray
(
e
)
||
e
.
jquery
&&!
x
.
isPlainObject
(
e
))
x
.
each
(
e
,
function
(){
o
(
this
.
name
,
this
.
value
)});
else
for
(
r
in
e
)
gn
(
r
,
e
[
r
],
n
,
o
);
return
i
.
join
(
"&"
).
replace
(
cn
,
"+"
)};
function
gn
(
e
,
t
,
n
,
r
){
var
i
;
if
(
x
.
isArray
(
t
))
x
.
each
(
t
,
function
(
t
,
i
){
n
||
pn
.
test
(
e
)?
r
(
e
,
i
):
gn
(
e
+
"["
+
(
"object"
==
typeof
i
?
t
:
""
)
+
"]"
,
i
,
n
,
r
)});
else
if
(
n
||
"object"
!==
x
.
type
(
t
))
r
(
e
,
t
);
else
for
(
i
in
t
)
gn
(
e
+
"["
+
i
+
"]"
,
t
[
i
],
n
,
r
)}
x
.
each
(
"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu"
.
split
(
" "
),
function
(
e
,
t
){
x
.
fn
[
t
]
=
function
(
e
,
n
){
return
arguments
.
length
>
0
?
this
.
on
(
t
,
null
,
e
,
n
):
this
.
trigger
(
t
)}}),
x
.
fn
.
extend
({
hover
:
function
(
e
,
t
){
return
this
.
mouseenter
(
e
).
mouseleave
(
t
||
e
)},
bind
:
function
(
e
,
t
,
n
){
return
this
.
on
(
e
,
null
,
t
,
n
)},
unbind
:
function
(
e
,
t
){
return
this
.
off
(
e
,
null
,
t
)},
delegate
:
function
(
e
,
t
,
n
,
r
){
return
this
.
on
(
t
,
e
,
n
,
r
)},
undelegate
:
function
(
e
,
t
,
n
){
return
1
===
arguments
.
length
?
this
.
off
(
e
,
"**"
):
this
.
off
(
t
,
e
||
"**"
,
n
)}});
var
mn
,
yn
,
vn
=
x
.
now
(),
bn
=
/
\?
/
,
xn
=
/#.*$/
,
wn
=
/
([
?&
])
_=
[^
&
]
*/
,
Tn
=
/^
(
.*
?)
:
[
\t]
*
([^\r\n]
*
)\r?
$/gm
,
Cn
=
/^
(?:
about|app|app-storage|.+-extension|file|res|widget
)
:$/
,
Nn
=
/^
(?:
GET|HEAD
)
$/
,
kn
=
/^
\/\/
/
,
En
=
/^
([\w
.+-
]
+:
)(?:\/\/([^\/
?#:
]
*
)(?:
:
(\d
+
)
|
)
|
)
/
,
Sn
=
x
.
fn
.
load
,
An
=
{},
jn
=
{},
Dn
=
"*/"
.
concat
(
"*"
);
try
{
yn
=
o
.
href
}
catch
(
Ln
){
yn
=
a
.
createElement
(
"a"
),
yn
.
href
=
""
,
yn
=
yn
.
href
}
mn
=
En
.
exec
(
yn
.
toLowerCase
())
||
[];
function
Hn
(
e
){
return
function
(
t
,
n
){
"string"
!=
typeof
t
&&
(
n
=
t
,
t
=
"*"
);
var
r
,
i
=
0
,
o
=
t
.
toLowerCase
().
match
(
T
)
||
[];
if
(
x
.
isFunction
(
n
))
while
(
r
=
o
[
i
++
])
"+"
===
r
[
0
]?(
r
=
r
.
slice
(
1
)
||
"*"
,(
e
[
r
]
=
e
[
r
]
||
[]).
unshift
(
n
)):(
e
[
r
]
=
e
[
r
]
||
[]).
push
(
n
)}}
function
qn
(
e
,
n
,
r
,
i
){
var
o
=
{},
a
=
e
===
jn
;
function
s
(
l
){
var
u
;
return
o
[
l
]
=!
0
,
x
.
each
(
e
[
l
]
||
[],
function
(
e
,
l
){
var
c
=
l
(
n
,
r
,
i
);
return
"string"
!=
typeof
c
||
a
||
o
[
c
]?
a
?
!
(
u
=
c
):
t
:(
n
.
dataTypes
.
unshift
(
c
),
s
(
c
),
!
1
)}),
u
}
return
s
(
n
.
dataTypes
[
0
])
||!
o
[
"*"
]
&&
s
(
"*"
)}
function
_n
(
e
,
n
){
var
r
,
i
,
o
=
x
.
ajaxSettings
.
flatOptions
||
{};
for
(
i
in
n
)
n
[
i
]
!==
t
&&
((
o
[
i
]?
e
:
r
||
(
r
=
{}))[
i
]
=
n
[
i
]);
return
r
&&
x
.
extend
(
!
0
,
e
,
r
),
e
}
x
.
fn
.
load
=
function
(
e
,
n
,
r
){
if
(
"string"
!=
typeof
e
&&
Sn
)
return
Sn
.
apply
(
this
,
arguments
);
var
i
,
o
,
a
,
s
=
this
,
l
=
e
.
indexOf
(
" "
);
return
l
>=
0
&&
(
i
=
e
.
slice
(
l
,
e
.
length
),
e
=
e
.
slice
(
0
,
l
)),
x
.
isFunction
(
n
)?(
r
=
n
,
n
=
t
):
n
&&
"object"
==
typeof
n
&&
(
a
=
"POST"
),
s
.
length
>
0
&&
x
.
ajax
({
url
:
e
,
type
:
a
,
dataType
:
"html"
,
data
:
n
}).
done
(
function
(
e
){
o
=
arguments
,
s
.
html
(
i
?
x
(
"<div>"
).
append
(
x
.
parseHTML
(
e
)).
find
(
i
):
e
)}).
complete
(
r
&&
function
(
e
,
t
){
s
.
each
(
r
,
o
||
[
e
.
responseText
,
t
,
e
])}),
this
},
x
.
each
([
"ajaxStart"
,
"ajaxStop"
,
"ajaxComplete"
,
"ajaxError"
,
"ajaxSuccess"
,
"ajaxSend"
],
function
(
e
,
t
){
x
.
fn
[
t
]
=
function
(
e
){
return
this
.
on
(
t
,
e
)}}),
x
.
extend
({
active
:
0
,
lastModified
:{},
etag
:{},
ajaxSettings
:{
url
:
yn
,
type
:
"GET"
,
isLocal
:
Cn
.
test
(
mn
[
1
]),
global
:
!
0
,
processData
:
!
0
,
async
:
!
0
,
contentType
:
"application/x-www-form-urlencoded; charset=UTF-8"
,
accepts
:{
"*"
:
Dn
,
text
:
"text/plain"
,
html
:
"text/html"
,
xml
:
"application/xml, text/xml"
,
json
:
"application/json, text/javascript"
},
contents
:{
xml
:
/xml/
,
html
:
/html/
,
json
:
/json/
},
responseFields
:{
xml
:
"responseXML"
,
text
:
"responseText"
,
json
:
"responseJSON"
},
converters
:{
"* text"
:
String
,
"text html"
:
!
0
,
"text json"
:
x
.
parseJSON
,
"text xml"
:
x
.
parseXML
},
flatOptions
:{
url
:
!
0
,
context
:
!
0
}},
ajaxSetup
:
function
(
e
,
t
){
return
t
?
_n
(
_n
(
e
,
x
.
ajaxSettings
),
t
):
_n
(
x
.
ajaxSettings
,
e
)},
ajaxPrefilter
:
Hn
(
An
),
ajaxTransport
:
Hn
(
jn
),
ajax
:
function
(
e
,
n
){
"object"
==
typeof
e
&&
(
n
=
e
,
e
=
t
),
n
=
n
||
{};
var
r
,
i
,
o
,
a
,
s
,
l
,
u
,
c
,
p
=
x
.
ajaxSetup
({},
n
),
f
=
p
.
context
||
p
,
d
=
p
.
context
&&
(
f
.
nodeType
||
f
.
jquery
)?
x
(
f
):
x
.
event
,
h
=
x
.
Deferred
(),
g
=
x
.
Callbacks
(
"once memory"
),
m
=
p
.
statusCode
||
{},
y
=
{},
v
=
{},
b
=
0
,
w
=
"canceled"
,
C
=
{
readyState
:
0
,
getResponseHeader
:
function
(
e
){
var
t
;
if
(
2
===
b
){
if
(
!
c
){
c
=
{};
while
(
t
=
Tn
.
exec
(
a
))
c
[
t
[
1
].
toLowerCase
()]
=
t
[
2
]}
t
=
c
[
e
.
toLowerCase
()]}
return
null
==
t
?
null
:
t
},
getAllResponseHeaders
:
function
(){
return
2
===
b
?
a
:
null
},
setRequestHeader
:
function
(
e
,
t
){
var
n
=
e
.
toLowerCase
();
return
b
||
(
e
=
v
[
n
]
=
v
[
n
]
||
e
,
y
[
e
]
=
t
),
this
},
overrideMimeType
:
function
(
e
){
return
b
||
(
p
.
mimeType
=
e
),
this
},
statusCode
:
function
(
e
){
var
t
;
if
(
e
)
if
(
2
>
b
)
for
(
t
in
e
)
m
[
t
]
=
[
m
[
t
],
e
[
t
]];
else
C
.
always
(
e
[
C
.
status
]);
return
this
},
abort
:
function
(
e
){
var
t
=
e
||
w
;
return
u
&&
u
.
abort
(
t
),
k
(
0
,
t
),
this
}};
if
(
h
.
promise
(
C
).
complete
=
g
.
add
,
C
.
success
=
C
.
done
,
C
.
error
=
C
.
fail
,
p
.
url
=
((
e
||
p
.
url
||
yn
)
+
""
).
replace
(
xn
,
""
).
replace
(
kn
,
mn
[
1
]
+
"//"
),
p
.
type
=
n
.
method
||
n
.
type
||
p
.
method
||
p
.
type
,
p
.
dataTypes
=
x
.
trim
(
p
.
dataType
||
"*"
).
toLowerCase
().
match
(
T
)
||
[
""
],
null
==
p
.
crossDomain
&&
(
r
=
En
.
exec
(
p
.
url
.
toLowerCase
()),
p
.
crossDomain
=!
(
!
r
||
r
[
1
]
===
mn
[
1
]
&&
r
[
2
]
===
mn
[
2
]
&&
(
r
[
3
]
||
(
"http:"
===
r
[
1
]?
"80"
:
"443"
))
===
(
mn
[
3
]
||
(
"http:"
===
mn
[
1
]?
"80"
:
"443"
)))),
p
.
data
&&
p
.
processData
&&
"string"
!=
typeof
p
.
data
&&
(
p
.
data
=
x
.
param
(
p
.
data
,
p
.
traditional
)),
qn
(
An
,
p
,
n
,
C
),
2
===
b
)
return
C
;
l
=
p
.
global
,
l
&&
0
===
x
.
active
++&&
x
.
event
.
trigger
(
"ajaxStart"
),
p
.
type
=
p
.
type
.
toUpperCase
(),
p
.
hasContent
=!
Nn
.
test
(
p
.
type
),
o
=
p
.
url
,
p
.
hasContent
||
(
p
.
data
&&
(
o
=
p
.
url
+=
(
bn
.
test
(
o
)?
"&"
:
"?"
)
+
p
.
data
,
delete
p
.
data
),
p
.
cache
===!
1
&&
(
p
.
url
=
wn
.
test
(
o
)?
o
.
replace
(
wn
,
"$1_="
+
vn
++
):
o
+
(
bn
.
test
(
o
)?
"&"
:
"?"
)
+
"_="
+
vn
++
)),
p
.
ifModified
&&
(
x
.
lastModified
[
o
]
&&
C
.
setRequestHeader
(
"If-Modified-Since"
,
x
.
lastModified
[
o
]),
x
.
etag
[
o
]
&&
C
.
setRequestHeader
(
"If-None-Match"
,
x
.
etag
[
o
])),(
p
.
data
&&
p
.
hasContent
&&
p
.
contentType
!==!
1
||
n
.
contentType
)
&&
C
.
setRequestHeader
(
"Content-Type"
,
p
.
contentType
),
C
.
setRequestHeader
(
"Accept"
,
p
.
dataTypes
[
0
]
&&
p
.
accepts
[
p
.
dataTypes
[
0
]]?
p
.
accepts
[
p
.
dataTypes
[
0
]]
+
(
"*"
!==
p
.
dataTypes
[
0
]?
", "
+
Dn
+
"; q=0.01"
:
""
):
p
.
accepts
[
"*"
]);
for
(
i
in
p
.
headers
)
C
.
setRequestHeader
(
i
,
p
.
headers
[
i
]);
if
(
p
.
beforeSend
&&
(
p
.
beforeSend
.
call
(
f
,
C
,
p
)
===!
1
||
2
===
b
))
return
C
.
abort
();
w
=
"abort"
;
for
(
i
in
{
success
:
1
,
error
:
1
,
complete
:
1
})
C
[
i
](
p
[
i
]);
if
(
u
=
qn
(
jn
,
p
,
n
,
C
)){
C
.
readyState
=
1
,
l
&&
d
.
trigger
(
"ajaxSend"
,[
C
,
p
]),
p
.
async
&&
p
.
timeout
>
0
&&
(
s
=
setTimeout
(
function
(){
C
.
abort
(
"timeout"
)},
p
.
timeout
));
try
{
b
=
1
,
u
.
send
(
y
,
k
)}
catch
(
N
){
if
(
!
(
2
>
b
))
throw
N
;
k
(
-
1
,
N
)}}
else
k
(
-
1
,
"No Transport"
);
function
k
(
e
,
n
,
r
,
i
){
var
c
,
y
,
v
,
w
,
T
,
N
=
n
;
2
!==
b
&&
(
b
=
2
,
s
&&
clearTimeout
(
s
),
u
=
t
,
a
=
i
||
""
,
C
.
readyState
=
e
>
0
?
4
:
0
,
c
=
e
>=
200
&&
300
>
e
||
304
===
e
,
r
&&
(
w
=
Mn
(
p
,
C
,
r
)),
w
=
On
(
p
,
w
,
C
,
c
),
c
?(
p
.
ifModified
&&
(
T
=
C
.
getResponseHeader
(
"Last-Modified"
),
T
&&
(
x
.
lastModified
[
o
]
=
T
),
T
=
C
.
getResponseHeader
(
"etag"
),
T
&&
(
x
.
etag
[
o
]
=
T
)),
204
===
e
||
"HEAD"
===
p
.
type
?
N
=
"nocontent"
:
304
===
e
?
N
=
"notmodified"
:(
N
=
w
.
state
,
y
=
w
.
data
,
v
=
w
.
error
,
c
=!
v
)):(
v
=
N
,(
e
||!
N
)
&&
(
N
=
"error"
,
0
>
e
&&
(
e
=
0
))),
C
.
status
=
e
,
C
.
statusText
=
(
n
||
N
)
+
""
,
c
?
h
.
resolveWith
(
f
,[
y
,
N
,
C
]):
h
.
rejectWith
(
f
,[
C
,
N
,
v
]),
C
.
statusCode
(
m
),
m
=
t
,
l
&&
d
.
trigger
(
c
?
"ajaxSuccess"
:
"ajaxError"
,[
C
,
p
,
c
?
y
:
v
]),
g
.
fireWith
(
f
,[
C
,
N
]),
l
&&
(
d
.
trigger
(
"ajaxComplete"
,[
C
,
p
]),
--
x
.
active
||
x
.
event
.
trigger
(
"ajaxStop"
)))}
return
C
},
getJSON
:
function
(
e
,
t
,
n
){
return
x
.
get
(
e
,
t
,
n
,
"json"
)},
getScript
:
function
(
e
,
n
){
return
x
.
get
(
e
,
t
,
n
,
"script"
)}}),
x
.
each
([
"get"
,
"post"
],
function
(
e
,
n
){
x
[
n
]
=
function
(
e
,
r
,
i
,
o
){
return
x
.
isFunction
(
r
)
&&
(
o
=
o
||
i
,
i
=
r
,
r
=
t
),
x
.
ajax
({
url
:
e
,
type
:
n
,
dataType
:
o
,
data
:
r
,
success
:
i
})}});
function
Mn
(
e
,
n
,
r
){
var
i
,
o
,
a
,
s
,
l
=
e
.
contents
,
u
=
e
.
dataTypes
;
while
(
"*"
===
u
[
0
])
u
.
shift
(),
o
===
t
&&
(
o
=
e
.
mimeType
||
n
.
getResponseHeader
(
"Content-Type"
));
if
(
o
)
for
(
s
in
l
)
if
(
l
[
s
]
&&
l
[
s
].
test
(
o
)){
u
.
unshift
(
s
);
break
}
if
(
u
[
0
]
in
r
)
a
=
u
[
0
];
else
{
for
(
s
in
r
){
if
(
!
u
[
0
]
||
e
.
converters
[
s
+
" "
+
u
[
0
]]){
a
=
s
;
break
}
i
||
(
i
=
s
)}
a
=
a
||
i
}
return
a
?(
a
!==
u
[
0
]
&&
u
.
unshift
(
a
),
r
[
a
]):
t
}
function
On
(
e
,
t
,
n
,
r
){
var
i
,
o
,
a
,
s
,
l
,
u
=
{},
c
=
e
.
dataTypes
.
slice
();
if
(
c
[
1
])
for
(
a
in
e
.
converters
)
u
[
a
.
toLowerCase
()]
=
e
.
converters
[
a
];
o
=
c
.
shift
();
while
(
o
)
if
(
e
.
responseFields
[
o
]
&&
(
n
[
e
.
responseFields
[
o
]]
=
t
),
!
l
&&
r
&&
e
.
dataFilter
&&
(
t
=
e
.
dataFilter
(
t
,
e
.
dataType
)),
l
=
o
,
o
=
c
.
shift
())
if
(
"*"
===
o
)
o
=
l
;
else
if
(
"*"
!==
l
&&
l
!==
o
){
if
(
a
=
u
[
l
+
" "
+
o
]
||
u
[
"* "
+
o
],
!
a
)
for
(
i
in
u
)
if
(
s
=
i
.
split
(
" "
),
s
[
1
]
===
o
&&
(
a
=
u
[
l
+
" "
+
s
[
0
]]
||
u
[
"* "
+
s
[
0
]])){
a
===!
0
?
a
=
u
[
i
]:
u
[
i
]
!==!
0
&&
(
o
=
s
[
0
],
c
.
unshift
(
s
[
1
]));
break
}
if
(
a
!==!
0
)
if
(
a
&&
e
[
"throws"
])
t
=
a
(
t
);
else
try
{
t
=
a
(
t
)}
catch
(
p
){
return
{
state
:
"parsererror"
,
error
:
a
?
p
:
"No conversion from "
+
l
+
" to "
+
o
}}}
return
{
state
:
"success"
,
data
:
t
}}
x
.
ajaxSetup
({
accepts
:{
script
:
"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
},
contents
:{
script
:
/
(?:
java|ecma
)
script/
},
converters
:{
"text script"
:
function
(
e
){
return
x
.
globalEval
(
e
),
e
}}}),
x
.
ajaxPrefilter
(
"script"
,
function
(
e
){
e
.
cache
===
t
&&
(
e
.
cache
=!
1
),
e
.
crossDomain
&&
(
e
.
type
=
"GET"
,
e
.
global
=!
1
)}),
x
.
ajaxTransport
(
"script"
,
function
(
e
){
if
(
e
.
crossDomain
){
var
n
,
r
=
a
.
head
||
x
(
"head"
)[
0
]
||
a
.
documentElement
;
return
{
send
:
function
(
t
,
i
){
n
=
a
.
createElement
(
"script"
),
n
.
async
=!
0
,
e
.
scriptCharset
&&
(
n
.
charset
=
e
.
scriptCharset
),
n
.
src
=
e
.
url
,
n
.
onload
=
n
.
onreadystatechange
=
function
(
e
,
t
){(
t
||!
n
.
readyState
||
/loaded|complete/
.
test
(
n
.
readyState
))
&&
(
n
.
onload
=
n
.
onreadystatechange
=
null
,
n
.
parentNode
&&
n
.
parentNode
.
removeChild
(
n
),
n
=
null
,
t
||
i
(
200
,
"success"
))},
r
.
insertBefore
(
n
,
r
.
firstChild
)},
abort
:
function
(){
n
&&
n
.
onload
(
t
,
!
0
)}}}});
var
Fn
=
[],
Bn
=
/
(
=
)\?(?=
&|$
)
|
\?\?
/
;
x
.
ajaxSetup
({
jsonp
:
"callback"
,
jsonpCallback
:
function
(){
var
e
=
Fn
.
pop
()
||
x
.
expando
+
"_"
+
vn
++
;
return
this
[
e
]
=!
0
,
e
}}),
x
.
ajaxPrefilter
(
"json jsonp"
,
function
(
n
,
r
,
i
){
var
o
,
a
,
s
,
l
=
n
.
jsonp
!==!
1
&&
(
Bn
.
test
(
n
.
url
)?
"url"
:
"string"
==
typeof
n
.
data
&&!
(
n
.
contentType
||
""
).
indexOf
(
"application/x-www-form-urlencoded"
)
&&
Bn
.
test
(
n
.
data
)
&&
"data"
);
return
l
||
"jsonp"
===
n
.
dataTypes
[
0
]?(
o
=
n
.
jsonpCallback
=
x
.
isFunction
(
n
.
jsonpCallback
)?
n
.
jsonpCallback
():
n
.
jsonpCallback
,
l
?
n
[
l
]
=
n
[
l
].
replace
(
Bn
,
"$1"
+
o
):
n
.
jsonp
!==!
1
&&
(
n
.
url
+=
(
bn
.
test
(
n
.
url
)?
"&"
:
"?"
)
+
n
.
jsonp
+
"="
+
o
),
n
.
converters
[
"script json"
]
=
function
(){
return
s
||
x
.
error
(
o
+
" was not called"
),
s
[
0
]},
n
.
dataTypes
[
0
]
=
"json"
,
a
=
e
[
o
],
e
[
o
]
=
function
(){
s
=
arguments
},
i
.
always
(
function
(){
e
[
o
]
=
a
,
n
[
o
]
&&
(
n
.
jsonpCallback
=
r
.
jsonpCallback
,
Fn
.
push
(
o
)),
s
&&
x
.
isFunction
(
a
)
&&
a
(
s
[
0
]),
s
=
a
=
t
}),
"script"
):
t
});
var
Pn
,
Rn
,
Wn
=
0
,
$n
=
e
.
ActiveXObject
&&
function
(){
var
e
;
for
(
e
in
Pn
)
Pn
[
e
](
t
,
!
0
)};
function
In
(){
try
{
return
new
e
.
XMLHttpRequest
}
catch
(
t
){}}
function
zn
(){
try
{
return
new
e
.
ActiveXObject
(
"Microsoft.XMLHTTP"
)}
catch
(
t
){}}
x
.
ajaxSettings
.
xhr
=
e
.
ActiveXObject
?
function
(){
return
!
this
.
isLocal
&&
In
()
||
zn
()}:
In
,
Rn
=
x
.
ajaxSettings
.
xhr
(),
x
.
support
.
cors
=!!
Rn
&&
"withCredentials"
in
Rn
,
Rn
=
x
.
support
.
ajax
=!!
Rn
,
Rn
&&
x
.
ajaxTransport
(
function
(
n
){
if
(
!
n
.
crossDomain
||
x
.
support
.
cors
){
var
r
;
return
{
send
:
function
(
i
,
o
){
var
a
,
s
,
l
=
n
.
xhr
();
if
(
n
.
username
?
l
.
open
(
n
.
type
,
n
.
url
,
n
.
async
,
n
.
username
,
n
.
password
):
l
.
open
(
n
.
type
,
n
.
url
,
n
.
async
),
n
.
xhrFields
)
for
(
s
in
n
.
xhrFields
)
l
[
s
]
=
n
.
xhrFields
[
s
];
n
.
mimeType
&&
l
.
overrideMimeType
&&
l
.
overrideMimeType
(
n
.
mimeType
),
n
.
crossDomain
||
i
[
"X-Requested-With"
]
||
(
i
[
"X-Requested-With"
]
=
"XMLHttpRequest"
);
try
{
for
(
s
in
i
)
l
.
setRequestHeader
(
s
,
i
[
s
])}
catch
(
u
){}
l
.
send
(
n
.
hasContent
&&
n
.
data
||
null
),
r
=
function
(
e
,
i
){
var
s
,
u
,
c
,
p
;
try
{
if
(
r
&&
(
i
||
4
===
l
.
readyState
))
if
(
r
=
t
,
a
&&
(
l
.
onreadystatechange
=
x
.
noop
,
$n
&&
delete
Pn
[
a
]),
i
)
4
!==
l
.
readyState
&&
l
.
abort
();
else
{
p
=
{},
s
=
l
.
status
,
u
=
l
.
getAllResponseHeaders
(),
"string"
==
typeof
l
.
responseText
&&
(
p
.
text
=
l
.
responseText
);
try
{
c
=
l
.
statusText
}
catch
(
f
){
c
=
""
}
s
||!
n
.
isLocal
||
n
.
crossDomain
?
1223
===
s
&&
(
s
=
204
):
s
=
p
.
text
?
200
:
404
}}
catch
(
d
){
i
||
o
(
-
1
,
d
)}
p
&&
o
(
s
,
c
,
p
,
u
)},
n
.
async
?
4
===
l
.
readyState
?
setTimeout
(
r
):(
a
=++
Wn
,
$n
&&
(
Pn
||
(
Pn
=
{},
x
(
e
).
unload
(
$n
)),
Pn
[
a
]
=
r
),
l
.
onreadystatechange
=
r
):
r
()},
abort
:
function
(){
r
&&
r
(
t
,
!
0
)}}}});
var
Xn
,
Un
,
Vn
=
/^
(?:
toggle|show|hide
)
$/
,
Yn
=
RegExp
(
"^(?:([+-])=|)("
+
w
+
")([a-z%]*)$"
,
"i"
),
Jn
=
/queueHooks$/
,
Gn
=
[
nr
],
Qn
=
{
"*"
:[
function
(
e
,
t
){
var
n
=
this
.
createTween
(
e
,
t
),
r
=
n
.
cur
(),
i
=
Yn
.
exec
(
t
),
o
=
i
&&
i
[
3
]
||
(
x
.
cssNumber
[
e
]?
""
:
"px"
),
a
=
(
x
.
cssNumber
[
e
]
||
"px"
!==
o
&&+
r
)
&&
Yn
.
exec
(
x
.
css
(
n
.
elem
,
e
)),
s
=
1
,
l
=
20
;
if
(
a
&&
a
[
3
]
!==
o
){
o
=
o
||
a
[
3
],
i
=
i
||
[],
a
=+
r
||
1
;
do
s
=
s
||
".5"
,
a
/=
s
,
x
.
style
(
n
.
elem
,
e
,
a
+
o
);
while
(
s
!==
(
s
=
n
.
cur
()
/
r
)
&&
1
!==
s
&&--
l
)}
return
i
&&
(
a
=
n
.
start
=+
a
||+
r
||
0
,
n
.
unit
=
o
,
n
.
end
=
i
[
1
]?
a
+
(
i
[
1
]
+
1
)
*
i
[
2
]:
+
i
[
2
]),
n
}]};
function
Kn
(){
return
setTimeout
(
function
(){
Xn
=
t
}),
Xn
=
x
.
now
()}
function
Zn
(
e
,
t
,
n
){
var
r
,
i
=
(
Qn
[
t
]
||
[]).
concat
(
Qn
[
"*"
]),
o
=
0
,
a
=
i
.
length
;
for
(;
a
>
o
;
o
++
)
if
(
r
=
i
[
o
].
call
(
n
,
t
,
e
))
return
r
}
function
er
(
e
,
t
,
n
){
var
r
,
i
,
o
=
0
,
a
=
Gn
.
length
,
s
=
x
.
Deferred
().
always
(
function
(){
delete
l
.
elem
}),
l
=
function
(){
if
(
i
)
return
!
1
;
var
t
=
Xn
||
Kn
(),
n
=
Math
.
max
(
0
,
u
.
startTime
+
u
.
duration
-
t
),
r
=
n
/
u
.
duration
||
0
,
o
=
1
-
r
,
a
=
0
,
l
=
u
.
tweens
.
length
;
for
(;
l
>
a
;
a
++
)
u
.
tweens
[
a
].
run
(
o
);
return
s
.
notifyWith
(
e
,[
u
,
o
,
n
]),
1
>
o
&&
l
?
n
:(
s
.
resolveWith
(
e
,[
u
]),
!
1
)},
u
=
s
.
promise
({
elem
:
e
,
props
:
x
.
extend
({},
t
),
opts
:
x
.
extend
(
!
0
,{
specialEasing
:{}},
n
),
originalProperties
:
t
,
originalOptions
:
n
,
startTime
:
Xn
||
Kn
(),
duration
:
n
.
duration
,
tweens
:[],
createTween
:
function
(
t
,
n
){
var
r
=
x
.
Tween
(
e
,
u
.
opts
,
t
,
n
,
u
.
opts
.
specialEasing
[
t
]
||
u
.
opts
.
easing
);
return
u
.
tweens
.
push
(
r
),
r
},
stop
:
function
(
t
){
var
n
=
0
,
r
=
t
?
u
.
tweens
.
length
:
0
;
if
(
i
)
return
this
;
for
(
i
=!
0
;
r
>
n
;
n
++
)
u
.
tweens
[
n
].
run
(
1
);
return
t
?
s
.
resolveWith
(
e
,[
u
,
t
]):
s
.
rejectWith
(
e
,[
u
,
t
]),
this
}}),
c
=
u
.
props
;
for
(
tr
(
c
,
u
.
opts
.
specialEasing
);
a
>
o
;
o
++
)
if
(
r
=
Gn
[
o
].
call
(
u
,
e
,
c
,
u
.
opts
))
return
r
;
return
x
.
map
(
c
,
Zn
,
u
),
x
.
isFunction
(
u
.
opts
.
start
)
&&
u
.
opts
.
start
.
call
(
e
,
u
),
x
.
fx
.
timer
(
x
.
extend
(
l
,{
elem
:
e
,
anim
:
u
,
queue
:
u
.
opts
.
queue
})),
u
.
progress
(
u
.
opts
.
progress
).
done
(
u
.
opts
.
done
,
u
.
opts
.
complete
).
fail
(
u
.
opts
.
fail
).
always
(
u
.
opts
.
always
)}
function
tr
(
e
,
t
){
var
n
,
r
,
i
,
o
,
a
;
for
(
n
in
e
)
if
(
r
=
x
.
camelCase
(
n
),
i
=
t
[
r
],
o
=
e
[
n
],
x
.
isArray
(
o
)
&&
(
i
=
o
[
1
],
o
=
e
[
n
]
=
o
[
0
]),
n
!==
r
&&
(
e
[
r
]
=
o
,
delete
e
[
n
]),
a
=
x
.
cssHooks
[
r
],
a
&&
"expand"
in
a
){
o
=
a
.
expand
(
o
),
delete
e
[
r
];
for
(
n
in
o
)
n
in
e
||
(
e
[
n
]
=
o
[
n
],
t
[
n
]
=
i
)}
else
t
[
r
]
=
i
}
x
.
Animation
=
x
.
extend
(
er
,{
tweener
:
function
(
e
,
t
){
x
.
isFunction
(
e
)?(
t
=
e
,
e
=
[
"*"
]):
e
=
e
.
split
(
" "
);
var
n
,
r
=
0
,
i
=
e
.
length
;
for
(;
i
>
r
;
r
++
)
n
=
e
[
r
],
Qn
[
n
]
=
Qn
[
n
]
||
[],
Qn
[
n
].
unshift
(
t
)},
prefilter
:
function
(
e
,
t
){
t
?
Gn
.
unshift
(
e
):
Gn
.
push
(
e
)}});
function
nr
(
e
,
t
,
n
){
var
r
,
i
,
o
,
a
,
s
,
l
,
u
=
this
,
c
=
{},
p
=
e
.
style
,
f
=
e
.
nodeType
&&
nn
(
e
),
d
=
x
.
_data
(
e
,
"fxshow"
);
n
.
queue
||
(
s
=
x
.
_queueHooks
(
e
,
"fx"
),
null
==
s
.
unqueued
&&
(
s
.
unqueued
=
0
,
l
=
s
.
empty
.
fire
,
s
.
empty
.
fire
=
function
(){
s
.
unqueued
||
l
()}),
s
.
unqueued
++
,
u
.
always
(
function
(){
u
.
always
(
function
(){
s
.
unqueued
--
,
x
.
queue
(
e
,
"fx"
).
length
||
s
.
empty
.
fire
()})})),
1
===
e
.
nodeType
&&
(
"height"
in
t
||
"width"
in
t
)
&&
(
n
.
overflow
=
[
p
.
overflow
,
p
.
overflowX
,
p
.
overflowY
],
"inline"
===
x
.
css
(
e
,
"display"
)
&&
"none"
===
x
.
css
(
e
,
"float"
)
&&
(
x
.
support
.
inlineBlockNeedsLayout
&&
"inline"
!==
ln
(
e
.
nodeName
)?
p
.
zoom
=
1
:
p
.
display
=
"inline-block"
)),
n
.
overflow
&&
(
p
.
overflow
=
"hidden"
,
x
.
support
.
shrinkWrapBlocks
||
u
.
always
(
function
(){
p
.
overflow
=
n
.
overflow
[
0
],
p
.
overflowX
=
n
.
overflow
[
1
],
p
.
overflowY
=
n
.
overflow
[
2
]}));
for
(
r
in
t
)
if
(
i
=
t
[
r
],
Vn
.
exec
(
i
)){
if
(
delete
t
[
r
],
o
=
o
||
"toggle"
===
i
,
i
===
(
f
?
"hide"
:
"show"
))
continue
;
c
[
r
]
=
d
&&
d
[
r
]
||
x
.
style
(
e
,
r
)}
if
(
!
x
.
isEmptyObject
(
c
)){
d
?
"hidden"
in
d
&&
(
f
=
d
.
hidden
):
d
=
x
.
_data
(
e
,
"fxshow"
,{}),
o
&&
(
d
.
hidden
=!
f
),
f
?
x
(
e
).
show
():
u
.
done
(
function
(){
x
(
e
).
hide
()}),
u
.
done
(
function
(){
var
t
;
x
.
_removeData
(
e
,
"fxshow"
);
for
(
t
in
c
)
x
.
style
(
e
,
t
,
c
[
t
])});
for
(
r
in
c
)
a
=
Zn
(
f
?
d
[
r
]:
0
,
r
,
u
),
r
in
d
||
(
d
[
r
]
=
a
.
start
,
f
&&
(
a
.
end
=
a
.
start
,
a
.
start
=
"width"
===
r
||
"height"
===
r
?
1
:
0
))}}
function
rr
(
e
,
t
,
n
,
r
,
i
){
return
new
rr
.
prototype
.
init
(
e
,
t
,
n
,
r
,
i
)}
x
.
Tween
=
rr
,
rr
.
prototype
=
{
constructor
:
rr
,
init
:
function
(
e
,
t
,
n
,
r
,
i
,
o
){
this
.
elem
=
e
,
this
.
prop
=
n
,
this
.
easing
=
i
||
"swing"
,
this
.
options
=
t
,
this
.
start
=
this
.
now
=
this
.
cur
(),
this
.
end
=
r
,
this
.
unit
=
o
||
(
x
.
cssNumber
[
n
]?
""
:
"px"
)},
cur
:
function
(){
var
e
=
rr
.
propHooks
[
this
.
prop
];
return
e
&&
e
.
get
?
e
.
get
(
this
):
rr
.
propHooks
.
_default
.
get
(
this
)},
run
:
function
(
e
){
var
t
,
n
=
rr
.
propHooks
[
this
.
prop
];
return
this
.
pos
=
t
=
this
.
options
.
duration
?
x
.
easing
[
this
.
easing
](
e
,
this
.
options
.
duration
*
e
,
0
,
1
,
this
.
options
.
duration
):
e
,
this
.
now
=
(
this
.
end
-
this
.
start
)
*
t
+
this
.
start
,
this
.
options
.
step
&&
this
.
options
.
step
.
call
(
this
.
elem
,
this
.
now
,
this
),
n
&&
n
.
set
?
n
.
set
(
this
):
rr
.
propHooks
.
_default
.
set
(
this
),
this
}},
rr
.
prototype
.
init
.
prototype
=
rr
.
prototype
,
rr
.
propHooks
=
{
_default
:{
get
:
function
(
e
){
var
t
;
return
null
==
e
.
elem
[
e
.
prop
]
||
e
.
elem
.
style
&&
null
!=
e
.
elem
.
style
[
e
.
prop
]?(
t
=
x
.
css
(
e
.
elem
,
e
.
prop
,
""
),
t
&&
"auto"
!==
t
?
t
:
0
):
e
.
elem
[
e
.
prop
]},
set
:
function
(
e
){
x
.
fx
.
step
[
e
.
prop
]?
x
.
fx
.
step
[
e
.
prop
](
e
):
e
.
elem
.
style
&&
(
null
!=
e
.
elem
.
style
[
x
.
cssProps
[
e
.
prop
]]
||
x
.
cssHooks
[
e
.
prop
])?
x
.
style
(
e
.
elem
,
e
.
prop
,
e
.
now
+
e
.
unit
):
e
.
elem
[
e
.
prop
]
=
e
.
now
}}},
rr
.
propHooks
.
scrollTop
=
rr
.
propHooks
.
scrollLeft
=
{
set
:
function
(
e
){
e
.
elem
.
nodeType
&&
e
.
elem
.
parentNode
&&
(
e
.
elem
[
e
.
prop
]
=
e
.
now
)}},
x
.
each
([
"toggle"
,
"show"
,
"hide"
],
function
(
e
,
t
){
var
n
=
x
.
fn
[
t
];
x
.
fn
[
t
]
=
function
(
e
,
r
,
i
){
return
null
==
e
||
"boolean"
==
typeof
e
?
n
.
apply
(
this
,
arguments
):
this
.
animate
(
ir
(
t
,
!
0
),
e
,
r
,
i
)}}),
x
.
fn
.
extend
({
fadeTo
:
function
(
e
,
t
,
n
,
r
){
return
this
.
filter
(
nn
).
css
(
"opacity"
,
0
).
show
().
end
().
animate
({
opacity
:
t
},
e
,
n
,
r
)},
animate
:
function
(
e
,
t
,
n
,
r
){
var
i
=
x
.
isEmptyObject
(
e
),
o
=
x
.
speed
(
t
,
n
,
r
),
a
=
function
(){
var
t
=
er
(
this
,
x
.
extend
({},
e
),
o
);(
i
||
x
.
_data
(
this
,
"finish"
))
&&
t
.
stop
(
!
0
)};
return
a
.
finish
=
a
,
i
||
o
.
queue
===!
1
?
this
.
each
(
a
):
this
.
queue
(
o
.
queue
,
a
)},
stop
:
function
(
e
,
n
,
r
){
var
i
=
function
(
e
){
var
t
=
e
.
stop
;
delete
e
.
stop
,
t
(
r
)};
return
"string"
!=
typeof
e
&&
(
r
=
n
,
n
=
e
,
e
=
t
),
n
&&
e
!==!
1
&&
this
.
queue
(
e
||
"fx"
,[]),
this
.
each
(
function
(){
var
t
=!
0
,
n
=
null
!=
e
&&
e
+
"queueHooks"
,
o
=
x
.
timers
,
a
=
x
.
_data
(
this
);
if
(
n
)
a
[
n
]
&&
a
[
n
].
stop
&&
i
(
a
[
n
]);
else
for
(
n
in
a
)
a
[
n
]
&&
a
[
n
].
stop
&&
Jn
.
test
(
n
)
&&
i
(
a
[
n
]);
for
(
n
=
o
.
length
;
n
--
;)
o
[
n
].
elem
!==
this
||
null
!=
e
&&
o
[
n
].
queue
!==
e
||
(
o
[
n
].
anim
.
stop
(
r
),
t
=!
1
,
o
.
splice
(
n
,
1
));(
t
||!
r
)
&&
x
.
dequeue
(
this
,
e
)})},
finish
:
function
(
e
){
return
e
!==!
1
&&
(
e
=
e
||
"fx"
),
this
.
each
(
function
(){
var
t
,
n
=
x
.
_data
(
this
),
r
=
n
[
e
+
"queue"
],
i
=
n
[
e
+
"queueHooks"
],
o
=
x
.
timers
,
a
=
r
?
r
.
length
:
0
;
for
(
n
.
finish
=!
0
,
x
.
queue
(
this
,
e
,[]),
i
&&
i
.
stop
&&
i
.
stop
.
call
(
this
,
!
0
),
t
=
o
.
length
;
t
--
;)
o
[
t
].
elem
===
this
&&
o
[
t
].
queue
===
e
&&
(
o
[
t
].
anim
.
stop
(
!
0
),
o
.
splice
(
t
,
1
));
for
(
t
=
0
;
a
>
t
;
t
++
)
r
[
t
]
&&
r
[
t
].
finish
&&
r
[
t
].
finish
.
call
(
this
);
delete
n
.
finish
})}});
function
ir
(
e
,
t
){
var
n
,
r
=
{
height
:
e
},
i
=
0
;
for
(
t
=
t
?
1
:
0
;
4
>
i
;
i
+=
2
-
t
)
n
=
Zt
[
i
],
r
[
"margin"
+
n
]
=
r
[
"padding"
+
n
]
=
e
;
return
t
&&
(
r
.
opacity
=
r
.
width
=
e
),
r
}
x
.
each
({
slideDown
:
ir
(
"show"
),
slideUp
:
ir
(
"hide"
),
slideToggle
:
ir
(
"toggle"
),
fadeIn
:{
opacity
:
"show"
},
fadeOut
:{
opacity
:
"hide"
},
fadeToggle
:{
opacity
:
"toggle"
}},
function
(
e
,
t
){
x
.
fn
[
e
]
=
function
(
e
,
n
,
r
){
return
this
.
animate
(
t
,
e
,
n
,
r
)}}),
x
.
speed
=
function
(
e
,
t
,
n
){
var
r
=
e
&&
"object"
==
typeof
e
?
x
.
extend
({},
e
):{
complete
:
n
||!
n
&&
t
||
x
.
isFunction
(
e
)
&&
e
,
duration
:
e
,
easing
:
n
&&
t
||
t
&&!
x
.
isFunction
(
t
)
&&
t
};
return
r
.
duration
=
x
.
fx
.
off
?
0
:
"number"
==
typeof
r
.
duration
?
r
.
duration
:
r
.
duration
in
x
.
fx
.
speeds
?
x
.
fx
.
speeds
[
r
.
duration
]:
x
.
fx
.
speeds
.
_default
,(
null
==
r
.
queue
||
r
.
queue
===!
0
)
&&
(
r
.
queue
=
"fx"
),
r
.
old
=
r
.
complete
,
r
.
complete
=
function
(){
x
.
isFunction
(
r
.
old
)
&&
r
.
old
.
call
(
this
),
r
.
queue
&&
x
.
dequeue
(
this
,
r
.
queue
)},
r
},
x
.
easing
=
{
linear
:
function
(
e
){
return
e
},
swing
:
function
(
e
){
return
.
5
-
Math
.
cos
(
e
*
Math
.
PI
)
/
2
}},
x
.
timers
=
[],
x
.
fx
=
rr
.
prototype
.
init
,
x
.
fx
.
tick
=
function
(){
var
e
,
n
=
x
.
timers
,
r
=
0
;
for
(
Xn
=
x
.
now
();
n
.
length
>
r
;
r
++
)
e
=
n
[
r
],
e
()
||
n
[
r
]
!==
e
||
n
.
splice
(
r
--
,
1
);
n
.
length
||
x
.
fx
.
stop
(),
Xn
=
t
},
x
.
fx
.
timer
=
function
(
e
){
e
()
&&
x
.
timers
.
push
(
e
)
&&
x
.
fx
.
start
()},
x
.
fx
.
interval
=
13
,
x
.
fx
.
start
=
function
(){
Un
||
(
Un
=
setInterval
(
x
.
fx
.
tick
,
x
.
fx
.
interval
))},
x
.
fx
.
stop
=
function
(){
clearInterval
(
Un
),
Un
=
null
},
x
.
fx
.
speeds
=
{
slow
:
600
,
fast
:
200
,
_default
:
400
},
x
.
fx
.
step
=
{},
x
.
expr
&&
x
.
expr
.
filters
&&
(
x
.
expr
.
filters
.
animated
=
function
(
e
){
return
x
.
grep
(
x
.
timers
,
function
(
t
){
return
e
===
t
.
elem
}).
length
}),
x
.
fn
.
offset
=
function
(
e
){
if
(
arguments
.
length
)
return
e
===
t
?
this
:
this
.
each
(
function
(
t
){
x
.
offset
.
setOffset
(
this
,
e
,
t
)});
var
n
,
r
,
o
=
{
top
:
0
,
left
:
0
},
a
=
this
[
0
],
s
=
a
&&
a
.
ownerDocument
;
if
(
s
)
return
n
=
s
.
documentElement
,
x
.
contains
(
n
,
a
)?(
typeof
a
.
getBoundingClientRect
!==
i
&&
(
o
=
a
.
getBoundingClientRect
()),
r
=
or
(
s
),{
top
:
o
.
top
+
(
r
.
pageYOffset
||
n
.
scrollTop
)
-
(
n
.
clientTop
||
0
),
left
:
o
.
left
+
(
r
.
pageXOffset
||
n
.
scrollLeft
)
-
(
n
.
clientLeft
||
0
)}):
o
},
x
.
offset
=
{
setOffset
:
function
(
e
,
t
,
n
){
var
r
=
x
.
css
(
e
,
"position"
);
"static"
===
r
&&
(
e
.
style
.
position
=
"relative"
);
var
i
=
x
(
e
),
o
=
i
.
offset
(),
a
=
x
.
css
(
e
,
"top"
),
s
=
x
.
css
(
e
,
"left"
),
l
=
(
"absolute"
===
r
||
"fixed"
===
r
)
&&
x
.
inArray
(
"auto"
,[
a
,
s
])
>-
1
,
u
=
{},
c
=
{},
p
,
f
;
l
?(
c
=
i
.
position
(),
p
=
c
.
top
,
f
=
c
.
left
):(
p
=
parseFloat
(
a
)
||
0
,
f
=
parseFloat
(
s
)
||
0
),
x
.
isFunction
(
t
)
&&
(
t
=
t
.
call
(
e
,
n
,
o
)),
null
!=
t
.
top
&&
(
u
.
top
=
t
.
top
-
o
.
top
+
p
),
null
!=
t
.
left
&&
(
u
.
left
=
t
.
left
-
o
.
left
+
f
),
"using"
in
t
?
t
.
using
.
call
(
e
,
u
):
i
.
css
(
u
)}},
x
.
fn
.
extend
({
position
:
function
(){
if
(
this
[
0
]){
var
e
,
t
,
n
=
{
top
:
0
,
left
:
0
},
r
=
this
[
0
];
return
"fixed"
===
x
.
css
(
r
,
"position"
)?
t
=
r
.
getBoundingClientRect
():(
e
=
this
.
offsetParent
(),
t
=
this
.
offset
(),
x
.
nodeName
(
e
[
0
],
"html"
)
||
(
n
=
e
.
offset
()),
n
.
top
+=
x
.
css
(
e
[
0
],
"borderTopWidth"
,
!
0
),
n
.
left
+=
x
.
css
(
e
[
0
],
"borderLeftWidth"
,
!
0
)),{
top
:
t
.
top
-
n
.
top
-
x
.
css
(
r
,
"marginTop"
,
!
0
),
left
:
t
.
left
-
n
.
left
-
x
.
css
(
r
,
"marginLeft"
,
!
0
)}}},
offsetParent
:
function
(){
return
this
.
map
(
function
(){
var
e
=
this
.
offsetParent
||
s
;
while
(
e
&&!
x
.
nodeName
(
e
,
"html"
)
&&
"static"
===
x
.
css
(
e
,
"position"
))
e
=
e
.
offsetParent
;
return
e
||
s
})}}),
x
.
each
({
scrollLeft
:
"pageXOffset"
,
scrollTop
:
"pageYOffset"
},
function
(
e
,
n
){
var
r
=
/Y/
.
test
(
n
);
x
.
fn
[
e
]
=
function
(
i
){
return
x
.
access
(
this
,
function
(
e
,
i
,
o
){
var
a
=
or
(
e
);
return
o
===
t
?
a
?
n
in
a
?
a
[
n
]:
a
.
document
.
documentElement
[
i
]:
e
[
i
]:(
a
?
a
.
scrollTo
(
r
?
x
(
a
).
scrollLeft
():
o
,
r
?
o
:
x
(
a
).
scrollTop
()):
e
[
i
]
=
o
,
t
)},
e
,
i
,
arguments
.
length
,
null
)}});
function
or
(
e
){
return
x
.
isWindow
(
e
)?
e
:
9
===
e
.
nodeType
?
e
.
defaultView
||
e
.
parentWindow
:
!
1
}
x
.
each
({
Height
:
"height"
,
Width
:
"width"
},
function
(
e
,
n
){
x
.
each
({
padding
:
"inner"
+
e
,
content
:
n
,
""
:
"outer"
+
e
},
function
(
r
,
i
){
x
.
fn
[
i
]
=
function
(
i
,
o
){
var
a
=
arguments
.
length
&&
(
r
||
"boolean"
!=
typeof
i
),
s
=
r
||
(
i
===!
0
||
o
===!
0
?
"margin"
:
"border"
);
return
x
.
access
(
this
,
function
(
n
,
r
,
i
){
var
o
;
return
x
.
isWindow
(
n
)?
n
.
document
.
documentElement
[
"client"
+
e
]:
9
===
n
.
nodeType
?(
o
=
n
.
documentElement
,
Math
.
max
(
n
.
body
[
"scroll"
+
e
],
o
[
"scroll"
+
e
],
n
.
body
[
"offset"
+
e
],
o
[
"offset"
+
e
],
o
[
"client"
+
e
])):
i
===
t
?
x
.
css
(
n
,
r
,
s
):
x
.
style
(
n
,
r
,
i
,
s
)},
n
,
a
?
i
:
t
,
a
,
null
)}})}),
x
.
fn
.
size
=
function
(){
return
this
.
length
},
x
.
fn
.
andSelf
=
x
.
fn
.
addBack
,
"object"
==
typeof
module
&&
module
&&
"object"
==
typeof
module
.
exports
?
module
.
exports
=
x
:(
e
.
jQuery
=
e
.
$
=
x
,
"function"
==
typeof
define
&&
define
.
amd
&&
define
(
"jquery"
,[],
function
(){
return
x
}))})(
window
);
WebContent/lib/plug/fancyBox-2.1.5/lib/jquery-1.9.0.min.js
0 → 100644
View file @
b9cf285a
/*! jQuery v1.9.0 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license */
(
function
(
e
,
t
){
"use strict"
;
function
n
(
e
){
var
t
=
e
.
length
,
n
=
st
.
type
(
e
);
return
st
.
isWindow
(
e
)?
!
1
:
1
===
e
.
nodeType
&&
t
?
!
0
:
"array"
===
n
||
"function"
!==
n
&&
(
0
===
t
||
"number"
==
typeof
t
&&
t
>
0
&&
t
-
1
in
e
)}
function
r
(
e
){
var
t
=
Tt
[
e
]
=
{};
return
st
.
each
(
e
.
match
(
lt
)
||
[],
function
(
e
,
n
){
t
[
n
]
=!
0
}),
t
}
function
i
(
e
,
n
,
r
,
i
){
if
(
st
.
acceptData
(
e
)){
var
o
,
a
,
s
=
st
.
expando
,
u
=
"string"
==
typeof
n
,
l
=
e
.
nodeType
,
c
=
l
?
st
.
cache
:
e
,
f
=
l
?
e
[
s
]:
e
[
s
]
&&
s
;
if
(
f
&&
c
[
f
]
&&
(
i
||
c
[
f
].
data
)
||!
u
||
r
!==
t
)
return
f
||
(
l
?
e
[
s
]
=
f
=
K
.
pop
()
||
st
.
guid
++
:
f
=
s
),
c
[
f
]
||
(
c
[
f
]
=
{},
l
||
(
c
[
f
].
toJSON
=
st
.
noop
)),(
"object"
==
typeof
n
||
"function"
==
typeof
n
)
&&
(
i
?
c
[
f
]
=
st
.
extend
(
c
[
f
],
n
):
c
[
f
].
data
=
st
.
extend
(
c
[
f
].
data
,
n
)),
o
=
c
[
f
],
i
||
(
o
.
data
||
(
o
.
data
=
{}),
o
=
o
.
data
),
r
!==
t
&&
(
o
[
st
.
camelCase
(
n
)]
=
r
),
u
?(
a
=
o
[
n
],
null
==
a
&&
(
a
=
o
[
st
.
camelCase
(
n
)])):
a
=
o
,
a
}}
function
o
(
e
,
t
,
n
){
if
(
st
.
acceptData
(
e
)){
var
r
,
i
,
o
,
a
=
e
.
nodeType
,
u
=
a
?
st
.
cache
:
e
,
l
=
a
?
e
[
st
.
expando
]:
st
.
expando
;
if
(
u
[
l
]){
if
(
t
&&
(
r
=
n
?
u
[
l
]:
u
[
l
].
data
)){
st
.
isArray
(
t
)?
t
=
t
.
concat
(
st
.
map
(
t
,
st
.
camelCase
)):
t
in
r
?
t
=
[
t
]:(
t
=
st
.
camelCase
(
t
),
t
=
t
in
r
?[
t
]:
t
.
split
(
" "
));
for
(
i
=
0
,
o
=
t
.
length
;
o
>
i
;
i
++
)
delete
r
[
t
[
i
]];
if
(
!
(
n
?
s
:
st
.
isEmptyObject
)(
r
))
return
}(
n
||
(
delete
u
[
l
].
data
,
s
(
u
[
l
])))
&&
(
a
?
st
.
cleanData
([
e
],
!
0
):
st
.
support
.
deleteExpando
||
u
!=
u
.
window
?
delete
u
[
l
]:
u
[
l
]
=
null
)}}}
function
a
(
e
,
n
,
r
){
if
(
r
===
t
&&
1
===
e
.
nodeType
){
var
i
=
"data-"
+
n
.
replace
(
Nt
,
"-$1"
).
toLowerCase
();
if
(
r
=
e
.
getAttribute
(
i
),
"string"
==
typeof
r
){
try
{
r
=
"true"
===
r
?
!
0
:
"false"
===
r
?
!
1
:
"null"
===
r
?
null
:
+
r
+
""
===
r
?
+
r
:
wt
.
test
(
r
)?
st
.
parseJSON
(
r
):
r
}
catch
(
o
){}
st
.
data
(
e
,
n
,
r
)}
else
r
=
t
}
return
r
}
function
s
(
e
){
var
t
;
for
(
t
in
e
)
if
((
"data"
!==
t
||!
st
.
isEmptyObject
(
e
[
t
]))
&&
"toJSON"
!==
t
)
return
!
1
;
return
!
0
}
function
u
(){
return
!
0
}
function
l
(){
return
!
1
}
function
c
(
e
,
t
){
do
e
=
e
[
t
];
while
(
e
&&
1
!==
e
.
nodeType
);
return
e
}
function
f
(
e
,
t
,
n
){
if
(
t
=
t
||
0
,
st
.
isFunction
(
t
))
return
st
.
grep
(
e
,
function
(
e
,
r
){
var
i
=!!
t
.
call
(
e
,
r
,
e
);
return
i
===
n
});
if
(
t
.
nodeType
)
return
st
.
grep
(
e
,
function
(
e
){
return
e
===
t
===
n
});
if
(
"string"
==
typeof
t
){
var
r
=
st
.
grep
(
e
,
function
(
e
){
return
1
===
e
.
nodeType
});
if
(
Wt
.
test
(
t
))
return
st
.
filter
(
t
,
r
,
!
n
);
t
=
st
.
filter
(
t
,
r
)}
return
st
.
grep
(
e
,
function
(
e
){
return
st
.
inArray
(
e
,
t
)
>=
0
===
n
})}
function
p
(
e
){
var
t
=
zt
.
split
(
"|"
),
n
=
e
.
createDocumentFragment
();
if
(
n
.
createElement
)
for
(;
t
.
length
;)
n
.
createElement
(
t
.
pop
());
return
n
}
function
d
(
e
,
t
){
return
e
.
getElementsByTagName
(
t
)[
0
]
||
e
.
appendChild
(
e
.
ownerDocument
.
createElement
(
t
))}
function
h
(
e
){
var
t
=
e
.
getAttributeNode
(
"type"
);
return
e
.
type
=
(
t
&&
t
.
specified
)
+
"/"
+
e
.
type
,
e
}
function
g
(
e
){
var
t
=
nn
.
exec
(
e
.
type
);
return
t
?
e
.
type
=
t
[
1
]:
e
.
removeAttribute
(
"type"
),
e
}
function
m
(
e
,
t
){
for
(
var
n
,
r
=
0
;
null
!=
(
n
=
e
[
r
]);
r
++
)
st
.
_data
(
n
,
"globalEval"
,
!
t
||
st
.
_data
(
t
[
r
],
"globalEval"
))}
function
y
(
e
,
t
){
if
(
1
===
t
.
nodeType
&&
st
.
hasData
(
e
)){
var
n
,
r
,
i
,
o
=
st
.
_data
(
e
),
a
=
st
.
_data
(
t
,
o
),
s
=
o
.
events
;
if
(
s
){
delete
a
.
handle
,
a
.
events
=
{};
for
(
n
in
s
)
for
(
r
=
0
,
i
=
s
[
n
].
length
;
i
>
r
;
r
++
)
st
.
event
.
add
(
t
,
n
,
s
[
n
][
r
])}
a
.
data
&&
(
a
.
data
=
st
.
extend
({},
a
.
data
))}}
function
v
(
e
,
t
){
var
n
,
r
,
i
;
if
(
1
===
t
.
nodeType
){
if
(
n
=
t
.
nodeName
.
toLowerCase
(),
!
st
.
support
.
noCloneEvent
&&
t
[
st
.
expando
]){
r
=
st
.
_data
(
t
);
for
(
i
in
r
.
events
)
st
.
removeEvent
(
t
,
i
,
r
.
handle
);
t
.
removeAttribute
(
st
.
expando
)}
"script"
===
n
&&
t
.
text
!==
e
.
text
?(
h
(
t
).
text
=
e
.
text
,
g
(
t
)):
"object"
===
n
?(
t
.
parentNode
&&
(
t
.
outerHTML
=
e
.
outerHTML
),
st
.
support
.
html5Clone
&&
e
.
innerHTML
&&!
st
.
trim
(
t
.
innerHTML
)
&&
(
t
.
innerHTML
=
e
.
innerHTML
)):
"input"
===
n
&&
Zt
.
test
(
e
.
type
)?(
t
.
defaultChecked
=
t
.
checked
=
e
.
checked
,
t
.
value
!==
e
.
value
&&
(
t
.
value
=
e
.
value
)):
"option"
===
n
?
t
.
defaultSelected
=
t
.
selected
=
e
.
defaultSelected
:(
"input"
===
n
||
"textarea"
===
n
)
&&
(
t
.
defaultValue
=
e
.
defaultValue
)}}
function
b
(
e
,
n
){
var
r
,
i
,
o
=
0
,
a
=
e
.
getElementsByTagName
!==
t
?
e
.
getElementsByTagName
(
n
||
"*"
):
e
.
querySelectorAll
!==
t
?
e
.
querySelectorAll
(
n
||
"*"
):
t
;
if
(
!
a
)
for
(
a
=
[],
r
=
e
.
childNodes
||
e
;
null
!=
(
i
=
r
[
o
]);
o
++
)
!
n
||
st
.
nodeName
(
i
,
n
)?
a
.
push
(
i
):
st
.
merge
(
a
,
b
(
i
,
n
));
return
n
===
t
||
n
&&
st
.
nodeName
(
e
,
n
)?
st
.
merge
([
e
],
a
):
a
}
function
x
(
e
){
Zt
.
test
(
e
.
type
)
&&
(
e
.
defaultChecked
=
e
.
checked
)}
function
T
(
e
,
t
){
if
(
t
in
e
)
return
t
;
for
(
var
n
=
t
.
charAt
(
0
).
toUpperCase
()
+
t
.
slice
(
1
),
r
=
t
,
i
=
Nn
.
length
;
i
--
;)
if
(
t
=
Nn
[
i
]
+
n
,
t
in
e
)
return
t
;
return
r
}
function
w
(
e
,
t
){
return
e
=
t
||
e
,
"none"
===
st
.
css
(
e
,
"display"
)
||!
st
.
contains
(
e
.
ownerDocument
,
e
)}
function
N
(
e
,
t
){
for
(
var
n
,
r
=
[],
i
=
0
,
o
=
e
.
length
;
o
>
i
;
i
++
)
n
=
e
[
i
],
n
.
style
&&
(
r
[
i
]
=
st
.
_data
(
n
,
"olddisplay"
),
t
?(
r
[
i
]
||
"none"
!==
n
.
style
.
display
||
(
n
.
style
.
display
=
""
),
""
===
n
.
style
.
display
&&
w
(
n
)
&&
(
r
[
i
]
=
st
.
_data
(
n
,
"olddisplay"
,
S
(
n
.
nodeName
)))):
r
[
i
]
||
w
(
n
)
||
st
.
_data
(
n
,
"olddisplay"
,
st
.
css
(
n
,
"display"
)));
for
(
i
=
0
;
o
>
i
;
i
++
)
n
=
e
[
i
],
n
.
style
&&
(
t
&&
"none"
!==
n
.
style
.
display
&&
""
!==
n
.
style
.
display
||
(
n
.
style
.
display
=
t
?
r
[
i
]
||
""
:
"none"
));
return
e
}
function
C
(
e
,
t
,
n
){
var
r
=
mn
.
exec
(
t
);
return
r
?
Math
.
max
(
0
,
r
[
1
]
-
(
n
||
0
))
+
(
r
[
2
]
||
"px"
):
t
}
function
k
(
e
,
t
,
n
,
r
,
i
){
for
(
var
o
=
n
===
(
r
?
"border"
:
"content"
)?
4
:
"width"
===
t
?
1
:
0
,
a
=
0
;
4
>
o
;
o
+=
2
)
"margin"
===
n
&&
(
a
+=
st
.
css
(
e
,
n
+
wn
[
o
],
!
0
,
i
)),
r
?(
"content"
===
n
&&
(
a
-=
st
.
css
(
e
,
"padding"
+
wn
[
o
],
!
0
,
i
)),
"margin"
!==
n
&&
(
a
-=
st
.
css
(
e
,
"border"
+
wn
[
o
]
+
"Width"
,
!
0
,
i
))):(
a
+=
st
.
css
(
e
,
"padding"
+
wn
[
o
],
!
0
,
i
),
"padding"
!==
n
&&
(
a
+=
st
.
css
(
e
,
"border"
+
wn
[
o
]
+
"Width"
,
!
0
,
i
)));
return
a
}
function
E
(
e
,
t
,
n
){
var
r
=!
0
,
i
=
"width"
===
t
?
e
.
offsetWidth
:
e
.
offsetHeight
,
o
=
ln
(
e
),
a
=
st
.
support
.
boxSizing
&&
"border-box"
===
st
.
css
(
e
,
"boxSizing"
,
!
1
,
o
);
if
(
0
>=
i
||
null
==
i
){
if
(
i
=
un
(
e
,
t
,
o
),(
0
>
i
||
null
==
i
)
&&
(
i
=
e
.
style
[
t
]),
yn
.
test
(
i
))
return
i
;
r
=
a
&&
(
st
.
support
.
boxSizingReliable
||
i
===
e
.
style
[
t
]),
i
=
parseFloat
(
i
)
||
0
}
return
i
+
k
(
e
,
t
,
n
||
(
a
?
"border"
:
"content"
),
r
,
o
)
+
"px"
}
function
S
(
e
){
var
t
=
V
,
n
=
bn
[
e
];
return
n
||
(
n
=
A
(
e
,
t
),
"none"
!==
n
&&
n
||
(
cn
=
(
cn
||
st
(
"<iframe frameborder='0' width='0' height='0'/>"
).
css
(
"cssText"
,
"display:block !important"
)).
appendTo
(
t
.
documentElement
),
t
=
(
cn
[
0
].
contentWindow
||
cn
[
0
].
contentDocument
).
document
,
t
.
write
(
"<!doctype html><html><body>"
),
t
.
close
(),
n
=
A
(
e
,
t
),
cn
.
detach
()),
bn
[
e
]
=
n
),
n
}
function
A
(
e
,
t
){
var
n
=
st
(
t
.
createElement
(
e
)).
appendTo
(
t
.
body
),
r
=
st
.
css
(
n
[
0
],
"display"
);
return
n
.
remove
(),
r
}
function
j
(
e
,
t
,
n
,
r
){
var
i
;
if
(
st
.
isArray
(
t
))
st
.
each
(
t
,
function
(
t
,
i
){
n
||
kn
.
test
(
e
)?
r
(
e
,
i
):
j
(
e
+
"["
+
(
"object"
==
typeof
i
?
t
:
""
)
+
"]"
,
i
,
n
,
r
)});
else
if
(
n
||
"object"
!==
st
.
type
(
t
))
r
(
e
,
t
);
else
for
(
i
in
t
)
j
(
e
+
"["
+
i
+
"]"
,
t
[
i
],
n
,
r
)}
function
D
(
e
){
return
function
(
t
,
n
){
"string"
!=
typeof
t
&&
(
n
=
t
,
t
=
"*"
);
var
r
,
i
=
0
,
o
=
t
.
toLowerCase
().
match
(
lt
)
||
[];
if
(
st
.
isFunction
(
n
))
for
(;
r
=
o
[
i
++
];)
"+"
===
r
[
0
]?(
r
=
r
.
slice
(
1
)
||
"*"
,(
e
[
r
]
=
e
[
r
]
||
[]).
unshift
(
n
)):(
e
[
r
]
=
e
[
r
]
||
[]).
push
(
n
)}}
function
L
(
e
,
n
,
r
,
i
){
function
o
(
u
){
var
l
;
return
a
[
u
]
=!
0
,
st
.
each
(
e
[
u
]
||
[],
function
(
e
,
u
){
var
c
=
u
(
n
,
r
,
i
);
return
"string"
!=
typeof
c
||
s
||
a
[
c
]?
s
?
!
(
l
=
c
):
t
:(
n
.
dataTypes
.
unshift
(
c
),
o
(
c
),
!
1
)}),
l
}
var
a
=
{},
s
=
e
===
$n
;
return
o
(
n
.
dataTypes
[
0
])
||!
a
[
"*"
]
&&
o
(
"*"
)}
function
H
(
e
,
n
){
var
r
,
i
,
o
=
st
.
ajaxSettings
.
flatOptions
||
{};
for
(
r
in
n
)
n
[
r
]
!==
t
&&
((
o
[
r
]?
e
:
i
||
(
i
=
{}))[
r
]
=
n
[
r
]);
return
i
&&
st
.
extend
(
!
0
,
e
,
i
),
e
}
function
M
(
e
,
n
,
r
){
var
i
,
o
,
a
,
s
,
u
=
e
.
contents
,
l
=
e
.
dataTypes
,
c
=
e
.
responseFields
;
for
(
o
in
c
)
o
in
r
&&
(
n
[
c
[
o
]]
=
r
[
o
]);
for
(;
"*"
===
l
[
0
];)
l
.
shift
(),
i
===
t
&&
(
i
=
e
.
mimeType
||
n
.
getResponseHeader
(
"Content-Type"
));
if
(
i
)
for
(
o
in
u
)
if
(
u
[
o
]
&&
u
[
o
].
test
(
i
)){
l
.
unshift
(
o
);
break
}
if
(
l
[
0
]
in
r
)
a
=
l
[
0
];
else
{
for
(
o
in
r
){
if
(
!
l
[
0
]
||
e
.
converters
[
o
+
" "
+
l
[
0
]]){
a
=
o
;
break
}
s
||
(
s
=
o
)}
a
=
a
||
s
}
return
a
?(
a
!==
l
[
0
]
&&
l
.
unshift
(
a
),
r
[
a
]):
t
}
function
q
(
e
,
t
){
var
n
,
r
,
i
,
o
,
a
=
{},
s
=
0
,
u
=
e
.
dataTypes
.
slice
(),
l
=
u
[
0
];
if
(
e
.
dataFilter
&&
(
t
=
e
.
dataFilter
(
t
,
e
.
dataType
)),
u
[
1
])
for
(
n
in
e
.
converters
)
a
[
n
.
toLowerCase
()]
=
e
.
converters
[
n
];
for
(;
i
=
u
[
++
s
];)
if
(
"*"
!==
i
){
if
(
"*"
!==
l
&&
l
!==
i
){
if
(
n
=
a
[
l
+
" "
+
i
]
||
a
[
"* "
+
i
],
!
n
)
for
(
r
in
a
)
if
(
o
=
r
.
split
(
" "
),
o
[
1
]
===
i
&&
(
n
=
a
[
l
+
" "
+
o
[
0
]]
||
a
[
"* "
+
o
[
0
]])){
n
===!
0
?
n
=
a
[
r
]:
a
[
r
]
!==!
0
&&
(
i
=
o
[
0
],
u
.
splice
(
s
--
,
0
,
i
));
break
}
if
(
n
!==!
0
)
if
(
n
&&
e
[
"throws"
])
t
=
n
(
t
);
else
try
{
t
=
n
(
t
)}
catch
(
c
){
return
{
state
:
"parsererror"
,
error
:
n
?
c
:
"No conversion from "
+
l
+
" to "
+
i
}}}
l
=
i
}
return
{
state
:
"success"
,
data
:
t
}}
function
_
(){
try
{
return
new
e
.
XMLHttpRequest
}
catch
(
t
){}}
function
F
(){
try
{
return
new
e
.
ActiveXObject
(
"Microsoft.XMLHTTP"
)}
catch
(
t
){}}
function
O
(){
return
setTimeout
(
function
(){
Qn
=
t
}),
Qn
=
st
.
now
()}
function
B
(
e
,
t
){
st
.
each
(
t
,
function
(
t
,
n
){
for
(
var
r
=
(
rr
[
t
]
||
[]).
concat
(
rr
[
"*"
]),
i
=
0
,
o
=
r
.
length
;
o
>
i
;
i
++
)
if
(
r
[
i
].
call
(
e
,
t
,
n
))
return
})}
function
P
(
e
,
t
,
n
){
var
r
,
i
,
o
=
0
,
a
=
nr
.
length
,
s
=
st
.
Deferred
().
always
(
function
(){
delete
u
.
elem
}),
u
=
function
(){
if
(
i
)
return
!
1
;
for
(
var
t
=
Qn
||
O
(),
n
=
Math
.
max
(
0
,
l
.
startTime
+
l
.
duration
-
t
),
r
=
n
/
l
.
duration
||
0
,
o
=
1
-
r
,
a
=
0
,
u
=
l
.
tweens
.
length
;
u
>
a
;
a
++
)
l
.
tweens
[
a
].
run
(
o
);
return
s
.
notifyWith
(
e
,[
l
,
o
,
n
]),
1
>
o
&&
u
?
n
:(
s
.
resolveWith
(
e
,[
l
]),
!
1
)},
l
=
s
.
promise
({
elem
:
e
,
props
:
st
.
extend
({},
t
),
opts
:
st
.
extend
(
!
0
,{
specialEasing
:{}},
n
),
originalProperties
:
t
,
originalOptions
:
n
,
startTime
:
Qn
||
O
(),
duration
:
n
.
duration
,
tweens
:[],
createTween
:
function
(
t
,
n
){
var
r
=
st
.
Tween
(
e
,
l
.
opts
,
t
,
n
,
l
.
opts
.
specialEasing
[
t
]
||
l
.
opts
.
easing
);
return
l
.
tweens
.
push
(
r
),
r
},
stop
:
function
(
t
){
var
n
=
0
,
r
=
t
?
l
.
tweens
.
length
:
0
;
if
(
i
)
return
this
;
for
(
i
=!
0
;
r
>
n
;
n
++
)
l
.
tweens
[
n
].
run
(
1
);
return
t
?
s
.
resolveWith
(
e
,[
l
,
t
]):
s
.
rejectWith
(
e
,[
l
,
t
]),
this
}}),
c
=
l
.
props
;
for
(
R
(
c
,
l
.
opts
.
specialEasing
);
a
>
o
;
o
++
)
if
(
r
=
nr
[
o
].
call
(
l
,
e
,
c
,
l
.
opts
))
return
r
;
return
B
(
l
,
c
),
st
.
isFunction
(
l
.
opts
.
start
)
&&
l
.
opts
.
start
.
call
(
e
,
l
),
st
.
fx
.
timer
(
st
.
extend
(
u
,{
elem
:
e
,
anim
:
l
,
queue
:
l
.
opts
.
queue
})),
l
.
progress
(
l
.
opts
.
progress
).
done
(
l
.
opts
.
done
,
l
.
opts
.
complete
).
fail
(
l
.
opts
.
fail
).
always
(
l
.
opts
.
always
)}
function
R
(
e
,
t
){
var
n
,
r
,
i
,
o
,
a
;
for
(
n
in
e
)
if
(
r
=
st
.
camelCase
(
n
),
i
=
t
[
r
],
o
=
e
[
n
],
st
.
isArray
(
o
)
&&
(
i
=
o
[
1
],
o
=
e
[
n
]
=
o
[
0
]),
n
!==
r
&&
(
e
[
r
]
=
o
,
delete
e
[
n
]),
a
=
st
.
cssHooks
[
r
],
a
&&
"expand"
in
a
){
o
=
a
.
expand
(
o
),
delete
e
[
r
];
for
(
n
in
o
)
n
in
e
||
(
e
[
n
]
=
o
[
n
],
t
[
n
]
=
i
)}
else
t
[
r
]
=
i
}
function
W
(
e
,
t
,
n
){
var
r
,
i
,
o
,
a
,
s
,
u
,
l
,
c
,
f
,
p
=
this
,
d
=
e
.
style
,
h
=
{},
g
=
[],
m
=
e
.
nodeType
&&
w
(
e
);
n
.
queue
||
(
c
=
st
.
_queueHooks
(
e
,
"fx"
),
null
==
c
.
unqueued
&&
(
c
.
unqueued
=
0
,
f
=
c
.
empty
.
fire
,
c
.
empty
.
fire
=
function
(){
c
.
unqueued
||
f
()}),
c
.
unqueued
++
,
p
.
always
(
function
(){
p
.
always
(
function
(){
c
.
unqueued
--
,
st
.
queue
(
e
,
"fx"
).
length
||
c
.
empty
.
fire
()})})),
1
===
e
.
nodeType
&&
(
"height"
in
t
||
"width"
in
t
)
&&
(
n
.
overflow
=
[
d
.
overflow
,
d
.
overflowX
,
d
.
overflowY
],
"inline"
===
st
.
css
(
e
,
"display"
)
&&
"none"
===
st
.
css
(
e
,
"float"
)
&&
(
st
.
support
.
inlineBlockNeedsLayout
&&
"inline"
!==
S
(
e
.
nodeName
)?
d
.
zoom
=
1
:
d
.
display
=
"inline-block"
)),
n
.
overflow
&&
(
d
.
overflow
=
"hidden"
,
st
.
support
.
shrinkWrapBlocks
||
p
.
done
(
function
(){
d
.
overflow
=
n
.
overflow
[
0
],
d
.
overflowX
=
n
.
overflow
[
1
],
d
.
overflowY
=
n
.
overflow
[
2
]}));
for
(
r
in
t
)
if
(
o
=
t
[
r
],
Zn
.
exec
(
o
)){
if
(
delete
t
[
r
],
u
=
u
||
"toggle"
===
o
,
o
===
(
m
?
"hide"
:
"show"
))
continue
;
g
.
push
(
r
)}
if
(
a
=
g
.
length
){
s
=
st
.
_data
(
e
,
"fxshow"
)
||
st
.
_data
(
e
,
"fxshow"
,{}),
"hidden"
in
s
&&
(
m
=
s
.
hidden
),
u
&&
(
s
.
hidden
=!
m
),
m
?
st
(
e
).
show
():
p
.
done
(
function
(){
st
(
e
).
hide
()}),
p
.
done
(
function
(){
var
t
;
st
.
_removeData
(
e
,
"fxshow"
);
for
(
t
in
h
)
st
.
style
(
e
,
t
,
h
[
t
])});
for
(
r
=
0
;
a
>
r
;
r
++
)
i
=
g
[
r
],
l
=
p
.
createTween
(
i
,
m
?
s
[
i
]:
0
),
h
[
i
]
=
s
[
i
]
||
st
.
style
(
e
,
i
),
i
in
s
||
(
s
[
i
]
=
l
.
start
,
m
&&
(
l
.
end
=
l
.
start
,
l
.
start
=
"width"
===
i
||
"height"
===
i
?
1
:
0
))}}
function
$
(
e
,
t
,
n
,
r
,
i
){
return
new
$
.
prototype
.
init
(
e
,
t
,
n
,
r
,
i
)}
function
I
(
e
,
t
){
var
n
,
r
=
{
height
:
e
},
i
=
0
;
for
(
t
=
t
?
1
:
0
;
4
>
i
;
i
+=
2
-
t
)
n
=
wn
[
i
],
r
[
"margin"
+
n
]
=
r
[
"padding"
+
n
]
=
e
;
return
t
&&
(
r
.
opacity
=
r
.
width
=
e
),
r
}
function
z
(
e
){
return
st
.
isWindow
(
e
)?
e
:
9
===
e
.
nodeType
?
e
.
defaultView
||
e
.
parentWindow
:
!
1
}
var
X
,
U
,
V
=
e
.
document
,
Y
=
e
.
location
,
J
=
e
.
jQuery
,
G
=
e
.
$
,
Q
=
{},
K
=
[],
Z
=
"1.9.0"
,
et
=
K
.
concat
,
tt
=
K
.
push
,
nt
=
K
.
slice
,
rt
=
K
.
indexOf
,
it
=
Q
.
toString
,
ot
=
Q
.
hasOwnProperty
,
at
=
Z
.
trim
,
st
=
function
(
e
,
t
){
return
new
st
.
fn
.
init
(
e
,
t
,
X
)},
ut
=
/
[
+-
]?(?:\d
*
\.
|
)\d
+
(?:[
eE
][
+-
]?\d
+|
)
/
.
source
,
lt
=
/
\S
+/g
,
ct
=
/^
[\s\u
FEFF
\x
A0
]
+|
[\s\u
FEFF
\x
A0
]
+$/g
,
ft
=
/^
(?:(
<
[\w\W]
+>
)[^
>
]
*|#
([\w
-
]
*
))
$/
,
pt
=
/^<
(\w
+
)\s
*
\/?
>
(?:
<
\/\1
>|
)
$/
,
dt
=
/^
[\]
,:{}
\s]
*$/
,
ht
=
/
(?:
^|:|,
)(?:\s
*
\[)
+/g
,
gt
=
/
\\(?:[
"
\\\/
bfnrt
]
|u
[\d
a-fA-F
]{4})
/g
,
mt
=
/"
[^
"
\\\r\n]
*"|true|false|null|-
?(?:\d
+
\.
|
)\d
+
(?:[
eE
][
+-
]?\d
+|
)
/g
,
yt
=
/^-ms-/
,
vt
=
/-
([\d
a-z
])
/gi
,
bt
=
function
(
e
,
t
){
return
t
.
toUpperCase
()},
xt
=
function
(){
V
.
addEventListener
?(
V
.
removeEventListener
(
"DOMContentLoaded"
,
xt
,
!
1
),
st
.
ready
()):
"complete"
===
V
.
readyState
&&
(
V
.
detachEvent
(
"onreadystatechange"
,
xt
),
st
.
ready
())};
st
.
fn
=
st
.
prototype
=
{
jquery
:
Z
,
constructor
:
st
,
init
:
function
(
e
,
n
,
r
){
var
i
,
o
;
if
(
!
e
)
return
this
;
if
(
"string"
==
typeof
e
){
if
(
i
=
"<"
===
e
.
charAt
(
0
)
&&
">"
===
e
.
charAt
(
e
.
length
-
1
)
&&
e
.
length
>=
3
?[
null
,
e
,
null
]:
ft
.
exec
(
e
),
!
i
||!
i
[
1
]
&&
n
)
return
!
n
||
n
.
jquery
?(
n
||
r
).
find
(
e
):
this
.
constructor
(
n
).
find
(
e
);
if
(
i
[
1
]){
if
(
n
=
n
instanceof
st
?
n
[
0
]:
n
,
st
.
merge
(
this
,
st
.
parseHTML
(
i
[
1
],
n
&&
n
.
nodeType
?
n
.
ownerDocument
||
n
:
V
,
!
0
)),
pt
.
test
(
i
[
1
])
&&
st
.
isPlainObject
(
n
))
for
(
i
in
n
)
st
.
isFunction
(
this
[
i
])?
this
[
i
](
n
[
i
]):
this
.
attr
(
i
,
n
[
i
]);
return
this
}
if
(
o
=
V
.
getElementById
(
i
[
2
]),
o
&&
o
.
parentNode
){
if
(
o
.
id
!==
i
[
2
])
return
r
.
find
(
e
);
this
.
length
=
1
,
this
[
0
]
=
o
}
return
this
.
context
=
V
,
this
.
selector
=
e
,
this
}
return
e
.
nodeType
?(
this
.
context
=
this
[
0
]
=
e
,
this
.
length
=
1
,
this
):
st
.
isFunction
(
e
)?
r
.
ready
(
e
):(
e
.
selector
!==
t
&&
(
this
.
selector
=
e
.
selector
,
this
.
context
=
e
.
context
),
st
.
makeArray
(
e
,
this
))},
selector
:
""
,
length
:
0
,
size
:
function
(){
return
this
.
length
},
toArray
:
function
(){
return
nt
.
call
(
this
)},
get
:
function
(
e
){
return
null
==
e
?
this
.
toArray
():
0
>
e
?
this
[
this
.
length
+
e
]:
this
[
e
]},
pushStack
:
function
(
e
){
var
t
=
st
.
merge
(
this
.
constructor
(),
e
);
return
t
.
prevObject
=
this
,
t
.
context
=
this
.
context
,
t
},
each
:
function
(
e
,
t
){
return
st
.
each
(
this
,
e
,
t
)},
ready
:
function
(
e
){
return
st
.
ready
.
promise
().
done
(
e
),
this
},
slice
:
function
(){
return
this
.
pushStack
(
nt
.
apply
(
this
,
arguments
))},
first
:
function
(){
return
this
.
eq
(
0
)},
last
:
function
(){
return
this
.
eq
(
-
1
)},
eq
:
function
(
e
){
var
t
=
this
.
length
,
n
=+
e
+
(
0
>
e
?
t
:
0
);
return
this
.
pushStack
(
n
>=
0
&&
t
>
n
?[
this
[
n
]]:[])},
map
:
function
(
e
){
return
this
.
pushStack
(
st
.
map
(
this
,
function
(
t
,
n
){
return
e
.
call
(
t
,
n
,
t
)}))},
end
:
function
(){
return
this
.
prevObject
||
this
.
constructor
(
null
)},
push
:
tt
,
sort
:[].
sort
,
splice
:[].
splice
},
st
.
fn
.
init
.
prototype
=
st
.
fn
,
st
.
extend
=
st
.
fn
.
extend
=
function
(){
var
e
,
n
,
r
,
i
,
o
,
a
,
s
=
arguments
[
0
]
||
{},
u
=
1
,
l
=
arguments
.
length
,
c
=!
1
;
for
(
"boolean"
==
typeof
s
&&
(
c
=
s
,
s
=
arguments
[
1
]
||
{},
u
=
2
),
"object"
==
typeof
s
||
st
.
isFunction
(
s
)
||
(
s
=
{}),
l
===
u
&&
(
s
=
this
,
--
u
);
l
>
u
;
u
++
)
if
(
null
!=
(
e
=
arguments
[
u
]))
for
(
n
in
e
)
r
=
s
[
n
],
i
=
e
[
n
],
s
!==
i
&&
(
c
&&
i
&&
(
st
.
isPlainObject
(
i
)
||
(
o
=
st
.
isArray
(
i
)))?(
o
?(
o
=!
1
,
a
=
r
&&
st
.
isArray
(
r
)?
r
:[]):
a
=
r
&&
st
.
isPlainObject
(
r
)?
r
:{},
s
[
n
]
=
st
.
extend
(
c
,
a
,
i
)):
i
!==
t
&&
(
s
[
n
]
=
i
));
return
s
},
st
.
extend
({
noConflict
:
function
(
t
){
return
e
.
$
===
st
&&
(
e
.
$
=
G
),
t
&&
e
.
jQuery
===
st
&&
(
e
.
jQuery
=
J
),
st
},
isReady
:
!
1
,
readyWait
:
1
,
holdReady
:
function
(
e
){
e
?
st
.
readyWait
++
:
st
.
ready
(
!
0
)},
ready
:
function
(
e
){
if
(
e
===!
0
?
!--
st
.
readyWait
:
!
st
.
isReady
){
if
(
!
V
.
body
)
return
setTimeout
(
st
.
ready
);
st
.
isReady
=!
0
,
e
!==!
0
&&--
st
.
readyWait
>
0
||
(
U
.
resolveWith
(
V
,[
st
]),
st
.
fn
.
trigger
&&
st
(
V
).
trigger
(
"ready"
).
off
(
"ready"
))}},
isFunction
:
function
(
e
){
return
"function"
===
st
.
type
(
e
)},
isArray
:
Array
.
isArray
||
function
(
e
){
return
"array"
===
st
.
type
(
e
)},
isWindow
:
function
(
e
){
return
null
!=
e
&&
e
==
e
.
window
},
isNumeric
:
function
(
e
){
return
!
isNaN
(
parseFloat
(
e
))
&&
isFinite
(
e
)},
type
:
function
(
e
){
return
null
==
e
?
e
+
""
:
"object"
==
typeof
e
||
"function"
==
typeof
e
?
Q
[
it
.
call
(
e
)]
||
"object"
:
typeof
e
},
isPlainObject
:
function
(
e
){
if
(
!
e
||
"object"
!==
st
.
type
(
e
)
||
e
.
nodeType
||
st
.
isWindow
(
e
))
return
!
1
;
try
{
if
(
e
.
constructor
&&!
ot
.
call
(
e
,
"constructor"
)
&&!
ot
.
call
(
e
.
constructor
.
prototype
,
"isPrototypeOf"
))
return
!
1
}
catch
(
n
){
return
!
1
}
var
r
;
for
(
r
in
e
);
return
r
===
t
||
ot
.
call
(
e
,
r
)},
isEmptyObject
:
function
(
e
){
var
t
;
for
(
t
in
e
)
return
!
1
;
return
!
0
},
error
:
function
(
e
){
throw
Error
(
e
)},
parseHTML
:
function
(
e
,
t
,
n
){
if
(
!
e
||
"string"
!=
typeof
e
)
return
null
;
"boolean"
==
typeof
t
&&
(
n
=
t
,
t
=!
1
),
t
=
t
||
V
;
var
r
=
pt
.
exec
(
e
),
i
=!
n
&&
[];
return
r
?[
t
.
createElement
(
r
[
1
])]:(
r
=
st
.
buildFragment
([
e
],
t
,
i
),
i
&&
st
(
i
).
remove
(),
st
.
merge
([],
r
.
childNodes
))},
parseJSON
:
function
(
n
){
return
e
.
JSON
&&
e
.
JSON
.
parse
?
e
.
JSON
.
parse
(
n
):
null
===
n
?
n
:
"string"
==
typeof
n
&&
(
n
=
st
.
trim
(
n
),
n
&&
dt
.
test
(
n
.
replace
(
gt
,
"@"
).
replace
(
mt
,
"]"
).
replace
(
ht
,
""
)))?
Function
(
"return "
+
n
)():(
st
.
error
(
"Invalid JSON: "
+
n
),
t
)},
parseXML
:
function
(
n
){
var
r
,
i
;
if
(
!
n
||
"string"
!=
typeof
n
)
return
null
;
try
{
e
.
DOMParser
?(
i
=
new
DOMParser
,
r
=
i
.
parseFromString
(
n
,
"text/xml"
)):(
r
=
new
ActiveXObject
(
"Microsoft.XMLDOM"
),
r
.
async
=
"false"
,
r
.
loadXML
(
n
))}
catch
(
o
){
r
=
t
}
return
r
&&
r
.
documentElement
&&!
r
.
getElementsByTagName
(
"parsererror"
).
length
||
st
.
error
(
"Invalid XML: "
+
n
),
r
},
noop
:
function
(){},
globalEval
:
function
(
t
){
t
&&
st
.
trim
(
t
)
&&
(
e
.
execScript
||
function
(
t
){
e
.
eval
.
call
(
e
,
t
)})(
t
)},
camelCase
:
function
(
e
){
return
e
.
replace
(
yt
,
"ms-"
).
replace
(
vt
,
bt
)},
nodeName
:
function
(
e
,
t
){
return
e
.
nodeName
&&
e
.
nodeName
.
toLowerCase
()
===
t
.
toLowerCase
()},
each
:
function
(
e
,
t
,
r
){
var
i
,
o
=
0
,
a
=
e
.
length
,
s
=
n
(
e
);
if
(
r
){
if
(
s
)
for
(;
a
>
o
&&
(
i
=
t
.
apply
(
e
[
o
],
r
),
i
!==!
1
);
o
++
);
else
for
(
o
in
e
)
if
(
i
=
t
.
apply
(
e
[
o
],
r
),
i
===!
1
)
break
}
else
if
(
s
)
for
(;
a
>
o
&&
(
i
=
t
.
call
(
e
[
o
],
o
,
e
[
o
]),
i
!==!
1
);
o
++
);
else
for
(
o
in
e
)
if
(
i
=
t
.
call
(
e
[
o
],
o
,
e
[
o
]),
i
===!
1
)
break
;
return
e
},
trim
:
at
&&!
at
.
call
(
"
\
ufeff
\
u00a0"
)?
function
(
e
){
return
null
==
e
?
""
:
at
.
call
(
e
)}:
function
(
e
){
return
null
==
e
?
""
:(
e
+
""
).
replace
(
ct
,
""
)},
makeArray
:
function
(
e
,
t
){
var
r
=
t
||
[];
return
null
!=
e
&&
(
n
(
Object
(
e
))?
st
.
merge
(
r
,
"string"
==
typeof
e
?[
e
]:
e
):
tt
.
call
(
r
,
e
)),
r
},
inArray
:
function
(
e
,
t
,
n
){
var
r
;
if
(
t
){
if
(
rt
)
return
rt
.
call
(
t
,
e
,
n
);
for
(
r
=
t
.
length
,
n
=
n
?
0
>
n
?
Math
.
max
(
0
,
r
+
n
):
n
:
0
;
r
>
n
;
n
++
)
if
(
n
in
t
&&
t
[
n
]
===
e
)
return
n
}
return
-
1
},
merge
:
function
(
e
,
n
){
var
r
=
n
.
length
,
i
=
e
.
length
,
o
=
0
;
if
(
"number"
==
typeof
r
)
for
(;
r
>
o
;
o
++
)
e
[
i
++
]
=
n
[
o
];
else
for
(;
n
[
o
]
!==
t
;)
e
[
i
++
]
=
n
[
o
++
];
return
e
.
length
=
i
,
e
},
grep
:
function
(
e
,
t
,
n
){
var
r
,
i
=
[],
o
=
0
,
a
=
e
.
length
;
for
(
n
=!!
n
;
a
>
o
;
o
++
)
r
=!!
t
(
e
[
o
],
o
),
n
!==
r
&&
i
.
push
(
e
[
o
]);
return
i
},
map
:
function
(
e
,
t
,
r
){
var
i
,
o
=
0
,
a
=
e
.
length
,
s
=
n
(
e
),
u
=
[];
if
(
s
)
for
(;
a
>
o
;
o
++
)
i
=
t
(
e
[
o
],
o
,
r
),
null
!=
i
&&
(
u
[
u
.
length
]
=
i
);
else
for
(
o
in
e
)
i
=
t
(
e
[
o
],
o
,
r
),
null
!=
i
&&
(
u
[
u
.
length
]
=
i
);
return
et
.
apply
([],
u
)},
guid
:
1
,
proxy
:
function
(
e
,
n
){
var
r
,
i
,
o
;
return
"string"
==
typeof
n
&&
(
r
=
e
[
n
],
n
=
e
,
e
=
r
),
st
.
isFunction
(
e
)?(
i
=
nt
.
call
(
arguments
,
2
),
o
=
function
(){
return
e
.
apply
(
n
||
this
,
i
.
concat
(
nt
.
call
(
arguments
)))},
o
.
guid
=
e
.
guid
=
e
.
guid
||
st
.
guid
++
,
o
):
t
},
access
:
function
(
e
,
n
,
r
,
i
,
o
,
a
,
s
){
var
u
=
0
,
l
=
e
.
length
,
c
=
null
==
r
;
if
(
"object"
===
st
.
type
(
r
)){
o
=!
0
;
for
(
u
in
r
)
st
.
access
(
e
,
n
,
u
,
r
[
u
],
!
0
,
a
,
s
)}
else
if
(
i
!==
t
&&
(
o
=!
0
,
st
.
isFunction
(
i
)
||
(
s
=!
0
),
c
&&
(
s
?(
n
.
call
(
e
,
i
),
n
=
null
):(
c
=
n
,
n
=
function
(
e
,
t
,
n
){
return
c
.
call
(
st
(
e
),
n
)})),
n
))
for
(;
l
>
u
;
u
++
)
n
(
e
[
u
],
r
,
s
?
i
:
i
.
call
(
e
[
u
],
u
,
n
(
e
[
u
],
r
)));
return
o
?
e
:
c
?
n
.
call
(
e
):
l
?
n
(
e
[
0
],
r
):
a
},
now
:
function
(){
return
(
new
Date
).
getTime
()}}),
st
.
ready
.
promise
=
function
(
t
){
if
(
!
U
)
if
(
U
=
st
.
Deferred
(),
"complete"
===
V
.
readyState
)
setTimeout
(
st
.
ready
);
else
if
(
V
.
addEventListener
)
V
.
addEventListener
(
"DOMContentLoaded"
,
xt
,
!
1
),
e
.
addEventListener
(
"load"
,
st
.
ready
,
!
1
);
else
{
V
.
attachEvent
(
"onreadystatechange"
,
xt
),
e
.
attachEvent
(
"onload"
,
st
.
ready
);
var
n
=!
1
;
try
{
n
=
null
==
e
.
frameElement
&&
V
.
documentElement
}
catch
(
r
){}
n
&&
n
.
doScroll
&&
function
i
(){
if
(
!
st
.
isReady
){
try
{
n
.
doScroll
(
"left"
)}
catch
(
e
){
return
setTimeout
(
i
,
50
)}
st
.
ready
()}}()}
return
U
.
promise
(
t
)},
st
.
each
(
"Boolean Number String Function Array Date RegExp Object Error"
.
split
(
" "
),
function
(
e
,
t
){
Q
[
"[object "
+
t
+
"]"
]
=
t
.
toLowerCase
()}),
X
=
st
(
V
);
var
Tt
=
{};
st
.
Callbacks
=
function
(
e
){
e
=
"string"
==
typeof
e
?
Tt
[
e
]
||
r
(
e
):
st
.
extend
({},
e
);
var
n
,
i
,
o
,
a
,
s
,
u
,
l
=
[],
c
=!
e
.
once
&&
[],
f
=
function
(
t
){
for
(
n
=
e
.
memory
&&
t
,
i
=!
0
,
u
=
a
||
0
,
a
=
0
,
s
=
l
.
length
,
o
=!
0
;
l
&&
s
>
u
;
u
++
)
if
(
l
[
u
].
apply
(
t
[
0
],
t
[
1
])
===!
1
&&
e
.
stopOnFalse
){
n
=!
1
;
break
}
o
=!
1
,
l
&&
(
c
?
c
.
length
&&
f
(
c
.
shift
()):
n
?
l
=
[]:
p
.
disable
())},
p
=
{
add
:
function
(){
if
(
l
){
var
t
=
l
.
length
;(
function
r
(
t
){
st
.
each
(
t
,
function
(
t
,
n
){
var
i
=
st
.
type
(
n
);
"function"
===
i
?
e
.
unique
&&
p
.
has
(
n
)
||
l
.
push
(
n
):
n
&&
n
.
length
&&
"string"
!==
i
&&
r
(
n
)})})(
arguments
),
o
?
s
=
l
.
length
:
n
&&
(
a
=
t
,
f
(
n
))}
return
this
},
remove
:
function
(){
return
l
&&
st
.
each
(
arguments
,
function
(
e
,
t
){
for
(
var
n
;(
n
=
st
.
inArray
(
t
,
l
,
n
))
>-
1
;)
l
.
splice
(
n
,
1
),
o
&&
(
s
>=
n
&&
s
--
,
u
>=
n
&&
u
--
)}),
this
},
has
:
function
(
e
){
return
st
.
inArray
(
e
,
l
)
>-
1
},
empty
:
function
(){
return
l
=
[],
this
},
disable
:
function
(){
return
l
=
c
=
n
=
t
,
this
},
disabled
:
function
(){
return
!
l
},
lock
:
function
(){
return
c
=
t
,
n
||
p
.
disable
(),
this
},
locked
:
function
(){
return
!
c
},
fireWith
:
function
(
e
,
t
){
return
t
=
t
||
[],
t
=
[
e
,
t
.
slice
?
t
.
slice
():
t
],
!
l
||
i
&&!
c
||
(
o
?
c
.
push
(
t
):
f
(
t
)),
this
},
fire
:
function
(){
return
p
.
fireWith
(
this
,
arguments
),
this
},
fired
:
function
(){
return
!!
i
}};
return
p
},
st
.
extend
({
Deferred
:
function
(
e
){
var
t
=
[[
"resolve"
,
"done"
,
st
.
Callbacks
(
"once memory"
),
"resolved"
],[
"reject"
,
"fail"
,
st
.
Callbacks
(
"once memory"
),
"rejected"
],[
"notify"
,
"progress"
,
st
.
Callbacks
(
"memory"
)]],
n
=
"pending"
,
r
=
{
state
:
function
(){
return
n
},
always
:
function
(){
return
i
.
done
(
arguments
).
fail
(
arguments
),
this
},
then
:
function
(){
var
e
=
arguments
;
return
st
.
Deferred
(
function
(
n
){
st
.
each
(
t
,
function
(
t
,
o
){
var
a
=
o
[
0
],
s
=
st
.
isFunction
(
e
[
t
])
&&
e
[
t
];
i
[
o
[
1
]](
function
(){
var
e
=
s
&&
s
.
apply
(
this
,
arguments
);
e
&&
st
.
isFunction
(
e
.
promise
)?
e
.
promise
().
done
(
n
.
resolve
).
fail
(
n
.
reject
).
progress
(
n
.
notify
):
n
[
a
+
"With"
](
this
===
r
?
n
.
promise
():
this
,
s
?[
e
]:
arguments
)})}),
e
=
null
}).
promise
()},
promise
:
function
(
e
){
return
null
!=
e
?
st
.
extend
(
e
,
r
):
r
}},
i
=
{};
return
r
.
pipe
=
r
.
then
,
st
.
each
(
t
,
function
(
e
,
o
){
var
a
=
o
[
2
],
s
=
o
[
3
];
r
[
o
[
1
]]
=
a
.
add
,
s
&&
a
.
add
(
function
(){
n
=
s
},
t
[
1
^
e
][
2
].
disable
,
t
[
2
][
2
].
lock
),
i
[
o
[
0
]]
=
function
(){
return
i
[
o
[
0
]
+
"With"
](
this
===
i
?
r
:
this
,
arguments
),
this
},
i
[
o
[
0
]
+
"With"
]
=
a
.
fireWith
}),
r
.
promise
(
i
),
e
&&
e
.
call
(
i
,
i
),
i
},
when
:
function
(
e
){
var
t
,
n
,
r
,
i
=
0
,
o
=
nt
.
call
(
arguments
),
a
=
o
.
length
,
s
=
1
!==
a
||
e
&&
st
.
isFunction
(
e
.
promise
)?
a
:
0
,
u
=
1
===
s
?
e
:
st
.
Deferred
(),
l
=
function
(
e
,
n
,
r
){
return
function
(
i
){
n
[
e
]
=
this
,
r
[
e
]
=
arguments
.
length
>
1
?
nt
.
call
(
arguments
):
i
,
r
===
t
?
u
.
notifyWith
(
n
,
r
):
--
s
||
u
.
resolveWith
(
n
,
r
)}};
if
(
a
>
1
)
for
(
t
=
Array
(
a
),
n
=
Array
(
a
),
r
=
Array
(
a
);
a
>
i
;
i
++
)
o
[
i
]
&&
st
.
isFunction
(
o
[
i
].
promise
)?
o
[
i
].
promise
().
done
(
l
(
i
,
r
,
o
)).
fail
(
u
.
reject
).
progress
(
l
(
i
,
n
,
t
)):
--
s
;
return
s
||
u
.
resolveWith
(
r
,
o
),
u
.
promise
()}}),
st
.
support
=
function
(){
var
n
,
r
,
i
,
o
,
a
,
s
,
u
,
l
,
c
,
f
,
p
=
V
.
createElement
(
"div"
);
if
(
p
.
setAttribute
(
"className"
,
"t"
),
p
.
innerHTML
=
" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>"
,
r
=
p
.
getElementsByTagName
(
"*"
),
i
=
p
.
getElementsByTagName
(
"a"
)[
0
],
!
r
||!
i
||!
r
.
length
)
return
{};
o
=
V
.
createElement
(
"select"
),
a
=
o
.
appendChild
(
V
.
createElement
(
"option"
)),
s
=
p
.
getElementsByTagName
(
"input"
)[
0
],
i
.
style
.
cssText
=
"top:1px;float:left;opacity:.5"
,
n
=
{
getSetAttribute
:
"t"
!==
p
.
className
,
leadingWhitespace
:
3
===
p
.
firstChild
.
nodeType
,
tbody
:
!
p
.
getElementsByTagName
(
"tbody"
).
length
,
htmlSerialize
:
!!
p
.
getElementsByTagName
(
"link"
).
length
,
style
:
/top/
.
test
(
i
.
getAttribute
(
"style"
)),
hrefNormalized
:
"/a"
===
i
.
getAttribute
(
"href"
),
opacity
:
/^0.5/
.
test
(
i
.
style
.
opacity
),
cssFloat
:
!!
i
.
style
.
cssFloat
,
checkOn
:
!!
s
.
value
,
optSelected
:
a
.
selected
,
enctype
:
!!
V
.
createElement
(
"form"
).
enctype
,
html5Clone
:
"<:nav></:nav>"
!==
V
.
createElement
(
"nav"
).
cloneNode
(
!
0
).
outerHTML
,
boxModel
:
"CSS1Compat"
===
V
.
compatMode
,
deleteExpando
:
!
0
,
noCloneEvent
:
!
0
,
inlineBlockNeedsLayout
:
!
1
,
shrinkWrapBlocks
:
!
1
,
reliableMarginRight
:
!
0
,
boxSizingReliable
:
!
0
,
pixelPosition
:
!
1
},
s
.
checked
=!
0
,
n
.
noCloneChecked
=
s
.
cloneNode
(
!
0
).
checked
,
o
.
disabled
=!
0
,
n
.
optDisabled
=!
a
.
disabled
;
try
{
delete
p
.
test
}
catch
(
d
){
n
.
deleteExpando
=!
1
}
s
=
V
.
createElement
(
"input"
),
s
.
setAttribute
(
"value"
,
""
),
n
.
input
=
""
===
s
.
getAttribute
(
"value"
),
s
.
value
=
"t"
,
s
.
setAttribute
(
"type"
,
"radio"
),
n
.
radioValue
=
"t"
===
s
.
value
,
s
.
setAttribute
(
"checked"
,
"t"
),
s
.
setAttribute
(
"name"
,
"t"
),
u
=
V
.
createDocumentFragment
(),
u
.
appendChild
(
s
),
n
.
appendChecked
=
s
.
checked
,
n
.
checkClone
=
u
.
cloneNode
(
!
0
).
cloneNode
(
!
0
).
lastChild
.
checked
,
p
.
attachEvent
&&
(
p
.
attachEvent
(
"onclick"
,
function
(){
n
.
noCloneEvent
=!
1
}),
p
.
cloneNode
(
!
0
).
click
());
for
(
f
in
{
submit
:
!
0
,
change
:
!
0
,
focusin
:
!
0
})
p
.
setAttribute
(
l
=
"on"
+
f
,
"t"
),
n
[
f
+
"Bubbles"
]
=
l
in
e
||
p
.
attributes
[
l
].
expando
===!
1
;
return
p
.
style
.
backgroundClip
=
"content-box"
,
p
.
cloneNode
(
!
0
).
style
.
backgroundClip
=
""
,
n
.
clearCloneStyle
=
"content-box"
===
p
.
style
.
backgroundClip
,
st
(
function
(){
var
r
,
i
,
o
,
a
=
"padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;"
,
s
=
V
.
getElementsByTagName
(
"body"
)[
0
];
s
&&
(
r
=
V
.
createElement
(
"div"
),
r
.
style
.
cssText
=
"border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px"
,
s
.
appendChild
(
r
).
appendChild
(
p
),
p
.
innerHTML
=
"<table><tr><td></td><td>t</td></tr></table>"
,
o
=
p
.
getElementsByTagName
(
"td"
),
o
[
0
].
style
.
cssText
=
"padding:0;margin:0;border:0;display:none"
,
c
=
0
===
o
[
0
].
offsetHeight
,
o
[
0
].
style
.
display
=
""
,
o
[
1
].
style
.
display
=
"none"
,
n
.
reliableHiddenOffsets
=
c
&&
0
===
o
[
0
].
offsetHeight
,
p
.
innerHTML
=
""
,
p
.
style
.
cssText
=
"box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"
,
n
.
boxSizing
=
4
===
p
.
offsetWidth
,
n
.
doesNotIncludeMarginInBodyOffset
=
1
!==
s
.
offsetTop
,
e
.
getComputedStyle
&&
(
n
.
pixelPosition
=
"1%"
!==
(
e
.
getComputedStyle
(
p
,
null
)
||
{}).
top
,
n
.
boxSizingReliable
=
"4px"
===
(
e
.
getComputedStyle
(
p
,
null
)
||
{
width
:
"4px"
}).
width
,
i
=
p
.
appendChild
(
V
.
createElement
(
"div"
)),
i
.
style
.
cssText
=
p
.
style
.
cssText
=
a
,
i
.
style
.
marginRight
=
i
.
style
.
width
=
"0"
,
p
.
style
.
width
=
"1px"
,
n
.
reliableMarginRight
=!
parseFloat
((
e
.
getComputedStyle
(
i
,
null
)
||
{}).
marginRight
)),
p
.
style
.
zoom
!==
t
&&
(
p
.
innerHTML
=
""
,
p
.
style
.
cssText
=
a
+
"width:1px;padding:1px;display:inline;zoom:1"
,
n
.
inlineBlockNeedsLayout
=
3
===
p
.
offsetWidth
,
p
.
style
.
display
=
"block"
,
p
.
innerHTML
=
"<div></div>"
,
p
.
firstChild
.
style
.
width
=
"5px"
,
n
.
shrinkWrapBlocks
=
3
!==
p
.
offsetWidth
,
s
.
style
.
zoom
=
1
),
s
.
removeChild
(
r
),
r
=
p
=
o
=
i
=
null
)}),
r
=
o
=
u
=
a
=
i
=
s
=
null
,
n
}();
var
wt
=
/
(?:\{[\s\S]
*
\}
|
\[[\s\S]
*
\])
$/
,
Nt
=
/
([
A-Z
])
/g
;
st
.
extend
({
cache
:{},
expando
:
"jQuery"
+
(
Z
+
Math
.
random
()).
replace
(
/
\D
/g
,
""
),
noData
:{
embed
:
!
0
,
object
:
"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
,
applet
:
!
0
},
hasData
:
function
(
e
){
return
e
=
e
.
nodeType
?
st
.
cache
[
e
[
st
.
expando
]]:
e
[
st
.
expando
],
!!
e
&&!
s
(
e
)},
data
:
function
(
e
,
t
,
n
){
return
i
(
e
,
t
,
n
,
!
1
)},
removeData
:
function
(
e
,
t
){
return
o
(
e
,
t
,
!
1
)},
_data
:
function
(
e
,
t
,
n
){
return
i
(
e
,
t
,
n
,
!
0
)},
_removeData
:
function
(
e
,
t
){
return
o
(
e
,
t
,
!
0
)},
acceptData
:
function
(
e
){
var
t
=
e
.
nodeName
&&
st
.
noData
[
e
.
nodeName
.
toLowerCase
()];
return
!
t
||
t
!==!
0
&&
e
.
getAttribute
(
"classid"
)
===
t
}}),
st
.
fn
.
extend
({
data
:
function
(
e
,
n
){
var
r
,
i
,
o
=
this
[
0
],
s
=
0
,
u
=
null
;
if
(
e
===
t
){
if
(
this
.
length
&&
(
u
=
st
.
data
(
o
),
1
===
o
.
nodeType
&&!
st
.
_data
(
o
,
"parsedAttrs"
))){
for
(
r
=
o
.
attributes
;
r
.
length
>
s
;
s
++
)
i
=
r
[
s
].
name
,
i
.
indexOf
(
"data-"
)
||
(
i
=
st
.
camelCase
(
i
.
substring
(
5
)),
a
(
o
,
i
,
u
[
i
]));
st
.
_data
(
o
,
"parsedAttrs"
,
!
0
)}
return
u
}
return
"object"
==
typeof
e
?
this
.
each
(
function
(){
st
.
data
(
this
,
e
)}):
st
.
access
(
this
,
function
(
n
){
return
n
===
t
?
o
?
a
(
o
,
e
,
st
.
data
(
o
,
e
)):
null
:(
this
.
each
(
function
(){
st
.
data
(
this
,
e
,
n
)}),
t
)},
null
,
n
,
arguments
.
length
>
1
,
null
,
!
0
)},
removeData
:
function
(
e
){
return
this
.
each
(
function
(){
st
.
removeData
(
this
,
e
)})}}),
st
.
extend
({
queue
:
function
(
e
,
n
,
r
){
var
i
;
return
e
?(
n
=
(
n
||
"fx"
)
+
"queue"
,
i
=
st
.
_data
(
e
,
n
),
r
&&
(
!
i
||
st
.
isArray
(
r
)?
i
=
st
.
_data
(
e
,
n
,
st
.
makeArray
(
r
)):
i
.
push
(
r
)),
i
||
[]):
t
},
dequeue
:
function
(
e
,
t
){
t
=
t
||
"fx"
;
var
n
=
st
.
queue
(
e
,
t
),
r
=
n
.
length
,
i
=
n
.
shift
(),
o
=
st
.
_queueHooks
(
e
,
t
),
a
=
function
(){
st
.
dequeue
(
e
,
t
)};
"inprogress"
===
i
&&
(
i
=
n
.
shift
(),
r
--
),
o
.
cur
=
i
,
i
&&
(
"fx"
===
t
&&
n
.
unshift
(
"inprogress"
),
delete
o
.
stop
,
i
.
call
(
e
,
a
,
o
)),
!
r
&&
o
&&
o
.
empty
.
fire
()},
_queueHooks
:
function
(
e
,
t
){
var
n
=
t
+
"queueHooks"
;
return
st
.
_data
(
e
,
n
)
||
st
.
_data
(
e
,
n
,{
empty
:
st
.
Callbacks
(
"once memory"
).
add
(
function
(){
st
.
_removeData
(
e
,
t
+
"queue"
),
st
.
_removeData
(
e
,
n
)})})}}),
st
.
fn
.
extend
({
queue
:
function
(
e
,
n
){
var
r
=
2
;
return
"string"
!=
typeof
e
&&
(
n
=
e
,
e
=
"fx"
,
r
--
),
r
>
arguments
.
length
?
st
.
queue
(
this
[
0
],
e
):
n
===
t
?
this
:
this
.
each
(
function
(){
var
t
=
st
.
queue
(
this
,
e
,
n
);
st
.
_queueHooks
(
this
,
e
),
"fx"
===
e
&&
"inprogress"
!==
t
[
0
]
&&
st
.
dequeue
(
this
,
e
)})},
dequeue
:
function
(
e
){
return
this
.
each
(
function
(){
st
.
dequeue
(
this
,
e
)})},
delay
:
function
(
e
,
t
){
return
e
=
st
.
fx
?
st
.
fx
.
speeds
[
e
]
||
e
:
e
,
t
=
t
||
"fx"
,
this
.
queue
(
t
,
function
(
t
,
n
){
var
r
=
setTimeout
(
t
,
e
);
n
.
stop
=
function
(){
clearTimeout
(
r
)}})},
clearQueue
:
function
(
e
){
return
this
.
queue
(
e
||
"fx"
,[])},
promise
:
function
(
e
,
n
){
var
r
,
i
=
1
,
o
=
st
.
Deferred
(),
a
=
this
,
s
=
this
.
length
,
u
=
function
(){
--
i
||
o
.
resolveWith
(
a
,[
a
])};
for
(
"string"
!=
typeof
e
&&
(
n
=
e
,
e
=
t
),
e
=
e
||
"fx"
;
s
--
;)
r
=
st
.
_data
(
a
[
s
],
e
+
"queueHooks"
),
r
&&
r
.
empty
&&
(
i
++
,
r
.
empty
.
add
(
u
));
return
u
(),
o
.
promise
(
n
)}});
var
Ct
,
kt
,
Et
=
/
[\t\r\n]
/g
,
St
=
/
\r
/g
,
At
=
/^
(?:
input|select|textarea|button|object
)
$/i
,
jt
=
/^
(?:
a|area
)
$/i
,
Dt
=
/^
(?:
checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped
)
$/i
,
Lt
=
/^
(?:
checked|selected
)
$/i
,
Ht
=
st
.
support
.
getSetAttribute
,
Mt
=
st
.
support
.
input
;
st
.
fn
.
extend
({
attr
:
function
(
e
,
t
){
return
st
.
access
(
this
,
st
.
attr
,
e
,
t
,
arguments
.
length
>
1
)},
removeAttr
:
function
(
e
){
return
this
.
each
(
function
(){
st
.
removeAttr
(
this
,
e
)})},
prop
:
function
(
e
,
t
){
return
st
.
access
(
this
,
st
.
prop
,
e
,
t
,
arguments
.
length
>
1
)},
removeProp
:
function
(
e
){
return
e
=
st
.
propFix
[
e
]
||
e
,
this
.
each
(
function
(){
try
{
this
[
e
]
=
t
,
delete
this
[
e
]}
catch
(
n
){}})},
addClass
:
function
(
e
){
var
t
,
n
,
r
,
i
,
o
,
a
=
0
,
s
=
this
.
length
,
u
=
"string"
==
typeof
e
&&
e
;
if
(
st
.
isFunction
(
e
))
return
this
.
each
(
function
(
t
){
st
(
this
).
addClass
(
e
.
call
(
this
,
t
,
this
.
className
))});
if
(
u
)
for
(
t
=
(
e
||
""
).
match
(
lt
)
||
[];
s
>
a
;
a
++
)
if
(
n
=
this
[
a
],
r
=
1
===
n
.
nodeType
&&
(
n
.
className
?(
" "
+
n
.
className
+
" "
).
replace
(
Et
,
" "
):
" "
)){
for
(
o
=
0
;
i
=
t
[
o
++
];)
0
>
r
.
indexOf
(
" "
+
i
+
" "
)
&&
(
r
+=
i
+
" "
);
n
.
className
=
st
.
trim
(
r
)}
return
this
},
removeClass
:
function
(
e
){
var
t
,
n
,
r
,
i
,
o
,
a
=
0
,
s
=
this
.
length
,
u
=
0
===
arguments
.
length
||
"string"
==
typeof
e
&&
e
;
if
(
st
.
isFunction
(
e
))
return
this
.
each
(
function
(
t
){
st
(
this
).
removeClass
(
e
.
call
(
this
,
t
,
this
.
className
))});
if
(
u
)
for
(
t
=
(
e
||
""
).
match
(
lt
)
||
[];
s
>
a
;
a
++
)
if
(
n
=
this
[
a
],
r
=
1
===
n
.
nodeType
&&
(
n
.
className
?(
" "
+
n
.
className
+
" "
).
replace
(
Et
,
" "
):
""
)){
for
(
o
=
0
;
i
=
t
[
o
++
];)
for
(;
r
.
indexOf
(
" "
+
i
+
" "
)
>=
0
;)
r
=
r
.
replace
(
" "
+
i
+
" "
,
" "
);
n
.
className
=
e
?
st
.
trim
(
r
):
""
}
return
this
},
toggleClass
:
function
(
e
,
t
){
var
n
=
typeof
e
,
r
=
"boolean"
==
typeof
t
;
return
st
.
isFunction
(
e
)?
this
.
each
(
function
(
n
){
st
(
this
).
toggleClass
(
e
.
call
(
this
,
n
,
this
.
className
,
t
),
t
)}):
this
.
each
(
function
(){
if
(
"string"
===
n
)
for
(
var
i
,
o
=
0
,
a
=
st
(
this
),
s
=
t
,
u
=
e
.
match
(
lt
)
||
[];
i
=
u
[
o
++
];)
s
=
r
?
s
:
!
a
.
hasClass
(
i
),
a
[
s
?
"addClass"
:
"removeClass"
](
i
);
else
(
"undefined"
===
n
||
"boolean"
===
n
)
&&
(
this
.
className
&&
st
.
_data
(
this
,
"__className__"
,
this
.
className
),
this
.
className
=
this
.
className
||
e
===!
1
?
""
:
st
.
_data
(
this
,
"__className__"
)
||
""
)})},
hasClass
:
function
(
e
){
for
(
var
t
=
" "
+
e
+
" "
,
n
=
0
,
r
=
this
.
length
;
r
>
n
;
n
++
)
if
(
1
===
this
[
n
].
nodeType
&&
(
" "
+
this
[
n
].
className
+
" "
).
replace
(
Et
,
" "
).
indexOf
(
t
)
>=
0
)
return
!
0
;
return
!
1
},
val
:
function
(
e
){
var
n
,
r
,
i
,
o
=
this
[
0
];{
if
(
arguments
.
length
)
return
i
=
st
.
isFunction
(
e
),
this
.
each
(
function
(
r
){
var
o
,
a
=
st
(
this
);
1
===
this
.
nodeType
&&
(
o
=
i
?
e
.
call
(
this
,
r
,
a
.
val
()):
e
,
null
==
o
?
o
=
""
:
"number"
==
typeof
o
?
o
+=
""
:
st
.
isArray
(
o
)
&&
(
o
=
st
.
map
(
o
,
function
(
e
){
return
null
==
e
?
""
:
e
+
""
})),
n
=
st
.
valHooks
[
this
.
type
]
||
st
.
valHooks
[
this
.
nodeName
.
toLowerCase
()],
n
&&
"set"
in
n
&&
n
.
set
(
this
,
o
,
"value"
)
!==
t
||
(
this
.
value
=
o
))});
if
(
o
)
return
n
=
st
.
valHooks
[
o
.
type
]
||
st
.
valHooks
[
o
.
nodeName
.
toLowerCase
()],
n
&&
"get"
in
n
&&
(
r
=
n
.
get
(
o
,
"value"
))
!==
t
?
r
:(
r
=
o
.
value
,
"string"
==
typeof
r
?
r
.
replace
(
St
,
""
):
null
==
r
?
""
:
r
)}}}),
st
.
extend
({
valHooks
:{
option
:{
get
:
function
(
e
){
var
t
=
e
.
attributes
.
value
;
return
!
t
||
t
.
specified
?
e
.
value
:
e
.
text
}},
select
:{
get
:
function
(
e
){
for
(
var
t
,
n
,
r
=
e
.
options
,
i
=
e
.
selectedIndex
,
o
=
"select-one"
===
e
.
type
||
0
>
i
,
a
=
o
?
null
:[],
s
=
o
?
i
+
1
:
r
.
length
,
u
=
0
>
i
?
s
:
o
?
i
:
0
;
s
>
u
;
u
++
)
if
(
n
=
r
[
u
],
!
(
!
n
.
selected
&&
u
!==
i
||
(
st
.
support
.
optDisabled
?
n
.
disabled
:
null
!==
n
.
getAttribute
(
"disabled"
))
||
n
.
parentNode
.
disabled
&&
st
.
nodeName
(
n
.
parentNode
,
"optgroup"
))){
if
(
t
=
st
(
n
).
val
(),
o
)
return
t
;
a
.
push
(
t
)}
return
a
},
set
:
function
(
e
,
t
){
var
n
=
st
.
makeArray
(
t
);
return
st
(
e
).
find
(
"option"
).
each
(
function
(){
this
.
selected
=
st
.
inArray
(
st
(
this
).
val
(),
n
)
>=
0
}),
n
.
length
||
(
e
.
selectedIndex
=-
1
),
n
}}},
attr
:
function
(
e
,
n
,
r
){
var
i
,
o
,
a
,
s
=
e
.
nodeType
;
if
(
e
&&
3
!==
s
&&
8
!==
s
&&
2
!==
s
)
return
e
.
getAttribute
===
t
?
st
.
prop
(
e
,
n
,
r
):(
a
=
1
!==
s
||!
st
.
isXMLDoc
(
e
),
a
&&
(
n
=
n
.
toLowerCase
(),
o
=
st
.
attrHooks
[
n
]
||
(
Dt
.
test
(
n
)?
kt
:
Ct
)),
r
===
t
?
o
&&
a
&&
"get"
in
o
&&
null
!==
(
i
=
o
.
get
(
e
,
n
))?
i
:(
e
.
getAttribute
!==
t
&&
(
i
=
e
.
getAttribute
(
n
)),
null
==
i
?
t
:
i
):
null
!==
r
?
o
&&
a
&&
"set"
in
o
&&
(
i
=
o
.
set
(
e
,
r
,
n
))
!==
t
?
i
:(
e
.
setAttribute
(
n
,
r
+
""
),
r
):(
st
.
removeAttr
(
e
,
n
),
t
))},
removeAttr
:
function
(
e
,
t
){
var
n
,
r
,
i
=
0
,
o
=
t
&&
t
.
match
(
lt
);
if
(
o
&&
1
===
e
.
nodeType
)
for
(;
n
=
o
[
i
++
];)
r
=
st
.
propFix
[
n
]
||
n
,
Dt
.
test
(
n
)?
!
Ht
&&
Lt
.
test
(
n
)?
e
[
st
.
camelCase
(
"default-"
+
n
)]
=
e
[
r
]
=!
1
:
e
[
r
]
=!
1
:
st
.
attr
(
e
,
n
,
""
),
e
.
removeAttribute
(
Ht
?
n
:
r
)},
attrHooks
:{
type
:{
set
:
function
(
e
,
t
){
if
(
!
st
.
support
.
radioValue
&&
"radio"
===
t
&&
st
.
nodeName
(
e
,
"input"
)){
var
n
=
e
.
value
;
return
e
.
setAttribute
(
"type"
,
t
),
n
&&
(
e
.
value
=
n
),
t
}}}},
propFix
:{
tabindex
:
"tabIndex"
,
readonly
:
"readOnly"
,
"for"
:
"htmlFor"
,
"class"
:
"className"
,
maxlength
:
"maxLength"
,
cellspacing
:
"cellSpacing"
,
cellpadding
:
"cellPadding"
,
rowspan
:
"rowSpan"
,
colspan
:
"colSpan"
,
usemap
:
"useMap"
,
frameborder
:
"frameBorder"
,
contenteditable
:
"contentEditable"
},
prop
:
function
(
e
,
n
,
r
){
var
i
,
o
,
a
,
s
=
e
.
nodeType
;
if
(
e
&&
3
!==
s
&&
8
!==
s
&&
2
!==
s
)
return
a
=
1
!==
s
||!
st
.
isXMLDoc
(
e
),
a
&&
(
n
=
st
.
propFix
[
n
]
||
n
,
o
=
st
.
propHooks
[
n
]),
r
!==
t
?
o
&&
"set"
in
o
&&
(
i
=
o
.
set
(
e
,
r
,
n
))
!==
t
?
i
:
e
[
n
]
=
r
:
o
&&
"get"
in
o
&&
null
!==
(
i
=
o
.
get
(
e
,
n
))?
i
:
e
[
n
]},
propHooks
:{
tabIndex
:{
get
:
function
(
e
){
var
n
=
e
.
getAttributeNode
(
"tabindex"
);
return
n
&&
n
.
specified
?
parseInt
(
n
.
value
,
10
):
At
.
test
(
e
.
nodeName
)
||
jt
.
test
(
e
.
nodeName
)
&&
e
.
href
?
0
:
t
}}}}),
kt
=
{
get
:
function
(
e
,
n
){
var
r
=
st
.
prop
(
e
,
n
),
i
=
"boolean"
==
typeof
r
&&
e
.
getAttribute
(
n
),
o
=
"boolean"
==
typeof
r
?
Mt
&&
Ht
?
null
!=
i
:
Lt
.
test
(
n
)?
e
[
st
.
camelCase
(
"default-"
+
n
)]:
!!
i
:
e
.
getAttributeNode
(
n
);
return
o
&&
o
.
value
!==!
1
?
n
.
toLowerCase
():
t
},
set
:
function
(
e
,
t
,
n
){
return
t
===!
1
?
st
.
removeAttr
(
e
,
n
):
Mt
&&
Ht
||!
Lt
.
test
(
n
)?
e
.
setAttribute
(
!
Ht
&&
st
.
propFix
[
n
]
||
n
,
n
):
e
[
st
.
camelCase
(
"default-"
+
n
)]
=
e
[
n
]
=!
0
,
n
}},
Mt
&&
Ht
||
(
st
.
attrHooks
.
value
=
{
get
:
function
(
e
,
n
){
var
r
=
e
.
getAttributeNode
(
n
);
return
st
.
nodeName
(
e
,
"input"
)?
e
.
defaultValue
:
r
&&
r
.
specified
?
r
.
value
:
t
},
set
:
function
(
e
,
n
,
r
){
return
st
.
nodeName
(
e
,
"input"
)?(
e
.
defaultValue
=
n
,
t
):
Ct
&&
Ct
.
set
(
e
,
n
,
r
)}}),
Ht
||
(
Ct
=
st
.
valHooks
.
button
=
{
get
:
function
(
e
,
n
){
var
r
=
e
.
getAttributeNode
(
n
);
return
r
&&
(
"id"
===
n
||
"name"
===
n
||
"coords"
===
n
?
""
!==
r
.
value
:
r
.
specified
)?
r
.
value
:
t
},
set
:
function
(
e
,
n
,
r
){
var
i
=
e
.
getAttributeNode
(
r
);
return
i
||
e
.
setAttributeNode
(
i
=
e
.
ownerDocument
.
createAttribute
(
r
)),
i
.
value
=
n
+=
""
,
"value"
===
r
||
n
===
e
.
getAttribute
(
r
)?
n
:
t
}},
st
.
attrHooks
.
contenteditable
=
{
get
:
Ct
.
get
,
set
:
function
(
e
,
t
,
n
){
Ct
.
set
(
e
,
""
===
t
?
!
1
:
t
,
n
)}},
st
.
each
([
"width"
,
"height"
],
function
(
e
,
n
){
st
.
attrHooks
[
n
]
=
st
.
extend
(
st
.
attrHooks
[
n
],{
set
:
function
(
e
,
r
){
return
""
===
r
?(
e
.
setAttribute
(
n
,
"auto"
),
r
):
t
}})})),
st
.
support
.
hrefNormalized
||
(
st
.
each
([
"href"
,
"src"
,
"width"
,
"height"
],
function
(
e
,
n
){
st
.
attrHooks
[
n
]
=
st
.
extend
(
st
.
attrHooks
[
n
],{
get
:
function
(
e
){
var
r
=
e
.
getAttribute
(
n
,
2
);
return
null
==
r
?
t
:
r
}})}),
st
.
each
([
"href"
,
"src"
],
function
(
e
,
t
){
st
.
propHooks
[
t
]
=
{
get
:
function
(
e
){
return
e
.
getAttribute
(
t
,
4
)}}})),
st
.
support
.
style
||
(
st
.
attrHooks
.
style
=
{
get
:
function
(
e
){
return
e
.
style
.
cssText
||
t
},
set
:
function
(
e
,
t
){
return
e
.
style
.
cssText
=
t
+
""
}}),
st
.
support
.
optSelected
||
(
st
.
propHooks
.
selected
=
st
.
extend
(
st
.
propHooks
.
selected
,{
get
:
function
(
e
){
var
t
=
e
.
parentNode
;
return
t
&&
(
t
.
selectedIndex
,
t
.
parentNode
&&
t
.
parentNode
.
selectedIndex
),
null
}})),
st
.
support
.
enctype
||
(
st
.
propFix
.
enctype
=
"encoding"
),
st
.
support
.
checkOn
||
st
.
each
([
"radio"
,
"checkbox"
],
function
(){
st
.
valHooks
[
this
]
=
{
get
:
function
(
e
){
return
null
===
e
.
getAttribute
(
"value"
)?
"on"
:
e
.
value
}}}),
st
.
each
([
"radio"
,
"checkbox"
],
function
(){
st
.
valHooks
[
this
]
=
st
.
extend
(
st
.
valHooks
[
this
],{
set
:
function
(
e
,
n
){
return
st
.
isArray
(
n
)?
e
.
checked
=
st
.
inArray
(
st
(
e
).
val
(),
n
)
>=
0
:
t
}})});
var
qt
=
/^
(?:
input|select|textarea
)
$/i
,
_t
=
/^key/
,
Ft
=
/^
(?:
mouse|contextmenu
)
|click/
,
Ot
=
/^
(?:
focusinfocus|focusoutblur
)
$/
,
Bt
=
/^
([^
.
]
*
)(?:\.(
.+
)
|
)
$/
;
st
.
event
=
{
global
:{},
add
:
function
(
e
,
n
,
r
,
i
,
o
){
var
a
,
s
,
u
,
l
,
c
,
f
,
p
,
d
,
h
,
g
,
m
,
y
=
3
!==
e
.
nodeType
&&
8
!==
e
.
nodeType
&&
st
.
_data
(
e
);
if
(
y
){
for
(
r
.
handler
&&
(
a
=
r
,
r
=
a
.
handler
,
o
=
a
.
selector
),
r
.
guid
||
(
r
.
guid
=
st
.
guid
++
),(
l
=
y
.
events
)
||
(
l
=
y
.
events
=
{}),(
s
=
y
.
handle
)
||
(
s
=
y
.
handle
=
function
(
e
){
return
st
===
t
||
e
&&
st
.
event
.
triggered
===
e
.
type
?
t
:
st
.
event
.
dispatch
.
apply
(
s
.
elem
,
arguments
)},
s
.
elem
=
e
),
n
=
(
n
||
""
).
match
(
lt
)
||
[
""
],
c
=
n
.
length
;
c
--
;)
u
=
Bt
.
exec
(
n
[
c
])
||
[],
h
=
m
=
u
[
1
],
g
=
(
u
[
2
]
||
""
).
split
(
"."
).
sort
(),
p
=
st
.
event
.
special
[
h
]
||
{},
h
=
(
o
?
p
.
delegateType
:
p
.
bindType
)
||
h
,
p
=
st
.
event
.
special
[
h
]
||
{},
f
=
st
.
extend
({
type
:
h
,
origType
:
m
,
data
:
i
,
handler
:
r
,
guid
:
r
.
guid
,
selector
:
o
,
needsContext
:
o
&&
st
.
expr
.
match
.
needsContext
.
test
(
o
),
namespace
:
g
.
join
(
"."
)},
a
),(
d
=
l
[
h
])
||
(
d
=
l
[
h
]
=
[],
d
.
delegateCount
=
0
,
p
.
setup
&&
p
.
setup
.
call
(
e
,
i
,
g
,
s
)
!==!
1
||
(
e
.
addEventListener
?
e
.
addEventListener
(
h
,
s
,
!
1
):
e
.
attachEvent
&&
e
.
attachEvent
(
"on"
+
h
,
s
))),
p
.
add
&&
(
p
.
add
.
call
(
e
,
f
),
f
.
handler
.
guid
||
(
f
.
handler
.
guid
=
r
.
guid
)),
o
?
d
.
splice
(
d
.
delegateCount
++
,
0
,
f
):
d
.
push
(
f
),
st
.
event
.
global
[
h
]
=!
0
;
e
=
null
}},
remove
:
function
(
e
,
t
,
n
,
r
,
i
){
var
o
,
a
,
s
,
u
,
l
,
c
,
f
,
p
,
d
,
h
,
g
,
m
=
st
.
hasData
(
e
)
&&
st
.
_data
(
e
);
if
(
m
&&
(
u
=
m
.
events
)){
for
(
t
=
(
t
||
""
).
match
(
lt
)
||
[
""
],
l
=
t
.
length
;
l
--
;)
if
(
s
=
Bt
.
exec
(
t
[
l
])
||
[],
d
=
g
=
s
[
1
],
h
=
(
s
[
2
]
||
""
).
split
(
"."
).
sort
(),
d
){
for
(
f
=
st
.
event
.
special
[
d
]
||
{},
d
=
(
r
?
f
.
delegateType
:
f
.
bindType
)
||
d
,
p
=
u
[
d
]
||
[],
s
=
s
[
2
]
&&
RegExp
(
"(^|
\\
.)"
+
h
.
join
(
"
\\
.(?:.*
\\
.|)"
)
+
"(
\\
.|$)"
),
a
=
o
=
p
.
length
;
o
--
;)
c
=
p
[
o
],
!
i
&&
g
!==
c
.
origType
||
n
&&
n
.
guid
!==
c
.
guid
||
s
&&!
s
.
test
(
c
.
namespace
)
||
r
&&
r
!==
c
.
selector
&&
(
"**"
!==
r
||!
c
.
selector
)
||
(
p
.
splice
(
o
,
1
),
c
.
selector
&&
p
.
delegateCount
--
,
f
.
remove
&&
f
.
remove
.
call
(
e
,
c
));
a
&&!
p
.
length
&&
(
f
.
teardown
&&
f
.
teardown
.
call
(
e
,
h
,
m
.
handle
)
!==!
1
||
st
.
removeEvent
(
e
,
d
,
m
.
handle
),
delete
u
[
d
])}
else
for
(
d
in
u
)
st
.
event
.
remove
(
e
,
d
+
t
[
l
],
n
,
r
,
!
0
);
st
.
isEmptyObject
(
u
)
&&
(
delete
m
.
handle
,
st
.
_removeData
(
e
,
"events"
))}},
trigger
:
function
(
n
,
r
,
i
,
o
){
var
a
,
s
,
u
,
l
,
c
,
f
,
p
,
d
=
[
i
||
V
],
h
=
n
.
type
||
n
,
g
=
n
.
namespace
?
n
.
namespace
.
split
(
"."
):[];
if
(
s
=
u
=
i
=
i
||
V
,
3
!==
i
.
nodeType
&&
8
!==
i
.
nodeType
&&!
Ot
.
test
(
h
+
st
.
event
.
triggered
)
&&
(
h
.
indexOf
(
"."
)
>=
0
&&
(
g
=
h
.
split
(
"."
),
h
=
g
.
shift
(),
g
.
sort
()),
c
=
0
>
h
.
indexOf
(
":"
)
&&
"on"
+
h
,
n
=
n
[
st
.
expando
]?
n
:
new
st
.
Event
(
h
,
"object"
==
typeof
n
&&
n
),
n
.
isTrigger
=!
0
,
n
.
namespace
=
g
.
join
(
"."
),
n
.
namespace_re
=
n
.
namespace
?
RegExp
(
"(^|
\\
.)"
+
g
.
join
(
"
\\
.(?:.*
\\
.|)"
)
+
"(
\\
.|$)"
):
null
,
n
.
result
=
t
,
n
.
target
||
(
n
.
target
=
i
),
r
=
null
==
r
?[
n
]:
st
.
makeArray
(
r
,[
n
]),
p
=
st
.
event
.
special
[
h
]
||
{},
o
||!
p
.
trigger
||
p
.
trigger
.
apply
(
i
,
r
)
!==!
1
)){
if
(
!
o
&&!
p
.
noBubble
&&!
st
.
isWindow
(
i
)){
for
(
l
=
p
.
delegateType
||
h
,
Ot
.
test
(
l
+
h
)
||
(
s
=
s
.
parentNode
);
s
;
s
=
s
.
parentNode
)
d
.
push
(
s
),
u
=
s
;
u
===
(
i
.
ownerDocument
||
V
)
&&
d
.
push
(
u
.
defaultView
||
u
.
parentWindow
||
e
)}
for
(
a
=
0
;(
s
=
d
[
a
++
])
&&!
n
.
isPropagationStopped
();)
n
.
type
=
a
>
1
?
l
:
p
.
bindType
||
h
,
f
=
(
st
.
_data
(
s
,
"events"
)
||
{})[
n
.
type
]
&&
st
.
_data
(
s
,
"handle"
),
f
&&
f
.
apply
(
s
,
r
),
f
=
c
&&
s
[
c
],
f
&&
st
.
acceptData
(
s
)
&&
f
.
apply
&&
f
.
apply
(
s
,
r
)
===!
1
&&
n
.
preventDefault
();
if
(
n
.
type
=
h
,
!
(
o
||
n
.
isDefaultPrevented
()
||
p
.
_default
&&
p
.
_default
.
apply
(
i
.
ownerDocument
,
r
)
!==!
1
||
"click"
===
h
&&
st
.
nodeName
(
i
,
"a"
)
||!
st
.
acceptData
(
i
)
||!
c
||!
i
[
h
]
||
st
.
isWindow
(
i
))){
u
=
i
[
c
],
u
&&
(
i
[
c
]
=
null
),
st
.
event
.
triggered
=
h
;
try
{
i
[
h
]()}
catch
(
m
){}
st
.
event
.
triggered
=
t
,
u
&&
(
i
[
c
]
=
u
)}
return
n
.
result
}},
dispatch
:
function
(
e
){
e
=
st
.
event
.
fix
(
e
);
var
n
,
r
,
i
,
o
,
a
,
s
=
[],
u
=
nt
.
call
(
arguments
),
l
=
(
st
.
_data
(
this
,
"events"
)
||
{})[
e
.
type
]
||
[],
c
=
st
.
event
.
special
[
e
.
type
]
||
{};
if
(
u
[
0
]
=
e
,
e
.
delegateTarget
=
this
,
!
c
.
preDispatch
||
c
.
preDispatch
.
call
(
this
,
e
)
!==!
1
){
for
(
s
=
st
.
event
.
handlers
.
call
(
this
,
e
,
l
),
n
=
0
;(
o
=
s
[
n
++
])
&&!
e
.
isPropagationStopped
();)
for
(
e
.
currentTarget
=
o
.
elem
,
r
=
0
;(
a
=
o
.
handlers
[
r
++
])
&&!
e
.
isImmediatePropagationStopped
();)(
!
e
.
namespace_re
||
e
.
namespace_re
.
test
(
a
.
namespace
))
&&
(
e
.
handleObj
=
a
,
e
.
data
=
a
.
data
,
i
=
((
st
.
event
.
special
[
a
.
origType
]
||
{}).
handle
||
a
.
handler
).
apply
(
o
.
elem
,
u
),
i
!==
t
&&
(
e
.
result
=
i
)
===!
1
&&
(
e
.
preventDefault
(),
e
.
stopPropagation
()));
return
c
.
postDispatch
&&
c
.
postDispatch
.
call
(
this
,
e
),
e
.
result
}},
handlers
:
function
(
e
,
n
){
var
r
,
i
,
o
,
a
,
s
=
[],
u
=
n
.
delegateCount
,
l
=
e
.
target
;
if
(
u
&&
l
.
nodeType
&&
(
!
e
.
button
||
"click"
!==
e
.
type
))
for
(;
l
!=
this
;
l
=
l
.
parentNode
||
this
)
if
(
l
.
disabled
!==!
0
||
"click"
!==
e
.
type
){
for
(
i
=
[],
r
=
0
;
u
>
r
;
r
++
)
a
=
n
[
r
],
o
=
a
.
selector
+
" "
,
i
[
o
]
===
t
&&
(
i
[
o
]
=
a
.
needsContext
?
st
(
o
,
this
).
index
(
l
)
>=
0
:
st
.
find
(
o
,
this
,
null
,[
l
]).
length
),
i
[
o
]
&&
i
.
push
(
a
);
i
.
length
&&
s
.
push
({
elem
:
l
,
handlers
:
i
})}
return
n
.
length
>
u
&&
s
.
push
({
elem
:
this
,
handlers
:
n
.
slice
(
u
)}),
s
},
fix
:
function
(
e
){
if
(
e
[
st
.
expando
])
return
e
;
var
t
,
n
,
r
=
e
,
i
=
st
.
event
.
fixHooks
[
e
.
type
]
||
{},
o
=
i
.
props
?
this
.
props
.
concat
(
i
.
props
):
this
.
props
;
for
(
e
=
new
st
.
Event
(
r
),
t
=
o
.
length
;
t
--
;)
n
=
o
[
t
],
e
[
n
]
=
r
[
n
];
return
e
.
target
||
(
e
.
target
=
r
.
srcElement
||
V
),
3
===
e
.
target
.
nodeType
&&
(
e
.
target
=
e
.
target
.
parentNode
),
e
.
metaKey
=!!
e
.
metaKey
,
i
.
filter
?
i
.
filter
(
e
,
r
):
e
},
props
:
"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which"
.
split
(
" "
),
fixHooks
:{},
keyHooks
:{
props
:
"char charCode key keyCode"
.
split
(
" "
),
filter
:
function
(
e
,
t
){
return
null
==
e
.
which
&&
(
e
.
which
=
null
!=
t
.
charCode
?
t
.
charCode
:
t
.
keyCode
),
e
}},
mouseHooks
:{
props
:
"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement"
.
split
(
" "
),
filter
:
function
(
e
,
n
){
var
r
,
i
,
o
,
a
=
n
.
button
,
s
=
n
.
fromElement
;
return
null
==
e
.
pageX
&&
null
!=
n
.
clientX
&&
(
r
=
e
.
target
.
ownerDocument
||
V
,
i
=
r
.
documentElement
,
o
=
r
.
body
,
e
.
pageX
=
n
.
clientX
+
(
i
&&
i
.
scrollLeft
||
o
&&
o
.
scrollLeft
||
0
)
-
(
i
&&
i
.
clientLeft
||
o
&&
o
.
clientLeft
||
0
),
e
.
pageY
=
n
.
clientY
+
(
i
&&
i
.
scrollTop
||
o
&&
o
.
scrollTop
||
0
)
-
(
i
&&
i
.
clientTop
||
o
&&
o
.
clientTop
||
0
)),
!
e
.
relatedTarget
&&
s
&&
(
e
.
relatedTarget
=
s
===
e
.
target
?
n
.
toElement
:
s
),
e
.
which
||
a
===
t
||
(
e
.
which
=
1
&
a
?
1
:
2
&
a
?
3
:
4
&
a
?
2
:
0
),
e
}},
special
:{
load
:{
noBubble
:
!
0
},
click
:{
trigger
:
function
(){
return
st
.
nodeName
(
this
,
"input"
)
&&
"checkbox"
===
this
.
type
&&
this
.
click
?(
this
.
click
(),
!
1
):
t
}},
focus
:{
trigger
:
function
(){
if
(
this
!==
V
.
activeElement
&&
this
.
focus
)
try
{
return
this
.
focus
(),
!
1
}
catch
(
e
){}},
delegateType
:
"focusin"
},
blur
:{
trigger
:
function
(){
return
this
===
V
.
activeElement
&&
this
.
blur
?(
this
.
blur
(),
!
1
):
t
},
delegateType
:
"focusout"
},
beforeunload
:{
postDispatch
:
function
(
e
){
e
.
result
!==
t
&&
(
e
.
originalEvent
.
returnValue
=
e
.
result
)}}},
simulate
:
function
(
e
,
t
,
n
,
r
){
var
i
=
st
.
extend
(
new
st
.
Event
,
n
,{
type
:
e
,
isSimulated
:
!
0
,
originalEvent
:{}});
r
?
st
.
event
.
trigger
(
i
,
null
,
t
):
st
.
event
.
dispatch
.
call
(
t
,
i
),
i
.
isDefaultPrevented
()
&&
n
.
preventDefault
()}},
st
.
removeEvent
=
V
.
removeEventListener
?
function
(
e
,
t
,
n
){
e
.
removeEventListener
&&
e
.
removeEventListener
(
t
,
n
,
!
1
)}:
function
(
e
,
n
,
r
){
var
i
=
"on"
+
n
;
e
.
detachEvent
&&
(
e
[
i
]
===
t
&&
(
e
[
i
]
=
null
),
e
.
detachEvent
(
i
,
r
))},
st
.
Event
=
function
(
e
,
n
){
return
this
instanceof
st
.
Event
?(
e
&&
e
.
type
?(
this
.
originalEvent
=
e
,
this
.
type
=
e
.
type
,
this
.
isDefaultPrevented
=
e
.
defaultPrevented
||
e
.
returnValue
===!
1
||
e
.
getPreventDefault
&&
e
.
getPreventDefault
()?
u
:
l
):
this
.
type
=
e
,
n
&&
st
.
extend
(
this
,
n
),
this
.
timeStamp
=
e
&&
e
.
timeStamp
||
st
.
now
(),
this
[
st
.
expando
]
=!
0
,
t
):
new
st
.
Event
(
e
,
n
)},
st
.
Event
.
prototype
=
{
isDefaultPrevented
:
l
,
isPropagationStopped
:
l
,
isImmediatePropagationStopped
:
l
,
preventDefault
:
function
(){
var
e
=
this
.
originalEvent
;
this
.
isDefaultPrevented
=
u
,
e
&&
(
e
.
preventDefault
?
e
.
preventDefault
():
e
.
returnValue
=!
1
)},
stopPropagation
:
function
(){
var
e
=
this
.
originalEvent
;
this
.
isPropagationStopped
=
u
,
e
&&
(
e
.
stopPropagation
&&
e
.
stopPropagation
(),
e
.
cancelBubble
=!
0
)},
stopImmediatePropagation
:
function
(){
this
.
isImmediatePropagationStopped
=
u
,
this
.
stopPropagation
()}},
st
.
each
({
mouseenter
:
"mouseover"
,
mouseleave
:
"mouseout"
},
function
(
e
,
t
){
st
.
event
.
special
[
e
]
=
{
delegateType
:
t
,
bindType
:
t
,
handle
:
function
(
e
){
var
n
,
r
=
this
,
i
=
e
.
relatedTarget
,
o
=
e
.
handleObj
;
return
(
!
i
||
i
!==
r
&&!
st
.
contains
(
r
,
i
))
&&
(
e
.
type
=
o
.
origType
,
n
=
o
.
handler
.
apply
(
this
,
arguments
),
e
.
type
=
t
),
n
}}}),
st
.
support
.
submitBubbles
||
(
st
.
event
.
special
.
submit
=
{
setup
:
function
(){
return
st
.
nodeName
(
this
,
"form"
)?
!
1
:(
st
.
event
.
add
(
this
,
"click._submit keypress._submit"
,
function
(
e
){
var
n
=
e
.
target
,
r
=
st
.
nodeName
(
n
,
"input"
)
||
st
.
nodeName
(
n
,
"button"
)?
n
.
form
:
t
;
r
&&!
st
.
_data
(
r
,
"submitBubbles"
)
&&
(
st
.
event
.
add
(
r
,
"submit._submit"
,
function
(
e
){
e
.
_submit_bubble
=!
0
}),
st
.
_data
(
r
,
"submitBubbles"
,
!
0
))}),
t
)},
postDispatch
:
function
(
e
){
e
.
_submit_bubble
&&
(
delete
e
.
_submit_bubble
,
this
.
parentNode
&&!
e
.
isTrigger
&&
st
.
event
.
simulate
(
"submit"
,
this
.
parentNode
,
e
,
!
0
))},
teardown
:
function
(){
return
st
.
nodeName
(
this
,
"form"
)?
!
1
:(
st
.
event
.
remove
(
this
,
"._submit"
),
t
)}}),
st
.
support
.
changeBubbles
||
(
st
.
event
.
special
.
change
=
{
setup
:
function
(){
return
qt
.
test
(
this
.
nodeName
)?((
"checkbox"
===
this
.
type
||
"radio"
===
this
.
type
)
&&
(
st
.
event
.
add
(
this
,
"propertychange._change"
,
function
(
e
){
"checked"
===
e
.
originalEvent
.
propertyName
&&
(
this
.
_just_changed
=!
0
)}),
st
.
event
.
add
(
this
,
"click._change"
,
function
(
e
){
this
.
_just_changed
&&!
e
.
isTrigger
&&
(
this
.
_just_changed
=!
1
),
st
.
event
.
simulate
(
"change"
,
this
,
e
,
!
0
)})),
!
1
):(
st
.
event
.
add
(
this
,
"beforeactivate._change"
,
function
(
e
){
var
t
=
e
.
target
;
qt
.
test
(
t
.
nodeName
)
&&!
st
.
_data
(
t
,
"changeBubbles"
)
&&
(
st
.
event
.
add
(
t
,
"change._change"
,
function
(
e
){
!
this
.
parentNode
||
e
.
isSimulated
||
e
.
isTrigger
||
st
.
event
.
simulate
(
"change"
,
this
.
parentNode
,
e
,
!
0
)}),
st
.
_data
(
t
,
"changeBubbles"
,
!
0
))}),
t
)},
handle
:
function
(
e
){
var
n
=
e
.
target
;
return
this
!==
n
||
e
.
isSimulated
||
e
.
isTrigger
||
"radio"
!==
n
.
type
&&
"checkbox"
!==
n
.
type
?
e
.
handleObj
.
handler
.
apply
(
this
,
arguments
):
t
},
teardown
:
function
(){
return
st
.
event
.
remove
(
this
,
"._change"
),
!
qt
.
test
(
this
.
nodeName
)}}),
st
.
support
.
focusinBubbles
||
st
.
each
({
focus
:
"focusin"
,
blur
:
"focusout"
},
function
(
e
,
t
){
var
n
=
0
,
r
=
function
(
e
){
st
.
event
.
simulate
(
t
,
e
.
target
,
st
.
event
.
fix
(
e
),
!
0
)};
st
.
event
.
special
[
t
]
=
{
setup
:
function
(){
0
===
n
++&&
V
.
addEventListener
(
e
,
r
,
!
0
)},
teardown
:
function
(){
0
===--
n
&&
V
.
removeEventListener
(
e
,
r
,
!
0
)}}}),
st
.
fn
.
extend
({
on
:
function
(
e
,
n
,
r
,
i
,
o
){
var
a
,
s
;
if
(
"object"
==
typeof
e
){
"string"
!=
typeof
n
&&
(
r
=
r
||
n
,
n
=
t
);
for
(
s
in
e
)
this
.
on
(
s
,
n
,
r
,
e
[
s
],
o
);
return
this
}
if
(
null
==
r
&&
null
==
i
?(
i
=
n
,
r
=
n
=
t
):
null
==
i
&&
(
"string"
==
typeof
n
?(
i
=
r
,
r
=
t
):(
i
=
r
,
r
=
n
,
n
=
t
)),
i
===!
1
)
i
=
l
;
else
if
(
!
i
)
return
this
;
return
1
===
o
&&
(
a
=
i
,
i
=
function
(
e
){
return
st
().
off
(
e
),
a
.
apply
(
this
,
arguments
)},
i
.
guid
=
a
.
guid
||
(
a
.
guid
=
st
.
guid
++
)),
this
.
each
(
function
(){
st
.
event
.
add
(
this
,
e
,
i
,
r
,
n
)})},
one
:
function
(
e
,
t
,
n
,
r
){
return
this
.
on
(
e
,
t
,
n
,
r
,
1
)},
off
:
function
(
e
,
n
,
r
){
var
i
,
o
;
if
(
e
&&
e
.
preventDefault
&&
e
.
handleObj
)
return
i
=
e
.
handleObj
,
st
(
e
.
delegateTarget
).
off
(
i
.
namespace
?
i
.
origType
+
"."
+
i
.
namespace
:
i
.
origType
,
i
.
selector
,
i
.
handler
),
this
;
if
(
"object"
==
typeof
e
){
for
(
o
in
e
)
this
.
off
(
o
,
n
,
e
[
o
]);
return
this
}
return
(
n
===!
1
||
"function"
==
typeof
n
)
&&
(
r
=
n
,
n
=
t
),
r
===!
1
&&
(
r
=
l
),
this
.
each
(
function
(){
st
.
event
.
remove
(
this
,
e
,
r
,
n
)})},
bind
:
function
(
e
,
t
,
n
){
return
this
.
on
(
e
,
null
,
t
,
n
)},
unbind
:
function
(
e
,
t
){
return
this
.
off
(
e
,
null
,
t
)},
delegate
:
function
(
e
,
t
,
n
,
r
){
return
this
.
on
(
t
,
e
,
n
,
r
)},
undelegate
:
function
(
e
,
t
,
n
){
return
1
===
arguments
.
length
?
this
.
off
(
e
,
"**"
):
this
.
off
(
t
,
e
||
"**"
,
n
)},
trigger
:
function
(
e
,
t
){
return
this
.
each
(
function
(){
st
.
event
.
trigger
(
e
,
t
,
this
)})},
triggerHandler
:
function
(
e
,
n
){
var
r
=
this
[
0
];
return
r
?
st
.
event
.
trigger
(
e
,
n
,
r
,
!
0
):
t
},
hover
:
function
(
e
,
t
){
return
this
.
mouseenter
(
e
).
mouseleave
(
t
||
e
)}}),
st
.
each
(
"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu"
.
split
(
" "
),
function
(
e
,
t
){
st
.
fn
[
t
]
=
function
(
e
,
n
){
return
arguments
.
length
>
0
?
this
.
on
(
t
,
null
,
e
,
n
):
this
.
trigger
(
t
)},
_t
.
test
(
t
)
&&
(
st
.
event
.
fixHooks
[
t
]
=
st
.
event
.
keyHooks
),
Ft
.
test
(
t
)
&&
(
st
.
event
.
fixHooks
[
t
]
=
st
.
event
.
mouseHooks
)}),
function
(
e
,
t
){
function
n
(
e
){
return
ht
.
test
(
e
+
""
)}
function
r
(){
var
e
,
t
=
[];
return
e
=
function
(
n
,
r
){
return
t
.
push
(
n
+=
" "
)
>
C
.
cacheLength
&&
delete
e
[
t
.
shift
()],
e
[
n
]
=
r
}}
function
i
(
e
){
return
e
[
P
]
=!
0
,
e
}
function
o
(
e
){
var
t
=
L
.
createElement
(
"div"
);
try
{
return
e
(
t
)}
catch
(
n
){
return
!
1
}
finally
{
t
=
null
}}
function
a
(
e
,
t
,
n
,
r
){
var
i
,
o
,
a
,
s
,
u
,
l
,
c
,
d
,
h
,
g
;
if
((
t
?
t
.
ownerDocument
||
t
:
R
)
!==
L
&&
D
(
t
),
t
=
t
||
L
,
n
=
n
||
[],
!
e
||
"string"
!=
typeof
e
)
return
n
;
if
(
1
!==
(
s
=
t
.
nodeType
)
&&
9
!==
s
)
return
[];
if
(
!
M
&&!
r
){
if
(
i
=
gt
.
exec
(
e
))
if
(
a
=
i
[
1
]){
if
(
9
===
s
){
if
(
o
=
t
.
getElementById
(
a
),
!
o
||!
o
.
parentNode
)
return
n
;
if
(
o
.
id
===
a
)
return
n
.
push
(
o
),
n
}
else
if
(
t
.
ownerDocument
&&
(
o
=
t
.
ownerDocument
.
getElementById
(
a
))
&&
O
(
t
,
o
)
&&
o
.
id
===
a
)
return
n
.
push
(
o
),
n
}
else
{
if
(
i
[
2
])
return
Q
.
apply
(
n
,
K
.
call
(
t
.
getElementsByTagName
(
e
),
0
)),
n
;
if
((
a
=
i
[
3
])
&&
W
.
getByClassName
&&
t
.
getElementsByClassName
)
return
Q
.
apply
(
n
,
K
.
call
(
t
.
getElementsByClassName
(
a
),
0
)),
n
}
if
(
W
.
qsa
&&!
q
.
test
(
e
)){
if
(
c
=!
0
,
d
=
P
,
h
=
t
,
g
=
9
===
s
&&
e
,
1
===
s
&&
"object"
!==
t
.
nodeName
.
toLowerCase
()){
for
(
l
=
f
(
e
),(
c
=
t
.
getAttribute
(
"id"
))?
d
=
c
.
replace
(
vt
,
"
\\
$&"
):
t
.
setAttribute
(
"id"
,
d
),
d
=
"[id='"
+
d
+
"'] "
,
u
=
l
.
length
;
u
--
;)
l
[
u
]
=
d
+
p
(
l
[
u
]);
h
=
dt
.
test
(
e
)
&&
t
.
parentNode
||
t
,
g
=
l
.
join
(
","
)}
if
(
g
)
try
{
return
Q
.
apply
(
n
,
K
.
call
(
h
.
querySelectorAll
(
g
),
0
)),
n
}
catch
(
m
){}
finally
{
c
||
t
.
removeAttribute
(
"id"
)}}}
return
x
(
e
.
replace
(
at
,
"$1"
),
t
,
n
,
r
)}
function
s
(
e
,
t
){
for
(
var
n
=
e
&&
t
&&
e
.
nextSibling
;
n
;
n
=
n
.
nextSibling
)
if
(
n
===
t
)
return
-
1
;
return
e
?
1
:
-
1
}
function
u
(
e
){
return
function
(
t
){
var
n
=
t
.
nodeName
.
toLowerCase
();
return
"input"
===
n
&&
t
.
type
===
e
}}
function
l
(
e
){
return
function
(
t
){
var
n
=
t
.
nodeName
.
toLowerCase
();
return
(
"input"
===
n
||
"button"
===
n
)
&&
t
.
type
===
e
}}
function
c
(
e
){
return
i
(
function
(
t
){
return
t
=+
t
,
i
(
function
(
n
,
r
){
for
(
var
i
,
o
=
e
([],
n
.
length
,
t
),
a
=
o
.
length
;
a
--
;)
n
[
i
=
o
[
a
]]
&&
(
n
[
i
]
=!
(
r
[
i
]
=
n
[
i
]))})})}
function
f
(
e
,
t
){
var
n
,
r
,
i
,
o
,
s
,
u
,
l
,
c
=
X
[
e
+
" "
];
if
(
c
)
return
t
?
0
:
c
.
slice
(
0
);
for
(
s
=
e
,
u
=
[],
l
=
C
.
preFilter
;
s
;){(
!
n
||
(
r
=
ut
.
exec
(
s
)))
&&
(
r
&&
(
s
=
s
.
slice
(
r
[
0
].
length
)
||
s
),
u
.
push
(
i
=
[])),
n
=!
1
,(
r
=
lt
.
exec
(
s
))
&&
(
n
=
r
.
shift
(),
i
.
push
({
value
:
n
,
type
:
r
[
0
].
replace
(
at
,
" "
)}),
s
=
s
.
slice
(
n
.
length
));
for
(
o
in
C
.
filter
)
!
(
r
=
pt
[
o
].
exec
(
s
))
||
l
[
o
]
&&!
(
r
=
l
[
o
](
r
))
||
(
n
=
r
.
shift
(),
i
.
push
({
value
:
n
,
type
:
o
,
matches
:
r
}),
s
=
s
.
slice
(
n
.
length
));
if
(
!
n
)
break
}
return
t
?
s
.
length
:
s
?
a
.
error
(
e
):
X
(
e
,
u
).
slice
(
0
)}
function
p
(
e
){
for
(
var
t
=
0
,
n
=
e
.
length
,
r
=
""
;
n
>
t
;
t
++
)
r
+=
e
[
t
].
value
;
return
r
}
function
d
(
e
,
t
,
n
){
var
r
=
t
.
dir
,
i
=
n
&&
"parentNode"
===
t
.
dir
,
o
=
I
++
;
return
t
.
first
?
function
(
t
,
n
,
o
){
for
(;
t
=
t
[
r
];)
if
(
1
===
t
.
nodeType
||
i
)
return
e
(
t
,
n
,
o
)}:
function
(
t
,
n
,
a
){
var
s
,
u
,
l
,
c
=
$
+
" "
+
o
;
if
(
a
){
for
(;
t
=
t
[
r
];)
if
((
1
===
t
.
nodeType
||
i
)
&&
e
(
t
,
n
,
a
))
return
!
0
}
else
for
(;
t
=
t
[
r
];)
if
(
1
===
t
.
nodeType
||
i
)
if
(
l
=
t
[
P
]
||
(
t
[
P
]
=
{}),(
u
=
l
[
r
])
&&
u
[
0
]
===
c
){
if
((
s
=
u
[
1
])
===!
0
||
s
===
N
)
return
s
===!
0
}
else
if
(
u
=
l
[
r
]
=
[
c
],
u
[
1
]
=
e
(
t
,
n
,
a
)
||
N
,
u
[
1
]
===!
0
)
return
!
0
}}
function
h
(
e
){
return
e
.
length
>
1
?
function
(
t
,
n
,
r
){
for
(
var
i
=
e
.
length
;
i
--
;)
if
(
!
e
[
i
](
t
,
n
,
r
))
return
!
1
;
return
!
0
}:
e
[
0
]}
function
g
(
e
,
t
,
n
,
r
,
i
){
for
(
var
o
,
a
=
[],
s
=
0
,
u
=
e
.
length
,
l
=
null
!=
t
;
u
>
s
;
s
++
)(
o
=
e
[
s
])
&&
(
!
n
||
n
(
o
,
r
,
i
))
&&
(
a
.
push
(
o
),
l
&&
t
.
push
(
s
));
return
a
}
function
m
(
e
,
t
,
n
,
r
,
o
,
a
){
return
r
&&!
r
[
P
]
&&
(
r
=
m
(
r
)),
o
&&!
o
[
P
]
&&
(
o
=
m
(
o
,
a
)),
i
(
function
(
i
,
a
,
s
,
u
){
var
l
,
c
,
f
,
p
=
[],
d
=
[],
h
=
a
.
length
,
m
=
i
||
b
(
t
||
"*"
,
s
.
nodeType
?[
s
]:
s
,[]),
y
=!
e
||!
i
&&
t
?
m
:
g
(
m
,
p
,
e
,
s
,
u
),
v
=
n
?
o
||
(
i
?
e
:
h
||
r
)?[]:
a
:
y
;
if
(
n
&&
n
(
y
,
v
,
s
,
u
),
r
)
for
(
l
=
g
(
v
,
d
),
r
(
l
,[],
s
,
u
),
c
=
l
.
length
;
c
--
;)(
f
=
l
[
c
])
&&
(
v
[
d
[
c
]]
=!
(
y
[
d
[
c
]]
=
f
));
if
(
i
){
if
(
o
||
e
){
if
(
o
){
for
(
l
=
[],
c
=
v
.
length
;
c
--
;)(
f
=
v
[
c
])
&&
l
.
push
(
y
[
c
]
=
f
);
o
(
null
,
v
=
[],
l
,
u
)}
for
(
c
=
v
.
length
;
c
--
;)(
f
=
v
[
c
])
&&
(
l
=
o
?
Z
.
call
(
i
,
f
):
p
[
c
])
>-
1
&&
(
i
[
l
]
=!
(
a
[
l
]
=
f
))}}
else
v
=
g
(
v
===
a
?
v
.
splice
(
h
,
v
.
length
):
v
),
o
?
o
(
null
,
a
,
v
,
u
):
Q
.
apply
(
a
,
v
)})}
function
y
(
e
){
for
(
var
t
,
n
,
r
,
i
=
e
.
length
,
o
=
C
.
relative
[
e
[
0
].
type
],
a
=
o
||
C
.
relative
[
" "
],
s
=
o
?
1
:
0
,
u
=
d
(
function
(
e
){
return
e
===
t
},
a
,
!
0
),
l
=
d
(
function
(
e
){
return
Z
.
call
(
t
,
e
)
>-
1
},
a
,
!
0
),
c
=
[
function
(
e
,
n
,
r
){
return
!
o
&&
(
r
||
n
!==
j
)
||
((
t
=
n
).
nodeType
?
u
(
e
,
n
,
r
):
l
(
e
,
n
,
r
))}];
i
>
s
;
s
++
)
if
(
n
=
C
.
relative
[
e
[
s
].
type
])
c
=
[
d
(
h
(
c
),
n
)];
else
{
if
(
n
=
C
.
filter
[
e
[
s
].
type
].
apply
(
null
,
e
[
s
].
matches
),
n
[
P
]){
for
(
r
=++
s
;
i
>
r
&&!
C
.
relative
[
e
[
r
].
type
];
r
++
);
return
m
(
s
>
1
&&
h
(
c
),
s
>
1
&&
p
(
e
.
slice
(
0
,
s
-
1
)).
replace
(
at
,
"$1"
),
n
,
r
>
s
&&
y
(
e
.
slice
(
s
,
r
)),
i
>
r
&&
y
(
e
=
e
.
slice
(
r
)),
i
>
r
&&
p
(
e
))}
c
.
push
(
n
)}
return
h
(
c
)}
function
v
(
e
,
t
){
var
n
=
0
,
r
=
t
.
length
>
0
,
o
=
e
.
length
>
0
,
s
=
function
(
i
,
s
,
u
,
l
,
c
){
var
f
,
p
,
d
,
h
=
[],
m
=
0
,
y
=
"0"
,
v
=
i
&&
[],
b
=
null
!=
c
,
x
=
j
,
T
=
i
||
o
&&
C
.
find
.
TAG
(
"*"
,
c
&&
s
.
parentNode
||
s
),
w
=
$
+=
null
==
x
?
1
:
Math
.
E
;
for
(
b
&&
(
j
=
s
!==
L
&&
s
,
N
=
n
);
null
!=
(
f
=
T
[
y
]);
y
++
){
if
(
o
&&
f
){
for
(
p
=
0
;
d
=
e
[
p
];
p
++
)
if
(
d
(
f
,
s
,
u
)){
l
.
push
(
f
);
break
}
b
&&
(
$
=
w
,
N
=++
n
)}
r
&&
((
f
=!
d
&&
f
)
&&
m
--
,
i
&&
v
.
push
(
f
))}
if
(
m
+=
y
,
r
&&
y
!==
m
){
for
(
p
=
0
;
d
=
t
[
p
];
p
++
)
d
(
v
,
h
,
s
,
u
);
if
(
i
){
if
(
m
>
0
)
for
(;
y
--
;)
v
[
y
]
||
h
[
y
]
||
(
h
[
y
]
=
G
.
call
(
l
));
h
=
g
(
h
)}
Q
.
apply
(
l
,
h
),
b
&&!
i
&&
h
.
length
>
0
&&
m
+
t
.
length
>
1
&&
a
.
uniqueSort
(
l
)}
return
b
&&
(
$
=
w
,
j
=
x
),
v
};
return
r
?
i
(
s
):
s
}
function
b
(
e
,
t
,
n
){
for
(
var
r
=
0
,
i
=
t
.
length
;
i
>
r
;
r
++
)
a
(
e
,
t
[
r
],
n
);
return
n
}
function
x
(
e
,
t
,
n
,
r
){
var
i
,
o
,
a
,
s
,
u
,
l
=
f
(
e
);
if
(
!
r
&&
1
===
l
.
length
){
if
(
o
=
l
[
0
]
=
l
[
0
].
slice
(
0
),
o
.
length
>
2
&&
"ID"
===
(
a
=
o
[
0
]).
type
&&
9
===
t
.
nodeType
&&!
M
&&
C
.
relative
[
o
[
1
].
type
]){
if
(
t
=
C
.
find
.
ID
(
a
.
matches
[
0
].
replace
(
xt
,
Tt
),
t
)[
0
],
!
t
)
return
n
;
e
=
e
.
slice
(
o
.
shift
().
value
.
length
)}
for
(
i
=
pt
.
needsContext
.
test
(
e
)?
-
1
:
o
.
length
-
1
;
i
>=
0
&&
(
a
=
o
[
i
],
!
C
.
relative
[
s
=
a
.
type
]);
i
--
)
if
((
u
=
C
.
find
[
s
])
&&
(
r
=
u
(
a
.
matches
[
0
].
replace
(
xt
,
Tt
),
dt
.
test
(
o
[
0
].
type
)
&&
t
.
parentNode
||
t
))){
if
(
o
.
splice
(
i
,
1
),
e
=
r
.
length
&&
p
(
o
),
!
e
)
return
Q
.
apply
(
n
,
K
.
call
(
r
,
0
)),
n
;
break
}}
return
S
(
e
,
l
)(
r
,
t
,
M
,
n
,
dt
.
test
(
e
)),
n
}
function
T
(){}
var
w
,
N
,
C
,
k
,
E
,
S
,
A
,
j
,
D
,
L
,
H
,
M
,
q
,
_
,
F
,
O
,
B
,
P
=
"sizzle"
+-
new
Date
,
R
=
e
.
document
,
W
=
{},
$
=
0
,
I
=
0
,
z
=
r
(),
X
=
r
(),
U
=
r
(),
V
=
typeof
t
,
Y
=
1
<<
31
,
J
=
[],
G
=
J
.
pop
,
Q
=
J
.
push
,
K
=
J
.
slice
,
Z
=
J
.
indexOf
||
function
(
e
){
for
(
var
t
=
0
,
n
=
this
.
length
;
n
>
t
;
t
++
)
if
(
this
[
t
]
===
e
)
return
t
;
return
-
1
},
et
=
"[
\\
x20
\\
t
\\
r
\\
n
\\
f]"
,
tt
=
"(?:
\\\\
.|[
\\
w-]|[^
\\
x00-
\\
xa0])+"
,
nt
=
tt
.
replace
(
"w"
,
"w#"
),
rt
=
"([*^$|!~]?=)"
,
it
=
"
\\
["
+
et
+
"*("
+
tt
+
")"
+
et
+
"*(?:"
+
rt
+
et
+
"*(?:(['
\"
])((?:
\\\\
.|[^
\\\\
])*?)
\\
3|("
+
nt
+
")|)|)"
+
et
+
"*
\\
]"
,
ot
=
":("
+
tt
+
")(?:
\\
(((['
\"
])((?:
\\\\
.|[^
\\\\
])*?)
\\
3|((?:
\\\\
.|[^
\\\\
()[
\\
]]|"
+
it
.
replace
(
3
,
8
)
+
")*)|.*)
\\
)|)"
,
at
=
RegExp
(
"^"
+
et
+
"+|((?:^|[^
\\\\
])(?:
\\\\
.)*)"
+
et
+
"+$"
,
"g"
),
ut
=
RegExp
(
"^"
+
et
+
"*,"
+
et
+
"*"
),
lt
=
RegExp
(
"^"
+
et
+
"*([
\\
x20
\\
t
\\
r
\\
n
\\
f>+~])"
+
et
+
"*"
),
ct
=
RegExp
(
ot
),
ft
=
RegExp
(
"^"
+
nt
+
"$"
),
pt
=
{
ID
:
RegExp
(
"^#("
+
tt
+
")"
),
CLASS
:
RegExp
(
"^
\\
.("
+
tt
+
")"
),
NAME
:
RegExp
(
"^
\\
[name=['
\"
]?("
+
tt
+
")['
\"
]?
\\
]"
),
TAG
:
RegExp
(
"^("
+
tt
.
replace
(
"w"
,
"w*"
)
+
")"
),
ATTR
:
RegExp
(
"^"
+
it
),
PSEUDO
:
RegExp
(
"^"
+
ot
),
CHILD
:
RegExp
(
"^:(only|first|last|nth|nth-last)-(child|of-type)(?:
\\
("
+
et
+
"*(even|odd|(([+-]|)(
\\
d*)n|)"
+
et
+
"*(?:([+-]|)"
+
et
+
"*(
\\
d+)|))"
+
et
+
"*
\\
)|)"
,
"i"
),
needsContext
:
RegExp
(
"^"
+
et
+
"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:
\\
("
+
et
+
"*((?:-
\\
d)?
\\
d*)"
+
et
+
"*
\\
)|)(?=[^-]|$)"
,
"i"
)},
dt
=
/
[\x
20
\t\r\n\f]
*
[
+~
]
/
,
ht
=
/
\{\s
*
\[
native code
\]\s
*
\}
/
,
gt
=
/^
(?:
#
([\w
-
]
+
)
|
(\w
+
)
|
\.([\w
-
]
+
))
$/
,
mt
=
/^
(?:
input|select|textarea|button
)
$/i
,
yt
=
/^h
\d
$/i
,
vt
=
/'|
\\
/g
,
bt
=
/
\=[\x
20
\t\r\n\f]
*
([^
'"
\]]
*
)[\x
20
\t\r\n\f]
*
\]
/g
,
xt
=
/
\\([\d
a-fA-F
]{1,6}[\x
20
\t\r\n\f]?
|.
)
/g
,
Tt
=
function
(
e
,
t
){
var
n
=
"0x"
+
t
-
65536
;
return
n
!==
n
?
t
:
0
>
n
?
String
.
fromCharCode
(
n
+
65536
):
String
.
fromCharCode
(
55296
|
n
>>
10
,
56320
|
1023
&
n
)};
try
{
K
.
call
(
H
.
childNodes
,
0
)[
0
].
nodeType
}
catch
(
wt
){
K
=
function
(
e
){
for
(
var
t
,
n
=
[];
t
=
this
[
e
];
e
++
)
n
.
push
(
t
);
return
n
}}
E
=
a
.
isXML
=
function
(
e
){
var
t
=
e
&&
(
e
.
ownerDocument
||
e
).
documentElement
;
return
t
?
"HTML"
!==
t
.
nodeName
:
!
1
},
D
=
a
.
setDocument
=
function
(
e
){
var
r
=
e
?
e
.
ownerDocument
||
e
:
R
;
return
r
!==
L
&&
9
===
r
.
nodeType
&&
r
.
documentElement
?(
L
=
r
,
H
=
r
.
documentElement
,
M
=
E
(
r
),
W
.
tagNameNoComments
=
o
(
function
(
e
){
return
e
.
appendChild
(
r
.
createComment
(
""
)),
!
e
.
getElementsByTagName
(
"*"
).
length
}),
W
.
attributes
=
o
(
function
(
e
){
e
.
innerHTML
=
"<select></select>"
;
var
t
=
typeof
e
.
lastChild
.
getAttribute
(
"multiple"
);
return
"boolean"
!==
t
&&
"string"
!==
t
}),
W
.
getByClassName
=
o
(
function
(
e
){
return
e
.
innerHTML
=
"<div class='hidden e'></div><div class='hidden'></div>"
,
e
.
getElementsByClassName
&&
e
.
getElementsByClassName
(
"e"
).
length
?(
e
.
lastChild
.
className
=
"e"
,
2
===
e
.
getElementsByClassName
(
"e"
).
length
):
!
1
}),
W
.
getByName
=
o
(
function
(
e
){
e
.
id
=
P
+
0
,
e
.
innerHTML
=
"<a name='"
+
P
+
"'></a><div name='"
+
P
+
"'></div>"
,
H
.
insertBefore
(
e
,
H
.
firstChild
);
var
t
=
r
.
getElementsByName
&&
r
.
getElementsByName
(
P
).
length
===
2
+
r
.
getElementsByName
(
P
+
0
).
length
;
return
W
.
getIdNotName
=!
r
.
getElementById
(
P
),
H
.
removeChild
(
e
),
t
}),
C
.
attrHandle
=
o
(
function
(
e
){
return
e
.
innerHTML
=
"<a href='#'></a>"
,
e
.
firstChild
&&
typeof
e
.
firstChild
.
getAttribute
!==
V
&&
"#"
===
e
.
firstChild
.
getAttribute
(
"href"
)})?{}:{
href
:
function
(
e
){
return
e
.
getAttribute
(
"href"
,
2
)},
type
:
function
(
e
){
return
e
.
getAttribute
(
"type"
)}},
W
.
getIdNotName
?(
C
.
find
.
ID
=
function
(
e
,
t
){
if
(
typeof
t
.
getElementById
!==
V
&&!
M
){
var
n
=
t
.
getElementById
(
e
);
return
n
&&
n
.
parentNode
?[
n
]:[]}},
C
.
filter
.
ID
=
function
(
e
){
var
t
=
e
.
replace
(
xt
,
Tt
);
return
function
(
e
){
return
e
.
getAttribute
(
"id"
)
===
t
}}):(
C
.
find
.
ID
=
function
(
e
,
n
){
if
(
typeof
n
.
getElementById
!==
V
&&!
M
){
var
r
=
n
.
getElementById
(
e
);
return
r
?
r
.
id
===
e
||
typeof
r
.
getAttributeNode
!==
V
&&
r
.
getAttributeNode
(
"id"
).
value
===
e
?[
r
]:
t
:[]}},
C
.
filter
.
ID
=
function
(
e
){
var
t
=
e
.
replace
(
xt
,
Tt
);
return
function
(
e
){
var
n
=
typeof
e
.
getAttributeNode
!==
V
&&
e
.
getAttributeNode
(
"id"
);
return
n
&&
n
.
value
===
t
}}),
C
.
find
.
TAG
=
W
.
tagNameNoComments
?
function
(
e
,
n
){
return
typeof
n
.
getElementsByTagName
!==
V
?
n
.
getElementsByTagName
(
e
):
t
}:
function
(
e
,
t
){
var
n
,
r
=
[],
i
=
0
,
o
=
t
.
getElementsByTagName
(
e
);
if
(
"*"
===
e
){
for
(;
n
=
o
[
i
];
i
++
)
1
===
n
.
nodeType
&&
r
.
push
(
n
);
return
r
}
return
o
},
C
.
find
.
NAME
=
W
.
getByName
&&
function
(
e
,
n
){
return
typeof
n
.
getElementsByName
!==
V
?
n
.
getElementsByName
(
name
):
t
},
C
.
find
.
CLASS
=
W
.
getByClassName
&&
function
(
e
,
n
){
return
typeof
n
.
getElementsByClassName
===
V
||
M
?
t
:
n
.
getElementsByClassName
(
e
)},
_
=
[],
q
=
[
":focus"
],(
W
.
qsa
=
n
(
r
.
querySelectorAll
))
&&
(
o
(
function
(
e
){
e
.
innerHTML
=
"<select><option selected=''></option></select>"
,
e
.
querySelectorAll
(
"[selected]"
).
length
||
q
.
push
(
"
\\
["
+
et
+
"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"
),
e
.
querySelectorAll
(
":checked"
).
length
||
q
.
push
(
":checked"
)}),
o
(
function
(
e
){
e
.
innerHTML
=
"<input type='hidden' i=''/>"
,
e
.
querySelectorAll
(
"[i^='']"
).
length
&&
q
.
push
(
"[*^$]="
+
et
+
"*(?:
\"\"
|'')"
),
e
.
querySelectorAll
(
":enabled"
).
length
||
q
.
push
(
":enabled"
,
":disabled"
),
e
.
querySelectorAll
(
"*,:x"
),
q
.
push
(
",.*:"
)})),(
W
.
matchesSelector
=
n
(
F
=
H
.
matchesSelector
||
H
.
mozMatchesSelector
||
H
.
webkitMatchesSelector
||
H
.
oMatchesSelector
||
H
.
msMatchesSelector
))
&&
o
(
function
(
e
){
W
.
disconnectedMatch
=
F
.
call
(
e
,
"div"
),
F
.
call
(
e
,
"[s!='']:x"
),
_
.
push
(
"!="
,
ot
)}),
q
=
RegExp
(
q
.
join
(
"|"
)),
_
=
RegExp
(
_
.
join
(
"|"
)),
O
=
n
(
H
.
contains
)
||
H
.
compareDocumentPosition
?
function
(
e
,
t
){
var
n
=
9
===
e
.
nodeType
?
e
.
documentElement
:
e
,
r
=
t
&&
t
.
parentNode
;
return
e
===
r
||!
(
!
r
||
1
!==
r
.
nodeType
||!
(
n
.
contains
?
n
.
contains
(
r
):
e
.
compareDocumentPosition
&&
16
&
e
.
compareDocumentPosition
(
r
)))}:
function
(
e
,
t
){
if
(
t
)
for
(;
t
=
t
.
parentNode
;)
if
(
t
===
e
)
return
!
0
;
return
!
1
},
B
=
H
.
compareDocumentPosition
?
function
(
e
,
t
){
var
n
;
return
e
===
t
?(
A
=!
0
,
0
):(
n
=
t
.
compareDocumentPosition
&&
e
.
compareDocumentPosition
&&
e
.
compareDocumentPosition
(
t
))?
1
&
n
||
e
.
parentNode
&&
11
===
e
.
parentNode
.
nodeType
?
e
===
r
||
O
(
R
,
e
)?
-
1
:
t
===
r
||
O
(
R
,
t
)?
1
:
0
:
4
&
n
?
-
1
:
1
:
e
.
compareDocumentPosition
?
-
1
:
1
}:
function
(
e
,
t
){
var
n
,
i
=
0
,
o
=
e
.
parentNode
,
a
=
t
.
parentNode
,
u
=
[
e
],
l
=
[
t
];
if
(
e
===
t
)
return
A
=!
0
,
0
;
if
(
e
.
sourceIndex
&&
t
.
sourceIndex
)
return
(
~
t
.
sourceIndex
||
Y
)
-
(
O
(
R
,
e
)
&&~
e
.
sourceIndex
||
Y
);
if
(
!
o
||!
a
)
return
e
===
r
?
-
1
:
t
===
r
?
1
:
o
?
-
1
:
a
?
1
:
0
;
if
(
o
===
a
)
return
s
(
e
,
t
);
for
(
n
=
e
;
n
=
n
.
parentNode
;)
u
.
unshift
(
n
);
for
(
n
=
t
;
n
=
n
.
parentNode
;)
l
.
unshift
(
n
);
for
(;
u
[
i
]
===
l
[
i
];)
i
++
;
return
i
?
s
(
u
[
i
],
l
[
i
]):
u
[
i
]
===
R
?
-
1
:
l
[
i
]
===
R
?
1
:
0
},
A
=!
1
,[
0
,
0
].
sort
(
B
),
W
.
detectDuplicates
=
A
,
L
):
L
},
a
.
matches
=
function
(
e
,
t
){
return
a
(
e
,
null
,
null
,
t
)},
a
.
matchesSelector
=
function
(
e
,
t
){
if
((
e
.
ownerDocument
||
e
)
!==
L
&&
D
(
e
),
t
=
t
.
replace
(
bt
,
"='$1']"
),
!
(
!
W
.
matchesSelector
||
M
||
_
&&
_
.
test
(
t
)
||
q
.
test
(
t
)))
try
{
var
n
=
F
.
call
(
e
,
t
);
if
(
n
||
W
.
disconnectedMatch
||
e
.
document
&&
11
!==
e
.
document
.
nodeType
)
return
n
}
catch
(
r
){}
return
a
(
t
,
L
,
null
,[
e
]).
length
>
0
},
a
.
contains
=
function
(
e
,
t
){
return
(
e
.
ownerDocument
||
e
)
!==
L
&&
D
(
e
),
O
(
e
,
t
)},
a
.
attr
=
function
(
e
,
t
){
var
n
;
return
(
e
.
ownerDocument
||
e
)
!==
L
&&
D
(
e
),
M
||
(
t
=
t
.
toLowerCase
()),(
n
=
C
.
attrHandle
[
t
])?
n
(
e
):
M
||
W
.
attributes
?
e
.
getAttribute
(
t
):((
n
=
e
.
getAttributeNode
(
t
))
||
e
.
getAttribute
(
t
))
&&
e
[
t
]
===!
0
?
t
:
n
&&
n
.
specified
?
n
.
value
:
null
},
a
.
error
=
function
(
e
){
throw
Error
(
"Syntax error, unrecognized expression: "
+
e
)},
a
.
uniqueSort
=
function
(
e
){
var
t
,
n
=
[],
r
=
1
,
i
=
0
;
if
(
A
=!
W
.
detectDuplicates
,
e
.
sort
(
B
),
A
){
for
(;
t
=
e
[
r
];
r
++
)
t
===
e
[
r
-
1
]
&&
(
i
=
n
.
push
(
r
));
for
(;
i
--
;)
e
.
splice
(
n
[
i
],
1
)}
return
e
},
k
=
a
.
getText
=
function
(
e
){
var
t
,
n
=
""
,
r
=
0
,
i
=
e
.
nodeType
;
if
(
i
){
if
(
1
===
i
||
9
===
i
||
11
===
i
){
if
(
"string"
==
typeof
e
.
textContent
)
return
e
.
textContent
;
for
(
e
=
e
.
firstChild
;
e
;
e
=
e
.
nextSibling
)
n
+=
k
(
e
)}
else
if
(
3
===
i
||
4
===
i
)
return
e
.
nodeValue
}
else
for
(;
t
=
e
[
r
];
r
++
)
n
+=
k
(
t
);
return
n
},
C
=
a
.
selectors
=
{
cacheLength
:
50
,
createPseudo
:
i
,
match
:
pt
,
find
:{},
relative
:{
">"
:{
dir
:
"parentNode"
,
first
:
!
0
},
" "
:{
dir
:
"parentNode"
},
"+"
:{
dir
:
"previousSibling"
,
first
:
!
0
},
"~"
:{
dir
:
"previousSibling"
}},
preFilter
:{
ATTR
:
function
(
e
){
return
e
[
1
]
=
e
[
1
].
replace
(
xt
,
Tt
),
e
[
3
]
=
(
e
[
4
]
||
e
[
5
]
||
""
).
replace
(
xt
,
Tt
),
"~="
===
e
[
2
]
&&
(
e
[
3
]
=
" "
+
e
[
3
]
+
" "
),
e
.
slice
(
0
,
4
)},
CHILD
:
function
(
e
){
return
e
[
1
]
=
e
[
1
].
toLowerCase
(),
"nth"
===
e
[
1
].
slice
(
0
,
3
)?(
e
[
3
]
||
a
.
error
(
e
[
0
]),
e
[
4
]
=+
(
e
[
4
]?
e
[
5
]
+
(
e
[
6
]
||
1
):
2
*
(
"even"
===
e
[
3
]
||
"odd"
===
e
[
3
])),
e
[
5
]
=+
(
e
[
7
]
+
e
[
8
]
||
"odd"
===
e
[
3
])):
e
[
3
]
&&
a
.
error
(
e
[
0
]),
e
},
PSEUDO
:
function
(
e
){
var
t
,
n
=!
e
[
5
]
&&
e
[
2
];
return
pt
.
CHILD
.
test
(
e
[
0
])?
null
:(
e
[
4
]?
e
[
2
]
=
e
[
4
]:
n
&&
ct
.
test
(
n
)
&&
(
t
=
f
(
n
,
!
0
))
&&
(
t
=
n
.
indexOf
(
")"
,
n
.
length
-
t
)
-
n
.
length
)
&&
(
e
[
0
]
=
e
[
0
].
slice
(
0
,
t
),
e
[
2
]
=
n
.
slice
(
0
,
t
)),
e
.
slice
(
0
,
3
))}},
filter
:{
TAG
:
function
(
e
){
return
"*"
===
e
?
function
(){
return
!
0
}:(
e
=
e
.
replace
(
xt
,
Tt
).
toLowerCase
(),
function
(
t
){
return
t
.
nodeName
&&
t
.
nodeName
.
toLowerCase
()
===
e
})},
CLASS
:
function
(
e
){
var
t
=
z
[
e
+
" "
];
return
t
||
(
t
=
RegExp
(
"(^|"
+
et
+
")"
+
e
+
"("
+
et
+
"|$)"
))
&&
z
(
e
,
function
(
e
){
return
t
.
test
(
e
.
className
||
typeof
e
.
getAttribute
!==
V
&&
e
.
getAttribute
(
"class"
)
||
""
)})},
ATTR
:
function
(
e
,
t
,
n
){
return
function
(
r
){
var
i
=
a
.
attr
(
r
,
e
);
return
null
==
i
?
"!="
===
t
:
t
?(
i
+=
""
,
"="
===
t
?
i
===
n
:
"!="
===
t
?
i
!==
n
:
"^="
===
t
?
n
&&
0
===
i
.
indexOf
(
n
):
"*="
===
t
?
n
&&
i
.
indexOf
(
n
)
>-
1
:
"$="
===
t
?
n
&&
i
.
substr
(
i
.
length
-
n
.
length
)
===
n
:
"~="
===
t
?(
" "
+
i
+
" "
).
indexOf
(
n
)
>-
1
:
"|="
===
t
?
i
===
n
||
i
.
substr
(
0
,
n
.
length
+
1
)
===
n
+
"-"
:
!
1
):
!
0
}},
CHILD
:
function
(
e
,
t
,
n
,
r
,
i
){
var
o
=
"nth"
!==
e
.
slice
(
0
,
3
),
a
=
"last"
!==
e
.
slice
(
-
4
),
s
=
"of-type"
===
t
;
return
1
===
r
&&
0
===
i
?
function
(
e
){
return
!!
e
.
parentNode
}:
function
(
t
,
n
,
u
){
var
l
,
c
,
f
,
p
,
d
,
h
,
g
=
o
!==
a
?
"nextSibling"
:
"previousSibling"
,
m
=
t
.
parentNode
,
y
=
s
&&
t
.
nodeName
.
toLowerCase
(),
v
=!
u
&&!
s
;
if
(
m
){
if
(
o
){
for
(;
g
;){
for
(
f
=
t
;
f
=
f
[
g
];)
if
(
s
?
f
.
nodeName
.
toLowerCase
()
===
y
:
1
===
f
.
nodeType
)
return
!
1
;
h
=
g
=
"only"
===
e
&&!
h
&&
"nextSibling"
}
return
!
0
}
if
(
h
=
[
a
?
m
.
firstChild
:
m
.
lastChild
],
a
&&
v
){
for
(
c
=
m
[
P
]
||
(
m
[
P
]
=
{}),
l
=
c
[
e
]
||
[],
d
=
l
[
0
]
===
$
&&
l
[
1
],
p
=
l
[
0
]
===
$
&&
l
[
2
],
f
=
d
&&
m
.
childNodes
[
d
];
f
=++
d
&&
f
&&
f
[
g
]
||
(
p
=
d
=
0
)
||
h
.
pop
();)
if
(
1
===
f
.
nodeType
&&++
p
&&
f
===
t
){
c
[
e
]
=
[
$
,
d
,
p
];
break
}}
else
if
(
v
&&
(
l
=
(
t
[
P
]
||
(
t
[
P
]
=
{}))[
e
])
&&
l
[
0
]
===
$
)
p
=
l
[
1
];
else
for
(;(
f
=++
d
&&
f
&&
f
[
g
]
||
(
p
=
d
=
0
)
||
h
.
pop
())
&&
((
s
?
f
.
nodeName
.
toLowerCase
()
!==
y
:
1
!==
f
.
nodeType
)
||!++
p
||
(
v
&&
((
f
[
P
]
||
(
f
[
P
]
=
{}))[
e
]
=
[
$
,
p
]),
f
!==
t
)););
return
p
-=
i
,
p
===
r
||
0
===
p
%
r
&&
p
/
r
>=
0
}}},
PSEUDO
:
function
(
e
,
t
){
var
n
,
r
=
C
.
pseudos
[
e
]
||
C
.
setFilters
[
e
.
toLowerCase
()]
||
a
.
error
(
"unsupported pseudo: "
+
e
);
return
r
[
P
]?
r
(
t
):
r
.
length
>
1
?(
n
=
[
e
,
e
,
""
,
t
],
C
.
setFilters
.
hasOwnProperty
(
e
.
toLowerCase
())?
i
(
function
(
e
,
n
){
for
(
var
i
,
o
=
r
(
e
,
t
),
a
=
o
.
length
;
a
--
;)
i
=
Z
.
call
(
e
,
o
[
a
]),
e
[
i
]
=!
(
n
[
i
]
=
o
[
a
])}):
function
(
e
){
return
r
(
e
,
0
,
n
)}):
r
}},
pseudos
:{
not
:
i
(
function
(
e
){
var
t
=
[],
n
=
[],
r
=
S
(
e
.
replace
(
at
,
"$1"
));
return
r
[
P
]?
i
(
function
(
e
,
t
,
n
,
i
){
for
(
var
o
,
a
=
r
(
e
,
null
,
i
,[]),
s
=
e
.
length
;
s
--
;)(
o
=
a
[
s
])
&&
(
e
[
s
]
=!
(
t
[
s
]
=
o
))}):
function
(
e
,
i
,
o
){
return
t
[
0
]
=
e
,
r
(
t
,
null
,
o
,
n
),
!
n
.
pop
()}}),
has
:
i
(
function
(
e
){
return
function
(
t
){
return
a
(
e
,
t
).
length
>
0
}}),
contains
:
i
(
function
(
e
){
return
function
(
t
){
return
(
t
.
textContent
||
t
.
innerText
||
k
(
t
)).
indexOf
(
e
)
>-
1
}}),
lang
:
i
(
function
(
e
){
return
ft
.
test
(
e
||
""
)
||
a
.
error
(
"unsupported lang: "
+
e
),
e
=
e
.
replace
(
xt
,
Tt
).
toLowerCase
(),
function
(
t
){
var
n
;
do
if
(
n
=
M
?
t
.
getAttribute
(
"xml:lang"
)
||
t
.
getAttribute
(
"lang"
):
t
.
lang
)
return
n
=
n
.
toLowerCase
(),
n
===
e
||
0
===
n
.
indexOf
(
e
+
"-"
);
while
((
t
=
t
.
parentNode
)
&&
1
===
t
.
nodeType
);
return
!
1
}}),
target
:
function
(
t
){
var
n
=
e
.
location
&&
e
.
location
.
hash
;
return
n
&&
n
.
slice
(
1
)
===
t
.
id
},
root
:
function
(
e
){
return
e
===
H
},
focus
:
function
(
e
){
return
e
===
L
.
activeElement
&&
(
!
L
.
hasFocus
||
L
.
hasFocus
())
&&!!
(
e
.
type
||
e
.
href
||~
e
.
tabIndex
)},
enabled
:
function
(
e
){
return
e
.
disabled
===!
1
},
disabled
:
function
(
e
){
return
e
.
disabled
===!
0
},
checked
:
function
(
e
){
var
t
=
e
.
nodeName
.
toLowerCase
();
return
"input"
===
t
&&!!
e
.
checked
||
"option"
===
t
&&!!
e
.
selected
},
selected
:
function
(
e
){
return
e
.
parentNode
&&
e
.
parentNode
.
selectedIndex
,
e
.
selected
===!
0
},
empty
:
function
(
e
){
for
(
e
=
e
.
firstChild
;
e
;
e
=
e
.
nextSibling
)
if
(
e
.
nodeName
>
"@"
||
3
===
e
.
nodeType
||
4
===
e
.
nodeType
)
return
!
1
;
return
!
0
},
parent
:
function
(
e
){
return
!
C
.
pseudos
.
empty
(
e
)},
header
:
function
(
e
){
return
yt
.
test
(
e
.
nodeName
)},
input
:
function
(
e
){
return
mt
.
test
(
e
.
nodeName
)},
button
:
function
(
e
){
var
t
=
e
.
nodeName
.
toLowerCase
();
return
"input"
===
t
&&
"button"
===
e
.
type
||
"button"
===
t
},
text
:
function
(
e
){
var
t
;
return
"input"
===
e
.
nodeName
.
toLowerCase
()
&&
"text"
===
e
.
type
&&
(
null
==
(
t
=
e
.
getAttribute
(
"type"
))
||
t
.
toLowerCase
()
===
e
.
type
)},
first
:
c
(
function
(){
return
[
0
]}),
last
:
c
(
function
(
e
,
t
){
return
[
t
-
1
]}),
eq
:
c
(
function
(
e
,
t
,
n
){
return
[
0
>
n
?
n
+
t
:
n
]}),
even
:
c
(
function
(
e
,
t
){
for
(
var
n
=
0
;
t
>
n
;
n
+=
2
)
e
.
push
(
n
);
return
e
}),
odd
:
c
(
function
(
e
,
t
){
for
(
var
n
=
1
;
t
>
n
;
n
+=
2
)
e
.
push
(
n
);
return
e
}),
lt
:
c
(
function
(
e
,
t
,
n
){
for
(
var
r
=
0
>
n
?
n
+
t
:
n
;
--
r
>=
0
;)
e
.
push
(
r
);
return
e
}),
gt
:
c
(
function
(
e
,
t
,
n
){
for
(
var
r
=
0
>
n
?
n
+
t
:
n
;
t
>++
r
;)
e
.
push
(
r
);
return
e
})}};
for
(
w
in
{
radio
:
!
0
,
checkbox
:
!
0
,
file
:
!
0
,
password
:
!
0
,
image
:
!
0
})
C
.
pseudos
[
w
]
=
u
(
w
);
for
(
w
in
{
submit
:
!
0
,
reset
:
!
0
})
C
.
pseudos
[
w
]
=
l
(
w
);
S
=
a
.
compile
=
function
(
e
,
t
){
var
n
,
r
=
[],
i
=
[],
o
=
U
[
e
+
" "
];
if
(
!
o
){
for
(
t
||
(
t
=
f
(
e
)),
n
=
t
.
length
;
n
--
;)
o
=
y
(
t
[
n
]),
o
[
P
]?
r
.
push
(
o
):
i
.
push
(
o
);
o
=
U
(
e
,
v
(
i
,
r
))}
return
o
},
C
.
pseudos
.
nth
=
C
.
pseudos
.
eq
,
C
.
filters
=
T
.
prototype
=
C
.
pseudos
,
C
.
setFilters
=
new
T
,
D
(),
a
.
attr
=
st
.
attr
,
st
.
find
=
a
,
st
.
expr
=
a
.
selectors
,
st
.
expr
[
":"
]
=
st
.
expr
.
pseudos
,
st
.
unique
=
a
.
uniqueSort
,
st
.
text
=
a
.
getText
,
st
.
isXMLDoc
=
a
.
isXML
,
st
.
contains
=
a
.
contains
}(
e
);
var
Pt
=
/Until$/
,
Rt
=
/^
(?:
parents|prev
(?:
Until|All
))
/
,
Wt
=
/^.
[^
:#
\[\.
,
]
*$/
,
$t
=
st
.
expr
.
match
.
needsContext
,
It
=
{
children
:
!
0
,
contents
:
!
0
,
next
:
!
0
,
prev
:
!
0
};
st
.
fn
.
extend
({
find
:
function
(
e
){
var
t
,
n
,
r
;
if
(
"string"
!=
typeof
e
)
return
r
=
this
,
this
.
pushStack
(
st
(
e
).
filter
(
function
(){
for
(
t
=
0
;
r
.
length
>
t
;
t
++
)
if
(
st
.
contains
(
r
[
t
],
this
))
return
!
0
}));
for
(
n
=
[],
t
=
0
;
this
.
length
>
t
;
t
++
)
st
.
find
(
e
,
this
[
t
],
n
);
return
n
=
this
.
pushStack
(
st
.
unique
(
n
)),
n
.
selector
=
(
this
.
selector
?
this
.
selector
+
" "
:
""
)
+
e
,
n
},
has
:
function
(
e
){
var
t
,
n
=
st
(
e
,
this
),
r
=
n
.
length
;
return
this
.
filter
(
function
(){
for
(
t
=
0
;
r
>
t
;
t
++
)
if
(
st
.
contains
(
this
,
n
[
t
]))
return
!
0
})},
not
:
function
(
e
){
return
this
.
pushStack
(
f
(
this
,
e
,
!
1
))},
filter
:
function
(
e
){
return
this
.
pushStack
(
f
(
this
,
e
,
!
0
))},
is
:
function
(
e
){
return
!!
e
&&
(
"string"
==
typeof
e
?
$t
.
test
(
e
)?
st
(
e
,
this
.
context
).
index
(
this
[
0
])
>=
0
:
st
.
filter
(
e
,
this
).
length
>
0
:
this
.
filter
(
e
).
length
>
0
)},
closest
:
function
(
e
,
t
){
for
(
var
n
,
r
=
0
,
i
=
this
.
length
,
o
=
[],
a
=
$t
.
test
(
e
)
||
"string"
!=
typeof
e
?
st
(
e
,
t
||
this
.
context
):
0
;
i
>
r
;
r
++
)
for
(
n
=
this
[
r
];
n
&&
n
.
ownerDocument
&&
n
!==
t
&&
11
!==
n
.
nodeType
;){
if
(
a
?
a
.
index
(
n
)
>-
1
:
st
.
find
.
matchesSelector
(
n
,
e
)){
o
.
push
(
n
);
break
}
n
=
n
.
parentNode
}
return
this
.
pushStack
(
o
.
length
>
1
?
st
.
unique
(
o
):
o
)},
index
:
function
(
e
){
return
e
?
"string"
==
typeof
e
?
st
.
inArray
(
this
[
0
],
st
(
e
)):
st
.
inArray
(
e
.
jquery
?
e
[
0
]:
e
,
this
):
this
[
0
]
&&
this
[
0
].
parentNode
?
this
.
first
().
prevAll
().
length
:
-
1
},
add
:
function
(
e
,
t
){
var
n
=
"string"
==
typeof
e
?
st
(
e
,
t
):
st
.
makeArray
(
e
&&
e
.
nodeType
?[
e
]:
e
),
r
=
st
.
merge
(
this
.
get
(),
n
);
return
this
.
pushStack
(
st
.
unique
(
r
))},
addBack
:
function
(
e
){
return
this
.
add
(
null
==
e
?
this
.
prevObject
:
this
.
prevObject
.
filter
(
e
))}}),
st
.
fn
.
andSelf
=
st
.
fn
.
addBack
,
st
.
each
({
parent
:
function
(
e
){
var
t
=
e
.
parentNode
;
return
t
&&
11
!==
t
.
nodeType
?
t
:
null
},
parents
:
function
(
e
){
return
st
.
dir
(
e
,
"parentNode"
)},
parentsUntil
:
function
(
e
,
t
,
n
){
return
st
.
dir
(
e
,
"parentNode"
,
n
)},
next
:
function
(
e
){
return
c
(
e
,
"nextSibling"
)},
prev
:
function
(
e
){
return
c
(
e
,
"previousSibling"
)
},
nextAll
:
function
(
e
){
return
st
.
dir
(
e
,
"nextSibling"
)},
prevAll
:
function
(
e
){
return
st
.
dir
(
e
,
"previousSibling"
)},
nextUntil
:
function
(
e
,
t
,
n
){
return
st
.
dir
(
e
,
"nextSibling"
,
n
)},
prevUntil
:
function
(
e
,
t
,
n
){
return
st
.
dir
(
e
,
"previousSibling"
,
n
)},
siblings
:
function
(
e
){
return
st
.
sibling
((
e
.
parentNode
||
{}).
firstChild
,
e
)},
children
:
function
(
e
){
return
st
.
sibling
(
e
.
firstChild
)},
contents
:
function
(
e
){
return
st
.
nodeName
(
e
,
"iframe"
)?
e
.
contentDocument
||
e
.
contentWindow
.
document
:
st
.
merge
([],
e
.
childNodes
)}},
function
(
e
,
t
){
st
.
fn
[
e
]
=
function
(
n
,
r
){
var
i
=
st
.
map
(
this
,
t
,
n
);
return
Pt
.
test
(
e
)
||
(
r
=
n
),
r
&&
"string"
==
typeof
r
&&
(
i
=
st
.
filter
(
r
,
i
)),
i
=
this
.
length
>
1
&&!
It
[
e
]?
st
.
unique
(
i
):
i
,
this
.
length
>
1
&&
Rt
.
test
(
e
)
&&
(
i
=
i
.
reverse
()),
this
.
pushStack
(
i
)}}),
st
.
extend
({
filter
:
function
(
e
,
t
,
n
){
return
n
&&
(
e
=
":not("
+
e
+
")"
),
1
===
t
.
length
?
st
.
find
.
matchesSelector
(
t
[
0
],
e
)?[
t
[
0
]]:[]:
st
.
find
.
matches
(
e
,
t
)},
dir
:
function
(
e
,
n
,
r
){
for
(
var
i
=
[],
o
=
e
[
n
];
o
&&
9
!==
o
.
nodeType
&&
(
r
===
t
||
1
!==
o
.
nodeType
||!
st
(
o
).
is
(
r
));)
1
===
o
.
nodeType
&&
i
.
push
(
o
),
o
=
o
[
n
];
return
i
},
sibling
:
function
(
e
,
t
){
for
(
var
n
=
[];
e
;
e
=
e
.
nextSibling
)
1
===
e
.
nodeType
&&
e
!==
t
&&
n
.
push
(
e
);
return
n
}});
var
zt
=
"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video"
,
Xt
=
/ jQuery
\d
+="
(?:
null|
\d
+
)
"/g
,
Ut
=
RegExp
(
"<(?:"
+
zt
+
")[
\\
s/>]"
,
"i"
),
Vt
=
/^
\s
+/
,
Yt
=
/<
(?!
area|br|col|embed|hr|img|input|link|meta|param
)(([\w
:
]
+
)[^
>
]
*
)\/
>/gi
,
Jt
=
/<
([\w
:
]
+
)
/
,
Gt
=
/<tbody/i
,
Qt
=
/<|&#
?\w
+;/
,
Kt
=
/<
(?:
script|style|link
)
/i
,
Zt
=
/^
(?:
checkbox|radio
)
$/i
,
en
=
/checked
\s
*
(?:[^
=
]
|=
\s
*.checked.
)
/i
,
tn
=
/^$|
\/(?:
java|ecma
)
script/i
,
nn
=
/^true
\/(
.*
)
/
,
rn
=
/^
\s
*<!
(?:\[
CDATA
\[
|--
)
|
(?:\]\]
|--
)
>
\s
*$/g
,
on
=
{
option
:[
1
,
"<select multiple='multiple'>"
,
"</select>"
],
legend
:[
1
,
"<fieldset>"
,
"</fieldset>"
],
area
:[
1
,
"<map>"
,
"</map>"
],
param
:[
1
,
"<object>"
,
"</object>"
],
thead
:[
1
,
"<table>"
,
"</table>"
],
tr
:[
2
,
"<table><tbody>"
,
"</tbody></table>"
],
col
:[
2
,
"<table><tbody></tbody><colgroup>"
,
"</colgroup></table>"
],
td
:[
3
,
"<table><tbody><tr>"
,
"</tr></tbody></table>"
],
_default
:
st
.
support
.
htmlSerialize
?[
0
,
""
,
""
]:[
1
,
"X<div>"
,
"</div>"
]},
an
=
p
(
V
),
sn
=
an
.
appendChild
(
V
.
createElement
(
"div"
));
on
.
optgroup
=
on
.
option
,
on
.
tbody
=
on
.
tfoot
=
on
.
colgroup
=
on
.
caption
=
on
.
thead
,
on
.
th
=
on
.
td
,
st
.
fn
.
extend
({
text
:
function
(
e
){
return
st
.
access
(
this
,
function
(
e
){
return
e
===
t
?
st
.
text
(
this
):
this
.
empty
().
append
((
this
[
0
]
&&
this
[
0
].
ownerDocument
||
V
).
createTextNode
(
e
))},
null
,
e
,
arguments
.
length
)},
wrapAll
:
function
(
e
){
if
(
st
.
isFunction
(
e
))
return
this
.
each
(
function
(
t
){
st
(
this
).
wrapAll
(
e
.
call
(
this
,
t
))});
if
(
this
[
0
]){
var
t
=
st
(
e
,
this
[
0
].
ownerDocument
).
eq
(
0
).
clone
(
!
0
);
this
[
0
].
parentNode
&&
t
.
insertBefore
(
this
[
0
]),
t
.
map
(
function
(){
for
(
var
e
=
this
;
e
.
firstChild
&&
1
===
e
.
firstChild
.
nodeType
;)
e
=
e
.
firstChild
;
return
e
}).
append
(
this
)}
return
this
},
wrapInner
:
function
(
e
){
return
st
.
isFunction
(
e
)?
this
.
each
(
function
(
t
){
st
(
this
).
wrapInner
(
e
.
call
(
this
,
t
))}):
this
.
each
(
function
(){
var
t
=
st
(
this
),
n
=
t
.
contents
();
n
.
length
?
n
.
wrapAll
(
e
):
t
.
append
(
e
)})},
wrap
:
function
(
e
){
var
t
=
st
.
isFunction
(
e
);
return
this
.
each
(
function
(
n
){
st
(
this
).
wrapAll
(
t
?
e
.
call
(
this
,
n
):
e
)})},
unwrap
:
function
(){
return
this
.
parent
().
each
(
function
(){
st
.
nodeName
(
this
,
"body"
)
||
st
(
this
).
replaceWith
(
this
.
childNodes
)}).
end
()},
append
:
function
(){
return
this
.
domManip
(
arguments
,
!
0
,
function
(
e
){(
1
===
this
.
nodeType
||
11
===
this
.
nodeType
||
9
===
this
.
nodeType
)
&&
this
.
appendChild
(
e
)})},
prepend
:
function
(){
return
this
.
domManip
(
arguments
,
!
0
,
function
(
e
){(
1
===
this
.
nodeType
||
11
===
this
.
nodeType
||
9
===
this
.
nodeType
)
&&
this
.
insertBefore
(
e
,
this
.
firstChild
)})},
before
:
function
(){
return
this
.
domManip
(
arguments
,
!
1
,
function
(
e
){
this
.
parentNode
&&
this
.
parentNode
.
insertBefore
(
e
,
this
)})},
after
:
function
(){
return
this
.
domManip
(
arguments
,
!
1
,
function
(
e
){
this
.
parentNode
&&
this
.
parentNode
.
insertBefore
(
e
,
this
.
nextSibling
)})},
remove
:
function
(
e
,
t
){
for
(
var
n
,
r
=
0
;
null
!=
(
n
=
this
[
r
]);
r
++
)(
!
e
||
st
.
filter
(
e
,[
n
]).
length
>
0
)
&&
(
t
||
1
!==
n
.
nodeType
||
st
.
cleanData
(
b
(
n
)),
n
.
parentNode
&&
(
t
&&
st
.
contains
(
n
.
ownerDocument
,
n
)
&&
m
(
b
(
n
,
"script"
)),
n
.
parentNode
.
removeChild
(
n
)));
return
this
},
empty
:
function
(){
for
(
var
e
,
t
=
0
;
null
!=
(
e
=
this
[
t
]);
t
++
){
for
(
1
===
e
.
nodeType
&&
st
.
cleanData
(
b
(
e
,
!
1
));
e
.
firstChild
;)
e
.
removeChild
(
e
.
firstChild
);
e
.
options
&&
st
.
nodeName
(
e
,
"select"
)
&&
(
e
.
options
.
length
=
0
)}
return
this
},
clone
:
function
(
e
,
t
){
return
e
=
null
==
e
?
!
1
:
e
,
t
=
null
==
t
?
e
:
t
,
this
.
map
(
function
(){
return
st
.
clone
(
this
,
e
,
t
)})},
html
:
function
(
e
){
return
st
.
access
(
this
,
function
(
e
){
var
n
=
this
[
0
]
||
{},
r
=
0
,
i
=
this
.
length
;
if
(
e
===
t
)
return
1
===
n
.
nodeType
?
n
.
innerHTML
.
replace
(
Xt
,
""
):
t
;
if
(
!
(
"string"
!=
typeof
e
||
Kt
.
test
(
e
)
||!
st
.
support
.
htmlSerialize
&&
Ut
.
test
(
e
)
||!
st
.
support
.
leadingWhitespace
&&
Vt
.
test
(
e
)
||
on
[(
Jt
.
exec
(
e
)
||
[
""
,
""
])[
1
].
toLowerCase
()])){
e
=
e
.
replace
(
Yt
,
"<$1></$2>"
);
try
{
for
(;
i
>
r
;
r
++
)
n
=
this
[
r
]
||
{},
1
===
n
.
nodeType
&&
(
st
.
cleanData
(
b
(
n
,
!
1
)),
n
.
innerHTML
=
e
);
n
=
0
}
catch
(
o
){}}
n
&&
this
.
empty
().
append
(
e
)},
null
,
e
,
arguments
.
length
)},
replaceWith
:
function
(
e
){
var
t
=
st
.
isFunction
(
e
);
return
t
||
"string"
==
typeof
e
||
(
e
=
st
(
e
).
not
(
this
).
detach
()),
this
.
domManip
([
e
],
!
0
,
function
(
e
){
var
t
=
this
.
nextSibling
,
n
=
this
.
parentNode
;(
n
&&
1
===
this
.
nodeType
||
11
===
this
.
nodeType
)
&&
(
st
(
this
).
remove
(),
t
?
t
.
parentNode
.
insertBefore
(
e
,
t
):
n
.
appendChild
(
e
))})},
detach
:
function
(
e
){
return
this
.
remove
(
e
,
!
0
)},
domManip
:
function
(
e
,
n
,
r
){
e
=
et
.
apply
([],
e
);
var
i
,
o
,
a
,
s
,
u
,
l
,
c
=
0
,
f
=
this
.
length
,
p
=
this
,
m
=
f
-
1
,
y
=
e
[
0
],
v
=
st
.
isFunction
(
y
);
if
(
v
||!
(
1
>=
f
||
"string"
!=
typeof
y
||
st
.
support
.
checkClone
)
&&
en
.
test
(
y
))
return
this
.
each
(
function
(
i
){
var
o
=
p
.
eq
(
i
);
v
&&
(
e
[
0
]
=
y
.
call
(
this
,
i
,
n
?
o
.
html
():
t
)),
o
.
domManip
(
e
,
n
,
r
)});
if
(
f
&&
(
i
=
st
.
buildFragment
(
e
,
this
[
0
].
ownerDocument
,
!
1
,
this
),
o
=
i
.
firstChild
,
1
===
i
.
childNodes
.
length
&&
(
i
=
o
),
o
)){
for
(
n
=
n
&&
st
.
nodeName
(
o
,
"tr"
),
a
=
st
.
map
(
b
(
i
,
"script"
),
h
),
s
=
a
.
length
;
f
>
c
;
c
++
)
u
=
i
,
c
!==
m
&&
(
u
=
st
.
clone
(
u
,
!
0
,
!
0
),
s
&&
st
.
merge
(
a
,
b
(
u
,
"script"
))),
r
.
call
(
n
&&
st
.
nodeName
(
this
[
c
],
"table"
)?
d
(
this
[
c
],
"tbody"
):
this
[
c
],
u
,
c
);
if
(
s
)
for
(
l
=
a
[
a
.
length
-
1
].
ownerDocument
,
st
.
map
(
a
,
g
),
c
=
0
;
s
>
c
;
c
++
)
u
=
a
[
c
],
tn
.
test
(
u
.
type
||
""
)
&&!
st
.
_data
(
u
,
"globalEval"
)
&&
st
.
contains
(
l
,
u
)
&&
(
u
.
src
?
st
.
ajax
({
url
:
u
.
src
,
type
:
"GET"
,
dataType
:
"script"
,
async
:
!
1
,
global
:
!
1
,
"throws"
:
!
0
}):
st
.
globalEval
((
u
.
text
||
u
.
textContent
||
u
.
innerHTML
||
""
).
replace
(
rn
,
""
)));
i
=
o
=
null
}
return
this
}}),
st
.
each
({
appendTo
:
"append"
,
prependTo
:
"prepend"
,
insertBefore
:
"before"
,
insertAfter
:
"after"
,
replaceAll
:
"replaceWith"
},
function
(
e
,
t
){
st
.
fn
[
e
]
=
function
(
e
){
for
(
var
n
,
r
=
0
,
i
=
[],
o
=
st
(
e
),
a
=
o
.
length
-
1
;
a
>=
r
;
r
++
)
n
=
r
===
a
?
this
:
this
.
clone
(
!
0
),
st
(
o
[
r
])[
t
](
n
),
tt
.
apply
(
i
,
n
.
get
());
return
this
.
pushStack
(
i
)}}),
st
.
extend
({
clone
:
function
(
e
,
t
,
n
){
var
r
,
i
,
o
,
a
,
s
,
u
=
st
.
contains
(
e
.
ownerDocument
,
e
);
if
(
st
.
support
.
html5Clone
||
st
.
isXMLDoc
(
e
)
||!
Ut
.
test
(
"<"
+
e
.
nodeName
+
">"
)?
s
=
e
.
cloneNode
(
!
0
):(
sn
.
innerHTML
=
e
.
outerHTML
,
sn
.
removeChild
(
s
=
sn
.
firstChild
)),
!
(
st
.
support
.
noCloneEvent
&&
st
.
support
.
noCloneChecked
||
1
!==
e
.
nodeType
&&
11
!==
e
.
nodeType
||
st
.
isXMLDoc
(
e
)))
for
(
r
=
b
(
s
),
i
=
b
(
e
),
a
=
0
;
null
!=
(
o
=
i
[
a
]);
++
a
)
r
[
a
]
&&
v
(
o
,
r
[
a
]);
if
(
t
)
if
(
n
)
for
(
i
=
i
||
b
(
e
),
r
=
r
||
b
(
s
),
a
=
0
;
null
!=
(
o
=
i
[
a
]);
a
++
)
y
(
o
,
r
[
a
]);
else
y
(
e
,
s
);
return
r
=
b
(
s
,
"script"
),
r
.
length
>
0
&&
m
(
r
,
!
u
&&
b
(
e
,
"script"
)),
r
=
i
=
o
=
null
,
s
},
buildFragment
:
function
(
e
,
t
,
n
,
r
){
for
(
var
i
,
o
,
a
,
s
,
u
,
l
,
c
,
f
=
e
.
length
,
d
=
p
(
t
),
h
=
[],
g
=
0
;
f
>
g
;
g
++
)
if
(
o
=
e
[
g
],
o
||
0
===
o
)
if
(
"object"
===
st
.
type
(
o
))
st
.
merge
(
h
,
o
.
nodeType
?[
o
]:
o
);
else
if
(
Qt
.
test
(
o
)){
for
(
s
=
s
||
d
.
appendChild
(
t
.
createElement
(
"div"
)),
a
=
(
Jt
.
exec
(
o
)
||
[
""
,
""
])[
1
].
toLowerCase
(),
u
=
on
[
a
]
||
on
.
_default
,
s
.
innerHTML
=
u
[
1
]
+
o
.
replace
(
Yt
,
"<$1></$2>"
)
+
u
[
2
],
c
=
u
[
0
];
c
--
;)
s
=
s
.
lastChild
;
if
(
!
st
.
support
.
leadingWhitespace
&&
Vt
.
test
(
o
)
&&
h
.
push
(
t
.
createTextNode
(
Vt
.
exec
(
o
)[
0
])),
!
st
.
support
.
tbody
)
for
(
o
=
"table"
!==
a
||
Gt
.
test
(
o
)?
"<table>"
!==
u
[
1
]
||
Gt
.
test
(
o
)?
0
:
s
:
s
.
firstChild
,
c
=
o
&&
o
.
childNodes
.
length
;
c
--
;)
st
.
nodeName
(
l
=
o
.
childNodes
[
c
],
"tbody"
)
&&!
l
.
childNodes
.
length
&&
o
.
removeChild
(
l
);
for
(
st
.
merge
(
h
,
s
.
childNodes
),
s
.
textContent
=
""
;
s
.
firstChild
;)
s
.
removeChild
(
s
.
firstChild
);
s
=
d
.
lastChild
}
else
h
.
push
(
t
.
createTextNode
(
o
));
for
(
s
&&
d
.
removeChild
(
s
),
st
.
support
.
appendChecked
||
st
.
grep
(
b
(
h
,
"input"
),
x
),
g
=
0
;
o
=
h
[
g
++
];)
if
((
!
r
||-
1
===
st
.
inArray
(
o
,
r
))
&&
(
i
=
st
.
contains
(
o
.
ownerDocument
,
o
),
s
=
b
(
d
.
appendChild
(
o
),
"script"
),
i
&&
m
(
s
),
n
))
for
(
c
=
0
;
o
=
s
[
c
++
];)
tn
.
test
(
o
.
type
||
""
)
&&
n
.
push
(
o
);
return
s
=
null
,
d
},
cleanData
:
function
(
e
,
n
){
for
(
var
r
,
i
,
o
,
a
,
s
=
0
,
u
=
st
.
expando
,
l
=
st
.
cache
,
c
=
st
.
support
.
deleteExpando
,
f
=
st
.
event
.
special
;
null
!=
(
o
=
e
[
s
]);
s
++
)
if
((
n
||
st
.
acceptData
(
o
))
&&
(
i
=
o
[
u
],
r
=
i
&&
l
[
i
])){
if
(
r
.
events
)
for
(
a
in
r
.
events
)
f
[
a
]?
st
.
event
.
remove
(
o
,
a
):
st
.
removeEvent
(
o
,
a
,
r
.
handle
);
l
[
i
]
&&
(
delete
l
[
i
],
c
?
delete
o
[
u
]:
o
.
removeAttribute
!==
t
?
o
.
removeAttribute
(
u
):
o
[
u
]
=
null
,
K
.
push
(
i
))}}});
var
un
,
ln
,
cn
,
fn
=
/alpha
\([^
)
]
*
\)
/i
,
pn
=
/opacity
\s
*=
\s
*
([^
)
]
*
)
/
,
dn
=
/^
(
top|right|bottom|left
)
$/
,
hn
=
/^
(
none|table
(?!
-c
[
ea
])
.+
)
/
,
gn
=
/^margin/
,
mn
=
RegExp
(
"^("
+
ut
+
")(.*)$"
,
"i"
),
yn
=
RegExp
(
"^("
+
ut
+
")(?!px)[a-z%]+$"
,
"i"
),
vn
=
RegExp
(
"^([+-])=("
+
ut
+
")"
,
"i"
),
bn
=
{
BODY
:
"block"
},
xn
=
{
position
:
"absolute"
,
visibility
:
"hidden"
,
display
:
"block"
},
Tn
=
{
letterSpacing
:
0
,
fontWeight
:
400
},
wn
=
[
"Top"
,
"Right"
,
"Bottom"
,
"Left"
],
Nn
=
[
"Webkit"
,
"O"
,
"Moz"
,
"ms"
];
st
.
fn
.
extend
({
css
:
function
(
e
,
n
){
return
st
.
access
(
this
,
function
(
e
,
n
,
r
){
var
i
,
o
,
a
=
{},
s
=
0
;
if
(
st
.
isArray
(
n
)){
for
(
i
=
ln
(
e
),
o
=
n
.
length
;
o
>
s
;
s
++
)
a
[
n
[
s
]]
=
st
.
css
(
e
,
n
[
s
],
!
1
,
i
);
return
a
}
return
r
!==
t
?
st
.
style
(
e
,
n
,
r
):
st
.
css
(
e
,
n
)},
e
,
n
,
arguments
.
length
>
1
)},
show
:
function
(){
return
N
(
this
,
!
0
)},
hide
:
function
(){
return
N
(
this
)},
toggle
:
function
(
e
){
var
t
=
"boolean"
==
typeof
e
;
return
this
.
each
(
function
(){(
t
?
e
:
w
(
this
))?
st
(
this
).
show
():
st
(
this
).
hide
()})}}),
st
.
extend
({
cssHooks
:{
opacity
:{
get
:
function
(
e
,
t
){
if
(
t
){
var
n
=
un
(
e
,
"opacity"
);
return
""
===
n
?
"1"
:
n
}}}},
cssNumber
:{
columnCount
:
!
0
,
fillOpacity
:
!
0
,
fontWeight
:
!
0
,
lineHeight
:
!
0
,
opacity
:
!
0
,
orphans
:
!
0
,
widows
:
!
0
,
zIndex
:
!
0
,
zoom
:
!
0
},
cssProps
:{
"float"
:
st
.
support
.
cssFloat
?
"cssFloat"
:
"styleFloat"
},
style
:
function
(
e
,
n
,
r
,
i
){
if
(
e
&&
3
!==
e
.
nodeType
&&
8
!==
e
.
nodeType
&&
e
.
style
){
var
o
,
a
,
s
,
u
=
st
.
camelCase
(
n
),
l
=
e
.
style
;
if
(
n
=
st
.
cssProps
[
u
]
||
(
st
.
cssProps
[
u
]
=
T
(
l
,
u
)),
s
=
st
.
cssHooks
[
n
]
||
st
.
cssHooks
[
u
],
r
===
t
)
return
s
&&
"get"
in
s
&&
(
o
=
s
.
get
(
e
,
!
1
,
i
))
!==
t
?
o
:
l
[
n
];
if
(
a
=
typeof
r
,
"string"
===
a
&&
(
o
=
vn
.
exec
(
r
))
&&
(
r
=
(
o
[
1
]
+
1
)
*
o
[
2
]
+
parseFloat
(
st
.
css
(
e
,
n
)),
a
=
"number"
),
!
(
null
==
r
||
"number"
===
a
&&
isNaN
(
r
)
||
(
"number"
!==
a
||
st
.
cssNumber
[
u
]
||
(
r
+=
"px"
),
st
.
support
.
clearCloneStyle
||
""
!==
r
||
0
!==
n
.
indexOf
(
"background"
)
||
(
l
[
n
]
=
"inherit"
),
s
&&
"set"
in
s
&&
(
r
=
s
.
set
(
e
,
r
,
i
))
===
t
)))
try
{
l
[
n
]
=
r
}
catch
(
c
){}}},
css
:
function
(
e
,
n
,
r
,
i
){
var
o
,
a
,
s
,
u
=
st
.
camelCase
(
n
);
return
n
=
st
.
cssProps
[
u
]
||
(
st
.
cssProps
[
u
]
=
T
(
e
.
style
,
u
)),
s
=
st
.
cssHooks
[
n
]
||
st
.
cssHooks
[
u
],
s
&&
"get"
in
s
&&
(
o
=
s
.
get
(
e
,
!
0
,
r
)),
o
===
t
&&
(
o
=
un
(
e
,
n
,
i
)),
"normal"
===
o
&&
n
in
Tn
&&
(
o
=
Tn
[
n
]),
r
?(
a
=
parseFloat
(
o
),
r
===!
0
||
st
.
isNumeric
(
a
)?
a
||
0
:
o
):
o
},
swap
:
function
(
e
,
t
,
n
,
r
){
var
i
,
o
,
a
=
{};
for
(
o
in
t
)
a
[
o
]
=
e
.
style
[
o
],
e
.
style
[
o
]
=
t
[
o
];
i
=
n
.
apply
(
e
,
r
||
[]);
for
(
o
in
t
)
e
.
style
[
o
]
=
a
[
o
];
return
i
}}),
e
.
getComputedStyle
?(
ln
=
function
(
t
){
return
e
.
getComputedStyle
(
t
,
null
)},
un
=
function
(
e
,
n
,
r
){
var
i
,
o
,
a
,
s
=
r
||
ln
(
e
),
u
=
s
?
s
.
getPropertyValue
(
n
)
||
s
[
n
]:
t
,
l
=
e
.
style
;
return
s
&&
(
""
!==
u
||
st
.
contains
(
e
.
ownerDocument
,
e
)
||
(
u
=
st
.
style
(
e
,
n
)),
yn
.
test
(
u
)
&&
gn
.
test
(
n
)
&&
(
i
=
l
.
width
,
o
=
l
.
minWidth
,
a
=
l
.
maxWidth
,
l
.
minWidth
=
l
.
maxWidth
=
l
.
width
=
u
,
u
=
s
.
width
,
l
.
width
=
i
,
l
.
minWidth
=
o
,
l
.
maxWidth
=
a
)),
u
}):
V
.
documentElement
.
currentStyle
&&
(
ln
=
function
(
e
){
return
e
.
currentStyle
},
un
=
function
(
e
,
n
,
r
){
var
i
,
o
,
a
,
s
=
r
||
ln
(
e
),
u
=
s
?
s
[
n
]:
t
,
l
=
e
.
style
;
return
null
==
u
&&
l
&&
l
[
n
]
&&
(
u
=
l
[
n
]),
yn
.
test
(
u
)
&&!
dn
.
test
(
n
)
&&
(
i
=
l
.
left
,
o
=
e
.
runtimeStyle
,
a
=
o
&&
o
.
left
,
a
&&
(
o
.
left
=
e
.
currentStyle
.
left
),
l
.
left
=
"fontSize"
===
n
?
"1em"
:
u
,
u
=
l
.
pixelLeft
+
"px"
,
l
.
left
=
i
,
a
&&
(
o
.
left
=
a
)),
""
===
u
?
"auto"
:
u
}),
st
.
each
([
"height"
,
"width"
],
function
(
e
,
n
){
st
.
cssHooks
[
n
]
=
{
get
:
function
(
e
,
r
,
i
){
return
r
?
0
===
e
.
offsetWidth
&&
hn
.
test
(
st
.
css
(
e
,
"display"
))?
st
.
swap
(
e
,
xn
,
function
(){
return
E
(
e
,
n
,
i
)}):
E
(
e
,
n
,
i
):
t
},
set
:
function
(
e
,
t
,
r
){
var
i
=
r
&&
ln
(
e
);
return
C
(
e
,
t
,
r
?
k
(
e
,
n
,
r
,
st
.
support
.
boxSizing
&&
"border-box"
===
st
.
css
(
e
,
"boxSizing"
,
!
1
,
i
),
i
):
0
)}}}),
st
.
support
.
opacity
||
(
st
.
cssHooks
.
opacity
=
{
get
:
function
(
e
,
t
){
return
pn
.
test
((
t
&&
e
.
currentStyle
?
e
.
currentStyle
.
filter
:
e
.
style
.
filter
)
||
""
)?.
01
*
parseFloat
(
RegExp
.
$1
)
+
""
:
t
?
"1"
:
""
},
set
:
function
(
e
,
t
){
var
n
=
e
.
style
,
r
=
e
.
currentStyle
,
i
=
st
.
isNumeric
(
t
)?
"alpha(opacity="
+
100
*
t
+
")"
:
""
,
o
=
r
&&
r
.
filter
||
n
.
filter
||
""
;
n
.
zoom
=
1
,(
t
>=
1
||
""
===
t
)
&&
""
===
st
.
trim
(
o
.
replace
(
fn
,
""
))
&&
n
.
removeAttribute
&&
(
n
.
removeAttribute
(
"filter"
),
""
===
t
||
r
&&!
r
.
filter
)
||
(
n
.
filter
=
fn
.
test
(
o
)?
o
.
replace
(
fn
,
i
):
o
+
" "
+
i
)}}),
st
(
function
(){
st
.
support
.
reliableMarginRight
||
(
st
.
cssHooks
.
marginRight
=
{
get
:
function
(
e
,
n
){
return
n
?
st
.
swap
(
e
,{
display
:
"inline-block"
},
un
,[
e
,
"marginRight"
]):
t
}}),
!
st
.
support
.
pixelPosition
&&
st
.
fn
.
position
&&
st
.
each
([
"top"
,
"left"
],
function
(
e
,
n
){
st
.
cssHooks
[
n
]
=
{
get
:
function
(
e
,
r
){
return
r
?(
r
=
un
(
e
,
n
),
yn
.
test
(
r
)?
st
(
e
).
position
()[
n
]
+
"px"
:
r
):
t
}}})}),
st
.
expr
&&
st
.
expr
.
filters
&&
(
st
.
expr
.
filters
.
hidden
=
function
(
e
){
return
0
===
e
.
offsetWidth
&&
0
===
e
.
offsetHeight
||!
st
.
support
.
reliableHiddenOffsets
&&
"none"
===
(
e
.
style
&&
e
.
style
.
display
||
st
.
css
(
e
,
"display"
))},
st
.
expr
.
filters
.
visible
=
function
(
e
){
return
!
st
.
expr
.
filters
.
hidden
(
e
)}),
st
.
each
({
margin
:
""
,
padding
:
""
,
border
:
"Width"
},
function
(
e
,
t
){
st
.
cssHooks
[
e
+
t
]
=
{
expand
:
function
(
n
){
for
(
var
r
=
0
,
i
=
{},
o
=
"string"
==
typeof
n
?
n
.
split
(
" "
):[
n
];
4
>
r
;
r
++
)
i
[
e
+
wn
[
r
]
+
t
]
=
o
[
r
]
||
o
[
r
-
2
]
||
o
[
0
];
return
i
}},
gn
.
test
(
e
)
||
(
st
.
cssHooks
[
e
+
t
].
set
=
C
)});
var
Cn
=
/%20/g
,
kn
=
/
\[\]
$/
,
En
=
/
\r?\n
/g
,
Sn
=
/^
(?:
submit|button|image|reset
)
$/i
,
An
=
/^
(?:
input|select|textarea|keygen
)
/i
;
st
.
fn
.
extend
({
serialize
:
function
(){
return
st
.
param
(
this
.
serializeArray
())},
serializeArray
:
function
(){
return
this
.
map
(
function
(){
var
e
=
st
.
prop
(
this
,
"elements"
);
return
e
?
st
.
makeArray
(
e
):
this
}).
filter
(
function
(){
var
e
=
this
.
type
;
return
this
.
name
&&!
st
(
this
).
is
(
":disabled"
)
&&
An
.
test
(
this
.
nodeName
)
&&!
Sn
.
test
(
e
)
&&
(
this
.
checked
||!
Zt
.
test
(
e
))}).
map
(
function
(
e
,
t
){
var
n
=
st
(
this
).
val
();
return
null
==
n
?
null
:
st
.
isArray
(
n
)?
st
.
map
(
n
,
function
(
e
){
return
{
name
:
t
.
name
,
value
:
e
.
replace
(
En
,
"
\
r
\
n"
)}}):{
name
:
t
.
name
,
value
:
n
.
replace
(
En
,
"
\
r
\
n"
)}}).
get
()}}),
st
.
param
=
function
(
e
,
n
){
var
r
,
i
=
[],
o
=
function
(
e
,
t
){
t
=
st
.
isFunction
(
t
)?
t
():
null
==
t
?
""
:
t
,
i
[
i
.
length
]
=
encodeURIComponent
(
e
)
+
"="
+
encodeURIComponent
(
t
)};
if
(
n
===
t
&&
(
n
=
st
.
ajaxSettings
&&
st
.
ajaxSettings
.
traditional
),
st
.
isArray
(
e
)
||
e
.
jquery
&&!
st
.
isPlainObject
(
e
))
st
.
each
(
e
,
function
(){
o
(
this
.
name
,
this
.
value
)});
else
for
(
r
in
e
)
j
(
r
,
e
[
r
],
n
,
o
);
return
i
.
join
(
"&"
).
replace
(
Cn
,
"+"
)};
var
jn
,
Dn
,
Ln
=
st
.
now
(),
Hn
=
/
\?
/
,
Mn
=
/#.*$/
,
qn
=
/
([
?&
])
_=
[^
&
]
*/
,
_n
=
/^
(
.*
?)
:
[
\t]
*
([^\r\n]
*
)\r?
$/gm
,
Fn
=
/^
(?:
about|app|app-storage|.+-extension|file|res|widget
)
:$/
,
On
=
/^
(?:
GET|HEAD
)
$/
,
Bn
=
/^
\/\/
/
,
Pn
=
/^
([\w
.+-
]
+:
)(?:\/\/([^\/
?#:
]
*
)(?:
:
(\d
+
)
|
)
|
)
/
,
Rn
=
st
.
fn
.
load
,
Wn
=
{},
$n
=
{},
In
=
"*/"
.
concat
(
"*"
);
try
{
Dn
=
Y
.
href
}
catch
(
zn
){
Dn
=
V
.
createElement
(
"a"
),
Dn
.
href
=
""
,
Dn
=
Dn
.
href
}
jn
=
Pn
.
exec
(
Dn
.
toLowerCase
())
||
[],
st
.
fn
.
load
=
function
(
e
,
n
,
r
){
if
(
"string"
!=
typeof
e
&&
Rn
)
return
Rn
.
apply
(
this
,
arguments
);
var
i
,
o
,
a
,
s
=
this
,
u
=
e
.
indexOf
(
" "
);
return
u
>=
0
&&
(
i
=
e
.
slice
(
u
,
e
.
length
),
e
=
e
.
slice
(
0
,
u
)),
st
.
isFunction
(
n
)?(
r
=
n
,
n
=
t
):
n
&&
"object"
==
typeof
n
&&
(
o
=
"POST"
),
s
.
length
>
0
&&
st
.
ajax
({
url
:
e
,
type
:
o
,
dataType
:
"html"
,
data
:
n
}).
done
(
function
(
e
){
a
=
arguments
,
s
.
html
(
i
?
st
(
"<div>"
).
append
(
st
.
parseHTML
(
e
)).
find
(
i
):
e
)}).
complete
(
r
&&
function
(
e
,
t
){
s
.
each
(
r
,
a
||
[
e
.
responseText
,
t
,
e
])}),
this
},
st
.
each
([
"ajaxStart"
,
"ajaxStop"
,
"ajaxComplete"
,
"ajaxError"
,
"ajaxSuccess"
,
"ajaxSend"
],
function
(
e
,
t
){
st
.
fn
[
t
]
=
function
(
e
){
return
this
.
on
(
t
,
e
)}}),
st
.
each
([
"get"
,
"post"
],
function
(
e
,
n
){
st
[
n
]
=
function
(
e
,
r
,
i
,
o
){
return
st
.
isFunction
(
r
)
&&
(
o
=
o
||
i
,
i
=
r
,
r
=
t
),
st
.
ajax
({
url
:
e
,
type
:
n
,
dataType
:
o
,
data
:
r
,
success
:
i
})}}),
st
.
extend
({
active
:
0
,
lastModified
:{},
etag
:{},
ajaxSettings
:{
url
:
Dn
,
type
:
"GET"
,
isLocal
:
Fn
.
test
(
jn
[
1
]),
global
:
!
0
,
processData
:
!
0
,
async
:
!
0
,
contentType
:
"application/x-www-form-urlencoded; charset=UTF-8"
,
accepts
:{
"*"
:
In
,
text
:
"text/plain"
,
html
:
"text/html"
,
xml
:
"application/xml, text/xml"
,
json
:
"application/json, text/javascript"
},
contents
:{
xml
:
/xml/
,
html
:
/html/
,
json
:
/json/
},
responseFields
:{
xml
:
"responseXML"
,
text
:
"responseText"
},
converters
:{
"* text"
:
e
.
String
,
"text html"
:
!
0
,
"text json"
:
st
.
parseJSON
,
"text xml"
:
st
.
parseXML
},
flatOptions
:{
url
:
!
0
,
context
:
!
0
}},
ajaxSetup
:
function
(
e
,
t
){
return
t
?
H
(
H
(
e
,
st
.
ajaxSettings
),
t
):
H
(
st
.
ajaxSettings
,
e
)},
ajaxPrefilter
:
D
(
Wn
),
ajaxTransport
:
D
(
$n
),
ajax
:
function
(
e
,
n
){
function
r
(
e
,
n
,
r
,
s
){
var
l
,
f
,
v
,
b
,
T
,
N
=
n
;
2
!==
x
&&
(
x
=
2
,
u
&&
clearTimeout
(
u
),
i
=
t
,
a
=
s
||
""
,
w
.
readyState
=
e
>
0
?
4
:
0
,
r
&&
(
b
=
M
(
p
,
w
,
r
)),
e
>=
200
&&
300
>
e
||
304
===
e
?(
p
.
ifModified
&&
(
T
=
w
.
getResponseHeader
(
"Last-Modified"
),
T
&&
(
st
.
lastModified
[
o
]
=
T
),
T
=
w
.
getResponseHeader
(
"etag"
),
T
&&
(
st
.
etag
[
o
]
=
T
)),
304
===
e
?(
l
=!
0
,
N
=
"notmodified"
):(
l
=
q
(
p
,
b
),
N
=
l
.
state
,
f
=
l
.
data
,
v
=
l
.
error
,
l
=!
v
)):(
v
=
N
,(
e
||!
N
)
&&
(
N
=
"error"
,
0
>
e
&&
(
e
=
0
))),
w
.
status
=
e
,
w
.
statusText
=
(
n
||
N
)
+
""
,
l
?
g
.
resolveWith
(
d
,[
f
,
N
,
w
]):
g
.
rejectWith
(
d
,[
w
,
N
,
v
]),
w
.
statusCode
(
y
),
y
=
t
,
c
&&
h
.
trigger
(
l
?
"ajaxSuccess"
:
"ajaxError"
,[
w
,
p
,
l
?
f
:
v
]),
m
.
fireWith
(
d
,[
w
,
N
]),
c
&&
(
h
.
trigger
(
"ajaxComplete"
,[
w
,
p
]),
--
st
.
active
||
st
.
event
.
trigger
(
"ajaxStop"
)))}
"object"
==
typeof
e
&&
(
n
=
e
,
e
=
t
),
n
=
n
||
{};
var
i
,
o
,
a
,
s
,
u
,
l
,
c
,
f
,
p
=
st
.
ajaxSetup
({},
n
),
d
=
p
.
context
||
p
,
h
=
p
.
context
&&
(
d
.
nodeType
||
d
.
jquery
)?
st
(
d
):
st
.
event
,
g
=
st
.
Deferred
(),
m
=
st
.
Callbacks
(
"once memory"
),
y
=
p
.
statusCode
||
{},
v
=
{},
b
=
{},
x
=
0
,
T
=
"canceled"
,
w
=
{
readyState
:
0
,
getResponseHeader
:
function
(
e
){
var
t
;
if
(
2
===
x
){
if
(
!
s
)
for
(
s
=
{};
t
=
_n
.
exec
(
a
);)
s
[
t
[
1
].
toLowerCase
()]
=
t
[
2
];
t
=
s
[
e
.
toLowerCase
()]}
return
null
==
t
?
null
:
t
},
getAllResponseHeaders
:
function
(){
return
2
===
x
?
a
:
null
},
setRequestHeader
:
function
(
e
,
t
){
var
n
=
e
.
toLowerCase
();
return
x
||
(
e
=
b
[
n
]
=
b
[
n
]
||
e
,
v
[
e
]
=
t
),
this
},
overrideMimeType
:
function
(
e
){
return
x
||
(
p
.
mimeType
=
e
),
this
},
statusCode
:
function
(
e
){
var
t
;
if
(
e
)
if
(
2
>
x
)
for
(
t
in
e
)
y
[
t
]
=
[
y
[
t
],
e
[
t
]];
else
w
.
always
(
e
[
w
.
status
]);
return
this
},
abort
:
function
(
e
){
var
t
=
e
||
T
;
return
i
&&
i
.
abort
(
t
),
r
(
0
,
t
),
this
}};
if
(
g
.
promise
(
w
).
complete
=
m
.
add
,
w
.
success
=
w
.
done
,
w
.
error
=
w
.
fail
,
p
.
url
=
((
e
||
p
.
url
||
Dn
)
+
""
).
replace
(
Mn
,
""
).
replace
(
Bn
,
jn
[
1
]
+
"//"
),
p
.
type
=
n
.
method
||
n
.
type
||
p
.
method
||
p
.
type
,
p
.
dataTypes
=
st
.
trim
(
p
.
dataType
||
"*"
).
toLowerCase
().
match
(
lt
)
||
[
""
],
null
==
p
.
crossDomain
&&
(
l
=
Pn
.
exec
(
p
.
url
.
toLowerCase
()),
p
.
crossDomain
=!
(
!
l
||
l
[
1
]
===
jn
[
1
]
&&
l
[
2
]
===
jn
[
2
]
&&
(
l
[
3
]
||
(
"http:"
===
l
[
1
]?
80
:
443
))
==
(
jn
[
3
]
||
(
"http:"
===
jn
[
1
]?
80
:
443
)))),
p
.
data
&&
p
.
processData
&&
"string"
!=
typeof
p
.
data
&&
(
p
.
data
=
st
.
param
(
p
.
data
,
p
.
traditional
)),
L
(
Wn
,
p
,
n
,
w
),
2
===
x
)
return
w
;
c
=
p
.
global
,
c
&&
0
===
st
.
active
++&&
st
.
event
.
trigger
(
"ajaxStart"
),
p
.
type
=
p
.
type
.
toUpperCase
(),
p
.
hasContent
=!
On
.
test
(
p
.
type
),
o
=
p
.
url
,
p
.
hasContent
||
(
p
.
data
&&
(
o
=
p
.
url
+=
(
Hn
.
test
(
o
)?
"&"
:
"?"
)
+
p
.
data
,
delete
p
.
data
),
p
.
cache
===!
1
&&
(
p
.
url
=
qn
.
test
(
o
)?
o
.
replace
(
qn
,
"$1_="
+
Ln
++
):
o
+
(
Hn
.
test
(
o
)?
"&"
:
"?"
)
+
"_="
+
Ln
++
)),
p
.
ifModified
&&
(
st
.
lastModified
[
o
]
&&
w
.
setRequestHeader
(
"If-Modified-Since"
,
st
.
lastModified
[
o
]),
st
.
etag
[
o
]
&&
w
.
setRequestHeader
(
"If-None-Match"
,
st
.
etag
[
o
])),(
p
.
data
&&
p
.
hasContent
&&
p
.
contentType
!==!
1
||
n
.
contentType
)
&&
w
.
setRequestHeader
(
"Content-Type"
,
p
.
contentType
),
w
.
setRequestHeader
(
"Accept"
,
p
.
dataTypes
[
0
]
&&
p
.
accepts
[
p
.
dataTypes
[
0
]]?
p
.
accepts
[
p
.
dataTypes
[
0
]]
+
(
"*"
!==
p
.
dataTypes
[
0
]?
", "
+
In
+
"; q=0.01"
:
""
):
p
.
accepts
[
"*"
]);
for
(
f
in
p
.
headers
)
w
.
setRequestHeader
(
f
,
p
.
headers
[
f
]);
if
(
p
.
beforeSend
&&
(
p
.
beforeSend
.
call
(
d
,
w
,
p
)
===!
1
||
2
===
x
))
return
w
.
abort
();
T
=
"abort"
;
for
(
f
in
{
success
:
1
,
error
:
1
,
complete
:
1
})
w
[
f
](
p
[
f
]);
if
(
i
=
L
(
$n
,
p
,
n
,
w
)){
w
.
readyState
=
1
,
c
&&
h
.
trigger
(
"ajaxSend"
,[
w
,
p
]),
p
.
async
&&
p
.
timeout
>
0
&&
(
u
=
setTimeout
(
function
(){
w
.
abort
(
"timeout"
)},
p
.
timeout
));
try
{
x
=
1
,
i
.
send
(
v
,
r
)}
catch
(
N
){
if
(
!
(
2
>
x
))
throw
N
;
r
(
-
1
,
N
)}}
else
r
(
-
1
,
"No Transport"
);
return
w
},
getScript
:
function
(
e
,
n
){
return
st
.
get
(
e
,
t
,
n
,
"script"
)},
getJSON
:
function
(
e
,
t
,
n
){
return
st
.
get
(
e
,
t
,
n
,
"json"
)}}),
st
.
ajaxSetup
({
accepts
:{
script
:
"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
},
contents
:{
script
:
/
(?:
java|ecma
)
script/
},
converters
:{
"text script"
:
function
(
e
){
return
st
.
globalEval
(
e
),
e
}}}),
st
.
ajaxPrefilter
(
"script"
,
function
(
e
){
e
.
cache
===
t
&&
(
e
.
cache
=!
1
),
e
.
crossDomain
&&
(
e
.
type
=
"GET"
,
e
.
global
=!
1
)}),
st
.
ajaxTransport
(
"script"
,
function
(
e
){
if
(
e
.
crossDomain
){
var
n
,
r
=
V
.
head
||
st
(
"head"
)[
0
]
||
V
.
documentElement
;
return
{
send
:
function
(
t
,
i
){
n
=
V
.
createElement
(
"script"
),
n
.
async
=!
0
,
e
.
scriptCharset
&&
(
n
.
charset
=
e
.
scriptCharset
),
n
.
src
=
e
.
url
,
n
.
onload
=
n
.
onreadystatechange
=
function
(
e
,
t
){(
t
||!
n
.
readyState
||
/loaded|complete/
.
test
(
n
.
readyState
))
&&
(
n
.
onload
=
n
.
onreadystatechange
=
null
,
n
.
parentNode
&&
n
.
parentNode
.
removeChild
(
n
),
n
=
null
,
t
||
i
(
200
,
"success"
))},
r
.
insertBefore
(
n
,
r
.
firstChild
)},
abort
:
function
(){
n
&&
n
.
onload
(
t
,
!
0
)}}}});
var
Xn
=
[],
Un
=
/
(
=
)\?(?=
&|$
)
|
\?\?
/
;
st
.
ajaxSetup
({
jsonp
:
"callback"
,
jsonpCallback
:
function
(){
var
e
=
Xn
.
pop
()
||
st
.
expando
+
"_"
+
Ln
++
;
return
this
[
e
]
=!
0
,
e
}}),
st
.
ajaxPrefilter
(
"json jsonp"
,
function
(
n
,
r
,
i
){
var
o
,
a
,
s
,
u
=
n
.
jsonp
!==!
1
&&
(
Un
.
test
(
n
.
url
)?
"url"
:
"string"
==
typeof
n
.
data
&&!
(
n
.
contentType
||
""
).
indexOf
(
"application/x-www-form-urlencoded"
)
&&
Un
.
test
(
n
.
data
)
&&
"data"
);
return
u
||
"jsonp"
===
n
.
dataTypes
[
0
]?(
o
=
n
.
jsonpCallback
=
st
.
isFunction
(
n
.
jsonpCallback
)?
n
.
jsonpCallback
():
n
.
jsonpCallback
,
u
?
n
[
u
]
=
n
[
u
].
replace
(
Un
,
"$1"
+
o
):
n
.
jsonp
!==!
1
&&
(
n
.
url
+=
(
Hn
.
test
(
n
.
url
)?
"&"
:
"?"
)
+
n
.
jsonp
+
"="
+
o
),
n
.
converters
[
"script json"
]
=
function
(){
return
s
||
st
.
error
(
o
+
" was not called"
),
s
[
0
]},
n
.
dataTypes
[
0
]
=
"json"
,
a
=
e
[
o
],
e
[
o
]
=
function
(){
s
=
arguments
},
i
.
always
(
function
(){
e
[
o
]
=
a
,
n
[
o
]
&&
(
n
.
jsonpCallback
=
r
.
jsonpCallback
,
Xn
.
push
(
o
)),
s
&&
st
.
isFunction
(
a
)
&&
a
(
s
[
0
]),
s
=
a
=
t
}),
"script"
):
t
});
var
Vn
,
Yn
,
Jn
=
0
,
Gn
=
e
.
ActiveXObject
&&
function
(){
var
e
;
for
(
e
in
Vn
)
Vn
[
e
](
t
,
!
0
)};
st
.
ajaxSettings
.
xhr
=
e
.
ActiveXObject
?
function
(){
return
!
this
.
isLocal
&&
_
()
||
F
()}:
_
,
Yn
=
st
.
ajaxSettings
.
xhr
(),
st
.
support
.
cors
=!!
Yn
&&
"withCredentials"
in
Yn
,
Yn
=
st
.
support
.
ajax
=!!
Yn
,
Yn
&&
st
.
ajaxTransport
(
function
(
n
){
if
(
!
n
.
crossDomain
||
st
.
support
.
cors
){
var
r
;
return
{
send
:
function
(
i
,
o
){
var
a
,
s
,
u
=
n
.
xhr
();
if
(
n
.
username
?
u
.
open
(
n
.
type
,
n
.
url
,
n
.
async
,
n
.
username
,
n
.
password
):
u
.
open
(
n
.
type
,
n
.
url
,
n
.
async
),
n
.
xhrFields
)
for
(
s
in
n
.
xhrFields
)
u
[
s
]
=
n
.
xhrFields
[
s
];
n
.
mimeType
&&
u
.
overrideMimeType
&&
u
.
overrideMimeType
(
n
.
mimeType
),
n
.
crossDomain
||
i
[
"X-Requested-With"
]
||
(
i
[
"X-Requested-With"
]
=
"XMLHttpRequest"
);
try
{
for
(
s
in
i
)
u
.
setRequestHeader
(
s
,
i
[
s
])}
catch
(
l
){}
u
.
send
(
n
.
hasContent
&&
n
.
data
||
null
),
r
=
function
(
e
,
i
){
var
s
,
l
,
c
,
f
,
p
;
try
{
if
(
r
&&
(
i
||
4
===
u
.
readyState
))
if
(
r
=
t
,
a
&&
(
u
.
onreadystatechange
=
st
.
noop
,
Gn
&&
delete
Vn
[
a
]),
i
)
4
!==
u
.
readyState
&&
u
.
abort
();
else
{
f
=
{},
s
=
u
.
status
,
p
=
u
.
responseXML
,
c
=
u
.
getAllResponseHeaders
(),
p
&&
p
.
documentElement
&&
(
f
.
xml
=
p
),
"string"
==
typeof
u
.
responseText
&&
(
f
.
text
=
u
.
responseText
);
try
{
l
=
u
.
statusText
}
catch
(
d
){
l
=
""
}
s
||!
n
.
isLocal
||
n
.
crossDomain
?
1223
===
s
&&
(
s
=
204
):
s
=
f
.
text
?
200
:
404
}}
catch
(
h
){
i
||
o
(
-
1
,
h
)}
f
&&
o
(
s
,
l
,
f
,
c
)},
n
.
async
?
4
===
u
.
readyState
?
setTimeout
(
r
):(
a
=++
Jn
,
Gn
&&
(
Vn
||
(
Vn
=
{},
st
(
e
).
unload
(
Gn
)),
Vn
[
a
]
=
r
),
u
.
onreadystatechange
=
r
):
r
()},
abort
:
function
(){
r
&&
r
(
t
,
!
0
)}}}});
var
Qn
,
Kn
,
Zn
=
/^
(?:
toggle|show|hide
)
$/
,
er
=
RegExp
(
"^(?:([+-])=|)("
+
ut
+
")([a-z%]*)$"
,
"i"
),
tr
=
/queueHooks$/
,
nr
=
[
W
],
rr
=
{
"*"
:[
function
(
e
,
t
){
var
n
,
r
,
i
=
this
.
createTween
(
e
,
t
),
o
=
er
.
exec
(
t
),
a
=
i
.
cur
(),
s
=+
a
||
0
,
u
=
1
,
l
=
20
;
if
(
o
){
if
(
n
=+
o
[
2
],
r
=
o
[
3
]
||
(
st
.
cssNumber
[
e
]?
""
:
"px"
),
"px"
!==
r
&&
s
){
s
=
st
.
css
(
i
.
elem
,
e
,
!
0
)
||
n
||
1
;
do
u
=
u
||
".5"
,
s
/=
u
,
st
.
style
(
i
.
elem
,
e
,
s
+
r
);
while
(
u
!==
(
u
=
i
.
cur
()
/
a
)
&&
1
!==
u
&&--
l
)}
i
.
unit
=
r
,
i
.
start
=
s
,
i
.
end
=
o
[
1
]?
s
+
(
o
[
1
]
+
1
)
*
n
:
n
}
return
i
}]};
st
.
Animation
=
st
.
extend
(
P
,{
tweener
:
function
(
e
,
t
){
st
.
isFunction
(
e
)?(
t
=
e
,
e
=
[
"*"
]):
e
=
e
.
split
(
" "
);
for
(
var
n
,
r
=
0
,
i
=
e
.
length
;
i
>
r
;
r
++
)
n
=
e
[
r
],
rr
[
n
]
=
rr
[
n
]
||
[],
rr
[
n
].
unshift
(
t
)},
prefilter
:
function
(
e
,
t
){
t
?
nr
.
unshift
(
e
):
nr
.
push
(
e
)}}),
st
.
Tween
=
$
,
$
.
prototype
=
{
constructor
:
$
,
init
:
function
(
e
,
t
,
n
,
r
,
i
,
o
){
this
.
elem
=
e
,
this
.
prop
=
n
,
this
.
easing
=
i
||
"swing"
,
this
.
options
=
t
,
this
.
start
=
this
.
now
=
this
.
cur
(),
this
.
end
=
r
,
this
.
unit
=
o
||
(
st
.
cssNumber
[
n
]?
""
:
"px"
)},
cur
:
function
(){
var
e
=
$
.
propHooks
[
this
.
prop
];
return
e
&&
e
.
get
?
e
.
get
(
this
):
$
.
propHooks
.
_default
.
get
(
this
)},
run
:
function
(
e
){
var
t
,
n
=
$
.
propHooks
[
this
.
prop
];
return
this
.
pos
=
t
=
this
.
options
.
duration
?
st
.
easing
[
this
.
easing
](
e
,
this
.
options
.
duration
*
e
,
0
,
1
,
this
.
options
.
duration
):
e
,
this
.
now
=
(
this
.
end
-
this
.
start
)
*
t
+
this
.
start
,
this
.
options
.
step
&&
this
.
options
.
step
.
call
(
this
.
elem
,
this
.
now
,
this
),
n
&&
n
.
set
?
n
.
set
(
this
):
$
.
propHooks
.
_default
.
set
(
this
),
this
}},
$
.
prototype
.
init
.
prototype
=
$
.
prototype
,
$
.
propHooks
=
{
_default
:{
get
:
function
(
e
){
var
t
;
return
null
==
e
.
elem
[
e
.
prop
]
||
e
.
elem
.
style
&&
null
!=
e
.
elem
.
style
[
e
.
prop
]?(
t
=
st
.
css
(
e
.
elem
,
e
.
prop
,
"auto"
),
t
&&
"auto"
!==
t
?
t
:
0
):
e
.
elem
[
e
.
prop
]},
set
:
function
(
e
){
st
.
fx
.
step
[
e
.
prop
]?
st
.
fx
.
step
[
e
.
prop
](
e
):
e
.
elem
.
style
&&
(
null
!=
e
.
elem
.
style
[
st
.
cssProps
[
e
.
prop
]]
||
st
.
cssHooks
[
e
.
prop
])?
st
.
style
(
e
.
elem
,
e
.
prop
,
e
.
now
+
e
.
unit
):
e
.
elem
[
e
.
prop
]
=
e
.
now
}}},
$
.
propHooks
.
scrollTop
=
$
.
propHooks
.
scrollLeft
=
{
set
:
function
(
e
){
e
.
elem
.
nodeType
&&
e
.
elem
.
parentNode
&&
(
e
.
elem
[
e
.
prop
]
=
e
.
now
)}},
st
.
each
([
"toggle"
,
"show"
,
"hide"
],
function
(
e
,
t
){
var
n
=
st
.
fn
[
t
];
st
.
fn
[
t
]
=
function
(
e
,
r
,
i
){
return
null
==
e
||
"boolean"
==
typeof
e
?
n
.
apply
(
this
,
arguments
):
this
.
animate
(
I
(
t
,
!
0
),
e
,
r
,
i
)}}),
st
.
fn
.
extend
({
fadeTo
:
function
(
e
,
t
,
n
,
r
){
return
this
.
filter
(
w
).
css
(
"opacity"
,
0
).
show
().
end
().
animate
({
opacity
:
t
},
e
,
n
,
r
)},
animate
:
function
(
e
,
t
,
n
,
r
){
var
i
=
st
.
isEmptyObject
(
e
),
o
=
st
.
speed
(
t
,
n
,
r
),
a
=
function
(){
var
t
=
P
(
this
,
st
.
extend
({},
e
),
o
);
a
.
finish
=
function
(){
t
.
stop
(
!
0
)},(
i
||
st
.
_data
(
this
,
"finish"
))
&&
t
.
stop
(
!
0
)};
return
a
.
finish
=
a
,
i
||
o
.
queue
===!
1
?
this
.
each
(
a
):
this
.
queue
(
o
.
queue
,
a
)},
stop
:
function
(
e
,
n
,
r
){
var
i
=
function
(
e
){
var
t
=
e
.
stop
;
delete
e
.
stop
,
t
(
r
)};
return
"string"
!=
typeof
e
&&
(
r
=
n
,
n
=
e
,
e
=
t
),
n
&&
e
!==!
1
&&
this
.
queue
(
e
||
"fx"
,[]),
this
.
each
(
function
(){
var
t
=!
0
,
n
=
null
!=
e
&&
e
+
"queueHooks"
,
o
=
st
.
timers
,
a
=
st
.
_data
(
this
);
if
(
n
)
a
[
n
]
&&
a
[
n
].
stop
&&
i
(
a
[
n
]);
else
for
(
n
in
a
)
a
[
n
]
&&
a
[
n
].
stop
&&
tr
.
test
(
n
)
&&
i
(
a
[
n
]);
for
(
n
=
o
.
length
;
n
--
;)
o
[
n
].
elem
!==
this
||
null
!=
e
&&
o
[
n
].
queue
!==
e
||
(
o
[
n
].
anim
.
stop
(
r
),
t
=!
1
,
o
.
splice
(
n
,
1
));(
t
||!
r
)
&&
st
.
dequeue
(
this
,
e
)})},
finish
:
function
(
e
){
return
e
!==!
1
&&
(
e
=
e
||
"fx"
),
this
.
each
(
function
(){
var
t
,
n
=
st
.
_data
(
this
),
r
=
n
[
e
+
"queue"
],
i
=
n
[
e
+
"queueHooks"
],
o
=
st
.
timers
,
a
=
r
?
r
.
length
:
0
;
for
(
n
.
finish
=!
0
,
st
.
queue
(
this
,
e
,[]),
i
&&
i
.
cur
&&
i
.
cur
.
finish
&&
i
.
cur
.
finish
.
call
(
this
),
t
=
o
.
length
;
t
--
;)
o
[
t
].
elem
===
this
&&
o
[
t
].
queue
===
e
&&
(
o
[
t
].
anim
.
stop
(
!
0
),
o
.
splice
(
t
,
1
));
for
(
t
=
0
;
a
>
t
;
t
++
)
r
[
t
]
&&
r
[
t
].
finish
&&
r
[
t
].
finish
.
call
(
this
);
delete
n
.
finish
})}}),
st
.
each
({
slideDown
:
I
(
"show"
),
slideUp
:
I
(
"hide"
),
slideToggle
:
I
(
"toggle"
),
fadeIn
:{
opacity
:
"show"
},
fadeOut
:{
opacity
:
"hide"
},
fadeToggle
:{
opacity
:
"toggle"
}},
function
(
e
,
t
){
st
.
fn
[
e
]
=
function
(
e
,
n
,
r
){
return
this
.
animate
(
t
,
e
,
n
,
r
)}}),
st
.
speed
=
function
(
e
,
t
,
n
){
var
r
=
e
&&
"object"
==
typeof
e
?
st
.
extend
({},
e
):{
complete
:
n
||!
n
&&
t
||
st
.
isFunction
(
e
)
&&
e
,
duration
:
e
,
easing
:
n
&&
t
||
t
&&!
st
.
isFunction
(
t
)
&&
t
};
return
r
.
duration
=
st
.
fx
.
off
?
0
:
"number"
==
typeof
r
.
duration
?
r
.
duration
:
r
.
duration
in
st
.
fx
.
speeds
?
st
.
fx
.
speeds
[
r
.
duration
]:
st
.
fx
.
speeds
.
_default
,(
null
==
r
.
queue
||
r
.
queue
===!
0
)
&&
(
r
.
queue
=
"fx"
),
r
.
old
=
r
.
complete
,
r
.
complete
=
function
(){
st
.
isFunction
(
r
.
old
)
&&
r
.
old
.
call
(
this
),
r
.
queue
&&
st
.
dequeue
(
this
,
r
.
queue
)},
r
},
st
.
easing
=
{
linear
:
function
(
e
){
return
e
},
swing
:
function
(
e
){
return
.
5
-
Math
.
cos
(
e
*
Math
.
PI
)
/
2
}},
st
.
timers
=
[],
st
.
fx
=
$
.
prototype
.
init
,
st
.
fx
.
tick
=
function
(){
var
e
,
n
=
st
.
timers
,
r
=
0
;
for
(
Qn
=
st
.
now
();
n
.
length
>
r
;
r
++
)
e
=
n
[
r
],
e
()
||
n
[
r
]
!==
e
||
n
.
splice
(
r
--
,
1
);
n
.
length
||
st
.
fx
.
stop
(),
Qn
=
t
},
st
.
fx
.
timer
=
function
(
e
){
e
()
&&
st
.
timers
.
push
(
e
)
&&
st
.
fx
.
start
()},
st
.
fx
.
interval
=
13
,
st
.
fx
.
start
=
function
(){
Kn
||
(
Kn
=
setInterval
(
st
.
fx
.
tick
,
st
.
fx
.
interval
))},
st
.
fx
.
stop
=
function
(){
clearInterval
(
Kn
),
Kn
=
null
},
st
.
fx
.
speeds
=
{
slow
:
600
,
fast
:
200
,
_default
:
400
},
st
.
fx
.
step
=
{},
st
.
expr
&&
st
.
expr
.
filters
&&
(
st
.
expr
.
filters
.
animated
=
function
(
e
){
return
st
.
grep
(
st
.
timers
,
function
(
t
){
return
e
===
t
.
elem
}).
length
}),
st
.
fn
.
offset
=
function
(
e
){
if
(
arguments
.
length
)
return
e
===
t
?
this
:
this
.
each
(
function
(
t
){
st
.
offset
.
setOffset
(
this
,
e
,
t
)});
var
n
,
r
,
i
=
{
top
:
0
,
left
:
0
},
o
=
this
[
0
],
a
=
o
&&
o
.
ownerDocument
;
if
(
a
)
return
n
=
a
.
documentElement
,
st
.
contains
(
n
,
o
)?(
o
.
getBoundingClientRect
!==
t
&&
(
i
=
o
.
getBoundingClientRect
()),
r
=
z
(
a
),{
top
:
i
.
top
+
(
r
.
pageYOffset
||
n
.
scrollTop
)
-
(
n
.
clientTop
||
0
),
left
:
i
.
left
+
(
r
.
pageXOffset
||
n
.
scrollLeft
)
-
(
n
.
clientLeft
||
0
)}):
i
},
st
.
offset
=
{
setOffset
:
function
(
e
,
t
,
n
){
var
r
=
st
.
css
(
e
,
"position"
);
"static"
===
r
&&
(
e
.
style
.
position
=
"relative"
);
var
i
,
o
,
a
=
st
(
e
),
s
=
a
.
offset
(),
u
=
st
.
css
(
e
,
"top"
),
l
=
st
.
css
(
e
,
"left"
),
c
=
(
"absolute"
===
r
||
"fixed"
===
r
)
&&
st
.
inArray
(
"auto"
,[
u
,
l
])
>-
1
,
f
=
{},
p
=
{};
c
?(
p
=
a
.
position
(),
i
=
p
.
top
,
o
=
p
.
left
):(
i
=
parseFloat
(
u
)
||
0
,
o
=
parseFloat
(
l
)
||
0
),
st
.
isFunction
(
t
)
&&
(
t
=
t
.
call
(
e
,
n
,
s
)),
null
!=
t
.
top
&&
(
f
.
top
=
t
.
top
-
s
.
top
+
i
),
null
!=
t
.
left
&&
(
f
.
left
=
t
.
left
-
s
.
left
+
o
),
"using"
in
t
?
t
.
using
.
call
(
e
,
f
):
a
.
css
(
f
)}},
st
.
fn
.
extend
({
position
:
function
(){
if
(
this
[
0
]){
var
e
,
t
,
n
=
{
top
:
0
,
left
:
0
},
r
=
this
[
0
];
return
"fixed"
===
st
.
css
(
r
,
"position"
)?
t
=
r
.
getBoundingClientRect
():(
e
=
this
.
offsetParent
(),
t
=
this
.
offset
(),
st
.
nodeName
(
e
[
0
],
"html"
)
||
(
n
=
e
.
offset
()),
n
.
top
+=
st
.
css
(
e
[
0
],
"borderTopWidth"
,
!
0
),
n
.
left
+=
st
.
css
(
e
[
0
],
"borderLeftWidth"
,
!
0
)),{
top
:
t
.
top
-
n
.
top
-
st
.
css
(
r
,
"marginTop"
,
!
0
),
left
:
t
.
left
-
n
.
left
-
st
.
css
(
r
,
"marginLeft"
,
!
0
)}}},
offsetParent
:
function
(){
return
this
.
map
(
function
(){
for
(
var
e
=
this
.
offsetParent
||
V
.
documentElement
;
e
&&!
st
.
nodeName
(
e
,
"html"
)
&&
"static"
===
st
.
css
(
e
,
"position"
);)
e
=
e
.
offsetParent
;
return
e
||
V
.
documentElement
})}}),
st
.
each
({
scrollLeft
:
"pageXOffset"
,
scrollTop
:
"pageYOffset"
},
function
(
e
,
n
){
var
r
=
/Y/
.
test
(
n
);
st
.
fn
[
e
]
=
function
(
i
){
return
st
.
access
(
this
,
function
(
e
,
i
,
o
){
var
a
=
z
(
e
);
return
o
===
t
?
a
?
n
in
a
?
a
[
n
]:
a
.
document
.
documentElement
[
i
]:
e
[
i
]:(
a
?
a
.
scrollTo
(
r
?
st
(
a
).
scrollLeft
():
o
,
r
?
o
:
st
(
a
).
scrollTop
()):
e
[
i
]
=
o
,
t
)},
e
,
i
,
arguments
.
length
,
null
)}}),
st
.
each
({
Height
:
"height"
,
Width
:
"width"
},
function
(
e
,
n
){
st
.
each
({
padding
:
"inner"
+
e
,
content
:
n
,
""
:
"outer"
+
e
},
function
(
r
,
i
){
st
.
fn
[
i
]
=
function
(
i
,
o
){
var
a
=
arguments
.
length
&&
(
r
||
"boolean"
!=
typeof
i
),
s
=
r
||
(
i
===!
0
||
o
===!
0
?
"margin"
:
"border"
);
return
st
.
access
(
this
,
function
(
n
,
r
,
i
){
var
o
;
return
st
.
isWindow
(
n
)?
n
.
document
.
documentElement
[
"client"
+
e
]:
9
===
n
.
nodeType
?(
o
=
n
.
documentElement
,
Math
.
max
(
n
.
body
[
"scroll"
+
e
],
o
[
"scroll"
+
e
],
n
.
body
[
"offset"
+
e
],
o
[
"offset"
+
e
],
o
[
"client"
+
e
])):
i
===
t
?
st
.
css
(
n
,
r
,
s
):
st
.
style
(
n
,
r
,
i
,
s
)},
n
,
a
?
i
:
t
,
a
,
null
)}})}),
e
.
jQuery
=
e
.
$
=
st
,
"function"
==
typeof
define
&&
define
.
amd
&&
define
.
amd
.
jQuery
&&
define
(
"jquery"
,[],
function
(){
return
st
})})(
window
);
//@ sourceMappingURL=jquery.min.map
\ No newline at end of file
WebContent/lib/plug/fancyBox-2.1.5/lib/jquery.mousewheel-3.0.6.pack.js
0 → 100644
View file @
b9cf285a
/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
* Licensed under the MIT License (LICENSE.txt).
*
* Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
* Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
* Thanks to: Seamus Leahy for adding deltaX and deltaY
*
* Version: 3.0.6
*
* Requires: 1.2.2+
*/
(
function
(
d
){
function
e
(
a
){
var
b
=
a
||
window
.
event
,
c
=
[].
slice
.
call
(
arguments
,
1
),
f
=
0
,
e
=
0
,
g
=
0
,
a
=
d
.
event
.
fix
(
b
);
a
.
type
=
"mousewheel"
;
b
.
wheelDelta
&&
(
f
=
b
.
wheelDelta
/
120
);
b
.
detail
&&
(
f
=-
b
.
detail
/
3
);
g
=
f
;
b
.
axis
!==
void
0
&&
b
.
axis
===
b
.
HORIZONTAL_AXIS
&&
(
g
=
0
,
e
=-
1
*
f
);
b
.
wheelDeltaY
!==
void
0
&&
(
g
=
b
.
wheelDeltaY
/
120
);
b
.
wheelDeltaX
!==
void
0
&&
(
e
=-
1
*
b
.
wheelDeltaX
/
120
);
c
.
unshift
(
a
,
f
,
e
,
g
);
return
(
d
.
event
.
dispatch
||
d
.
event
.
handle
).
apply
(
this
,
c
)}
var
c
=
[
"DOMMouseScroll"
,
"mousewheel"
];
if
(
d
.
event
.
fixHooks
)
for
(
var
h
=
c
.
length
;
h
;)
d
.
event
.
fixHooks
[
c
[
--
h
]]
=
d
.
event
.
mouseHooks
;
d
.
event
.
special
.
mousewheel
=
{
setup
:
function
(){
if
(
this
.
addEventListener
)
for
(
var
a
=
c
.
length
;
a
;)
this
.
addEventListener
(
c
[
--
a
],
e
,
false
);
else
this
.
onmousewheel
=
e
},
teardown
:
function
(){
if
(
this
.
removeEventListener
)
for
(
var
a
=
c
.
length
;
a
;)
this
.
removeEventListener
(
c
[
--
a
],
e
,
false
);
else
this
.
onmousewheel
=
null
}};
d
.
fn
.
extend
({
mousewheel
:
function
(
a
){
return
a
?
this
.
bind
(
"mousewheel"
,
a
):
this
.
trigger
(
"mousewheel"
)},
unmousewheel
:
function
(
a
){
return
this
.
unbind
(
"mousewheel"
,
a
)}})})(
jQuery
);
\ No newline at end of file
WebContent/lib/plug/fancyBox-2.1.5/source/blank.gif
0 → 100644
View file @
b9cf285a
43 Bytes
WebContent/lib/plug/fancyBox-2.1.5/source/fancybox_loading.gif
0 → 100644
View file @
b9cf285a
6.41 KB
WebContent/lib/plug/fancyBox-2.1.5/source/fancybox_loading@2x.gif
0 → 100644
View file @
b9cf285a
13.7 KB
WebContent/lib/plug/fancyBox-2.1.5/source/fancybox_overlay.png
0 → 100644
View file @
b9cf285a
1003 Bytes
WebContent/lib/plug/fancyBox-2.1.5/source/fancybox_sprite.png
0 → 100644
View file @
b9cf285a
1.33 KB
WebContent/lib/plug/fancyBox-2.1.5/source/fancybox_sprite@2x.png
0 → 100644
View file @
b9cf285a
6.4 KB
WebContent/lib/plug/fancyBox-2.1.5/source/helpers/fancybox_buttons.png
0 → 100644
View file @
b9cf285a
1.05 KB
WebContent/lib/plug/fancyBox-2.1.5/source/helpers/jquery.fancybox-buttons.css
0 → 100644
View file @
b9cf285a
#fancybox-buttons
{
position
:
fixed
;
left
:
0
;
width
:
100%
;
z-index
:
8050
;
}
#fancybox-buttons
.top
{
top
:
10px
;
}
#fancybox-buttons
.bottom
{
bottom
:
10px
;
}
#fancybox-buttons
ul
{
display
:
block
;
width
:
166px
;
height
:
30px
;
margin
:
0
auto
;
padding
:
0
;
list-style
:
none
;
border
:
1px
solid
#111
;
border-radius
:
3px
;
-webkit-box-shadow
:
inset
0
0
0
1px
rgba
(
255
,
255
,
255
,
.05
);
-moz-box-shadow
:
inset
0
0
0
1px
rgba
(
255
,
255
,
255
,
.05
);
box-shadow
:
inset
0
0
0
1px
rgba
(
255
,
255
,
255
,
.05
);
background
:
rgb
(
50
,
50
,
50
);
background
:
-moz-linear-gradient
(
top
,
rgb
(
68
,
68
,
68
)
0%
,
rgb
(
52
,
52
,
52
)
50%
,
rgb
(
41
,
41
,
41
)
50%
,
rgb
(
51
,
51
,
51
)
100%
);
background
:
-webkit-gradient
(
linear
,
left
top
,
left
bottom
,
color-stop
(
0%
,
rgb
(
68
,
68
,
68
)),
color-stop
(
50%
,
rgb
(
52
,
52
,
52
)),
color-stop
(
50%
,
rgb
(
41
,
41
,
41
)),
color-stop
(
100%
,
rgb
(
51
,
51
,
51
)));
background
:
-webkit-linear-gradient
(
top
,
rgb
(
68
,
68
,
68
)
0%
,
rgb
(
52
,
52
,
52
)
50%
,
rgb
(
41
,
41
,
41
)
50%
,
rgb
(
51
,
51
,
51
)
100%
);
background
:
-o-linear-gradient
(
top
,
rgb
(
68
,
68
,
68
)
0%
,
rgb
(
52
,
52
,
52
)
50%
,
rgb
(
41
,
41
,
41
)
50%
,
rgb
(
51
,
51
,
51
)
100%
);
background
:
-ms-linear-gradient
(
top
,
rgb
(
68
,
68
,
68
)
0%
,
rgb
(
52
,
52
,
52
)
50%
,
rgb
(
41
,
41
,
41
)
50%
,
rgb
(
51
,
51
,
51
)
100%
);
background
:
linear-gradient
(
top
,
rgb
(
68
,
68
,
68
)
0%
,
rgb
(
52
,
52
,
52
)
50%
,
rgb
(
41
,
41
,
41
)
50%
,
rgb
(
51
,
51
,
51
)
100%
);
filter
:
progid
:
DXImageTransform
.
Microsoft
.
gradient
(
startColorstr
=
'#444444'
,
endColorstr
=
'#222222'
,
GradientType
=
0
);
}
#fancybox-buttons
ul
li
{
float
:
left
;
margin
:
0
;
padding
:
0
;
}
#fancybox-buttons
a
{
display
:
block
;
width
:
30px
;
height
:
30px
;
text-indent
:
-9999px
;
background-color
:
transparent
;
background-image
:
url('fancybox_buttons.png')
;
background-repeat
:
no-repeat
;
outline
:
none
;
opacity
:
0.8
;
}
#fancybox-buttons
a
:hover
{
opacity
:
1
;
}
#fancybox-buttons
a
.btnPrev
{
background-position
:
5px
0
;
}
#fancybox-buttons
a
.btnNext
{
background-position
:
-33px
0
;
border-right
:
1px
solid
#3e3e3e
;
}
#fancybox-buttons
a
.btnPlay
{
background-position
:
0
-30px
;
}
#fancybox-buttons
a
.btnPlayOn
{
background-position
:
-30px
-30px
;
}
#fancybox-buttons
a
.btnToggle
{
background-position
:
3px
-60px
;
border-left
:
1px
solid
#111
;
border-right
:
1px
solid
#3e3e3e
;
width
:
35px
}
#fancybox-buttons
a
.btnToggleOn
{
background-position
:
-27px
-60px
;
}
#fancybox-buttons
a
.btnClose
{
border-left
:
1px
solid
#111
;
width
:
35px
;
background-position
:
-56px
0px
;
}
#fancybox-buttons
a
.btnDisabled
{
opacity
:
0.4
;
cursor
:
default
;
}
\ No newline at end of file
WebContent/lib/plug/fancyBox-2.1.5/source/helpers/jquery.fancybox-buttons.js
0 → 100644
View file @
b9cf285a
/*!
* Buttons helper for fancyBox
* version: 1.0.5 (Mon, 15 Oct 2012)
* @requires fancyBox v2.0 or later
*
* Usage:
* $(".fancybox").fancybox({
* helpers : {
* buttons: {
* position : 'top'
* }
* }
* });
*
*/
(
function
(
$
)
{
//Shortcut for fancyBox object
var
F
=
$
.
fancybox
;
//Add helper object
F
.
helpers
.
buttons
=
{
defaults
:
{
skipSingle
:
false
,
// disables if gallery contains single image
position
:
'top'
,
// 'top' or 'bottom'
tpl
:
'<div id="fancybox-buttons"><ul><li><a class="btnPrev" title="Previous" href="javascript:;"></a></li><li><a class="btnPlay" title="Start slideshow" href="javascript:;"></a></li><li><a class="btnNext" title="Next" href="javascript:;"></a></li><li><a class="btnToggle" title="Toggle size" href="javascript:;"></a></li><li><a class="btnClose" title="Close" href="javascript:;"></a></li></ul></div>'
},
list
:
null
,
buttons
:
null
,
beforeLoad
:
function
(
opts
,
obj
)
{
//Remove self if gallery do not have at least two items
if
(
opts
.
skipSingle
&&
obj
.
group
.
length
<
2
)
{
obj
.
helpers
.
buttons
=
false
;
obj
.
closeBtn
=
true
;
return
;
}
//Increase top margin to give space for buttons
obj
.
margin
[
opts
.
position
===
'bottom'
?
2
:
0
]
+=
30
;
},
onPlayStart
:
function
()
{
if
(
this
.
buttons
)
{
this
.
buttons
.
play
.
attr
(
'title'
,
'Pause slideshow'
).
addClass
(
'btnPlayOn'
);
}
},
onPlayEnd
:
function
()
{
if
(
this
.
buttons
)
{
this
.
buttons
.
play
.
attr
(
'title'
,
'Start slideshow'
).
removeClass
(
'btnPlayOn'
);
}
},
afterShow
:
function
(
opts
,
obj
)
{
var
buttons
=
this
.
buttons
;
if
(
!
buttons
)
{
this
.
list
=
$
(
opts
.
tpl
).
addClass
(
opts
.
position
).
appendTo
(
'body'
);
buttons
=
{
prev
:
this
.
list
.
find
(
'.btnPrev'
).
click
(
F
.
prev
),
next
:
this
.
list
.
find
(
'.btnNext'
).
click
(
F
.
next
),
play
:
this
.
list
.
find
(
'.btnPlay'
).
click
(
F
.
play
),
toggle
:
this
.
list
.
find
(
'.btnToggle'
).
click
(
F
.
toggle
),
close
:
this
.
list
.
find
(
'.btnClose'
).
click
(
F
.
close
)
}
}
//Prev
if
(
obj
.
index
>
0
||
obj
.
loop
)
{
buttons
.
prev
.
removeClass
(
'btnDisabled'
);
}
else
{
buttons
.
prev
.
addClass
(
'btnDisabled'
);
}
//Next / Play
if
(
obj
.
loop
||
obj
.
index
<
obj
.
group
.
length
-
1
)
{
buttons
.
next
.
removeClass
(
'btnDisabled'
);
buttons
.
play
.
removeClass
(
'btnDisabled'
);
}
else
{
buttons
.
next
.
addClass
(
'btnDisabled'
);
buttons
.
play
.
addClass
(
'btnDisabled'
);
}
this
.
buttons
=
buttons
;
this
.
onUpdate
(
opts
,
obj
);
},
onUpdate
:
function
(
opts
,
obj
)
{
var
toggle
;
if
(
!
this
.
buttons
)
{
return
;
}
toggle
=
this
.
buttons
.
toggle
.
removeClass
(
'btnDisabled btnToggleOn'
);
//Size toggle button
if
(
obj
.
canShrink
)
{
toggle
.
addClass
(
'btnToggleOn'
);
}
else
if
(
!
obj
.
canExpand
)
{
toggle
.
addClass
(
'btnDisabled'
);
}
},
beforeClose
:
function
()
{
if
(
this
.
list
)
{
this
.
list
.
remove
();
}
this
.
list
=
null
;
this
.
buttons
=
null
;
}
};
}(
jQuery
));
WebContent/lib/plug/fancyBox-2.1.5/source/helpers/jquery.fancybox-media.js
0 → 100644
View file @
b9cf285a
/*!
* Media helper for fancyBox
* version: 1.0.6 (Fri, 14 Jun 2013)
* @requires fancyBox v2.0 or later
*
* Usage:
* $(".fancybox").fancybox({
* helpers : {
* media: true
* }
* });
*
* Set custom URL parameters:
* $(".fancybox").fancybox({
* helpers : {
* media: {
* youtube : {
* params : {
* autoplay : 0
* }
* }
* }
* }
* });
*
* Or:
* $(".fancybox").fancybox({,
* helpers : {
* media: true
* },
* youtube : {
* autoplay: 0
* }
* });
*
* Supports:
*
* Youtube
* http://www.youtube.com/watch?v=opj24KnzrWo
* http://www.youtube.com/embed/opj24KnzrWo
* http://youtu.be/opj24KnzrWo
* http://www.youtube-nocookie.com/embed/opj24KnzrWo
* Vimeo
* http://vimeo.com/40648169
* http://vimeo.com/channels/staffpicks/38843628
* http://vimeo.com/groups/surrealism/videos/36516384
* http://player.vimeo.com/video/45074303
* Metacafe
* http://www.metacafe.com/watch/7635964/dr_seuss_the_lorax_movie_trailer/
* http://www.metacafe.com/watch/7635964/
* Dailymotion
* http://www.dailymotion.com/video/xoytqh_dr-seuss-the-lorax-premiere_people
* Twitvid
* http://twitvid.com/QY7MD
* Twitpic
* http://twitpic.com/7p93st
* Instagram
* http://instagr.am/p/IejkuUGxQn/
* http://instagram.com/p/IejkuUGxQn/
* Google maps
* http://maps.google.com/maps?q=Eiffel+Tower,+Avenue+Gustave+Eiffel,+Paris,+France&t=h&z=17
* http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16
* http://maps.google.com/?ll=48.859463,2.292626&spn=0.000965,0.002642&t=m&z=19&layer=c&cbll=48.859524,2.292532&panoid=YJ0lq28OOy3VT2IqIuVY0g&cbp=12,151.58,,0,-15.56
*/
(
function
(
$
)
{
"use strict"
;
//Shortcut for fancyBox object
var
F
=
$
.
fancybox
,
format
=
function
(
url
,
rez
,
params
)
{
params
=
params
||
''
;
if
(
$
.
type
(
params
)
===
"object"
)
{
params
=
$
.
param
(
params
,
true
);
}
$
.
each
(
rez
,
function
(
key
,
value
)
{
url
=
url
.
replace
(
'$'
+
key
,
value
||
''
);
});
if
(
params
.
length
)
{
url
+=
(
url
.
indexOf
(
'?'
)
>
0
?
'&'
:
'?'
)
+
params
;
}
return
url
;
};
//Add helper object
F
.
helpers
.
media
=
{
defaults
:
{
youtube
:
{
matcher
:
/
(
youtube
\.
com|youtu
\.
be|youtube-nocookie
\.
com
)\/(
watch
\?
v=|v
\/
|u
\/
|embed
\/?)?(
videoseries
\?
list=
(
.*
)
|
[\w
-
]{11}
|
\?
listType=
(
.*
)
&list=
(
.*
))
.*/i
,
params
:
{
autoplay
:
1
,
autohide
:
1
,
fs
:
1
,
rel
:
0
,
hd
:
1
,
wmode
:
'opaque'
,
enablejsapi
:
1
},
type
:
'iframe'
,
url
:
'//www.youtube.com/embed/$3'
},
vimeo
:
{
matcher
:
/
(?:
vimeo
(?:
pro
)?
.com
)\/(?:[^\d]
+
)?(\d
+
)(?:
.*
)
/
,
params
:
{
autoplay
:
1
,
hd
:
1
,
show_title
:
1
,
show_byline
:
1
,
show_portrait
:
0
,
fullscreen
:
1
},
type
:
'iframe'
,
url
:
'//player.vimeo.com/video/$1'
},
metacafe
:
{
matcher
:
/metacafe.com
\/(?:
watch|fplayer
)\/([\w\-]{1,10})
/
,
params
:
{
autoPlay
:
'yes'
},
type
:
'swf'
,
url
:
function
(
rez
,
params
,
obj
)
{
obj
.
swf
.
flashVars
=
'playerVars='
+
$
.
param
(
params
,
true
);
return
'//www.metacafe.com/fplayer/'
+
rez
[
1
]
+
'/.swf'
;
}
},
dailymotion
:
{
matcher
:
/dailymotion.com
\/
video
\/(
.*
)\/?(
.*
)
/
,
params
:
{
additionalInfos
:
0
,
autoStart
:
1
},
type
:
'swf'
,
url
:
'//www.dailymotion.com/swf/video/$1'
},
twitvid
:
{
matcher
:
/twitvid
\.
com
\/([
a-zA-Z0-9_
\-\?\=]
+
)
/i
,
params
:
{
autoplay
:
0
},
type
:
'iframe'
,
url
:
'//www.twitvid.com/embed.php?guid=$1'
},
twitpic
:
{
matcher
:
/twitpic
\.
com
\/(?!(?:
place|photos|events
)\/)([
a-zA-Z0-9
\?\=\-]
+
)
/i
,
type
:
'image'
,
url
:
'//twitpic.com/show/full/$1/'
},
instagram
:
{
matcher
:
/
(
instagr
\.
am|instagram
\.
com
)\/
p
\/([
a-zA-Z0-9_
\-]
+
)\/?
/i
,
type
:
'image'
,
url
:
'//$1/p/$2/media/?size=l'
},
google_maps
:
{
matcher
:
/maps
\.
google
\.([
a-z
]{2,3}(\.[
a-z
]{2})?)\/(\?
ll=|maps
\?)(
.*
)
/i
,
type
:
'iframe'
,
url
:
function
(
rez
)
{
return
'//maps.google.'
+
rez
[
1
]
+
'/'
+
rez
[
3
]
+
''
+
rez
[
4
]
+
'&output='
+
(
rez
[
4
].
indexOf
(
'layer=c'
)
>
0
?
'svembed'
:
'embed'
);
}
}
},
beforeLoad
:
function
(
opts
,
obj
)
{
var
url
=
obj
.
href
||
''
,
type
=
false
,
what
,
item
,
rez
,
params
;
for
(
what
in
opts
)
{
if
(
opts
.
hasOwnProperty
(
what
))
{
item
=
opts
[
what
];
rez
=
url
.
match
(
item
.
matcher
);
if
(
rez
)
{
type
=
item
.
type
;
params
=
$
.
extend
(
true
,
{},
item
.
params
,
obj
[
what
]
||
(
$
.
isPlainObject
(
opts
[
what
])
?
opts
[
what
].
params
:
null
));
url
=
$
.
type
(
item
.
url
)
===
"function"
?
item
.
url
.
call
(
this
,
rez
,
params
,
obj
)
:
format
(
item
.
url
,
rez
,
params
);
break
;
}
}
}
if
(
type
)
{
obj
.
href
=
url
;
obj
.
type
=
type
;
obj
.
autoHeight
=
false
;
}
}
};
}(
jQuery
));
\ No newline at end of file
WebContent/lib/plug/fancyBox-2.1.5/source/helpers/jquery.fancybox-thumbs.css
0 → 100644
View file @
b9cf285a
#fancybox-thumbs
{
position
:
fixed
;
left
:
0
;
width
:
100%
;
overflow
:
hidden
;
z-index
:
8050
;
}
#fancybox-thumbs
.bottom
{
bottom
:
2px
;
}
#fancybox-thumbs
.top
{
top
:
2px
;
}
#fancybox-thumbs
ul
{
position
:
relative
;
list-style
:
none
;
margin
:
0
;
padding
:
0
;
}
#fancybox-thumbs
ul
li
{
float
:
left
;
padding
:
1px
;
opacity
:
0.5
;
}
#fancybox-thumbs
ul
li
.active
{
opacity
:
0.75
;
padding
:
0
;
border
:
1px
solid
#fff
;
}
#fancybox-thumbs
ul
li
:hover
{
opacity
:
1
;
}
#fancybox-thumbs
ul
li
a
{
display
:
block
;
position
:
relative
;
overflow
:
hidden
;
border
:
1px
solid
#222
;
background
:
#111
;
outline
:
none
;
}
#fancybox-thumbs
ul
li
img
{
display
:
block
;
position
:
relative
;
border
:
0
;
padding
:
0
;
max-width
:
none
;
}
\ No newline at end of file
WebContent/lib/plug/fancyBox-2.1.5/source/helpers/jquery.fancybox-thumbs.js
0 → 100644
View file @
b9cf285a
/*!
* Thumbnail helper for fancyBox
* version: 1.0.7 (Mon, 01 Oct 2012)
* @requires fancyBox v2.0 or later
*
* Usage:
* $(".fancybox").fancybox({
* helpers : {
* thumbs: {
* width : 50,
* height : 50
* }
* }
* });
*
*/
(
function
(
$
)
{
//Shortcut for fancyBox object
var
F
=
$
.
fancybox
;
//Add helper object
F
.
helpers
.
thumbs
=
{
defaults
:
{
width
:
50
,
// thumbnail width
height
:
50
,
// thumbnail height
position
:
'bottom'
,
// 'top' or 'bottom'
source
:
function
(
item
)
{
// function to obtain the URL of the thumbnail image
var
href
;
if
(
item
.
element
)
{
href
=
$
(
item
.
element
).
find
(
'img'
).
attr
(
'src'
);
}
if
(
!
href
&&
item
.
type
===
'image'
&&
item
.
href
)
{
href
=
item
.
href
;
}
return
href
;
}
},
wrap
:
null
,
list
:
null
,
width
:
0
,
init
:
function
(
opts
,
obj
)
{
var
that
=
this
,
list
,
thumbWidth
=
opts
.
width
,
thumbHeight
=
opts
.
height
,
thumbSource
=
opts
.
source
;
//Build list structure
list
=
''
;
for
(
var
n
=
0
;
n
<
obj
.
group
.
length
;
n
++
)
{
list
+=
'<li><a style="width:'
+
thumbWidth
+
'px;height:'
+
thumbHeight
+
'px;" href="javascript:jQuery.fancybox.jumpto('
+
n
+
');"></a></li>'
;
}
this
.
wrap
=
$
(
'<div id="fancybox-thumbs"></div>'
).
addClass
(
opts
.
position
).
appendTo
(
'body'
);
this
.
list
=
$
(
'<ul>'
+
list
+
'</ul>'
).
appendTo
(
this
.
wrap
);
//Load each thumbnail
$
.
each
(
obj
.
group
,
function
(
i
)
{
var
href
=
thumbSource
(
obj
.
group
[
i
]
);
if
(
!
href
)
{
return
;
}
$
(
"<img />"
).
load
(
function
()
{
var
width
=
this
.
width
,
height
=
this
.
height
,
widthRatio
,
heightRatio
,
parent
;
if
(
!
that
.
list
||
!
width
||
!
height
)
{
return
;
}
//Calculate thumbnail width/height and center it
widthRatio
=
width
/
thumbWidth
;
heightRatio
=
height
/
thumbHeight
;
parent
=
that
.
list
.
children
().
eq
(
i
).
find
(
'a'
);
if
(
widthRatio
>=
1
&&
heightRatio
>=
1
)
{
if
(
widthRatio
>
heightRatio
)
{
width
=
Math
.
floor
(
width
/
heightRatio
);
height
=
thumbHeight
;
}
else
{
width
=
thumbWidth
;
height
=
Math
.
floor
(
height
/
widthRatio
);
}
}
$
(
this
).
css
({
width
:
width
,
height
:
height
,
top
:
Math
.
floor
(
thumbHeight
/
2
-
height
/
2
),
left
:
Math
.
floor
(
thumbWidth
/
2
-
width
/
2
)
});
parent
.
width
(
thumbWidth
).
height
(
thumbHeight
);
$
(
this
).
hide
().
appendTo
(
parent
).
fadeIn
(
300
);
}).
attr
(
'src'
,
href
);
});
//Set initial width
this
.
width
=
this
.
list
.
children
().
eq
(
0
).
outerWidth
(
true
);
this
.
list
.
width
(
this
.
width
*
(
obj
.
group
.
length
+
1
)).
css
(
'left'
,
Math
.
floor
(
$
(
window
).
width
()
*
0.5
-
(
obj
.
index
*
this
.
width
+
this
.
width
*
0.5
)));
},
beforeLoad
:
function
(
opts
,
obj
)
{
//Remove self if gallery do not have at least two items
if
(
obj
.
group
.
length
<
2
)
{
obj
.
helpers
.
thumbs
=
false
;
return
;
}
//Increase bottom margin to give space for thumbs
obj
.
margin
[
opts
.
position
===
'top'
?
0
:
2
]
+=
((
opts
.
height
)
+
15
);
},
afterShow
:
function
(
opts
,
obj
)
{
//Check if exists and create or update list
if
(
this
.
list
)
{
this
.
onUpdate
(
opts
,
obj
);
}
else
{
this
.
init
(
opts
,
obj
);
}
//Set active element
this
.
list
.
children
().
removeClass
(
'active'
).
eq
(
obj
.
index
).
addClass
(
'active'
);
},
//Center list
onUpdate
:
function
(
opts
,
obj
)
{
if
(
this
.
list
)
{
this
.
list
.
stop
(
true
).
animate
({
'left'
:
Math
.
floor
(
$
(
window
).
width
()
*
0.5
-
(
obj
.
index
*
this
.
width
+
this
.
width
*
0.5
))
},
150
);
}
},
beforeClose
:
function
()
{
if
(
this
.
wrap
)
{
this
.
wrap
.
remove
();
}
this
.
wrap
=
null
;
this
.
list
=
null
;
this
.
width
=
0
;
}
}
}(
jQuery
));
\ No newline at end of file
WebContent/lib/plug/fancyBox-2.1.5/source/jquery.fancybox.css
0 → 100644
View file @
b9cf285a
/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */
.fancybox-wrap
,
.fancybox-skin
,
.fancybox-outer
,
.fancybox-inner
,
.fancybox-image
,
.fancybox-wrap
iframe
,
.fancybox-wrap
object
,
.fancybox-nav
,
.fancybox-nav
span
,
.fancybox-tmp
{
padding
:
0
;
margin
:
0
;
border
:
0
;
outline
:
none
;
vertical-align
:
top
;
}
.fancybox-wrap
{
position
:
absolute
;
top
:
0
;
left
:
0
;
z-index
:
8020
;
}
.fancybox-skin
{
position
:
relative
;
background
:
#f9f9f9
;
color
:
#444
;
text-shadow
:
none
;
-webkit-border-radius
:
4px
;
-moz-border-radius
:
4px
;
border-radius
:
4px
;
}
.fancybox-opened
{
z-index
:
8030
;
}
.fancybox-opened
.fancybox-skin
{
-webkit-box-shadow
:
0
10px
25px
rgba
(
0
,
0
,
0
,
0.5
);
-moz-box-shadow
:
0
10px
25px
rgba
(
0
,
0
,
0
,
0.5
);
box-shadow
:
0
10px
25px
rgba
(
0
,
0
,
0
,
0.5
);
}
.fancybox-outer
,
.fancybox-inner
{
position
:
relative
;
}
.fancybox-inner
{
overflow
:
hidden
;
}
.fancybox-type-iframe
.fancybox-inner
{
-webkit-overflow-scrolling
:
touch
;
}
.fancybox-error
{
color
:
#444
;
font
:
14px
/
20px
"Helvetica Neue"
,
Helvetica
,
Arial
,
sans-serif
;
margin
:
0
;
padding
:
15px
;
white-space
:
nowrap
;
}
.fancybox-image
,
.fancybox-iframe
{
display
:
block
;
width
:
100%
;
height
:
100%
;
}
.fancybox-image
{
max-width
:
100%
;
max-height
:
100%
;
}
#fancybox-loading
,
.fancybox-close
,
.fancybox-prev
span
,
.fancybox-next
span
{
background-image
:
url('fancybox_sprite.png')
;
}
#fancybox-loading
{
position
:
fixed
;
top
:
50%
;
left
:
50%
;
margin-top
:
-22px
;
margin-left
:
-22px
;
background-position
:
0
-108px
;
opacity
:
0.8
;
cursor
:
pointer
;
z-index
:
8060
;
}
#fancybox-loading
div
{
width
:
44px
;
height
:
44px
;
background
:
url('fancybox_loading.gif')
center
center
no-repeat
;
}
.fancybox-close
{
position
:
absolute
;
top
:
-18px
;
right
:
-18px
;
width
:
36px
;
height
:
36px
;
cursor
:
pointer
;
z-index
:
8040
;
}
.fancybox-nav
{
position
:
absolute
;
top
:
0
;
width
:
40%
;
height
:
100%
;
cursor
:
pointer
;
text-decoration
:
none
;
background
:
transparent
url('blank.gif')
;
/* helps IE */
-webkit-tap-highlight-color
:
rgba
(
0
,
0
,
0
,
0
);
z-index
:
8040
;
}
.fancybox-prev
{
left
:
0
;
}
.fancybox-next
{
right
:
0
;
}
.fancybox-nav
span
{
position
:
absolute
;
top
:
50%
;
width
:
36px
;
height
:
34px
;
margin-top
:
-18px
;
cursor
:
pointer
;
z-index
:
8040
;
visibility
:
hidden
;
}
.fancybox-prev
span
{
left
:
10px
;
background-position
:
0
-36px
;
}
.fancybox-next
span
{
right
:
10px
;
background-position
:
0
-72px
;
}
.fancybox-nav
:hover
span
{
visibility
:
visible
;
}
.fancybox-tmp
{
position
:
absolute
;
top
:
-99999px
;
left
:
-99999px
;
visibility
:
hidden
;
max-width
:
99999px
;
max-height
:
99999px
;
overflow
:
visible
!important
;
}
/* Overlay helper */
.fancybox-lock
{
overflow
:
hidden
!important
;
width
:
auto
;
}
.fancybox-lock
body
{
/* overflow: hidden !important; */
}
.fancybox-lock-test
{
overflow-y
:
hidden
!important
;
}
.fancybox-overlay
{
position
:
absolute
;
top
:
0
;
left
:
0
;
overflow
:
hidden
;
display
:
none
;
z-index
:
8010
;
background
:
url('fancybox_overlay.png')
;
}
.fancybox-overlay-fixed
{
position
:
fixed
;
bottom
:
0
;
right
:
0
;
}
.fancybox-lock
.fancybox-overlay
{
overflow
:
auto
;
overflow-y
:
scroll
;
}
/* Title helper */
.fancybox-title
{
visibility
:
hidden
;
font
:
normal
13px
/
20px
"Helvetica Neue"
,
Helvetica
,
Arial
,
sans-serif
;
position
:
relative
;
text-shadow
:
none
;
z-index
:
8050
;
}
.fancybox-opened
.fancybox-title
{
visibility
:
visible
;
}
.fancybox-title-float-wrap
{
position
:
absolute
;
bottom
:
0
;
right
:
50%
;
margin-bottom
:
-35px
;
z-index
:
8050
;
text-align
:
center
;
}
.fancybox-title-float-wrap
.child
{
display
:
inline-block
;
margin-right
:
-100%
;
padding
:
2px
20px
;
background
:
transparent
;
/* Fallback for web browsers that doesn't support RGBa */
background
:
rgba
(
0
,
0
,
0
,
0.8
);
-webkit-border-radius
:
15px
;
-moz-border-radius
:
15px
;
border-radius
:
15px
;
text-shadow
:
0
1px
2px
#222
;
color
:
#FFF
;
font-weight
:
bold
;
line-height
:
24px
;
white-space
:
nowrap
;
}
.fancybox-title-outside-wrap
{
position
:
relative
;
margin-top
:
10px
;
color
:
#fff
;
}
.fancybox-title-inside-wrap
{
padding-top
:
10px
;
}
.fancybox-title-over-wrap
{
position
:
absolute
;
bottom
:
0
;
left
:
0
;
color
:
#fff
;
padding
:
10px
;
background
:
#000
;
background
:
rgba
(
0
,
0
,
0
,
.8
);
}
/*Retina graphics!*/
@media
only
screen
and
(
-webkit-min-device-pixel-ratio
:
1.5
),
only
screen
and
(
min--moz-device-pixel-ratio
:
1.5
),
only
screen
and
(
min-device-pixel-ratio
:
1.5
){
#fancybox-loading
,
.fancybox-close
,
.fancybox-prev
span
,
.fancybox-next
span
{
background-image
:
url('fancybox_sprite@2x.png')
;
background-size
:
44px
152px
;
/*The size of the normal image, half the size of the hi-res image*/
}
#fancybox-loading
div
{
background-image
:
url('fancybox_loading@2x.gif')
;
background-size
:
24px
24px
;
/*The size of the normal image, half the size of the hi-res image*/
}
}
\ No newline at end of file
WebContent/lib/plug/fancyBox-2.1.5/source/jquery.fancybox.js
0 → 100644
View file @
b9cf285a
/*!
* fancyBox - jQuery Plugin
* version: 2.1.5 (Fri, 14 Jun 2013)
* @requires jQuery v1.6 or later
*
* Examples at http://fancyapps.com/fancybox/
* License: www.fancyapps.com/fancybox/#license
*
* Copyright 2012 Janis Skarnelis - janis@fancyapps.com
*
*/
(
function
(
window
,
document
,
$
,
undefined
)
{
"use strict"
;
var
H
=
$
(
"html"
),
W
=
$
(
window
),
D
=
$
(
document
),
F
=
$
.
fancybox
=
function
()
{
F
.
open
.
apply
(
this
,
arguments
);
},
IE
=
navigator
.
userAgent
.
match
(
/msie/i
),
didUpdate
=
null
,
isTouch
=
document
.
createTouch
!==
undefined
,
isQuery
=
function
(
obj
)
{
return
obj
&&
obj
.
hasOwnProperty
&&
obj
instanceof
$
;
},
isString
=
function
(
str
)
{
return
str
&&
$
.
type
(
str
)
===
"string"
;
},
isPercentage
=
function
(
str
)
{
return
isString
(
str
)
&&
str
.
indexOf
(
'%'
)
>
0
;
},
isScrollable
=
function
(
el
)
{
return
(
el
&&
!
(
el
.
style
.
overflow
&&
el
.
style
.
overflow
===
'hidden'
)
&&
((
el
.
clientWidth
&&
el
.
scrollWidth
>
el
.
clientWidth
)
||
(
el
.
clientHeight
&&
el
.
scrollHeight
>
el
.
clientHeight
)));
},
getScalar
=
function
(
orig
,
dim
)
{
var
value
=
parseInt
(
orig
,
10
)
||
0
;
if
(
dim
&&
isPercentage
(
orig
))
{
value
=
F
.
getViewport
()[
dim
]
/
100
*
value
;
}
return
Math
.
ceil
(
value
);
},
getValue
=
function
(
value
,
dim
)
{
return
getScalar
(
value
,
dim
)
+
'px'
;
};
$
.
extend
(
F
,
{
// The current version of fancyBox
version
:
'2.1.5'
,
defaults
:
{
padding
:
15
,
margin
:
20
,
width
:
800
,
height
:
600
,
minWidth
:
100
,
minHeight
:
100
,
maxWidth
:
9999
,
maxHeight
:
9999
,
pixelRatio
:
1
,
// Set to 2 for retina display support
autoSize
:
true
,
autoHeight
:
false
,
autoWidth
:
false
,
autoResize
:
true
,
autoCenter
:
!
isTouch
,
fitToView
:
true
,
aspectRatio
:
false
,
topRatio
:
0.5
,
leftRatio
:
0.5
,
scrolling
:
'auto'
,
// 'auto', 'yes' or 'no'
wrapCSS
:
''
,
arrows
:
true
,
closeBtn
:
true
,
closeClick
:
false
,
nextClick
:
false
,
mouseWheel
:
true
,
autoPlay
:
false
,
playSpeed
:
3000
,
preload
:
3
,
modal
:
false
,
loop
:
true
,
ajax
:
{
dataType
:
'html'
,
headers
:
{
'X-fancyBox'
:
true
}
},
iframe
:
{
scrolling
:
'auto'
,
preload
:
true
},
swf
:
{
wmode
:
'transparent'
,
allowfullscreen
:
'true'
,
allowscriptaccess
:
'always'
},
keys
:
{
next
:
{
13
:
'left'
,
// enter
34
:
'up'
,
// page down
39
:
'left'
,
// right arrow
40
:
'up'
// down arrow
},
prev
:
{
8
:
'right'
,
// backspace
33
:
'down'
,
// page up
37
:
'right'
,
// left arrow
38
:
'down'
// up arrow
},
close
:
[
27
],
// escape key
play
:
[
32
],
// space - start/stop slideshow
toggle
:
[
70
]
// letter "f" - toggle fullscreen
},
direction
:
{
next
:
'left'
,
prev
:
'right'
},
scrollOutside
:
true
,
// Override some properties
index
:
0
,
type
:
null
,
href
:
null
,
content
:
null
,
title
:
null
,
// HTML templates
tpl
:
{
wrap
:
'<div class="fancybox-wrap" tabIndex="-1"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div></div>'
,
image
:
'<img class="fancybox-image" src="{href}" alt="" />'
,
iframe
:
'<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen'
+
(
IE
?
' allowtransparency="true"'
:
''
)
+
'></iframe>'
,
error
:
'<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>'
,
closeBtn
:
'<a title="Close" class="fancybox-item fancybox-close" href="javascript:;"></a>'
,
next
:
'<a title="Next" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>'
,
prev
:
'<a title="Previous" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>'
},
// Properties for each animation type
// Opening fancyBox
openEffect
:
'fade'
,
// 'elastic', 'fade' or 'none'
openSpeed
:
250
,
openEasing
:
'swing'
,
openOpacity
:
true
,
openMethod
:
'zoomIn'
,
// Closing fancyBox
closeEffect
:
'fade'
,
// 'elastic', 'fade' or 'none'
closeSpeed
:
250
,
closeEasing
:
'swing'
,
closeOpacity
:
true
,
closeMethod
:
'zoomOut'
,
// Changing next gallery item
nextEffect
:
'elastic'
,
// 'elastic', 'fade' or 'none'
nextSpeed
:
250
,
nextEasing
:
'swing'
,
nextMethod
:
'changeIn'
,
// Changing previous gallery item
prevEffect
:
'elastic'
,
// 'elastic', 'fade' or 'none'
prevSpeed
:
250
,
prevEasing
:
'swing'
,
prevMethod
:
'changeOut'
,
// Enable default helpers
helpers
:
{
overlay
:
true
,
title
:
true
},
// Callbacks
onCancel
:
$
.
noop
,
// If canceling
beforeLoad
:
$
.
noop
,
// Before loading
afterLoad
:
$
.
noop
,
// After loading
beforeShow
:
$
.
noop
,
// Before changing in current item
afterShow
:
$
.
noop
,
// After opening
beforeChange
:
$
.
noop
,
// Before changing gallery item
beforeClose
:
$
.
noop
,
// Before closing
afterClose
:
$
.
noop
// After closing
},
//Current state
group
:
{},
// Selected group
opts
:
{},
// Group options
previous
:
null
,
// Previous element
coming
:
null
,
// Element being loaded
current
:
null
,
// Currently loaded element
isActive
:
false
,
// Is activated
isOpen
:
false
,
// Is currently open
isOpened
:
false
,
// Have been fully opened at least once
wrap
:
null
,
skin
:
null
,
outer
:
null
,
inner
:
null
,
player
:
{
timer
:
null
,
isActive
:
false
},
// Loaders
ajaxLoad
:
null
,
imgPreload
:
null
,
// Some collections
transitions
:
{},
helpers
:
{},
/*
* Static methods
*/
open
:
function
(
group
,
opts
)
{
if
(
!
group
)
{
return
;
}
if
(
!
$
.
isPlainObject
(
opts
))
{
opts
=
{};
}
// Close if already active
if
(
false
===
F
.
close
(
true
))
{
return
;
}
// Normalize group
if
(
!
$
.
isArray
(
group
))
{
group
=
isQuery
(
group
)
?
$
(
group
).
get
()
:
[
group
];
}
// Recheck if the type of each element is `object` and set content type (image, ajax, etc)
$
.
each
(
group
,
function
(
i
,
element
)
{
var
obj
=
{},
href
,
title
,
content
,
type
,
rez
,
hrefParts
,
selector
;
if
(
$
.
type
(
element
)
===
"object"
)
{
// Check if is DOM element
if
(
element
.
nodeType
)
{
element
=
$
(
element
);
}
if
(
isQuery
(
element
))
{
obj
=
{
href
:
element
.
data
(
'fancybox-href'
)
||
element
.
attr
(
'href'
),
title
:
element
.
data
(
'fancybox-title'
)
||
element
.
attr
(
'title'
),
isDom
:
true
,
element
:
element
};
if
(
$
.
metadata
)
{
$
.
extend
(
true
,
obj
,
element
.
metadata
());
}
}
else
{
obj
=
element
;
}
}
href
=
opts
.
href
||
obj
.
href
||
(
isString
(
element
)
?
element
:
null
);
title
=
opts
.
title
!==
undefined
?
opts
.
title
:
obj
.
title
||
''
;
content
=
opts
.
content
||
obj
.
content
;
type
=
content
?
'html'
:
(
opts
.
type
||
obj
.
type
);
if
(
!
type
&&
obj
.
isDom
)
{
type
=
element
.
data
(
'fancybox-type'
);
if
(
!
type
)
{
rez
=
element
.
prop
(
'class'
).
match
(
/fancybox
\.(\w
+
)
/
);
type
=
rez
?
rez
[
1
]
:
null
;
}
}
if
(
isString
(
href
))
{
// Try to guess the content type
if
(
!
type
)
{
if
(
F
.
isImage
(
href
))
{
type
=
'image'
;
}
else
if
(
F
.
isSWF
(
href
))
{
type
=
'swf'
;
}
else
if
(
href
.
charAt
(
0
)
===
'#'
)
{
type
=
'inline'
;
}
else
if
(
isString
(
element
))
{
type
=
'html'
;
content
=
element
;
}
}
// Split url into two pieces with source url and content selector, e.g,
// "/mypage.html #my_id" will load "/mypage.html" and display element having id "my_id"
if
(
type
===
'ajax'
)
{
hrefParts
=
href
.
split
(
/
\s
+/
,
2
);
href
=
hrefParts
.
shift
();
selector
=
hrefParts
.
shift
();
}
}
if
(
!
content
)
{
if
(
type
===
'inline'
)
{
if
(
href
)
{
content
=
$
(
isString
(
href
)
?
href
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
''
)
:
href
);
//strip for ie7
}
else
if
(
obj
.
isDom
)
{
content
=
element
;
}
}
else
if
(
type
===
'html'
)
{
content
=
href
;
}
else
if
(
!
type
&&
!
href
&&
obj
.
isDom
)
{
type
=
'inline'
;
content
=
element
;
}
}
$
.
extend
(
obj
,
{
href
:
href
,
type
:
type
,
content
:
content
,
title
:
title
,
selector
:
selector
});
group
[
i
]
=
obj
;
});
// Extend the defaults
F
.
opts
=
$
.
extend
(
true
,
{},
F
.
defaults
,
opts
);
// All options are merged recursive except keys
if
(
opts
.
keys
!==
undefined
)
{
F
.
opts
.
keys
=
opts
.
keys
?
$
.
extend
({},
F
.
defaults
.
keys
,
opts
.
keys
)
:
false
;
}
F
.
group
=
group
;
return
F
.
_start
(
F
.
opts
.
index
);
},
// Cancel image loading or abort ajax request
cancel
:
function
()
{
var
coming
=
F
.
coming
;
if
(
!
coming
||
false
===
F
.
trigger
(
'onCancel'
))
{
return
;
}
F
.
hideLoading
();
if
(
F
.
ajaxLoad
)
{
F
.
ajaxLoad
.
abort
();
}
F
.
ajaxLoad
=
null
;
if
(
F
.
imgPreload
)
{
F
.
imgPreload
.
onload
=
F
.
imgPreload
.
onerror
=
null
;
}
if
(
coming
.
wrap
)
{
coming
.
wrap
.
stop
(
true
,
true
).
trigger
(
'onReset'
).
remove
();
}
F
.
coming
=
null
;
// If the first item has been canceled, then clear everything
if
(
!
F
.
current
)
{
F
.
_afterZoomOut
(
coming
);
}
},
// Start closing animation if is open; remove immediately if opening/closing
close
:
function
(
event
)
{
F
.
cancel
();
if
(
false
===
F
.
trigger
(
'beforeClose'
))
{
return
;
}
F
.
unbindEvents
();
if
(
!
F
.
isActive
)
{
return
;
}
if
(
!
F
.
isOpen
||
event
===
true
)
{
$
(
'.fancybox-wrap'
).
stop
(
true
).
trigger
(
'onReset'
).
remove
();
F
.
_afterZoomOut
();
}
else
{
F
.
isOpen
=
F
.
isOpened
=
false
;
F
.
isClosing
=
true
;
$
(
'.fancybox-item, .fancybox-nav'
).
remove
();
F
.
wrap
.
stop
(
true
,
true
).
removeClass
(
'fancybox-opened'
);
F
.
transitions
[
F
.
current
.
closeMethod
]();
}
},
// Manage slideshow:
// $.fancybox.play(); - toggle slideshow
// $.fancybox.play( true ); - start
// $.fancybox.play( false ); - stop
play
:
function
(
action
)
{
var
clear
=
function
()
{
clearTimeout
(
F
.
player
.
timer
);
},
set
=
function
()
{
clear
();
if
(
F
.
current
&&
F
.
player
.
isActive
)
{
F
.
player
.
timer
=
setTimeout
(
F
.
next
,
F
.
current
.
playSpeed
);
}
},
stop
=
function
()
{
clear
();
D
.
unbind
(
'.player'
);
F
.
player
.
isActive
=
false
;
F
.
trigger
(
'onPlayEnd'
);
},
start
=
function
()
{
if
(
F
.
current
&&
(
F
.
current
.
loop
||
F
.
current
.
index
<
F
.
group
.
length
-
1
))
{
F
.
player
.
isActive
=
true
;
D
.
bind
({
'onCancel.player beforeClose.player'
:
stop
,
'onUpdate.player'
:
set
,
'beforeLoad.player'
:
clear
});
set
();
F
.
trigger
(
'onPlayStart'
);
}
};
if
(
action
===
true
||
(
!
F
.
player
.
isActive
&&
action
!==
false
))
{
start
();
}
else
{
stop
();
}
},
// Navigate to next gallery item
next
:
function
(
direction
)
{
var
current
=
F
.
current
;
if
(
current
)
{
if
(
!
isString
(
direction
))
{
direction
=
current
.
direction
.
next
;
}
F
.
jumpto
(
current
.
index
+
1
,
direction
,
'next'
);
}
},
// Navigate to previous gallery item
prev
:
function
(
direction
)
{
var
current
=
F
.
current
;
if
(
current
)
{
if
(
!
isString
(
direction
))
{
direction
=
current
.
direction
.
prev
;
}
F
.
jumpto
(
current
.
index
-
1
,
direction
,
'prev'
);
}
},
// Navigate to gallery item by index
jumpto
:
function
(
index
,
direction
,
router
)
{
var
current
=
F
.
current
;
if
(
!
current
)
{
return
;
}
index
=
getScalar
(
index
);
F
.
direction
=
direction
||
current
.
direction
[
(
index
>=
current
.
index
?
'next'
:
'prev'
)
];
F
.
router
=
router
||
'jumpto'
;
if
(
current
.
loop
)
{
if
(
index
<
0
)
{
index
=
current
.
group
.
length
+
(
index
%
current
.
group
.
length
);
}
index
=
index
%
current
.
group
.
length
;
}
if
(
current
.
group
[
index
]
!==
undefined
)
{
F
.
cancel
();
F
.
_start
(
index
);
}
},
// Center inside viewport and toggle position type to fixed or absolute if needed
reposition
:
function
(
e
,
onlyAbsolute
)
{
var
current
=
F
.
current
,
wrap
=
current
?
current
.
wrap
:
null
,
pos
;
if
(
wrap
)
{
pos
=
F
.
_getPosition
(
onlyAbsolute
);
if
(
e
&&
e
.
type
===
'scroll'
)
{
delete
pos
.
position
;
wrap
.
stop
(
true
,
true
).
animate
(
pos
,
200
);
}
else
{
wrap
.
css
(
pos
);
current
.
pos
=
$
.
extend
({},
current
.
dim
,
pos
);
}
}
},
update
:
function
(
e
)
{
var
type
=
(
e
&&
e
.
type
),
anyway
=
!
type
||
type
===
'orientationchange'
;
if
(
anyway
)
{
clearTimeout
(
didUpdate
);
didUpdate
=
null
;
}
if
(
!
F
.
isOpen
||
didUpdate
)
{
return
;
}
didUpdate
=
setTimeout
(
function
()
{
var
current
=
F
.
current
;
if
(
!
current
||
F
.
isClosing
)
{
return
;
}
F
.
wrap
.
removeClass
(
'fancybox-tmp'
);
if
(
anyway
||
type
===
'load'
||
(
type
===
'resize'
&&
current
.
autoResize
))
{
F
.
_setDimension
();
}
if
(
!
(
type
===
'scroll'
&&
current
.
canShrink
))
{
F
.
reposition
(
e
);
}
F
.
trigger
(
'onUpdate'
);
didUpdate
=
null
;
},
(
anyway
&&
!
isTouch
?
0
:
300
));
},
// Shrink content to fit inside viewport or restore if resized
toggle
:
function
(
action
)
{
if
(
F
.
isOpen
)
{
F
.
current
.
fitToView
=
$
.
type
(
action
)
===
"boolean"
?
action
:
!
F
.
current
.
fitToView
;
// Help browser to restore document dimensions
if
(
isTouch
)
{
F
.
wrap
.
removeAttr
(
'style'
).
addClass
(
'fancybox-tmp'
);
F
.
trigger
(
'onUpdate'
);
}
F
.
update
();
}
},
hideLoading
:
function
()
{
D
.
unbind
(
'.loading'
);
$
(
'#fancybox-loading'
).
remove
();
},
showLoading
:
function
()
{
var
el
,
viewport
;
F
.
hideLoading
();
el
=
$
(
'<div id="fancybox-loading"><div></div></div>'
).
click
(
F
.
cancel
).
appendTo
(
'body'
);
// If user will press the escape-button, the request will be canceled
D
.
bind
(
'keydown.loading'
,
function
(
e
)
{
if
((
e
.
which
||
e
.
keyCode
)
===
27
)
{
e
.
preventDefault
();
F
.
cancel
();
}
});
if
(
!
F
.
defaults
.
fixed
)
{
viewport
=
F
.
getViewport
();
el
.
css
({
position
:
'absolute'
,
top
:
(
viewport
.
h
*
0.5
)
+
viewport
.
y
,
left
:
(
viewport
.
w
*
0.5
)
+
viewport
.
x
});
}
},
getViewport
:
function
()
{
var
locked
=
(
F
.
current
&&
F
.
current
.
locked
)
||
false
,
rez
=
{
x
:
W
.
scrollLeft
(),
y
:
W
.
scrollTop
()
};
if
(
locked
)
{
rez
.
w
=
locked
[
0
].
clientWidth
;
rez
.
h
=
locked
[
0
].
clientHeight
;
}
else
{
// See http://bugs.jquery.com/ticket/6724
rez
.
w
=
isTouch
&&
window
.
innerWidth
?
window
.
innerWidth
:
W
.
width
();
rez
.
h
=
isTouch
&&
window
.
innerHeight
?
window
.
innerHeight
:
W
.
height
();
}
return
rez
;
},
// Unbind the keyboard / clicking actions
unbindEvents
:
function
()
{
if
(
F
.
wrap
&&
isQuery
(
F
.
wrap
))
{
F
.
wrap
.
unbind
(
'.fb'
);
}
D
.
unbind
(
'.fb'
);
W
.
unbind
(
'.fb'
);
},
bindEvents
:
function
()
{
var
current
=
F
.
current
,
keys
;
if
(
!
current
)
{
return
;
}
// Changing document height on iOS devices triggers a 'resize' event,
// that can change document height... repeating infinitely
W
.
bind
(
'orientationchange.fb'
+
(
isTouch
?
''
:
' resize.fb'
)
+
(
current
.
autoCenter
&&
!
current
.
locked
?
' scroll.fb'
:
''
),
F
.
update
);
keys
=
current
.
keys
;
if
(
keys
)
{
D
.
bind
(
'keydown.fb'
,
function
(
e
)
{
var
code
=
e
.
which
||
e
.
keyCode
,
target
=
e
.
target
||
e
.
srcElement
;
// Skip esc key if loading, because showLoading will cancel preloading
if
(
code
===
27
&&
F
.
coming
)
{
return
false
;
}
// Ignore key combinations and key events within form elements
if
(
!
e
.
ctrlKey
&&
!
e
.
altKey
&&
!
e
.
shiftKey
&&
!
e
.
metaKey
&&
!
(
target
&&
(
target
.
type
||
$
(
target
).
is
(
'[contenteditable]'
))))
{
$
.
each
(
keys
,
function
(
i
,
val
)
{
if
(
current
.
group
.
length
>
1
&&
val
[
code
]
!==
undefined
)
{
F
[
i
](
val
[
code
]
);
e
.
preventDefault
();
return
false
;
}
if
(
$
.
inArray
(
code
,
val
)
>
-
1
)
{
F
[
i
]
();
e
.
preventDefault
();
return
false
;
}
});
}
});
}
if
(
$
.
fn
.
mousewheel
&&
current
.
mouseWheel
)
{
F
.
wrap
.
bind
(
'mousewheel.fb'
,
function
(
e
,
delta
,
deltaX
,
deltaY
)
{
var
target
=
e
.
target
||
null
,
parent
=
$
(
target
),
canScroll
=
false
;
while
(
parent
.
length
)
{
if
(
canScroll
||
parent
.
is
(
'.fancybox-skin'
)
||
parent
.
is
(
'.fancybox-wrap'
))
{
break
;
}
canScroll
=
isScrollable
(
parent
[
0
]
);
parent
=
$
(
parent
).
parent
();
}
if
(
delta
!==
0
&&
!
canScroll
)
{
if
(
F
.
group
.
length
>
1
&&
!
current
.
canShrink
)
{
if
(
deltaY
>
0
||
deltaX
>
0
)
{
F
.
prev
(
deltaY
>
0
?
'down'
:
'left'
);
}
else
if
(
deltaY
<
0
||
deltaX
<
0
)
{
F
.
next
(
deltaY
<
0
?
'up'
:
'right'
);
}
e
.
preventDefault
();
}
}
});
}
},
trigger
:
function
(
event
,
o
)
{
var
ret
,
obj
=
o
||
F
.
coming
||
F
.
current
;
if
(
!
obj
)
{
return
;
}
if
(
$
.
isFunction
(
obj
[
event
]
))
{
ret
=
obj
[
event
].
apply
(
obj
,
Array
.
prototype
.
slice
.
call
(
arguments
,
1
));
}
if
(
ret
===
false
)
{
return
false
;
}
if
(
obj
.
helpers
)
{
$
.
each
(
obj
.
helpers
,
function
(
helper
,
opts
)
{
if
(
opts
&&
F
.
helpers
[
helper
]
&&
$
.
isFunction
(
F
.
helpers
[
helper
][
event
]))
{
F
.
helpers
[
helper
][
event
](
$
.
extend
(
true
,
{},
F
.
helpers
[
helper
].
defaults
,
opts
),
obj
);
}
});
}
D
.
trigger
(
event
);
},
isImage
:
function
(
str
)
{
return
isString
(
str
)
&&
str
.
match
(
/
(
^data:image
\/
.*,
)
|
(\.(
jp
(
e|g|eg
)
|gif|png|bmp|webp|svg
)((\?
|#
)
.*
)?
$
)
/i
);
},
isSWF
:
function
(
str
)
{
return
isString
(
str
)
&&
str
.
match
(
/
\.(
swf
)((\?
|#
)
.*
)?
$/i
);
},
_start
:
function
(
index
)
{
var
coming
=
{},
obj
,
href
,
type
,
margin
,
padding
;
index
=
getScalar
(
index
);
obj
=
F
.
group
[
index
]
||
null
;
if
(
!
obj
)
{
return
false
;
}
coming
=
$
.
extend
(
true
,
{},
F
.
opts
,
obj
);
// Convert margin and padding properties to array - top, right, bottom, left
margin
=
coming
.
margin
;
padding
=
coming
.
padding
;
if
(
$
.
type
(
margin
)
===
'number'
)
{
coming
.
margin
=
[
margin
,
margin
,
margin
,
margin
];
}
if
(
$
.
type
(
padding
)
===
'number'
)
{
coming
.
padding
=
[
padding
,
padding
,
padding
,
padding
];
}
// 'modal' propery is just a shortcut
if
(
coming
.
modal
)
{
$
.
extend
(
true
,
coming
,
{
closeBtn
:
false
,
closeClick
:
false
,
nextClick
:
false
,
arrows
:
false
,
mouseWheel
:
false
,
keys
:
null
,
helpers
:
{
overlay
:
{
closeClick
:
false
}
}
});
}
// 'autoSize' property is a shortcut, too
if
(
coming
.
autoSize
)
{
coming
.
autoWidth
=
coming
.
autoHeight
=
true
;
}
if
(
coming
.
width
===
'auto'
)
{
coming
.
autoWidth
=
true
;
}
if
(
coming
.
height
===
'auto'
)
{
coming
.
autoHeight
=
true
;
}
/*
* Add reference to the group, so it`s possible to access from callbacks, example:
* afterLoad : function() {
* this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');
* }
*/
coming
.
group
=
F
.
group
;
coming
.
index
=
index
;
// Give a chance for callback or helpers to update coming item (type, title, etc)
F
.
coming
=
coming
;
if
(
false
===
F
.
trigger
(
'beforeLoad'
))
{
F
.
coming
=
null
;
return
;
}
type
=
coming
.
type
;
href
=
coming
.
href
;
if
(
!
type
)
{
F
.
coming
=
null
;
//If we can not determine content type then drop silently or display next/prev item if looping through gallery
if
(
F
.
current
&&
F
.
router
&&
F
.
router
!==
'jumpto'
)
{
F
.
current
.
index
=
index
;
return
F
[
F
.
router
](
F
.
direction
);
}
return
false
;
}
F
.
isActive
=
true
;
if
(
type
===
'image'
||
type
===
'swf'
)
{
coming
.
autoHeight
=
coming
.
autoWidth
=
false
;
coming
.
scrolling
=
'visible'
;
}
if
(
type
===
'image'
)
{
coming
.
aspectRatio
=
true
;
}
if
(
type
===
'iframe'
&&
isTouch
)
{
coming
.
scrolling
=
'scroll'
;
}
// Build the neccessary markup
coming
.
wrap
=
$
(
coming
.
tpl
.
wrap
).
addClass
(
'fancybox-'
+
(
isTouch
?
'mobile'
:
'desktop'
)
+
' fancybox-type-'
+
type
+
' fancybox-tmp '
+
coming
.
wrapCSS
).
appendTo
(
coming
.
parent
||
'body'
);
$
.
extend
(
coming
,
{
skin
:
$
(
'.fancybox-skin'
,
coming
.
wrap
),
outer
:
$
(
'.fancybox-outer'
,
coming
.
wrap
),
inner
:
$
(
'.fancybox-inner'
,
coming
.
wrap
)
});
$
.
each
([
"Top"
,
"Right"
,
"Bottom"
,
"Left"
],
function
(
i
,
v
)
{
coming
.
skin
.
css
(
'padding'
+
v
,
getValue
(
coming
.
padding
[
i
]));
});
F
.
trigger
(
'onReady'
);
// Check before try to load; 'inline' and 'html' types need content, others - href
if
(
type
===
'inline'
||
type
===
'html'
)
{
if
(
!
coming
.
content
||
!
coming
.
content
.
length
)
{
return
F
.
_error
(
'content'
);
}
}
else
if
(
!
href
)
{
return
F
.
_error
(
'href'
);
}
if
(
type
===
'image'
)
{
F
.
_loadImage
();
}
else
if
(
type
===
'ajax'
)
{
F
.
_loadAjax
();
}
else
if
(
type
===
'iframe'
)
{
F
.
_loadIframe
();
}
else
{
F
.
_afterLoad
();
}
},
_error
:
function
(
type
)
{
$
.
extend
(
F
.
coming
,
{
type
:
'html'
,
autoWidth
:
true
,
autoHeight
:
true
,
minWidth
:
0
,
minHeight
:
0
,
scrolling
:
'no'
,
hasError
:
type
,
content
:
F
.
coming
.
tpl
.
error
});
F
.
_afterLoad
();
},
_loadImage
:
function
()
{
// Reset preload image so it is later possible to check "complete" property
var
img
=
F
.
imgPreload
=
new
Image
();
img
.
onload
=
function
()
{
this
.
onload
=
this
.
onerror
=
null
;
F
.
coming
.
width
=
this
.
width
/
F
.
opts
.
pixelRatio
;
F
.
coming
.
height
=
this
.
height
/
F
.
opts
.
pixelRatio
;
F
.
_afterLoad
();
};
img
.
onerror
=
function
()
{
this
.
onload
=
this
.
onerror
=
null
;
F
.
_error
(
'image'
);
};
img
.
src
=
F
.
coming
.
href
;
if
(
img
.
complete
!==
true
)
{
F
.
showLoading
();
}
},
_loadAjax
:
function
()
{
var
coming
=
F
.
coming
;
F
.
showLoading
();
F
.
ajaxLoad
=
$
.
ajax
(
$
.
extend
({},
coming
.
ajax
,
{
url
:
coming
.
href
,
error
:
function
(
jqXHR
,
textStatus
)
{
if
(
F
.
coming
&&
textStatus
!==
'abort'
)
{
F
.
_error
(
'ajax'
,
jqXHR
);
}
else
{
F
.
hideLoading
();
}
},
success
:
function
(
data
,
textStatus
)
{
if
(
textStatus
===
'success'
)
{
coming
.
content
=
data
;
F
.
_afterLoad
();
}
}
}));
},
_loadIframe
:
function
()
{
var
coming
=
F
.
coming
,
iframe
=
$
(
coming
.
tpl
.
iframe
.
replace
(
/
\{
rnd
\}
/g
,
new
Date
().
getTime
()))
.
attr
(
'scrolling'
,
isTouch
?
'auto'
:
coming
.
iframe
.
scrolling
)
.
attr
(
'src'
,
coming
.
href
);
// This helps IE
$
(
coming
.
wrap
).
bind
(
'onReset'
,
function
()
{
try
{
$
(
this
).
find
(
'iframe'
).
hide
().
attr
(
'src'
,
'//about:blank'
).
end
().
empty
();
}
catch
(
e
)
{}
});
if
(
coming
.
iframe
.
preload
)
{
F
.
showLoading
();
iframe
.
one
(
'load'
,
function
()
{
$
(
this
).
data
(
'ready'
,
1
);
// iOS will lose scrolling if we resize
if
(
!
isTouch
)
{
$
(
this
).
bind
(
'load.fb'
,
F
.
update
);
}
// Without this trick:
// - iframe won't scroll on iOS devices
// - IE7 sometimes displays empty iframe
$
(
this
).
parents
(
'.fancybox-wrap'
).
width
(
'100%'
).
removeClass
(
'fancybox-tmp'
).
show
();
F
.
_afterLoad
();
});
}
coming
.
content
=
iframe
.
appendTo
(
coming
.
inner
);
if
(
!
coming
.
iframe
.
preload
)
{
F
.
_afterLoad
();
}
},
_preloadImages
:
function
()
{
var
group
=
F
.
group
,
current
=
F
.
current
,
len
=
group
.
length
,
cnt
=
current
.
preload
?
Math
.
min
(
current
.
preload
,
len
-
1
)
:
0
,
item
,
i
;
for
(
i
=
1
;
i
<=
cnt
;
i
+=
1
)
{
item
=
group
[
(
current
.
index
+
i
)
%
len
];
if
(
item
.
type
===
'image'
&&
item
.
href
)
{
new
Image
().
src
=
item
.
href
;
}
}
},
_afterLoad
:
function
()
{
var
coming
=
F
.
coming
,
previous
=
F
.
current
,
placeholder
=
'fancybox-placeholder'
,
current
,
content
,
type
,
scrolling
,
href
,
embed
;
F
.
hideLoading
();
if
(
!
coming
||
F
.
isActive
===
false
)
{
return
;
}
if
(
false
===
F
.
trigger
(
'afterLoad'
,
coming
,
previous
))
{
coming
.
wrap
.
stop
(
true
).
trigger
(
'onReset'
).
remove
();
F
.
coming
=
null
;
return
;
}
if
(
previous
)
{
F
.
trigger
(
'beforeChange'
,
previous
);
previous
.
wrap
.
stop
(
true
).
removeClass
(
'fancybox-opened'
)
.
find
(
'.fancybox-item, .fancybox-nav'
)
.
remove
();
}
F
.
unbindEvents
();
current
=
coming
;
content
=
coming
.
content
;
type
=
coming
.
type
;
scrolling
=
coming
.
scrolling
;
$
.
extend
(
F
,
{
wrap
:
current
.
wrap
,
skin
:
current
.
skin
,
outer
:
current
.
outer
,
inner
:
current
.
inner
,
current
:
current
,
previous
:
previous
});
href
=
current
.
href
;
switch
(
type
)
{
case
'inline'
:
case
'ajax'
:
case
'html'
:
if
(
current
.
selector
)
{
content
=
$
(
'<div>'
).
html
(
content
).
find
(
current
.
selector
);
}
else
if
(
isQuery
(
content
))
{
if
(
!
content
.
data
(
placeholder
))
{
content
.
data
(
placeholder
,
$
(
'<div class="'
+
placeholder
+
'"></div>'
).
insertAfter
(
content
).
hide
()
);
}
content
=
content
.
show
().
detach
();
current
.
wrap
.
bind
(
'onReset'
,
function
()
{
if
(
$
(
this
).
find
(
content
).
length
)
{
content
.
hide
().
replaceAll
(
content
.
data
(
placeholder
)
).
data
(
placeholder
,
false
);
}
});
}
break
;
case
'image'
:
content
=
current
.
tpl
.
image
.
replace
(
'{href}'
,
href
);
break
;
case
'swf'
:
content
=
'<object id="fancybox-swf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="movie" value="'
+
href
+
'"></param>'
;
embed
=
''
;
$
.
each
(
current
.
swf
,
function
(
name
,
val
)
{
content
+=
'<param name="'
+
name
+
'" value="'
+
val
+
'"></param>'
;
embed
+=
' '
+
name
+
'="'
+
val
+
'"'
;
});
content
+=
'<embed src="'
+
href
+
'" type="application/x-shockwave-flash" width="100%" height="100%"'
+
embed
+
'></embed></object>'
;
break
;
}
if
(
!
(
isQuery
(
content
)
&&
content
.
parent
().
is
(
current
.
inner
)))
{
current
.
inner
.
append
(
content
);
}
// Give a chance for helpers or callbacks to update elements
F
.
trigger
(
'beforeShow'
);
// Set scrolling before calculating dimensions
current
.
inner
.
css
(
'overflow'
,
scrolling
===
'yes'
?
'scroll'
:
(
scrolling
===
'no'
?
'hidden'
:
scrolling
));
// Set initial dimensions and start position
F
.
_setDimension
();
F
.
reposition
();
F
.
isOpen
=
false
;
F
.
coming
=
null
;
F
.
bindEvents
();
if
(
!
F
.
isOpened
)
{
$
(
'.fancybox-wrap'
).
not
(
current
.
wrap
).
stop
(
true
).
trigger
(
'onReset'
).
remove
();
}
else
if
(
previous
.
prevMethod
)
{
F
.
transitions
[
previous
.
prevMethod
]();
}
F
.
transitions
[
F
.
isOpened
?
current
.
nextMethod
:
current
.
openMethod
]();
F
.
_preloadImages
();
},
_setDimension
:
function
()
{
var
viewport
=
F
.
getViewport
(),
steps
=
0
,
canShrink
=
false
,
canExpand
=
false
,
wrap
=
F
.
wrap
,
skin
=
F
.
skin
,
inner
=
F
.
inner
,
current
=
F
.
current
,
width
=
current
.
width
,
height
=
current
.
height
,
minWidth
=
current
.
minWidth
,
minHeight
=
current
.
minHeight
,
maxWidth
=
current
.
maxWidth
,
maxHeight
=
current
.
maxHeight
,
scrolling
=
current
.
scrolling
,
scrollOut
=
current
.
scrollOutside
?
current
.
scrollbarWidth
:
0
,
margin
=
current
.
margin
,
wMargin
=
getScalar
(
margin
[
1
]
+
margin
[
3
]),
hMargin
=
getScalar
(
margin
[
0
]
+
margin
[
2
]),
wPadding
,
hPadding
,
wSpace
,
hSpace
,
origWidth
,
origHeight
,
origMaxWidth
,
origMaxHeight
,
ratio
,
width_
,
height_
,
maxWidth_
,
maxHeight_
,
iframe
,
body
;
// Reset dimensions so we could re-check actual size
wrap
.
add
(
skin
).
add
(
inner
).
width
(
'auto'
).
height
(
'auto'
).
removeClass
(
'fancybox-tmp'
);
wPadding
=
getScalar
(
skin
.
outerWidth
(
true
)
-
skin
.
width
());
hPadding
=
getScalar
(
skin
.
outerHeight
(
true
)
-
skin
.
height
());
// Any space between content and viewport (margin, padding, border, title)
wSpace
=
wMargin
+
wPadding
;
hSpace
=
hMargin
+
hPadding
;
origWidth
=
isPercentage
(
width
)
?
(
viewport
.
w
-
wSpace
)
*
getScalar
(
width
)
/
100
:
width
;
origHeight
=
isPercentage
(
height
)
?
(
viewport
.
h
-
hSpace
)
*
getScalar
(
height
)
/
100
:
height
;
if
(
current
.
type
===
'iframe'
)
{
iframe
=
current
.
content
;
if
(
current
.
autoHeight
&&
iframe
.
data
(
'ready'
)
===
1
)
{
try
{
if
(
iframe
[
0
].
contentWindow
.
document
.
location
)
{
inner
.
width
(
origWidth
).
height
(
9999
);
body
=
iframe
.
contents
().
find
(
'body'
);
if
(
scrollOut
)
{
body
.
css
(
'overflow-x'
,
'hidden'
);
}
origHeight
=
body
.
outerHeight
(
true
);
}
}
catch
(
e
)
{}
}
}
else
if
(
current
.
autoWidth
||
current
.
autoHeight
)
{
inner
.
addClass
(
'fancybox-tmp'
);
// Set width or height in case we need to calculate only one dimension
if
(
!
current
.
autoWidth
)
{
inner
.
width
(
origWidth
);
}
if
(
!
current
.
autoHeight
)
{
inner
.
height
(
origHeight
);
}
if
(
current
.
autoWidth
)
{
origWidth
=
inner
.
width
();
}
if
(
current
.
autoHeight
)
{
origHeight
=
inner
.
height
();
}
inner
.
removeClass
(
'fancybox-tmp'
);
}
width
=
getScalar
(
origWidth
);
height
=
getScalar
(
origHeight
);
ratio
=
origWidth
/
origHeight
;
// Calculations for the content
minWidth
=
getScalar
(
isPercentage
(
minWidth
)
?
getScalar
(
minWidth
,
'w'
)
-
wSpace
:
minWidth
);
maxWidth
=
getScalar
(
isPercentage
(
maxWidth
)
?
getScalar
(
maxWidth
,
'w'
)
-
wSpace
:
maxWidth
);
minHeight
=
getScalar
(
isPercentage
(
minHeight
)
?
getScalar
(
minHeight
,
'h'
)
-
hSpace
:
minHeight
);
maxHeight
=
getScalar
(
isPercentage
(
maxHeight
)
?
getScalar
(
maxHeight
,
'h'
)
-
hSpace
:
maxHeight
);
// These will be used to determine if wrap can fit in the viewport
origMaxWidth
=
maxWidth
;
origMaxHeight
=
maxHeight
;
if
(
current
.
fitToView
)
{
maxWidth
=
Math
.
min
(
viewport
.
w
-
wSpace
,
maxWidth
);
maxHeight
=
Math
.
min
(
viewport
.
h
-
hSpace
,
maxHeight
);
}
maxWidth_
=
viewport
.
w
-
wMargin
;
maxHeight_
=
viewport
.
h
-
hMargin
;
if
(
current
.
aspectRatio
)
{
if
(
width
>
maxWidth
)
{
width
=
maxWidth
;
height
=
getScalar
(
width
/
ratio
);
}
if
(
height
>
maxHeight
)
{
height
=
maxHeight
;
width
=
getScalar
(
height
*
ratio
);
}
if
(
width
<
minWidth
)
{
width
=
minWidth
;
height
=
getScalar
(
width
/
ratio
);
}
if
(
height
<
minHeight
)
{
height
=
minHeight
;
width
=
getScalar
(
height
*
ratio
);
}
}
else
{
width
=
Math
.
max
(
minWidth
,
Math
.
min
(
width
,
maxWidth
));
if
(
current
.
autoHeight
&&
current
.
type
!==
'iframe'
)
{
inner
.
width
(
width
);
height
=
inner
.
height
();
}
height
=
Math
.
max
(
minHeight
,
Math
.
min
(
height
,
maxHeight
));
}
// Try to fit inside viewport (including the title)
if
(
current
.
fitToView
)
{
inner
.
width
(
width
).
height
(
height
);
wrap
.
width
(
width
+
wPadding
);
// Real wrap dimensions
width_
=
wrap
.
width
();
height_
=
wrap
.
height
();
if
(
current
.
aspectRatio
)
{
while
((
width_
>
maxWidth_
||
height_
>
maxHeight_
)
&&
width
>
minWidth
&&
height
>
minHeight
)
{
if
(
steps
++
>
19
)
{
break
;
}
height
=
Math
.
max
(
minHeight
,
Math
.
min
(
maxHeight
,
height
-
10
));
width
=
getScalar
(
height
*
ratio
);
if
(
width
<
minWidth
)
{
width
=
minWidth
;
height
=
getScalar
(
width
/
ratio
);
}
if
(
width
>
maxWidth
)
{
width
=
maxWidth
;
height
=
getScalar
(
width
/
ratio
);
}
inner
.
width
(
width
).
height
(
height
);
wrap
.
width
(
width
+
wPadding
);
width_
=
wrap
.
width
();
height_
=
wrap
.
height
();
}
}
else
{
width
=
Math
.
max
(
minWidth
,
Math
.
min
(
width
,
width
-
(
width_
-
maxWidth_
)));
height
=
Math
.
max
(
minHeight
,
Math
.
min
(
height
,
height
-
(
height_
-
maxHeight_
)));
}
}
if
(
scrollOut
&&
scrolling
===
'auto'
&&
height
<
origHeight
&&
(
width
+
wPadding
+
scrollOut
)
<
maxWidth_
)
{
width
+=
scrollOut
;
}
inner
.
width
(
width
).
height
(
height
);
wrap
.
width
(
width
+
wPadding
);
width_
=
wrap
.
width
();
height_
=
wrap
.
height
();
canShrink
=
(
width_
>
maxWidth_
||
height_
>
maxHeight_
)
&&
width
>
minWidth
&&
height
>
minHeight
;
canExpand
=
current
.
aspectRatio
?
(
width
<
origMaxWidth
&&
height
<
origMaxHeight
&&
width
<
origWidth
&&
height
<
origHeight
)
:
((
width
<
origMaxWidth
||
height
<
origMaxHeight
)
&&
(
width
<
origWidth
||
height
<
origHeight
));
$
.
extend
(
current
,
{
dim
:
{
width
:
getValue
(
width_
),
height
:
getValue
(
height_
)
},
origWidth
:
origWidth
,
origHeight
:
origHeight
,
canShrink
:
canShrink
,
canExpand
:
canExpand
,
wPadding
:
wPadding
,
hPadding
:
hPadding
,
wrapSpace
:
height_
-
skin
.
outerHeight
(
true
),
skinSpace
:
skin
.
height
()
-
height
});
if
(
!
iframe
&&
current
.
autoHeight
&&
height
>
minHeight
&&
height
<
maxHeight
&&
!
canExpand
)
{
inner
.
height
(
'auto'
);
}
},
_getPosition
:
function
(
onlyAbsolute
)
{
var
current
=
F
.
current
,
viewport
=
F
.
getViewport
(),
margin
=
current
.
margin
,
width
=
F
.
wrap
.
width
()
+
margin
[
1
]
+
margin
[
3
],
height
=
F
.
wrap
.
height
()
+
margin
[
0
]
+
margin
[
2
],
rez
=
{
position
:
'absolute'
,
top
:
margin
[
0
],
left
:
margin
[
3
]
};
if
(
current
.
autoCenter
&&
current
.
fixed
&&
!
onlyAbsolute
&&
height
<=
viewport
.
h
&&
width
<=
viewport
.
w
)
{
rez
.
position
=
'fixed'
;
}
else
if
(
!
current
.
locked
)
{
rez
.
top
+=
viewport
.
y
;
rez
.
left
+=
viewport
.
x
;
}
rez
.
top
=
getValue
(
Math
.
max
(
rez
.
top
,
rez
.
top
+
((
viewport
.
h
-
height
)
*
current
.
topRatio
)));
rez
.
left
=
getValue
(
Math
.
max
(
rez
.
left
,
rez
.
left
+
((
viewport
.
w
-
width
)
*
current
.
leftRatio
)));
return
rez
;
},
_afterZoomIn
:
function
()
{
var
current
=
F
.
current
;
if
(
!
current
)
{
return
;
}
F
.
isOpen
=
F
.
isOpened
=
true
;
F
.
wrap
.
css
(
'overflow'
,
'visible'
).
addClass
(
'fancybox-opened'
);
F
.
update
();
// Assign a click event
if
(
current
.
closeClick
||
(
current
.
nextClick
&&
F
.
group
.
length
>
1
)
)
{
F
.
inner
.
css
(
'cursor'
,
'pointer'
).
bind
(
'click.fb'
,
function
(
e
)
{
if
(
!
$
(
e
.
target
).
is
(
'a'
)
&&
!
$
(
e
.
target
).
parent
().
is
(
'a'
))
{
e
.
preventDefault
();
F
[
current
.
closeClick
?
'close'
:
'next'
]();
}
});
}
// Create a close button
if
(
current
.
closeBtn
)
{
$
(
current
.
tpl
.
closeBtn
).
appendTo
(
F
.
skin
).
bind
(
'click.fb'
,
function
(
e
)
{
e
.
preventDefault
();
F
.
close
();
});
}
// Create navigation arrows
if
(
current
.
arrows
&&
F
.
group
.
length
>
1
)
{
if
(
current
.
loop
||
current
.
index
>
0
)
{
$
(
current
.
tpl
.
prev
).
appendTo
(
F
.
outer
).
bind
(
'click.fb'
,
F
.
prev
);
}
if
(
current
.
loop
||
current
.
index
<
F
.
group
.
length
-
1
)
{
$
(
current
.
tpl
.
next
).
appendTo
(
F
.
outer
).
bind
(
'click.fb'
,
F
.
next
);
}
}
F
.
trigger
(
'afterShow'
);
// Stop the slideshow if this is the last item
if
(
!
current
.
loop
&&
current
.
index
===
current
.
group
.
length
-
1
)
{
F
.
play
(
false
);
}
else
if
(
F
.
opts
.
autoPlay
&&
!
F
.
player
.
isActive
)
{
F
.
opts
.
autoPlay
=
false
;
F
.
play
();
}
},
_afterZoomOut
:
function
(
obj
)
{
obj
=
obj
||
F
.
current
;
$
(
'.fancybox-wrap'
).
trigger
(
'onReset'
).
remove
();
$
.
extend
(
F
,
{
group
:
{},
opts
:
{},
router
:
false
,
current
:
null
,
isActive
:
false
,
isOpened
:
false
,
isOpen
:
false
,
isClosing
:
false
,
wrap
:
null
,
skin
:
null
,
outer
:
null
,
inner
:
null
});
F
.
trigger
(
'afterClose'
,
obj
);
}
});
/*
* Default transitions
*/
F
.
transitions
=
{
getOrigPosition
:
function
()
{
var
current
=
F
.
current
,
element
=
current
.
element
,
orig
=
current
.
orig
,
pos
=
{},
width
=
50
,
height
=
50
,
hPadding
=
current
.
hPadding
,
wPadding
=
current
.
wPadding
,
viewport
=
F
.
getViewport
();
if
(
!
orig
&&
current
.
isDom
&&
element
.
is
(
':visible'
))
{
orig
=
element
.
find
(
'img:first'
);
if
(
!
orig
.
length
)
{
orig
=
element
;
}
}
if
(
isQuery
(
orig
))
{
pos
=
orig
.
offset
();
if
(
orig
.
is
(
'img'
))
{
width
=
orig
.
outerWidth
();
height
=
orig
.
outerHeight
();
}
}
else
{
pos
.
top
=
viewport
.
y
+
(
viewport
.
h
-
height
)
*
current
.
topRatio
;
pos
.
left
=
viewport
.
x
+
(
viewport
.
w
-
width
)
*
current
.
leftRatio
;
}
if
(
F
.
wrap
.
css
(
'position'
)
===
'fixed'
||
current
.
locked
)
{
pos
.
top
-=
viewport
.
y
;
pos
.
left
-=
viewport
.
x
;
}
pos
=
{
top
:
getValue
(
pos
.
top
-
hPadding
*
current
.
topRatio
),
left
:
getValue
(
pos
.
left
-
wPadding
*
current
.
leftRatio
),
width
:
getValue
(
width
+
wPadding
),
height
:
getValue
(
height
+
hPadding
)
};
return
pos
;
},
step
:
function
(
now
,
fx
)
{
var
ratio
,
padding
,
value
,
prop
=
fx
.
prop
,
current
=
F
.
current
,
wrapSpace
=
current
.
wrapSpace
,
skinSpace
=
current
.
skinSpace
;
if
(
prop
===
'width'
||
prop
===
'height'
)
{
ratio
=
fx
.
end
===
fx
.
start
?
1
:
(
now
-
fx
.
start
)
/
(
fx
.
end
-
fx
.
start
);
if
(
F
.
isClosing
)
{
ratio
=
1
-
ratio
;
}
padding
=
prop
===
'width'
?
current
.
wPadding
:
current
.
hPadding
;
value
=
now
-
padding
;
F
.
skin
[
prop
](
getScalar
(
prop
===
'width'
?
value
:
value
-
(
wrapSpace
*
ratio
)
)
);
F
.
inner
[
prop
](
getScalar
(
prop
===
'width'
?
value
:
value
-
(
wrapSpace
*
ratio
)
-
(
skinSpace
*
ratio
)
)
);
}
},
zoomIn
:
function
()
{
var
current
=
F
.
current
,
startPos
=
current
.
pos
,
effect
=
current
.
openEffect
,
elastic
=
effect
===
'elastic'
,
endPos
=
$
.
extend
({
opacity
:
1
},
startPos
);
// Remove "position" property that breaks older IE
delete
endPos
.
position
;
if
(
elastic
)
{
startPos
=
this
.
getOrigPosition
();
if
(
current
.
openOpacity
)
{
startPos
.
opacity
=
0.1
;
}
}
else
if
(
effect
===
'fade'
)
{
startPos
.
opacity
=
0.1
;
}
F
.
wrap
.
css
(
startPos
).
animate
(
endPos
,
{
duration
:
effect
===
'none'
?
0
:
current
.
openSpeed
,
easing
:
current
.
openEasing
,
step
:
elastic
?
this
.
step
:
null
,
complete
:
F
.
_afterZoomIn
});
},
zoomOut
:
function
()
{
var
current
=
F
.
current
,
effect
=
current
.
closeEffect
,
elastic
=
effect
===
'elastic'
,
endPos
=
{
opacity
:
0.1
};
if
(
elastic
)
{
endPos
=
this
.
getOrigPosition
();
if
(
current
.
closeOpacity
)
{
endPos
.
opacity
=
0.1
;
}
}
F
.
wrap
.
animate
(
endPos
,
{
duration
:
effect
===
'none'
?
0
:
current
.
closeSpeed
,
easing
:
current
.
closeEasing
,
step
:
elastic
?
this
.
step
:
null
,
complete
:
F
.
_afterZoomOut
});
},
changeIn
:
function
()
{
var
current
=
F
.
current
,
effect
=
current
.
nextEffect
,
startPos
=
current
.
pos
,
endPos
=
{
opacity
:
1
},
direction
=
F
.
direction
,
distance
=
200
,
field
;
startPos
.
opacity
=
0.1
;
if
(
effect
===
'elastic'
)
{
field
=
direction
===
'down'
||
direction
===
'up'
?
'top'
:
'left'
;
if
(
direction
===
'down'
||
direction
===
'right'
)
{
startPos
[
field
]
=
getValue
(
getScalar
(
startPos
[
field
])
-
distance
);
endPos
[
field
]
=
'+='
+
distance
+
'px'
;
}
else
{
startPos
[
field
]
=
getValue
(
getScalar
(
startPos
[
field
])
+
distance
);
endPos
[
field
]
=
'-='
+
distance
+
'px'
;
}
}
// Workaround for http://bugs.jquery.com/ticket/12273
if
(
effect
===
'none'
)
{
F
.
_afterZoomIn
();
}
else
{
F
.
wrap
.
css
(
startPos
).
animate
(
endPos
,
{
duration
:
current
.
nextSpeed
,
easing
:
current
.
nextEasing
,
complete
:
F
.
_afterZoomIn
});
}
},
changeOut
:
function
()
{
var
previous
=
F
.
previous
,
effect
=
previous
.
prevEffect
,
endPos
=
{
opacity
:
0.1
},
direction
=
F
.
direction
,
distance
=
200
;
if
(
effect
===
'elastic'
)
{
endPos
[
direction
===
'down'
||
direction
===
'up'
?
'top'
:
'left'
]
=
(
direction
===
'up'
||
direction
===
'left'
?
'-'
:
'+'
)
+
'='
+
distance
+
'px'
;
}
previous
.
wrap
.
animate
(
endPos
,
{
duration
:
effect
===
'none'
?
0
:
previous
.
prevSpeed
,
easing
:
previous
.
prevEasing
,
complete
:
function
()
{
$
(
this
).
trigger
(
'onReset'
).
remove
();
}
});
}
};
/*
* Overlay helper
*/
F
.
helpers
.
overlay
=
{
defaults
:
{
closeClick
:
true
,
// if true, fancyBox will be closed when user clicks on the overlay
speedOut
:
200
,
// duration of fadeOut animation
showEarly
:
true
,
// indicates if should be opened immediately or wait until the content is ready
css
:
{},
// custom CSS properties
locked
:
!
isTouch
,
// if true, the content will be locked into overlay
fixed
:
true
// if false, the overlay CSS position property will not be set to "fixed"
},
overlay
:
null
,
// current handle
fixed
:
false
,
// indicates if the overlay has position "fixed"
el
:
$
(
'html'
),
// element that contains "the lock"
// Public methods
create
:
function
(
opts
)
{
opts
=
$
.
extend
({},
this
.
defaults
,
opts
);
if
(
this
.
overlay
)
{
this
.
close
();
}
this
.
overlay
=
$
(
'<div class="fancybox-overlay"></div>'
).
appendTo
(
F
.
coming
?
F
.
coming
.
parent
:
opts
.
parent
);
this
.
fixed
=
false
;
if
(
opts
.
fixed
&&
F
.
defaults
.
fixed
)
{
this
.
overlay
.
addClass
(
'fancybox-overlay-fixed'
);
this
.
fixed
=
true
;
}
},
open
:
function
(
opts
)
{
var
that
=
this
;
opts
=
$
.
extend
({},
this
.
defaults
,
opts
);
if
(
this
.
overlay
)
{
this
.
overlay
.
unbind
(
'.overlay'
).
width
(
'auto'
).
height
(
'auto'
);
}
else
{
this
.
create
(
opts
);
}
if
(
!
this
.
fixed
)
{
W
.
bind
(
'resize.overlay'
,
$
.
proxy
(
this
.
update
,
this
)
);
this
.
update
();
}
if
(
opts
.
closeClick
)
{
this
.
overlay
.
bind
(
'click.overlay'
,
function
(
e
)
{
if
(
$
(
e
.
target
).
hasClass
(
'fancybox-overlay'
))
{
if
(
F
.
isActive
)
{
F
.
close
();
}
else
{
that
.
close
();
}
return
false
;
}
});
}
this
.
overlay
.
css
(
opts
.
css
).
show
();
},
close
:
function
()
{
var
scrollV
,
scrollH
;
W
.
unbind
(
'resize.overlay'
);
if
(
this
.
el
.
hasClass
(
'fancybox-lock'
))
{
$
(
'.fancybox-margin'
).
removeClass
(
'fancybox-margin'
);
scrollV
=
W
.
scrollTop
();
scrollH
=
W
.
scrollLeft
();
this
.
el
.
removeClass
(
'fancybox-lock'
);
W
.
scrollTop
(
scrollV
).
scrollLeft
(
scrollH
);
}
$
(
'.fancybox-overlay'
).
remove
().
hide
();
$
.
extend
(
this
,
{
overlay
:
null
,
fixed
:
false
});
},
// Private, callbacks
update
:
function
()
{
var
width
=
'100%'
,
offsetWidth
;
// Reset width/height so it will not mess
this
.
overlay
.
width
(
width
).
height
(
'100%'
);
// jQuery does not return reliable result for IE
if
(
IE
)
{
offsetWidth
=
Math
.
max
(
document
.
documentElement
.
offsetWidth
,
document
.
body
.
offsetWidth
);
if
(
D
.
width
()
>
offsetWidth
)
{
width
=
D
.
width
();
}
}
else
if
(
D
.
width
()
>
W
.
width
())
{
width
=
D
.
width
();
}
this
.
overlay
.
width
(
width
).
height
(
D
.
height
());
},
// This is where we can manipulate DOM, because later it would cause iframes to reload
onReady
:
function
(
opts
,
obj
)
{
var
overlay
=
this
.
overlay
;
$
(
'.fancybox-overlay'
).
stop
(
true
,
true
);
if
(
!
overlay
)
{
this
.
create
(
opts
);
}
if
(
opts
.
locked
&&
this
.
fixed
&&
obj
.
fixed
)
{
if
(
!
overlay
)
{
this
.
margin
=
D
.
height
()
>
W
.
height
()
?
$
(
'html'
).
css
(
'margin-right'
).
replace
(
"px"
,
""
)
:
false
;
}
obj
.
locked
=
this
.
overlay
.
append
(
obj
.
wrap
);
obj
.
fixed
=
false
;
}
if
(
opts
.
showEarly
===
true
)
{
this
.
beforeShow
.
apply
(
this
,
arguments
);
}
},
beforeShow
:
function
(
opts
,
obj
)
{
var
scrollV
,
scrollH
;
if
(
obj
.
locked
)
{
if
(
this
.
margin
!==
false
)
{
$
(
'*'
).
filter
(
function
(){
return
(
$
(
this
).
css
(
'position'
)
===
'fixed'
&&
!
$
(
this
).
hasClass
(
"fancybox-overlay"
)
&&
!
$
(
this
).
hasClass
(
"fancybox-wrap"
)
);
}).
addClass
(
'fancybox-margin'
);
this
.
el
.
addClass
(
'fancybox-margin'
);
}
scrollV
=
W
.
scrollTop
();
scrollH
=
W
.
scrollLeft
();
this
.
el
.
addClass
(
'fancybox-lock'
);
W
.
scrollTop
(
scrollV
).
scrollLeft
(
scrollH
);
}
this
.
open
(
opts
);
},
onUpdate
:
function
()
{
if
(
!
this
.
fixed
)
{
this
.
update
();
}
},
afterClose
:
function
(
opts
)
{
// Remove overlay if exists and fancyBox is not opening
// (e.g., it is not being open using afterClose callback)
//if (this.overlay && !F.isActive) {
if
(
this
.
overlay
&&
!
F
.
coming
)
{
this
.
overlay
.
fadeOut
(
opts
.
speedOut
,
$
.
proxy
(
this
.
close
,
this
));
}
}
};
/*
* Title helper
*/
F
.
helpers
.
title
=
{
defaults
:
{
type
:
'float'
,
// 'float', 'inside', 'outside' or 'over',
position
:
'bottom'
// 'top' or 'bottom'
},
beforeShow
:
function
(
opts
)
{
var
current
=
F
.
current
,
text
=
current
.
title
,
type
=
opts
.
type
,
title
,
target
;
if
(
$
.
isFunction
(
text
))
{
text
=
text
.
call
(
current
.
element
,
current
);
}
if
(
!
isString
(
text
)
||
$
.
trim
(
text
)
===
''
)
{
return
;
}
title
=
$
(
'<div class="fancybox-title fancybox-title-'
+
type
+
'-wrap">'
+
text
+
'</div>'
);
switch
(
type
)
{
case
'inside'
:
target
=
F
.
skin
;
break
;
case
'outside'
:
target
=
F
.
wrap
;
break
;
case
'over'
:
target
=
F
.
inner
;
break
;
default
:
// 'float'
target
=
F
.
skin
;
title
.
appendTo
(
'body'
);
if
(
IE
)
{
title
.
width
(
title
.
width
()
);
}
title
.
wrapInner
(
'<span class="child"></span>'
);
//Increase bottom margin so this title will also fit into viewport
F
.
current
.
margin
[
2
]
+=
Math
.
abs
(
getScalar
(
title
.
css
(
'margin-bottom'
))
);
break
;
}
title
[
(
opts
.
position
===
'top'
?
'prependTo'
:
'appendTo'
)
](
target
);
}
};
// jQuery plugin initialization
$
.
fn
.
fancybox
=
function
(
options
)
{
var
index
,
that
=
$
(
this
),
selector
=
this
.
selector
||
''
,
run
=
function
(
e
)
{
var
what
=
$
(
this
).
blur
(),
idx
=
index
,
relType
,
relVal
;
if
(
!
(
e
.
ctrlKey
||
e
.
altKey
||
e
.
shiftKey
||
e
.
metaKey
)
&&
!
what
.
is
(
'.fancybox-wrap'
))
{
relType
=
options
.
groupAttr
||
'data-fancybox-group'
;
relVal
=
what
.
attr
(
relType
);
if
(
!
relVal
)
{
relType
=
'rel'
;
relVal
=
what
.
get
(
0
)[
relType
];
}
if
(
relVal
&&
relVal
!==
''
&&
relVal
!==
'nofollow'
)
{
what
=
selector
.
length
?
$
(
selector
)
:
that
;
what
=
what
.
filter
(
'['
+
relType
+
'="'
+
relVal
+
'"]'
);
idx
=
what
.
index
(
this
);
}
options
.
index
=
idx
;
// Stop an event from bubbling if everything is fine
if
(
F
.
open
(
what
,
options
)
!==
false
)
{
e
.
preventDefault
();
}
}
};
options
=
options
||
{};
index
=
options
.
index
||
0
;
if
(
!
selector
||
options
.
live
===
false
)
{
that
.
unbind
(
'click.fb-start'
).
bind
(
'click.fb-start'
,
run
);
}
else
{
D
.
undelegate
(
selector
,
'click.fb-start'
).
delegate
(
selector
+
":not('.fancybox-item, .fancybox-nav')"
,
'click.fb-start'
,
run
);
}
this
.
filter
(
'[data-fancybox-start=1]'
).
trigger
(
'click'
);
return
this
;
};
// Tests that need a body at doc ready
D
.
ready
(
function
()
{
var
w1
,
w2
;
if
(
$
.
scrollbarWidth
===
undefined
)
{
// http://benalman.com/projects/jquery-misc-plugins/#scrollbarwidth
$
.
scrollbarWidth
=
function
()
{
var
parent
=
$
(
'<div style="width:50px;height:50px;overflow:auto"><div/></div>'
).
appendTo
(
'body'
),
child
=
parent
.
children
(),
width
=
child
.
innerWidth
()
-
child
.
height
(
99
).
innerWidth
();
parent
.
remove
();
return
width
;
};
}
if
(
$
.
support
.
fixedPosition
===
undefined
)
{
$
.
support
.
fixedPosition
=
(
function
()
{
var
elem
=
$
(
'<div style="position:fixed;top:20px;"></div>'
).
appendTo
(
'body'
),
fixed
=
(
elem
[
0
].
offsetTop
===
20
||
elem
[
0
].
offsetTop
===
15
);
elem
.
remove
();
return
fixed
;
}());
}
$
.
extend
(
F
.
defaults
,
{
scrollbarWidth
:
$
.
scrollbarWidth
(),
fixed
:
$
.
support
.
fixedPosition
,
parent
:
$
(
'body'
)
});
//Get real width of page scroll-bar
w1
=
$
(
window
).
width
();
H
.
addClass
(
'fancybox-lock-test'
);
w2
=
$
(
window
).
width
();
H
.
removeClass
(
'fancybox-lock-test'
);
$
(
"<style type='text/css'>.fancybox-margin{margin-right:"
+
(
w2
-
w1
)
+
"px;}</style>"
).
appendTo
(
"head"
);
});
}(
window
,
document
,
jQuery
));
\ No newline at end of file
WebContent/lib/plug/fancyBox-2.1.5/source/jquery.fancybox.pack.js
0 → 100644
View file @
b9cf285a
/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */
(
function
(
r
,
G
,
f
,
v
){
var
J
=
f
(
"html"
),
n
=
f
(
r
),
p
=
f
(
G
),
b
=
f
.
fancybox
=
function
(){
b
.
open
.
apply
(
this
,
arguments
)},
I
=
navigator
.
userAgent
.
match
(
/msie/i
),
B
=
null
,
s
=
G
.
createTouch
!==
v
,
t
=
function
(
a
){
return
a
&&
a
.
hasOwnProperty
&&
a
instanceof
f
},
q
=
function
(
a
){
return
a
&&
"string"
===
f
.
type
(
a
)},
E
=
function
(
a
){
return
q
(
a
)
&&
0
<
a
.
indexOf
(
"%"
)},
l
=
function
(
a
,
d
){
var
e
=
parseInt
(
a
,
10
)
||
0
;
d
&&
E
(
a
)
&&
(
e
*=
b
.
getViewport
()[
d
]
/
100
);
return
Math
.
ceil
(
e
)},
w
=
function
(
a
,
b
){
return
l
(
a
,
b
)
+
"px"
};
f
.
extend
(
b
,{
version
:
"2.1.5"
,
defaults
:{
padding
:
15
,
margin
:
20
,
width
:
800
,
height
:
600
,
minWidth
:
100
,
minHeight
:
100
,
maxWidth
:
9999
,
maxHeight
:
9999
,
pixelRatio
:
1
,
autoSize
:
!
0
,
autoHeight
:
!
1
,
autoWidth
:
!
1
,
autoResize
:
!
0
,
autoCenter
:
!
s
,
fitToView
:
!
0
,
aspectRatio
:
!
1
,
topRatio
:
0.5
,
leftRatio
:
0.5
,
scrolling
:
"auto"
,
wrapCSS
:
""
,
arrows
:
!
0
,
closeBtn
:
!
0
,
closeClick
:
!
1
,
nextClick
:
!
1
,
mouseWheel
:
!
0
,
autoPlay
:
!
1
,
playSpeed
:
3
E3
,
preload
:
3
,
modal
:
!
1
,
loop
:
!
0
,
ajax
:{
dataType
:
"html"
,
headers
:{
"X-fancyBox"
:
!
0
}},
iframe
:{
scrolling
:
"auto"
,
preload
:
!
0
},
swf
:{
wmode
:
"transparent"
,
allowfullscreen
:
"true"
,
allowscriptaccess
:
"always"
},
keys
:{
next
:{
13
:
"left"
,
34
:
"up"
,
39
:
"left"
,
40
:
"up"
},
prev
:{
8
:
"right"
,
33
:
"down"
,
37
:
"right"
,
38
:
"down"
},
close
:[
27
],
play
:[
32
],
toggle
:[
70
]},
direction
:{
next
:
"left"
,
prev
:
"right"
},
scrollOutside
:
!
0
,
index
:
0
,
type
:
null
,
href
:
null
,
content
:
null
,
title
:
null
,
tpl
:{
wrap
:
'<div class="fancybox-wrap" tabIndex="-1"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div></div>'
,
image
:
'<img class="fancybox-image" src="{href}" alt="" />'
,
iframe
:
'<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen'
+
(
I
?
' allowtransparency="true"'
:
""
)
+
"></iframe>"
,
error
:
'<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>'
,
closeBtn
:
'<a title="Close" class="fancybox-item fancybox-close" href="javascript:;"></a>'
,
next
:
'<a title="Next" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>'
,
prev
:
'<a title="Previous" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>'
},
openEffect
:
"fade"
,
openSpeed
:
250
,
openEasing
:
"swing"
,
openOpacity
:
!
0
,
openMethod
:
"zoomIn"
,
closeEffect
:
"fade"
,
closeSpeed
:
250
,
closeEasing
:
"swing"
,
closeOpacity
:
!
0
,
closeMethod
:
"zoomOut"
,
nextEffect
:
"elastic"
,
nextSpeed
:
250
,
nextEasing
:
"swing"
,
nextMethod
:
"changeIn"
,
prevEffect
:
"elastic"
,
prevSpeed
:
250
,
prevEasing
:
"swing"
,
prevMethod
:
"changeOut"
,
helpers
:{
overlay
:
!
0
,
title
:
!
0
},
onCancel
:
f
.
noop
,
beforeLoad
:
f
.
noop
,
afterLoad
:
f
.
noop
,
beforeShow
:
f
.
noop
,
afterShow
:
f
.
noop
,
beforeChange
:
f
.
noop
,
beforeClose
:
f
.
noop
,
afterClose
:
f
.
noop
},
group
:{},
opts
:{},
previous
:
null
,
coming
:
null
,
current
:
null
,
isActive
:
!
1
,
isOpen
:
!
1
,
isOpened
:
!
1
,
wrap
:
null
,
skin
:
null
,
outer
:
null
,
inner
:
null
,
player
:{
timer
:
null
,
isActive
:
!
1
},
ajaxLoad
:
null
,
imgPreload
:
null
,
transitions
:{},
helpers
:{},
open
:
function
(
a
,
d
){
if
(
a
&&
(
f
.
isPlainObject
(
d
)
||
(
d
=
{}),
!
1
!==
b
.
close
(
!
0
)))
return
f
.
isArray
(
a
)
||
(
a
=
t
(
a
)?
f
(
a
).
get
():[
a
]),
f
.
each
(
a
,
function
(
e
,
c
){
var
k
=
{},
g
,
h
,
j
,
m
,
l
;
"object"
===
f
.
type
(
c
)
&&
(
c
.
nodeType
&&
(
c
=
f
(
c
)),
t
(
c
)?(
k
=
{
href
:
c
.
data
(
"fancybox-href"
)
||
c
.
attr
(
"href"
),
title
:
c
.
data
(
"fancybox-title"
)
||
c
.
attr
(
"title"
),
isDom
:
!
0
,
element
:
c
},
f
.
metadata
&&
f
.
extend
(
!
0
,
k
,
c
.
metadata
())):
k
=
c
);
g
=
d
.
href
||
k
.
href
||
(
q
(
c
)?
c
:
null
);
h
=
d
.
title
!==
v
?
d
.
title
:
k
.
title
||
""
;
m
=
(
j
=
d
.
content
||
k
.
content
)?
"html"
:
d
.
type
||
k
.
type
;
!
m
&&
k
.
isDom
&&
(
m
=
c
.
data
(
"fancybox-type"
),
m
||
(
m
=
(
m
=
c
.
prop
(
"class"
).
match
(
/fancybox
\.(\w
+
)
/
))?
m
[
1
]:
null
));
q
(
g
)
&&
(
m
||
(
b
.
isImage
(
g
)?
m
=
"image"
:
b
.
isSWF
(
g
)?
m
=
"swf"
:
"#"
===
g
.
charAt
(
0
)?
m
=
"inline"
:
q
(
c
)
&&
(
m
=
"html"
,
j
=
c
)),
"ajax"
===
m
&&
(
l
=
g
.
split
(
/
\s
+/
,
2
),
g
=
l
.
shift
(),
l
=
l
.
shift
()));
j
||
(
"inline"
===
m
?
g
?
j
=
f
(
q
(
g
)?
g
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
""
):
g
):
k
.
isDom
&&
(
j
=
c
):
"html"
===
m
?
j
=
g
:
!
m
&&
(
!
g
&&
k
.
isDom
)
&&
(
m
=
"inline"
,
j
=
c
));
f
.
extend
(
k
,{
href
:
g
,
type
:
m
,
content
:
j
,
title
:
h
,
selector
:
l
});
a
[
e
]
=
k
}),
b
.
opts
=
f
.
extend
(
!
0
,{},
b
.
defaults
,
d
),
d
.
keys
!==
v
&&
(
b
.
opts
.
keys
=
d
.
keys
?
f
.
extend
({},
b
.
defaults
.
keys
,
d
.
keys
):
!
1
),
b
.
group
=
a
,
b
.
_start
(
b
.
opts
.
index
)},
cancel
:
function
(){
var
a
=
b
.
coming
;
a
&&!
1
!==
b
.
trigger
(
"onCancel"
)
&&
(
b
.
hideLoading
(),
b
.
ajaxLoad
&&
b
.
ajaxLoad
.
abort
(),
b
.
ajaxLoad
=
null
,
b
.
imgPreload
&&
(
b
.
imgPreload
.
onload
=
b
.
imgPreload
.
onerror
=
null
),
a
.
wrap
&&
a
.
wrap
.
stop
(
!
0
,
!
0
).
trigger
(
"onReset"
).
remove
(),
b
.
coming
=
null
,
b
.
current
||
b
.
_afterZoomOut
(
a
))},
close
:
function
(
a
){
b
.
cancel
();
!
1
!==
b
.
trigger
(
"beforeClose"
)
&&
(
b
.
unbindEvents
(),
b
.
isActive
&&
(
!
b
.
isOpen
||!
0
===
a
?(
f
(
".fancybox-wrap"
).
stop
(
!
0
).
trigger
(
"onReset"
).
remove
(),
b
.
_afterZoomOut
()):(
b
.
isOpen
=
b
.
isOpened
=!
1
,
b
.
isClosing
=!
0
,
f
(
".fancybox-item, .fancybox-nav"
).
remove
(),
b
.
wrap
.
stop
(
!
0
,
!
0
).
removeClass
(
"fancybox-opened"
),
b
.
transitions
[
b
.
current
.
closeMethod
]())))},
play
:
function
(
a
){
var
d
=
function
(){
clearTimeout
(
b
.
player
.
timer
)},
e
=
function
(){
d
();
b
.
current
&&
b
.
player
.
isActive
&&
(
b
.
player
.
timer
=
setTimeout
(
b
.
next
,
b
.
current
.
playSpeed
))},
c
=
function
(){
d
();
p
.
unbind
(
".player"
);
b
.
player
.
isActive
=!
1
;
b
.
trigger
(
"onPlayEnd"
)};
if
(
!
0
===
a
||!
b
.
player
.
isActive
&&!
1
!==
a
){
if
(
b
.
current
&&
(
b
.
current
.
loop
||
b
.
current
.
index
<
b
.
group
.
length
-
1
))
b
.
player
.
isActive
=!
0
,
p
.
bind
({
"onCancel.player beforeClose.player"
:
c
,
"onUpdate.player"
:
e
,
"beforeLoad.player"
:
d
}),
e
(),
b
.
trigger
(
"onPlayStart"
)}
else
c
()},
next
:
function
(
a
){
var
d
=
b
.
current
;
d
&&
(
q
(
a
)
||
(
a
=
d
.
direction
.
next
),
b
.
jumpto
(
d
.
index
+
1
,
a
,
"next"
))},
prev
:
function
(
a
){
var
d
=
b
.
current
;
d
&&
(
q
(
a
)
||
(
a
=
d
.
direction
.
prev
),
b
.
jumpto
(
d
.
index
-
1
,
a
,
"prev"
))},
jumpto
:
function
(
a
,
d
,
e
){
var
c
=
b
.
current
;
c
&&
(
a
=
l
(
a
),
b
.
direction
=
d
||
c
.
direction
[
a
>=
c
.
index
?
"next"
:
"prev"
],
b
.
router
=
e
||
"jumpto"
,
c
.
loop
&&
(
0
>
a
&&
(
a
=
c
.
group
.
length
+
a
%
c
.
group
.
length
),
a
%=
c
.
group
.
length
),
c
.
group
[
a
]
!==
v
&&
(
b
.
cancel
(),
b
.
_start
(
a
)))},
reposition
:
function
(
a
,
d
){
var
e
=
b
.
current
,
c
=
e
?
e
.
wrap
:
null
,
k
;
c
&&
(
k
=
b
.
_getPosition
(
d
),
a
&&
"scroll"
===
a
.
type
?(
delete
k
.
position
,
c
.
stop
(
!
0
,
!
0
).
animate
(
k
,
200
)):(
c
.
css
(
k
),
e
.
pos
=
f
.
extend
({},
e
.
dim
,
k
)))},
update
:
function
(
a
){
var
d
=
a
&&
a
.
type
,
e
=!
d
||
"orientationchange"
===
d
;
e
&&
(
clearTimeout
(
B
),
B
=
null
);
b
.
isOpen
&&!
B
&&
(
B
=
setTimeout
(
function
(){
var
c
=
b
.
current
;
c
&&!
b
.
isClosing
&&
(
b
.
wrap
.
removeClass
(
"fancybox-tmp"
),(
e
||
"load"
===
d
||
"resize"
===
d
&&
c
.
autoResize
)
&&
b
.
_setDimension
(),
"scroll"
===
d
&&
c
.
canShrink
||
b
.
reposition
(
a
),
b
.
trigger
(
"onUpdate"
),
B
=
null
)},
e
&&!
s
?
0
:
300
))},
toggle
:
function
(
a
){
b
.
isOpen
&&
(
b
.
current
.
fitToView
=
"boolean"
===
f
.
type
(
a
)?
a
:
!
b
.
current
.
fitToView
,
s
&&
(
b
.
wrap
.
removeAttr
(
"style"
).
addClass
(
"fancybox-tmp"
),
b
.
trigger
(
"onUpdate"
)),
b
.
update
())},
hideLoading
:
function
(){
p
.
unbind
(
".loading"
);
f
(
"#fancybox-loading"
).
remove
()},
showLoading
:
function
(){
var
a
,
d
;
b
.
hideLoading
();
a
=
f
(
'<div id="fancybox-loading"><div></div></div>'
).
click
(
b
.
cancel
).
appendTo
(
"body"
);
p
.
bind
(
"keydown.loading"
,
function
(
a
){
if
(
27
===
(
a
.
which
||
a
.
keyCode
))
a
.
preventDefault
(),
b
.
cancel
()});
b
.
defaults
.
fixed
||
(
d
=
b
.
getViewport
(),
a
.
css
({
position
:
"absolute"
,
top
:
0.5
*
d
.
h
+
d
.
y
,
left
:
0.5
*
d
.
w
+
d
.
x
}))},
getViewport
:
function
(){
var
a
=
b
.
current
&&
b
.
current
.
locked
||!
1
,
d
=
{
x
:
n
.
scrollLeft
(),
y
:
n
.
scrollTop
()};
a
?(
d
.
w
=
a
[
0
].
clientWidth
,
d
.
h
=
a
[
0
].
clientHeight
):(
d
.
w
=
s
&&
r
.
innerWidth
?
r
.
innerWidth
:
n
.
width
(),
d
.
h
=
s
&&
r
.
innerHeight
?
r
.
innerHeight
:
n
.
height
());
return
d
},
unbindEvents
:
function
(){
b
.
wrap
&&
t
(
b
.
wrap
)
&&
b
.
wrap
.
unbind
(
".fb"
);
p
.
unbind
(
".fb"
);
n
.
unbind
(
".fb"
)},
bindEvents
:
function
(){
var
a
=
b
.
current
,
d
;
a
&&
(
n
.
bind
(
"orientationchange.fb"
+
(
s
?
""
:
" resize.fb"
)
+
(
a
.
autoCenter
&&!
a
.
locked
?
" scroll.fb"
:
""
),
b
.
update
),(
d
=
a
.
keys
)
&&
p
.
bind
(
"keydown.fb"
,
function
(
e
){
var
c
=
e
.
which
||
e
.
keyCode
,
k
=
e
.
target
||
e
.
srcElement
;
if
(
27
===
c
&&
b
.
coming
)
return
!
1
;
!
e
.
ctrlKey
&&
(
!
e
.
altKey
&&!
e
.
shiftKey
&&!
e
.
metaKey
&&
(
!
k
||!
k
.
type
&&!
f
(
k
).
is
(
"[contenteditable]"
)))
&&
f
.
each
(
d
,
function
(
d
,
k
){
if
(
1
<
a
.
group
.
length
&&
k
[
c
]
!==
v
)
return
b
[
d
](
k
[
c
]),
e
.
preventDefault
(),
!
1
;
if
(
-
1
<
f
.
inArray
(
c
,
k
))
return
b
[
d
](),
e
.
preventDefault
(),
!
1
})}),
f
.
fn
.
mousewheel
&&
a
.
mouseWheel
&&
b
.
wrap
.
bind
(
"mousewheel.fb"
,
function
(
d
,
c
,
k
,
g
){
for
(
var
h
=
f
(
d
.
target
||
null
),
j
=!
1
;
h
.
length
&&!
j
&&!
h
.
is
(
".fancybox-skin"
)
&&!
h
.
is
(
".fancybox-wrap"
);)
j
=
h
[
0
]
&&!
(
h
[
0
].
style
.
overflow
&&
"hidden"
===
h
[
0
].
style
.
overflow
)
&&
(
h
[
0
].
clientWidth
&&
h
[
0
].
scrollWidth
>
h
[
0
].
clientWidth
||
h
[
0
].
clientHeight
&&
h
[
0
].
scrollHeight
>
h
[
0
].
clientHeight
),
h
=
f
(
h
).
parent
();
if
(
0
!==
c
&&!
j
&&
1
<
b
.
group
.
length
&&!
a
.
canShrink
){
if
(
0
<
g
||
0
<
k
)
b
.
prev
(
0
<
g
?
"down"
:
"left"
);
else
if
(
0
>
g
||
0
>
k
)
b
.
next
(
0
>
g
?
"up"
:
"right"
);
d
.
preventDefault
()}}))},
trigger
:
function
(
a
,
d
){
var
e
,
c
=
d
||
b
.
coming
||
b
.
current
;
if
(
c
){
f
.
isFunction
(
c
[
a
])
&&
(
e
=
c
[
a
].
apply
(
c
,
Array
.
prototype
.
slice
.
call
(
arguments
,
1
)));
if
(
!
1
===
e
)
return
!
1
;
c
.
helpers
&&
f
.
each
(
c
.
helpers
,
function
(
d
,
e
){
if
(
e
&&
b
.
helpers
[
d
]
&&
f
.
isFunction
(
b
.
helpers
[
d
][
a
]))
b
.
helpers
[
d
][
a
](
f
.
extend
(
!
0
,
{},
b
.
helpers
[
d
].
defaults
,
e
),
c
)});
p
.
trigger
(
a
)}},
isImage
:
function
(
a
){
return
q
(
a
)
&&
a
.
match
(
/
(
^data:image
\/
.*,
)
|
(\.(
jp
(
e|g|eg
)
|gif|png|bmp|webp|svg
)((\?
|#
)
.*
)?
$
)
/i
)},
isSWF
:
function
(
a
){
return
q
(
a
)
&&
a
.
match
(
/
\.(
swf
)((\?
|#
)
.*
)?
$/i
)},
_start
:
function
(
a
){
var
d
=
{},
e
,
c
;
a
=
l
(
a
);
e
=
b
.
group
[
a
]
||
null
;
if
(
!
e
)
return
!
1
;
d
=
f
.
extend
(
!
0
,{},
b
.
opts
,
e
);
e
=
d
.
margin
;
c
=
d
.
padding
;
"number"
===
f
.
type
(
e
)
&&
(
d
.
margin
=
[
e
,
e
,
e
,
e
]);
"number"
===
f
.
type
(
c
)
&&
(
d
.
padding
=
[
c
,
c
,
c
,
c
]);
d
.
modal
&&
f
.
extend
(
!
0
,
d
,{
closeBtn
:
!
1
,
closeClick
:
!
1
,
nextClick
:
!
1
,
arrows
:
!
1
,
mouseWheel
:
!
1
,
keys
:
null
,
helpers
:{
overlay
:{
closeClick
:
!
1
}}});
d
.
autoSize
&&
(
d
.
autoWidth
=
d
.
autoHeight
=!
0
);
"auto"
===
d
.
width
&&
(
d
.
autoWidth
=!
0
);
"auto"
===
d
.
height
&&
(
d
.
autoHeight
=!
0
);
d
.
group
=
b
.
group
;
d
.
index
=
a
;
b
.
coming
=
d
;
if
(
!
1
===
b
.
trigger
(
"beforeLoad"
))
b
.
coming
=
null
;
else
{
c
=
d
.
type
;
e
=
d
.
href
;
if
(
!
c
)
return
b
.
coming
=
null
,
b
.
current
&&
b
.
router
&&
"jumpto"
!==
b
.
router
?(
b
.
current
.
index
=
a
,
b
[
b
.
router
](
b
.
direction
)):
!
1
;
b
.
isActive
=!
0
;
if
(
"image"
===
c
||
"swf"
===
c
)
d
.
autoHeight
=
d
.
autoWidth
=!
1
,
d
.
scrolling
=
"visible"
;
"image"
===
c
&&
(
d
.
aspectRatio
=
!
0
);
"iframe"
===
c
&&
s
&&
(
d
.
scrolling
=
"scroll"
);
d
.
wrap
=
f
(
d
.
tpl
.
wrap
).
addClass
(
"fancybox-"
+
(
s
?
"mobile"
:
"desktop"
)
+
" fancybox-type-"
+
c
+
" fancybox-tmp "
+
d
.
wrapCSS
).
appendTo
(
d
.
parent
||
"body"
);
f
.
extend
(
d
,{
skin
:
f
(
".fancybox-skin"
,
d
.
wrap
),
outer
:
f
(
".fancybox-outer"
,
d
.
wrap
),
inner
:
f
(
".fancybox-inner"
,
d
.
wrap
)});
f
.
each
([
"Top"
,
"Right"
,
"Bottom"
,
"Left"
],
function
(
a
,
b
){
d
.
skin
.
css
(
"padding"
+
b
,
w
(
d
.
padding
[
a
]))});
b
.
trigger
(
"onReady"
);
if
(
"inline"
===
c
||
"html"
===
c
){
if
(
!
d
.
content
||!
d
.
content
.
length
)
return
b
.
_error
(
"content"
)}
else
if
(
!
e
)
return
b
.
_error
(
"href"
);
"image"
===
c
?
b
.
_loadImage
():
"ajax"
===
c
?
b
.
_loadAjax
():
"iframe"
===
c
?
b
.
_loadIframe
():
b
.
_afterLoad
()}},
_error
:
function
(
a
){
f
.
extend
(
b
.
coming
,{
type
:
"html"
,
autoWidth
:
!
0
,
autoHeight
:
!
0
,
minWidth
:
0
,
minHeight
:
0
,
scrolling
:
"no"
,
hasError
:
a
,
content
:
b
.
coming
.
tpl
.
error
});
b
.
_afterLoad
()},
_loadImage
:
function
(){
var
a
=
b
.
imgPreload
=
new
Image
;
a
.
onload
=
function
(){
this
.
onload
=
this
.
onerror
=
null
;
b
.
coming
.
width
=
this
.
width
/
b
.
opts
.
pixelRatio
;
b
.
coming
.
height
=
this
.
height
/
b
.
opts
.
pixelRatio
;
b
.
_afterLoad
()};
a
.
onerror
=
function
(){
this
.
onload
=
this
.
onerror
=
null
;
b
.
_error
(
"image"
)};
a
.
src
=
b
.
coming
.
href
;
!
0
!==
a
.
complete
&&
b
.
showLoading
()},
_loadAjax
:
function
(){
var
a
=
b
.
coming
;
b
.
showLoading
();
b
.
ajaxLoad
=
f
.
ajax
(
f
.
extend
({},
a
.
ajax
,{
url
:
a
.
href
,
error
:
function
(
a
,
e
){
b
.
coming
&&
"abort"
!==
e
?
b
.
_error
(
"ajax"
,
a
):
b
.
hideLoading
()},
success
:
function
(
d
,
e
){
"success"
===
e
&&
(
a
.
content
=
d
,
b
.
_afterLoad
())}}))},
_loadIframe
:
function
(){
var
a
=
b
.
coming
,
d
=
f
(
a
.
tpl
.
iframe
.
replace
(
/
\{
rnd
\}
/g
,(
new
Date
).
getTime
())).
attr
(
"scrolling"
,
s
?
"auto"
:
a
.
iframe
.
scrolling
).
attr
(
"src"
,
a
.
href
);
f
(
a
.
wrap
).
bind
(
"onReset"
,
function
(){
try
{
f
(
this
).
find
(
"iframe"
).
hide
().
attr
(
"src"
,
"//about:blank"
).
end
().
empty
()}
catch
(
a
){}});
a
.
iframe
.
preload
&&
(
b
.
showLoading
(),
d
.
one
(
"load"
,
function
(){
f
(
this
).
data
(
"ready"
,
1
);
s
||
f
(
this
).
bind
(
"load.fb"
,
b
.
update
);
f
(
this
).
parents
(
".fancybox-wrap"
).
width
(
"100%"
).
removeClass
(
"fancybox-tmp"
).
show
();
b
.
_afterLoad
()}));
a
.
content
=
d
.
appendTo
(
a
.
inner
);
a
.
iframe
.
preload
||
b
.
_afterLoad
()},
_preloadImages
:
function
(){
var
a
=
b
.
group
,
d
=
b
.
current
,
e
=
a
.
length
,
c
=
d
.
preload
?
Math
.
min
(
d
.
preload
,
e
-
1
):
0
,
f
,
g
;
for
(
g
=
1
;
g
<=
c
;
g
+=
1
)
f
=
a
[(
d
.
index
+
g
)
%
e
],
"image"
===
f
.
type
&&
f
.
href
&&
((
new
Image
).
src
=
f
.
href
)},
_afterLoad
:
function
(){
var
a
=
b
.
coming
,
d
=
b
.
current
,
e
,
c
,
k
,
g
,
h
;
b
.
hideLoading
();
if
(
a
&&!
1
!==
b
.
isActive
)
if
(
!
1
===
b
.
trigger
(
"afterLoad"
,
a
,
d
))
a
.
wrap
.
stop
(
!
0
).
trigger
(
"onReset"
).
remove
(),
b
.
coming
=
null
;
else
{
d
&&
(
b
.
trigger
(
"beforeChange"
,
d
),
d
.
wrap
.
stop
(
!
0
).
removeClass
(
"fancybox-opened"
).
find
(
".fancybox-item, .fancybox-nav"
).
remove
());
b
.
unbindEvents
();
e
=
a
.
content
;
c
=
a
.
type
;
k
=
a
.
scrolling
;
f
.
extend
(
b
,{
wrap
:
a
.
wrap
,
skin
:
a
.
skin
,
outer
:
a
.
outer
,
inner
:
a
.
inner
,
current
:
a
,
previous
:
d
});
g
=
a
.
href
;
switch
(
c
){
case
"inline"
:
case
"ajax"
:
case
"html"
:
a
.
selector
?
e
=
f
(
"<div>"
).
html
(
e
).
find
(
a
.
selector
):
t
(
e
)
&&
(
e
.
data
(
"fancybox-placeholder"
)
||
e
.
data
(
"fancybox-placeholder"
,
f
(
'<div class="fancybox-placeholder"></div>'
).
insertAfter
(
e
).
hide
()),
e
=
e
.
show
().
detach
(),
a
.
wrap
.
bind
(
"onReset"
,
function
(){
f
(
this
).
find
(
e
).
length
&&
e
.
hide
().
replaceAll
(
e
.
data
(
"fancybox-placeholder"
)).
data
(
"fancybox-placeholder"
,
!
1
)}));
break
;
case
"image"
:
e
=
a
.
tpl
.
image
.
replace
(
"{href}"
,
g
);
break
;
case
"swf"
:
e
=
'<object id="fancybox-swf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="movie" value="'
+
g
+
'"></param>'
,
h
=
""
,
f
.
each
(
a
.
swf
,
function
(
a
,
b
){
e
+=
'<param name="'
+
a
+
'" value="'
+
b
+
'"></param>'
;
h
+=
" "
+
a
+
'="'
+
b
+
'"'
}),
e
+=
'<embed src="'
+
g
+
'" type="application/x-shockwave-flash" width="100%" height="100%"'
+
h
+
"></embed></object>"
}(
!
t
(
e
)
||!
e
.
parent
().
is
(
a
.
inner
))
&&
a
.
inner
.
append
(
e
);
b
.
trigger
(
"beforeShow"
);
a
.
inner
.
css
(
"overflow"
,
"yes"
===
k
?
"scroll"
:
"no"
===
k
?
"hidden"
:
k
);
b
.
_setDimension
();
b
.
reposition
();
b
.
isOpen
=!
1
;
b
.
coming
=
null
;
b
.
bindEvents
();
if
(
b
.
isOpened
){
if
(
d
.
prevMethod
)
b
.
transitions
[
d
.
prevMethod
]()}
else
f
(
".fancybox-wrap"
).
not
(
a
.
wrap
).
stop
(
!
0
).
trigger
(
"onReset"
).
remove
();
b
.
transitions
[
b
.
isOpened
?
a
.
nextMethod
:
a
.
openMethod
]();
b
.
_preloadImages
()}},
_setDimension
:
function
(){
var
a
=
b
.
getViewport
(),
d
=
0
,
e
=!
1
,
c
=!
1
,
e
=
b
.
wrap
,
k
=
b
.
skin
,
g
=
b
.
inner
,
h
=
b
.
current
,
c
=
h
.
width
,
j
=
h
.
height
,
m
=
h
.
minWidth
,
u
=
h
.
minHeight
,
n
=
h
.
maxWidth
,
p
=
h
.
maxHeight
,
s
=
h
.
scrolling
,
q
=
h
.
scrollOutside
?
h
.
scrollbarWidth
:
0
,
x
=
h
.
margin
,
y
=
l
(
x
[
1
]
+
x
[
3
]),
r
=
l
(
x
[
0
]
+
x
[
2
]),
v
,
z
,
t
,
C
,
A
,
F
,
B
,
D
,
H
;
e
.
add
(
k
).
add
(
g
).
width
(
"auto"
).
height
(
"auto"
).
removeClass
(
"fancybox-tmp"
);
x
=
l
(
k
.
outerWidth
(
!
0
)
-
k
.
width
());
v
=
l
(
k
.
outerHeight
(
!
0
)
-
k
.
height
());
z
=
y
+
x
;
t
=
r
+
v
;
C
=
E
(
c
)?(
a
.
w
-
z
)
*
l
(
c
)
/
100
:
c
;
A
=
E
(
j
)?(
a
.
h
-
t
)
*
l
(
j
)
/
100
:
j
;
if
(
"iframe"
===
h
.
type
){
if
(
H
=
h
.
content
,
h
.
autoHeight
&&
1
===
H
.
data
(
"ready"
))
try
{
H
[
0
].
contentWindow
.
document
.
location
&&
(
g
.
width
(
C
).
height
(
9999
),
F
=
H
.
contents
().
find
(
"body"
),
q
&&
F
.
css
(
"overflow-x"
,
"hidden"
),
A
=
F
.
outerHeight
(
!
0
))}
catch
(
G
){}}
else
if
(
h
.
autoWidth
||
h
.
autoHeight
)
g
.
addClass
(
"fancybox-tmp"
),
h
.
autoWidth
||
g
.
width
(
C
),
h
.
autoHeight
||
g
.
height
(
A
),
h
.
autoWidth
&&
(
C
=
g
.
width
()),
h
.
autoHeight
&&
(
A
=
g
.
height
()),
g
.
removeClass
(
"fancybox-tmp"
);
c
=
l
(
C
);
j
=
l
(
A
);
D
=
C
/
A
;
m
=
l
(
E
(
m
)?
l
(
m
,
"w"
)
-
z
:
m
);
n
=
l
(
E
(
n
)?
l
(
n
,
"w"
)
-
z
:
n
);
u
=
l
(
E
(
u
)?
l
(
u
,
"h"
)
-
t
:
u
);
p
=
l
(
E
(
p
)?
l
(
p
,
"h"
)
-
t
:
p
);
F
=
n
;
B
=
p
;
h
.
fitToView
&&
(
n
=
Math
.
min
(
a
.
w
-
z
,
n
),
p
=
Math
.
min
(
a
.
h
-
t
,
p
));
z
=
a
.
w
-
y
;
r
=
a
.
h
-
r
;
h
.
aspectRatio
?(
c
>
n
&&
(
c
=
n
,
j
=
l
(
c
/
D
)),
j
>
p
&&
(
j
=
p
,
c
=
l
(
j
*
D
)),
c
<
m
&&
(
c
=
m
,
j
=
l
(
c
/
D
)),
j
<
u
&&
(
j
=
u
,
c
=
l
(
j
*
D
))):(
c
=
Math
.
max
(
m
,
Math
.
min
(
c
,
n
)),
h
.
autoHeight
&&
"iframe"
!==
h
.
type
&&
(
g
.
width
(
c
),
j
=
g
.
height
()),
j
=
Math
.
max
(
u
,
Math
.
min
(
j
,
p
)));
if
(
h
.
fitToView
)
if
(
g
.
width
(
c
).
height
(
j
),
e
.
width
(
c
+
x
),
a
=
e
.
width
(),
y
=
e
.
height
(),
h
.
aspectRatio
)
for
(;(
a
>
z
||
y
>
r
)
&&
(
c
>
m
&&
j
>
u
)
&&!
(
19
<
d
++
);)
j
=
Math
.
max
(
u
,
Math
.
min
(
p
,
j
-
10
)),
c
=
l
(
j
*
D
),
c
<
m
&&
(
c
=
m
,
j
=
l
(
c
/
D
)),
c
>
n
&&
(
c
=
n
,
j
=
l
(
c
/
D
)),
g
.
width
(
c
).
height
(
j
),
e
.
width
(
c
+
x
),
a
=
e
.
width
(),
y
=
e
.
height
();
else
c
=
Math
.
max
(
m
,
Math
.
min
(
c
,
c
-
(
a
-
z
))),
j
=
Math
.
max
(
u
,
Math
.
min
(
j
,
j
-
(
y
-
r
)));
q
&&
(
"auto"
===
s
&&
j
<
A
&&
c
+
x
+
q
<
z
)
&&
(
c
+=
q
);
g
.
width
(
c
).
height
(
j
);
e
.
width
(
c
+
x
);
a
=
e
.
width
();
y
=
e
.
height
();
e
=
(
a
>
z
||
y
>
r
)
&&
c
>
m
&&
j
>
u
;
c
=
h
.
aspectRatio
?
c
<
F
&&
j
<
B
&&
c
<
C
&&
j
<
A
:(
c
<
F
||
j
<
B
)
&&
(
c
<
C
||
j
<
A
);
f
.
extend
(
h
,{
dim
:{
width
:
w
(
a
),
height
:
w
(
y
)},
origWidth
:
C
,
origHeight
:
A
,
canShrink
:
e
,
canExpand
:
c
,
wPadding
:
x
,
hPadding
:
v
,
wrapSpace
:
y
-
k
.
outerHeight
(
!
0
),
skinSpace
:
k
.
height
()
-
j
});
!
H
&&
(
h
.
autoHeight
&&
j
>
u
&&
j
<
p
&&!
c
)
&&
g
.
height
(
"auto"
)},
_getPosition
:
function
(
a
){
var
d
=
b
.
current
,
e
=
b
.
getViewport
(),
c
=
d
.
margin
,
f
=
b
.
wrap
.
width
()
+
c
[
1
]
+
c
[
3
],
g
=
b
.
wrap
.
height
()
+
c
[
0
]
+
c
[
2
],
c
=
{
position
:
"absolute"
,
top
:
c
[
0
],
left
:
c
[
3
]};
d
.
autoCenter
&&
d
.
fixed
&&
!
a
&&
g
<=
e
.
h
&&
f
<=
e
.
w
?
c
.
position
=
"fixed"
:
d
.
locked
||
(
c
.
top
+=
e
.
y
,
c
.
left
+=
e
.
x
);
c
.
top
=
w
(
Math
.
max
(
c
.
top
,
c
.
top
+
(
e
.
h
-
g
)
*
d
.
topRatio
));
c
.
left
=
w
(
Math
.
max
(
c
.
left
,
c
.
left
+
(
e
.
w
-
f
)
*
d
.
leftRatio
));
return
c
},
_afterZoomIn
:
function
(){
var
a
=
b
.
current
;
a
&&
(
b
.
isOpen
=
b
.
isOpened
=!
0
,
b
.
wrap
.
css
(
"overflow"
,
"visible"
).
addClass
(
"fancybox-opened"
),
b
.
update
(),(
a
.
closeClick
||
a
.
nextClick
&&
1
<
b
.
group
.
length
)
&&
b
.
inner
.
css
(
"cursor"
,
"pointer"
).
bind
(
"click.fb"
,
function
(
d
){
!
f
(
d
.
target
).
is
(
"a"
)
&&!
f
(
d
.
target
).
parent
().
is
(
"a"
)
&&
(
d
.
preventDefault
(),
b
[
a
.
closeClick
?
"close"
:
"next"
]())}),
a
.
closeBtn
&&
f
(
a
.
tpl
.
closeBtn
).
appendTo
(
b
.
skin
).
bind
(
"click.fb"
,
function
(
a
){
a
.
preventDefault
();
b
.
close
()}),
a
.
arrows
&&
1
<
b
.
group
.
length
&&
((
a
.
loop
||
0
<
a
.
index
)
&&
f
(
a
.
tpl
.
prev
).
appendTo
(
b
.
outer
).
bind
(
"click.fb"
,
b
.
prev
),(
a
.
loop
||
a
.
index
<
b
.
group
.
length
-
1
)
&&
f
(
a
.
tpl
.
next
).
appendTo
(
b
.
outer
).
bind
(
"click.fb"
,
b
.
next
)),
b
.
trigger
(
"afterShow"
),
!
a
.
loop
&&
a
.
index
===
a
.
group
.
length
-
1
?
b
.
play
(
!
1
):
b
.
opts
.
autoPlay
&&!
b
.
player
.
isActive
&&
(
b
.
opts
.
autoPlay
=!
1
,
b
.
play
()))},
_afterZoomOut
:
function
(
a
){
a
=
a
||
b
.
current
;
f
(
".fancybox-wrap"
).
trigger
(
"onReset"
).
remove
();
f
.
extend
(
b
,{
group
:{},
opts
:{},
router
:
!
1
,
current
:
null
,
isActive
:
!
1
,
isOpened
:
!
1
,
isOpen
:
!
1
,
isClosing
:
!
1
,
wrap
:
null
,
skin
:
null
,
outer
:
null
,
inner
:
null
});
b
.
trigger
(
"afterClose"
,
a
)}});
b
.
transitions
=
{
getOrigPosition
:
function
(){
var
a
=
b
.
current
,
d
=
a
.
element
,
e
=
a
.
orig
,
c
=
{},
f
=
50
,
g
=
50
,
h
=
a
.
hPadding
,
j
=
a
.
wPadding
,
m
=
b
.
getViewport
();
!
e
&&
(
a
.
isDom
&&
d
.
is
(
":visible"
))
&&
(
e
=
d
.
find
(
"img:first"
),
e
.
length
||
(
e
=
d
));
t
(
e
)?(
c
=
e
.
offset
(),
e
.
is
(
"img"
)
&&
(
f
=
e
.
outerWidth
(),
g
=
e
.
outerHeight
())):
(
c
.
top
=
m
.
y
+
(
m
.
h
-
g
)
*
a
.
topRatio
,
c
.
left
=
m
.
x
+
(
m
.
w
-
f
)
*
a
.
leftRatio
);
if
(
"fixed"
===
b
.
wrap
.
css
(
"position"
)
||
a
.
locked
)
c
.
top
-=
m
.
y
,
c
.
left
-=
m
.
x
;
return
c
=
{
top
:
w
(
c
.
top
-
h
*
a
.
topRatio
),
left
:
w
(
c
.
left
-
j
*
a
.
leftRatio
),
width
:
w
(
f
+
j
),
height
:
w
(
g
+
h
)}},
step
:
function
(
a
,
d
){
var
e
,
c
,
f
=
d
.
prop
;
c
=
b
.
current
;
var
g
=
c
.
wrapSpace
,
h
=
c
.
skinSpace
;
if
(
"width"
===
f
||
"height"
===
f
)
e
=
d
.
end
===
d
.
start
?
1
:(
a
-
d
.
start
)
/
(
d
.
end
-
d
.
start
),
b
.
isClosing
&&
(
e
=
1
-
e
),
c
=
"width"
===
f
?
c
.
wPadding
:
c
.
hPadding
,
c
=
a
-
c
,
b
.
skin
[
f
](
l
(
"width"
===
f
?
c
:
c
-
g
*
e
)),
b
.
inner
[
f
](
l
(
"width"
===
f
?
c
:
c
-
g
*
e
-
h
*
e
))},
zoomIn
:
function
(){
var
a
=
b
.
current
,
d
=
a
.
pos
,
e
=
a
.
openEffect
,
c
=
"elastic"
===
e
,
k
=
f
.
extend
({
opacity
:
1
},
d
);
delete
k
.
position
;
c
?(
d
=
this
.
getOrigPosition
(),
a
.
openOpacity
&&
(
d
.
opacity
=
0.1
)):
"fade"
===
e
&&
(
d
.
opacity
=
0.1
);
b
.
wrap
.
css
(
d
).
animate
(
k
,{
duration
:
"none"
===
e
?
0
:
a
.
openSpeed
,
easing
:
a
.
openEasing
,
step
:
c
?
this
.
step
:
null
,
complete
:
b
.
_afterZoomIn
})},
zoomOut
:
function
(){
var
a
=
b
.
current
,
d
=
a
.
closeEffect
,
e
=
"elastic"
===
d
,
c
=
{
opacity
:
0.1
};
e
&&
(
c
=
this
.
getOrigPosition
(),
a
.
closeOpacity
&&
(
c
.
opacity
=
0.1
));
b
.
wrap
.
animate
(
c
,
{
duration
:
"none"
===
d
?
0
:
a
.
closeSpeed
,
easing
:
a
.
closeEasing
,
step
:
e
?
this
.
step
:
null
,
complete
:
b
.
_afterZoomOut
})},
changeIn
:
function
(){
var
a
=
b
.
current
,
d
=
a
.
nextEffect
,
e
=
a
.
pos
,
c
=
{
opacity
:
1
},
f
=
b
.
direction
,
g
;
e
.
opacity
=
0.1
;
"elastic"
===
d
&&
(
g
=
"down"
===
f
||
"up"
===
f
?
"top"
:
"left"
,
"down"
===
f
||
"right"
===
f
?(
e
[
g
]
=
w
(
l
(
e
[
g
])
-
200
),
c
[
g
]
=
"+=200px"
):(
e
[
g
]
=
w
(
l
(
e
[
g
])
+
200
),
c
[
g
]
=
"-=200px"
));
"none"
===
d
?
b
.
_afterZoomIn
():
b
.
wrap
.
css
(
e
).
animate
(
c
,{
duration
:
a
.
nextSpeed
,
easing
:
a
.
nextEasing
,
complete
:
b
.
_afterZoomIn
})},
changeOut
:
function
(){
var
a
=
b
.
previous
,
d
=
a
.
prevEffect
,
e
=
{
opacity
:
0.1
},
c
=
b
.
direction
;
"elastic"
===
d
&&
(
e
[
"down"
===
c
||
"up"
===
c
?
"top"
:
"left"
]
=
(
"up"
===
c
||
"left"
===
c
?
"-"
:
"+"
)
+
"=200px"
);
a
.
wrap
.
animate
(
e
,{
duration
:
"none"
===
d
?
0
:
a
.
prevSpeed
,
easing
:
a
.
prevEasing
,
complete
:
function
(){
f
(
this
).
trigger
(
"onReset"
).
remove
()}})}};
b
.
helpers
.
overlay
=
{
defaults
:{
closeClick
:
!
0
,
speedOut
:
200
,
showEarly
:
!
0
,
css
:{},
locked
:
!
s
,
fixed
:
!
0
},
overlay
:
null
,
fixed
:
!
1
,
el
:
f
(
"html"
),
create
:
function
(
a
){
a
=
f
.
extend
({},
this
.
defaults
,
a
);
this
.
overlay
&&
this
.
close
();
this
.
overlay
=
f
(
'<div class="fancybox-overlay"></div>'
).
appendTo
(
b
.
coming
?
b
.
coming
.
parent
:
a
.
parent
);
this
.
fixed
=!
1
;
a
.
fixed
&&
b
.
defaults
.
fixed
&&
(
this
.
overlay
.
addClass
(
"fancybox-overlay-fixed"
),
this
.
fixed
=!
0
)},
open
:
function
(
a
){
var
d
=
this
;
a
=
f
.
extend
({},
this
.
defaults
,
a
);
this
.
overlay
?
this
.
overlay
.
unbind
(
".overlay"
).
width
(
"auto"
).
height
(
"auto"
):
this
.
create
(
a
);
this
.
fixed
||
(
n
.
bind
(
"resize.overlay"
,
f
.
proxy
(
this
.
update
,
this
)),
this
.
update
());
a
.
closeClick
&&
this
.
overlay
.
bind
(
"click.overlay"
,
function
(
a
){
if
(
f
(
a
.
target
).
hasClass
(
"fancybox-overlay"
))
return
b
.
isActive
?
b
.
close
():
d
.
close
(),
!
1
});
this
.
overlay
.
css
(
a
.
css
).
show
()},
close
:
function
(){
var
a
,
b
;
n
.
unbind
(
"resize.overlay"
);
this
.
el
.
hasClass
(
"fancybox-lock"
)
&&
(
f
(
".fancybox-margin"
).
removeClass
(
"fancybox-margin"
),
a
=
n
.
scrollTop
(),
b
=
n
.
scrollLeft
(),
this
.
el
.
removeClass
(
"fancybox-lock"
),
n
.
scrollTop
(
a
).
scrollLeft
(
b
));
f
(
".fancybox-overlay"
).
remove
().
hide
();
f
.
extend
(
this
,{
overlay
:
null
,
fixed
:
!
1
})},
update
:
function
(){
var
a
=
"100%"
,
b
;
this
.
overlay
.
width
(
a
).
height
(
"100%"
);
I
?(
b
=
Math
.
max
(
G
.
documentElement
.
offsetWidth
,
G
.
body
.
offsetWidth
),
p
.
width
()
>
b
&&
(
a
=
p
.
width
())):
p
.
width
()
>
n
.
width
()
&&
(
a
=
p
.
width
());
this
.
overlay
.
width
(
a
).
height
(
p
.
height
())},
onReady
:
function
(
a
,
b
){
var
e
=
this
.
overlay
;
f
(
".fancybox-overlay"
).
stop
(
!
0
,
!
0
);
e
||
this
.
create
(
a
);
a
.
locked
&&
(
this
.
fixed
&&
b
.
fixed
)
&&
(
e
||
(
this
.
margin
=
p
.
height
()
>
n
.
height
()?
f
(
"html"
).
css
(
"margin-right"
).
replace
(
"px"
,
""
):
!
1
),
b
.
locked
=
this
.
overlay
.
append
(
b
.
wrap
),
b
.
fixed
=!
1
);
!
0
===
a
.
showEarly
&&
this
.
beforeShow
.
apply
(
this
,
arguments
)},
beforeShow
:
function
(
a
,
b
){
var
e
,
c
;
b
.
locked
&&
(
!
1
!==
this
.
margin
&&
(
f
(
"*"
).
filter
(
function
(){
return
"fixed"
===
f
(
this
).
css
(
"position"
)
&&!
f
(
this
).
hasClass
(
"fancybox-overlay"
)
&&!
f
(
this
).
hasClass
(
"fancybox-wrap"
)}).
addClass
(
"fancybox-margin"
),
this
.
el
.
addClass
(
"fancybox-margin"
)),
e
=
n
.
scrollTop
(),
c
=
n
.
scrollLeft
(),
this
.
el
.
addClass
(
"fancybox-lock"
),
n
.
scrollTop
(
e
).
scrollLeft
(
c
));
this
.
open
(
a
)},
onUpdate
:
function
(){
this
.
fixed
||
this
.
update
()},
afterClose
:
function
(
a
){
this
.
overlay
&&!
b
.
coming
&&
this
.
overlay
.
fadeOut
(
a
.
speedOut
,
f
.
proxy
(
this
.
close
,
this
))}};
b
.
helpers
.
title
=
{
defaults
:{
type
:
"float"
,
position
:
"bottom"
},
beforeShow
:
function
(
a
){
var
d
=
b
.
current
,
e
=
d
.
title
,
c
=
a
.
type
;
f
.
isFunction
(
e
)
&&
(
e
=
e
.
call
(
d
.
element
,
d
));
if
(
q
(
e
)
&&
""
!==
f
.
trim
(
e
)){
d
=
f
(
'<div class="fancybox-title fancybox-title-'
+
c
+
'-wrap">'
+
e
+
"</div>"
);
switch
(
c
){
case
"inside"
:
c
=
b
.
skin
;
break
;
case
"outside"
:
c
=
b
.
wrap
;
break
;
case
"over"
:
c
=
b
.
inner
;
break
;
default
:
c
=
b
.
skin
,
d
.
appendTo
(
"body"
),
I
&&
d
.
width
(
d
.
width
()),
d
.
wrapInner
(
'<span class="child"></span>'
),
b
.
current
.
margin
[
2
]
+=
Math
.
abs
(
l
(
d
.
css
(
"margin-bottom"
)))}
d
[
"top"
===
a
.
position
?
"prependTo"
:
"appendTo"
](
c
)}}};
f
.
fn
.
fancybox
=
function
(
a
){
var
d
,
e
=
f
(
this
),
c
=
this
.
selector
||
""
,
k
=
function
(
g
){
var
h
=
f
(
this
).
blur
(),
j
=
d
,
k
,
l
;
!
g
.
ctrlKey
&&
(
!
g
.
altKey
&&!
g
.
shiftKey
&&!
g
.
metaKey
)
&&!
h
.
is
(
".fancybox-wrap"
)
&&
(
k
=
a
.
groupAttr
||
"data-fancybox-group"
,
l
=
h
.
attr
(
k
),
l
||
(
k
=
"rel"
,
l
=
h
.
get
(
0
)[
k
]),
l
&&
(
""
!==
l
&&
"nofollow"
!==
l
)
&&
(
h
=
c
.
length
?
f
(
c
):
e
,
h
=
h
.
filter
(
"["
+
k
+
'="'
+
l
+
'"]'
),
j
=
h
.
index
(
this
)),
a
.
index
=
j
,
!
1
!==
b
.
open
(
h
,
a
)
&&
g
.
preventDefault
())};
a
=
a
||
{};
d
=
a
.
index
||
0
;
!
c
||!
1
===
a
.
live
?
e
.
unbind
(
"click.fb-start"
).
bind
(
"click.fb-start"
,
k
):
p
.
undelegate
(
c
,
"click.fb-start"
).
delegate
(
c
+
":not('.fancybox-item, .fancybox-nav')"
,
"click.fb-start"
,
k
);
this
.
filter
(
"[data-fancybox-start=1]"
).
trigger
(
"click"
);
return
this
};
p
.
ready
(
function
(){
var
a
,
d
;
f
.
scrollbarWidth
===
v
&&
(
f
.
scrollbarWidth
=
function
(){
var
a
=
f
(
'<div style="width:50px;height:50px;overflow:auto"><div/></div>'
).
appendTo
(
"body"
),
b
=
a
.
children
(),
b
=
b
.
innerWidth
()
-
b
.
height
(
99
).
innerWidth
();
a
.
remove
();
return
b
});
if
(
f
.
support
.
fixedPosition
===
v
){
a
=
f
.
support
;
d
=
f
(
'<div style="position:fixed;top:20px;"></div>'
).
appendTo
(
"body"
);
var
e
=
20
===
d
[
0
].
offsetTop
||
15
===
d
[
0
].
offsetTop
;
d
.
remove
();
a
.
fixedPosition
=
e
}
f
.
extend
(
b
.
defaults
,{
scrollbarWidth
:
f
.
scrollbarWidth
(),
fixed
:
f
.
support
.
fixedPosition
,
parent
:
f
(
"body"
)});
a
=
f
(
r
).
width
();
J
.
addClass
(
"fancybox-lock-test"
);
d
=
f
(
r
).
width
();
J
.
removeClass
(
"fancybox-lock-test"
);
f
(
"<style type='text/css'>.fancybox-margin{margin-right:"
+
(
d
-
a
)
+
"px;}</style>"
).
appendTo
(
"head"
)})})(
window
,
document
,
jQuery
);
\ No newline at end of file
WebContent/lib/plug/inputTips/inputTips.js
0 → 100644
View file @
b9cf285a
(
function
(
$
){
//定义公共的参数(变量,方法)
var
defaults_options
=
{
tip
:{
color
:
'#999'
,
fontFamily
:
'微软雅黑'
,
fontSize
:
'12px'
,
text
:
'请输入信息!'
}
}
//把默认的参数变成string型的,防止引用类型带来的问题
var
defaults_options_str
=
JSON
.
stringify
(
defaults_options
);
$
.
fn
.
inputTips
=
function
(
options
){
//把参数转化为数json的
var
defaults
=
JSON
.
parse
(
defaults_options_str
);
//如果传进来是字符串时
if
(
typeof
options
==
'string'
){
defaults
.
tip
.
text
=
options
;
}
else
{
//配置
if
(
options
!=
null
){
$
.
each
(
options
,
function
(
i
,
val
)
{
if
(
typeof
val
==
'object'
&&
defaults
[
i
]){
$
.
extend
(
true
,
defaults
[
i
],
val
);
}
else
{
defaults
[
i
]
=
val
;
}
});
}
}
$
(
this
).
map
(
function
(){
var
$input
=
$
(
this
);
//先判断下父容器是否是position:relative
if
(
$input
.
parent
().
css
(
'position'
)
!=
'relative'
){
$input
.
parent
().
css
(
'position'
,
'relative'
);
}
//在input之后添加一个label标签
var
$label
;
var
input_left
=
$input
.
offset
().
left
-
$input
.
parent
().
offset
().
left
;
var
input_top
=
$input
.
offset
().
top
-
$input
.
parent
().
offset
().
top
;
if
(
$input
.
next
(
'label'
).
length
==
0
){
$label
=
$
(
'<label></label>'
);
$label
.
css
({
'position'
:
'absolute'
,
'top'
:
input_top
,
'left'
:
input_left
+
(
$input
.
css
(
'paddingLeft'
).
replace
(
'px'
,
''
)
-
0
),
'cursor'
:
'text'
,
'color'
:
defaults
.
tip
.
color
,
'fontFamily'
:
defaults
.
tip
.
fontFamily
,
'fontSize'
:
defaults
.
tip
.
fontSize
,
'height'
:
$input
.
outerHeight
(
true
)
+
'px'
,
'lineHeight'
:
$input
.
outerHeight
(
true
)
+
'px'
,
'display'
:
'inlineBlock'
});
}
else
{
$label
=
$input
.
next
(
'label'
);
}
//如果input给了value值时
if
(
$input
.
attr
(
'tiptext'
)){
$label
.
text
(
$input
.
attr
(
'tiptext'
));
}
else
{
$label
.
text
(
defaults
.
tip
.
text
)
}
$input
.
after
(
$label
);
//判断文本框是否有值,有值则隐藏label
if
(
$input
.
val
()
!=
''
){
$label
.
hide
();
}
/*var timeid = setInterval(function(){
if(!$input.val()==""){
$input.siblings("label").hide();
clearInterval(timeid);
}
},10);*/
$input
.
next
(
'label'
).
click
(
function
(){
$
(
this
).
prev
(
"input"
).
focus
();
});
$input
.
bind
({
focus
:
function
(){
//如果用户传进来的话就调用用户的
if
(
options
!=
null
&&
typeof
options
.
focus
==
'function'
){
options
.
focus
(
this
);
return
;
}
/*if (this.value == ""){
$(this).siblings("label").hide();
}*/
},
blur
:
function
(){
//如果用户传进来的话就调用用户的
if
(
options
!=
null
&&
typeof
options
.
blur
==
'function'
){
options
.
blur
(
this
);
return
;
}
if
(
this
.
value
==
""
){
$
(
this
).
next
(
"label"
).
show
();
}
},
input
:
function
(){
//如果用户传进来的话就调用用户的
if
(
options
!=
null
&&
typeof
options
.
input
==
'function'
){
options
.
input
(
this
);
return
;
}
if
(
this
.
value
==
""
){
$
(
this
).
next
(
"label"
).
show
();
}
else
{
$
(
this
).
next
(
"label"
).
hide
();
}
}
});
});
}
//$.fn
})(
jQuery
);
\ No newline at end of file
WebContent/system/pages/login/img/login3_bg.jpg
0 → 100644
View file @
b9cf285a
230 KB
WebContent/system/pages/login/sampleLogin.jsp
View file @
b9cf285a
<
%@
page
import=
"java.util.Date"
%
>
<
%@
page
language=
"java"
pageEncoding=
"utf-8"
%
>
<
%@
taglib
uri=
"/struts-tags"
prefix=
"s"
%
>
<
%@
page
import=
"com.gaowj.business.util.Java_tool"
%
>
<
%@
taglib
uri=
"/struts-tags"
prefix=
"s"
%
>
<
%@
page
import=
"com.gaowj.business.util.Java_tool"
%
>
<
%@
taglib
prefix=
"c"
uri=
"http://java.sun.com/jsp/jstl/core"
%
>
<c:set
var=
"ctx"
value=
"${pageContext.request.contextPath}"
/>
<
%
Java_tool
jt =
new
Java_tool
();
%
>
...
...
@@ -10,215 +12,163 @@ Java_tool jt = new Java_tool();
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>
系统登陆
</title>
<script
type=
"text/javascript"
src=
"js/jquery-1.7.2.min.js"
></script>
<script
type=
"text/javascript"
src=
"system/pages/login/js/jquery.cookie.js"
></script>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"system/pages/login/css/main.css"
/>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"system/pages/login/css/login.css"
/>
<link
rel=
"shortcut icon"
href=
"images/main/logo.ico"
/>
<link
rel=
"icon"
type=
"image/gif"
href=
"images/main/logo.png"
/>
<style
type=
"text/css"
>
*
{
font-family
:
Verdana
,
SimSun
;
font-size
:
1em
;
outline
:
0
;
padding
:
0
;
margin
:
0
;
border
:
0
;
text-decoration
:
none
;
vertical-align
:
baseline
;
white-space
:
normal
;
}
<head>
<title>
系统登陆
</title>
<!-- fancyBox的css -->
<link
rel=
"stylesheet"
type=
"text/css"
href=
"${ctx}/lib/plug/fancyBox-2.1.5/source/jquery.fancybox.css"
media=
"screen"
>
<script
type=
"text/javascript"
src=
"js/jquery-1.7.2.min.js"
></script>
<!-- fancyBox的js -->
<script
type=
"text/javascript"
src=
"${ctx}/lib/plug/fancyBox-2.1.5/source/jquery.fancybox.js"
></script>
<script
type=
"text/javascript"
src=
"system/pages/login/js/jquery.cookie.js"
></script>
<script
type=
"text/javascript"
src=
"${ctx}/lib/plug/inputTips/inputTips.js"
></script>
<link
rel=
"shortcut icon"
href=
"images/main/logo.ico"
/>
<link
rel=
"icon"
type=
"image/gif"
href=
"images/main/logo.png"
/>
<style>
body
{
font-size
:
14px
;
color
:
#666
;
font-family
:
"Microsoft YaHei"
;
margin
:
0
;
padding
:
0
;
overflow
:
hidden
;
}
a
{
text-decoration
:
none
;
tap-highlight-color
:
rgba
(
0
,
0
,
0
,
0
);
-webkit-tap-highlight-color
:
rgba
(
0
,
0
,
0
,
0
);
-webkit-tap-highlight-color
:
transparent
;
/* For some Androids */
}
h1
,
h2
,
h3
,
h4
,
p
{
margin
:
0
;
padding
:
0
}
.header
{
width
:
100%
;
height
:
525px
;
background
:
url("system/pages/login/img/Login_mainBG.jpg")
center
no-repeat
;
overflow
:
hidden
;
min-width
:
500px
;
}
.header_logo
{
width
:
123px
;
height
:
134px
;
background
:
url("system/pages/login/img/Login_logo.png")
center
no-repeat
;
margin
:
40px
auto
0
;
}
.header_title
{
width
:
450px
;
height
:
55px
;
background
:
url("system/pages/login/img/login_title.png")
center
no-repeat
;
margin
:
20px
auto
0
;
}
.header_input
{
width
:
308px
;
height
:
86px
;
/* background:url("system/pages/login/img/Login_input_bg.png") center no-repeat ; */
margin
:
40px
auto
0
;
}
.username
,
.password
,
.yzm
{
width
:
70%
;
height
:
42px
;
background
:
none
;
border
:
none
;
outline
:
none
;
font-size
:
14px
;
color
:
#7898b4
;
margin-left
:
8%
;
line-height
:
42px
;
}
.username
,
.password
,
.yzm
{
border-bottom
:
1px
#587faa
solid
;
}
.username
,
.password
{
width
:
92%
;
}
.header_button
{
width
:
308px
;
height
:
44px
;
background
:
#1589c3
;
margin
:
10px
auto
0
;
border-radius
:
4px
;
text-align
:
center
;
line-height
:
44px
;
font-size
:
18px
;
color
:
white
;
font-family
:
"微软雅黑"
;
-webkit-transition
:
0.3s
0.2s
ease
;
-moz-transition
:
0.3s
0.2s
ease
;
}
.header_button
:hover
{
background
:
#209cda
;
}
.header_problem
{
color
:
#8c8ab7
;
font-size
:
12px
;
position
:
relative
;
float
:
right
;
margin-right
:
10px
;
margin-top
:
10px
;
}
.header_problem
a
{
color
:
#8c8ab7
;
-webkit-transition
:
0.3s
0.2s
ease
;
-moz-transition
:
0.3s
0.2s
ease
;
}
.header_problem
a
:hover
{
color
:
#b7b6d2
;
a
{
color
:
inherit
;
text-decoration
:
none
!important
;
}
.header_label
{
width
:
120px
;
font-size
:
12px
;
color
:
#fff
;
margin
:
18px
auto
0
;
padding
:
0
;
text-align
:
center
;
*
{
box-sizing
:
border-box
;
-moz-box-sizing
:
border-box
;
/* Firefox */
-webkit-box-sizing
:
border-box
;
/* Safari */
}
label
{
background
:
url("system/pages/login/img/login_check2.png")
left
no-repeat
;
padding-left
:
20px
;
display
:
inline-block
;
.login_center
{
background
:
url(system/pages/login/img/login3_bg.jpg)
;
background-size
:
cover
;
position
:
absolute
;
bottom
:
102px
;
top
:
0
;
left
:
0
;
right
:
0
;
}
.login_container
{
position
:
absolute
;
top
:
50%
;
left
:
50%
;
margin-left
:
-217px
;
margin-top
:
-215px
;
background
:
#5f5f5f
;
width
:
434px
;
box-shadow
:
0
0
10px
#403a3a
;
border-radius
:
5px
;
padding-bottom
:
30px
;
height
:
430px
;
}
.login_logo
{
text-align
:
center
;
width
:
348px
;
margin
:
33px
auto
25px
;
padding
:
0
25px
18px
;
border-bottom
:
1px
solid
white
;
}
.login_logo
>
span
{
color
:
white
;
font-size
:
24px
;
font-weight
:
bold
;
margin-left
:
15px
;
vertical-align
:
top
;
margin-top
:
9px
;
display
:
inline-block
;
}
.input1
{
visibility
:
hidden
;
margin-left
:
-40px
;
.login_item
{
width
:
298px
;
margin
:
18px
auto
0
;
}
.checked
{
background
:
url("system/pages/login/img/login_check1.png")
left
no-repeat
;
.login_item
>
input
{
color
:
#c8c8c8
;
width
:
298px
;
background
:
rgba
(
255
,
255
,
255
,
0.15
);
padding-left
:
10px
;
border
:
none
;
outline
:
none
;
height
:
32px
;
}
.main
{
width
:
810
px
;
margin
:
38px
auto
0
;
height
:
260px
;
.login_item_password
{
overflow
:
hidden
;
font-size
:
12
px
;
width
:
298px
;
margin
:
18px
auto
0
;
}
.main
ul
{
list-style
:
none
;
margin
:
0
;
padding
:
0
;
.login_item_password
label
{
cursor
:
pointer
;
}
.
main
li
{
float
:
left
;
width
:
33%
;
.
login_yzm
{
width
:
298px
;
margin
:
18px
auto
0
;
}
.intro_icon
{
margin
:
0
auto
;
width
:
100px
;
.login_yzm
>
input
{
color
:
#c8c8c8
;
width
:
234px
;
background
:
rgba
(
255
,
255
,
255
,
0.15
);
padding-left
:
10px
;
border
:
none
;
outline
:
none
;
height
:
32px
;
vertical-align
:
top
;
}
.intro_icon
a
{
width
:
100px
;
height
:
110px
;
font-size
:
0
;
display
:
inline-block
;
.login_yzm
>
img
{
cursor
:
pointer
;
-webkit-transition
:
0.3s
0.2s
ease
;
-moz-transition
:
0.3s
0.2s
ease
;
}
.intro_iconTab1
a
{
background
:
url("system/pages/login/img/intro_icon1.png")
center
no-repeat
;
}
.
intro_iconTab1
a
:hover
{
background
:
url("system/pages/login/img/intro_icon_hover1.png")
center
no-repeat
;
.
login_item_password
input
{
vertical-align
:
sub
;
}
.intro_iconTab2
a
{
background
:
url("system/pages/login/img/intro_icon2.png")
center
no-repeat
;
.login_item_password
>
div
:first-child
{
float
:
left
;
color
:
#c8c8c8
;
}
.intro_iconTab2
a
:hover
{
background
:
url("system/pages/login/img/intro_icon_hover2.png")
center
no-repeat
;
.login_item_password
>
div
:first-child
+
div
{
float
:
right
;
color
:
white
;
margin-top
:
2px
;
}
.intro_iconTab3
a
{
background
:
url("system/pages/login/img/intro_icon3.png")
center
no-repeat
;
.login_item_password
>
div
:first-child
+
div
:hover
,
.login_item_password
span
:hover
{
text-decoration
:
underline
;
cursor
:
pointer
;
}
.intro_iconTab3
a
:hover
{
background
:
url("system/pages/login/img/intro_icon_hover3.png")
center
no-repeat
;
.login_item_login
{
height
:
40px
;
width
:
298px
;
background
:
#6aaeee
;
text-align
:
center
;
color
:
white
;
line-height
:
40px
;
border-radius
:
5px
;
margin
:
0
auto
13px
;
}
.login_item_login
:hover
{
opacity
:
0.8
;
cursor
:
pointer
;
}
.intro_info
{
margin
:
0
auto
;
width
:
66%
;
.login_item_text
{
width
:
298px
;
margin
:
auto
;
text-align
:
center
;
color
:
#c8c8c8
;
}
.intro_info
h1
{
font-size
:
20px
;
font-family
:
"微软雅黑"
;
color
:
#2c9bd3
;
font-weight
:
normal
;
margin
:
18px
auto
10px
;
}
.intro_info
p
{
font-size
:
12px
;
color
:
#627b87
;
line-height
:
20px
;
.login_item_text
>
a
:hover
{
text-decoration
:
underline
!important
;
}
.footer
{
width
:
100%
;
background
:
#eff2f5
;
overflow
:
hidden
;
position
:
absolute
;
left
:
0
;
right
:
0
;
bottom
:
0px
;
}
.footer_inside
{
width
:
900px
;
margin
:
0
auto
;
}
.footer_logo
{
float
:
left
;
background
:
url("system/pages/login/img/footer_logo.png")
center
no-repeat
;
...
...
@@ -279,53 +229,109 @@ label {
color
:
#899ba6
;
margin
:
10px
0
20px
0
;
}
form
input
:focus
{
background
:
white
;
color
:
#333
;
}
</style>
</head>
<body>
<div
class=
"login_center"
>
<div
class=
"login_container"
>
<div
class=
"login_logo"
>
<img
src=
"system/pages/login/img/login_title.png"
/>
</div>
<form
id=
"loginForm"
name=
"login"
method=
"post"
action=
"login"
>
<div
class=
"login_item"
>
<input
type=
"text"
id=
"username"
name=
"loginusername"
/>
</div>
<div
class=
"login_item"
>
<input
type=
"password"
id=
"password"
name=
"loginuserpass"
/>
</div>
<s:if
test=
"#session.chkyzm!=null && #session.chkyzm==1"
>
<div
class=
"login_yzm"
><input
name=
"loginyzm"
type=
"text"
/><img
src=
"images/image.jsp"
height=
"32"
onclick=
"changeImg(this)"
/></div>
</s:if>
</form>
<div
class=
"login_item_password"
>
<div><input
type=
"checkbox"
name=
"remember"
id=
"remember"
/><label
for=
"remember"
>
记住账号
</label></div>
<div><a
href=
"#"
>
忘记密码
</a></div>
</div>
<
%
--
<
div
style=
"margin-top:10px;*margin-top:0px;text-align:center;background: #ffebeb;color: #e4393c;border: 1px solid #faccc6;height:42px;line-height:42px;"
><s:property
value=
"#request.err"
/></div>
--%>
<div
style=
"text-decoration:none;cursor:text;color:red;margin-top:5px;*margin-top:0px;text-align:center;"
><s:property
value=
"#request.err"
/></div>
<div
style=
"text-decoration:none;cursor:text;color:red;margin-top:5px;margin-bottom:7px;*margin-top:0px;text-align:center;"
>
<
%
if
(
session
.
getAttribute
("
beforeUser
")!=
null
){
java
.
util
.
Map
<
String
,
Object
>
beforeUser = (java.util.Map
<String
,
Object
>
)session.getAttribute("beforeUser");
request.removeAttribute("beforeUser");
System.out.println(beforeUser);
String loginDate = (String)beforeUser.get("BEFORETIME");
out.println("登陆用户已存在,之前登时间:"+loginDate+" 登陆IP:"+beforeUser.get("LOGINIP"));
}
%>
</div>
<div
class=
"login_item_login"
id=
"b_login"
>
登 录
</div>
<div
class=
"login_item_text"
><a
href=
"#"
>
统一身份认证在线帮助入口
</a></div>
</div>
</div>
<div
class=
"footer"
>
<div
class=
"footer_inside"
>
<div
class=
"footer_logo"
></div>
<div
class=
"footer_company_info"
>
<h1>
杰夫V5微应用服务平台
</h1>
<p>
Powered By © 2014-
<
%=
jt
.
now_year
()
%
>
www.jfbrother.com
</p>
</div>
<div
class=
"footer_links"
>
<p>
建议使用IE9.0及以上版本浏览器/现代浏览器访问本站
</p>
</div>
</div>
</div>
<script
type=
"text/javascript"
>
$
(
document
).
ready
(
function
()
{
//判断ie浏览器ie8以下执行
if
(
IEVersion
()
<=
'8'
&&
IEVersion
()
!=
'-1'
){
$
.
fancybox
.
open
(
'<div style="line-height:20px;">ie浏览器版本过低,请使用高版本浏览器</div>'
)
}
//初始化所有的文本提示框
init_login_tip
(
$
(
'#username'
),
'请输入账号'
);
init_login_tip
(
$
(
'#password'
),
'请输入密码'
);
init_login_tip
(
$
(
'.login_yzm>input'
),
'请输入验证码'
);
document
.
onkeydown
=
function
(
e
)
{
var
ev
=
document
.
all
?
window
.
event
:
e
;
if
(
ev
.
keyCode
==
13
)
{
$
(
"#b_login"
).
click
();
//处理事件
}
}
.header_login
{
width
:
120px
;
height
:
34px
;
border
:
1px
#40bbc3
solid
;
margin
:
60px
auto
;
}
.header_login
a
{
width
:
100%
;
display
:
block
;
line-height
:
34px
;
color
:
#97f1f2
;
text-align
:
center
;
}
.header_login
a
span
{
position
:
absolute
;
top
:
0
;
left
:
0
;
display
:
block
;
width
:
100%
;
height
:
0
;
z-index
:
-1
;
background
:
rgba
(
255
,
255
,
255
,
0.1
);
transition
:
all
0.3s
ease-in-out
;
-webkit-transition
:
all
0.3s
ease-in-out
;
-moz-transition
:
all
0.3s
ease-in-out
;
-o-transition
:
all
0.3s
ease-in-out
;
font
:
normal
200
15px
/
30px
'proxima-nova-condensed'
,
sans-serif
;
text-transform
:
uppercase
;
cursor
:
pointer
;
}
</style>
<script
type=
"text/javascript"
>
$
(
document
).
ready
(
function
()
{
// 判断记住密码的操作
if
(
$
.
cookie
(
"username"
)
!=
''
&&
$
.
cookie
(
"username"
)
!=
null
&&
$
.
cookie
(
"username"
)
!=
'undefined'
)
{
if
(
$
.
cookie
(
"username"
)
!=
''
&&
$
.
cookie
(
"username"
)
!=
null
&&
$
.
cookie
(
"username"
)
!=
'undefined'
)
{
$
(
"#username"
).
val
(
BASE64
.
decode
(
$
.
cookie
(
"username"
)));
if
(
$
.
cookie
(
"password"
)
!=
''
&&
$
.
cookie
(
"password"
)
!=
null
&&
$
.
cookie
(
"password"
)
!=
'undefined'
)
{
$
(
"#username"
).
next
().
hide
();
if
(
$
.
cookie
(
"password"
)
!=
''
&&
$
.
cookie
(
"password"
)
!=
null
&&
$
.
cookie
(
"password"
)
!=
'undefined'
)
{
$
(
"#password"
).
val
(
BASE64
.
decode
(
$
.
cookie
(
"password"
)));
$
(
"#remember"
).
attr
(
'checked'
,
'checked'
);
$
(
"#password"
).
next
().
hide
();
}
}
// 点击记住密码
$
(
"#remember"
).
live
(
'click'
,
function
()
{
updateCookie
();
if
(
$
(
"#remember"
).
attr
(
'checked'
)
!=
'checked'
)
{
$
(
'#username'
).
val
(
''
);
$
(
'#password'
).
val
(
''
);
$
(
'.login_yzm>input'
).
val
(
''
);
$
(
'#username'
).
next
(
'label'
).
remove
();
$
(
'#password'
).
next
(
'label'
).
remove
();
$
(
'.login_yzm>input'
).
next
(
'label'
).
remove
();
init_login_tip
(
$
(
'#username'
),
'请输入账号'
);
init_login_tip
(
$
(
'#password'
),
'请输入密码'
);
init_login_tip
(
$
(
'.login_yzm>input'
),
'请输入验证码'
);
}
});
// 点击重置
$
(
"#b_cancel"
).
live
(
'click'
,
function
()
{
...
...
@@ -337,6 +343,7 @@ label {
// 输入用户名清空密码
$
(
"#username"
).
live
(
'keyup'
,
function
()
{
$
(
"#password"
).
val
(
''
);
$
(
"#password"
).
next
().
show
();
});
/**
...
...
@@ -350,15 +357,14 @@ label {
$
.
cookie
(
"password"
,
BASE64
.
encode
(
$
(
"#password"
).
val
()),
{
expires
:
1000
});
}
else
{
}
else
{
$
(
"#remember"
).
removeAttr
(
'checked'
);
$
.
cookie
(
"username"
,
null
);
$
.
cookie
(
"password"
,
null
);
}
}
// 设置cookie 默认7天
function
SetCookie
(
name
,
value
)
// 两个参数,一个是cookie的名子,一个是值
function
SetCookie
(
name
,
value
)
// 两个参数,一个是cookie的名子,一个是值
{
$
.
cookie
(
name
,
value
,
{
expires
:
1000
...
...
@@ -370,77 +376,54 @@ label {
updateCookie
();
$
(
"#loginForm"
).
submit
();
});
});
});
</script>
</head>
//变更验证码
function
changeImg
(
handler
){
var
date
=
new
Date
();
$
(
handler
).
attr
(
'src'
,
'images/image.jsp?date='
+
date
.
getTime
());
}
<body>
<div
align=
"center"
>
<div
class=
"header"
>
<div
class=
"header_problem"
><a
href=
"#"
>
登录有问题?
</a></div>
<div
class=
"header_logo"
></div>
<div
class=
"header_title"
></div>
<div
class=
"header_input"
>
<form
id=
"loginForm"
name=
"login"
method=
"post"
action=
"login"
>
<input
class=
"username"
id=
"username"
name=
"loginusername"
type=
"text"
value=
"请输入用户名"
onfocus=
"if(value=='请输入用户名') {this.style.color='#fff';value=''}"
onblur=
"if (value=='') {this.style.color='#7898b4';value='请输入用户名'}"
/>
<input
class=
"password"
id=
"password"
name=
"loginuserpass"
type=
"password"
value=
"请输入密码"
onfocus=
"if(value=='请输入密码') {this.style.color='#fff';value=''}"
onblur=
"if (value=='') {this.style.color='#7898b4';value='请输入密码'}"
/>
<s:if
test=
"#session.chkyzm!=null && #session.chkyzm==1"
>
<input
class=
"yzm"
name=
"loginyzm"
style=
"padding-top:10px;"
type=
"text"
value=
"请输入验证码"
onfocus=
"if(value=='请输入验证码') {this.style.color='#fff';value=''}"
onblur=
"if (value=='') {this.style.color='#7898b4';value='请输入验证码'}"
/>
<img
src=
"images/image.jsp"
style=
"padding-top:0px;"
/>
</s:if>
</form>
</div>
<div
id=
"remember-me"
style=
"color:#7898b4;margin-top:40px;*margin-top:0px;"
>
<input
type=
"checkbox"
name=
"remember"
id=
"remember"
/><span>
记住我
</span>
</div>
<a
href=
"#"
><div
class=
"header_button"
style=
"cursor:pointer;"
id=
"b_login"
>
登
录
</div></a>
<div
style=
"color:red;margin-top:10px;*margin-top:0px;"
><s:property
value=
"#request.err"
/></div>
<div
style=
"color:red;margin-top:10px;*margin-top:0px;"
>
<
%
if
(
session
.
getAttribute
("
beforeUser
")!=
null
){
java
.
util
.
Map
<
String
,
Object
>
beforeUser = (java.util.Map
<String
,
Object
>
)session.getAttribute("beforeUser");
request.removeAttribute("beforeUser");
System.out.println(beforeUser);
String loginDate = (String)beforeUser.get("BEFORETIME");
out.println("登陆用户已存在,之前登时间:"+loginDate+" 登陆IP:"+beforeUser.get("LOGINIP"));
//初始文本框的提示信息
function
init_login_tip
(
handler
,
text
){
$
(
handler
).
inputTips
({
tip
:
{
color
:
'#c8c8c8'
,
text
:
text
,
fontSize
:
'14px'
}
%>
</div>
<!-- <div class="header_label"><input class="input1" type="checkbox" id="check" /><label for="check">记住我</label></div> -->
</div>
<div
class=
"footer"
>
<div
class=
"footer_inside"
>
<div
class=
"footer_logo"
></div>
<div
class=
"footer_company_info"
>
<h1>
杰夫V5微应用服务平台
</h1>
<p>
Powered By © 2014-
<
%=
jt
.
now_year
()
%
>
Jinwang.com.cn
</p>
</div>
<div
class=
"footer_links"
>
<!-- <h1> -->
<!-- <ul class="links_about"> -->
<!-- <li><a href="#">服务条款</a></li> -->
<!-- <li><a href="#">常见问题</a></li> -->
<!-- <li><a href="#">隐私说明</a></li> -->
<!-- <li><a href="#">关于我们</a></li> -->
<!-- </ul> -->
<!-- </h1> -->
<p>
建议使用IE8.0及以上版本浏览器/现代浏览器访问本站
</p>
</div>
</div>
</div>
</div>
<script>
$
(
document
).
ready
(
function
()
{
document
.
onkeydown
=
function
(
e
){
var
ev
=
document
.
all
?
window
.
event
:
e
;
if
(
ev
.
keyCode
==
13
){
$
(
"#b_login"
).
click
();
//处理事件
}}
});
}
</script>
//判断ie浏览器
function
IEVersion
()
{
var
userAgent
=
navigator
.
userAgent
;
//取得浏览器的userAgent字符串
var
isIE
=
userAgent
.
indexOf
(
"compatible"
)
>
-
1
&&
userAgent
.
indexOf
(
"MSIE"
)
>
-
1
;
//判断是否IE
<
11
浏览器
var
isEdge
=
userAgent
.
indexOf
(
"Edge"
)
>
-
1
&&
!
isIE
;
//判断是否IE的Edge浏览器
var
isIE11
=
userAgent
.
indexOf
(
'Trident'
)
>
-
1
&&
userAgent
.
indexOf
(
"rv:11.0"
)
>
-
1
;
if
(
isIE
)
{
var
reIE
=
new
RegExp
(
"MSIE (
\\
d+
\\
.
\\
d+);"
);
reIE
.
test
(
userAgent
);
var
fIEVersion
=
parseFloat
(
RegExp
[
"$1"
]);
if
(
fIEVersion
==
7
)
{
return
7
;
}
else
if
(
fIEVersion
==
8
)
{
return
8
;
}
else
if
(
fIEVersion
==
9
)
{
return
9
;
}
else
if
(
fIEVersion
==
10
)
{
return
10
;
}
else
{
return
6
;
//IE版本
<=
7
}
}
else
if
(
isEdge
)
{
return
'edge'
;
//edge
}
else
if
(
isIE11
)
{
return
11
;
//IE11
}
else
{
return
-
1
;
//不是ie浏览器
}
}
</script>
</body>
</html>
WebContent/system/pages/login/sampleLogin.jsp.bak
0 → 100644
View file @
b9cf285a
<
%@
page
import=
"java.util.Date"
%
>
<
%@
page
language=
"java"
pageEncoding=
"utf-8"
%
>
<
%@
taglib
uri=
"/struts-tags"
prefix=
"s"
%
>
<
%@
page
import=
"com.gaowj.business.util.Java_tool"
%
>
<
%
Java_tool
jt =
new
Java_tool
();
%
>
<
%
--
富客户端环境引用文件
--
%
>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>
系统登陆
</title>
<script
type=
"text/javascript"
src=
"js/jquery-1.7.2.min.js"
></script>
<script
type=
"text/javascript"
src=
"system/pages/login/js/jquery.cookie.js"
></script>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"system/pages/login/css/main.css"
/>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"system/pages/login/css/login.css"
/>
<link
rel=
"shortcut icon"
href=
"images/main/logo.ico"
/>
<link
rel=
"icon"
type=
"image/gif"
href=
"images/main/logo.png"
/>
<style
type=
"text/css"
>
*
{
font-family
:
Verdana
,
SimSun
;
font-size
:
1em
;
outline
:
0
;
padding
:
0
;
margin
:
0
;
border
:
0
;
text-decoration
:
none
;
vertical-align
:
baseline
;
white-space
:
normal
;
}
body
{
margin
:
0
;
padding
:
0
;
overflow
:
hidden
;
}
a
{
text-decoration
:
none
;
tap-highlight-color
:
rgba
(
0
,
0
,
0
,
0
);
-webkit-tap-highlight-color
:
rgba
(
0
,
0
,
0
,
0
);
-webkit-tap-highlight-color
:
transparent
;
/* For some Androids */
}
h1
,
h2
,
h3
,
h4
,
p
{
margin
:
0
;
padding
:
0
}
.header
{
width
:
100%
;
height
:
525px
;
background
:
url("system/pages/login/img/Login_mainBG.jpg")
center
no-repeat
;
overflow
:
hidden
;
min-width
:
500px
;
}
.header_logo
{
width
:
123px
;
height
:
134px
;
background
:
url("system/pages/login/img/Login_logo.png")
center
no-repeat
;
margin
:
40px
auto
0
;
}
.header_title
{
width
:
450px
;
height
:
55px
;
background
:
url("system/pages/login/img/login_title.png")
center
no-repeat
;
margin
:
20px
auto
0
;
}
.header_input
{
width
:
308px
;
height
:
86px
;
/* background:url("system/pages/login/img/Login_input_bg.png") center no-repeat ; */
margin
:
40px
auto
0
;
}
.username
,
.password
,
.yzm
{
width
:
70%
;
height
:
42px
;
background
:
none
;
border
:
none
;
outline
:
none
;
font-size
:
14px
;
color
:
#7898b4
;
margin-left
:
8%
;
line-height
:
42px
;
}
.username
,
.password
,
.yzm
{
border-bottom
:
1px
#587faa
solid
;
}
.username
,
.password
{
width
:
92%
;
}
.header_button
{
width
:
308px
;
height
:
44px
;
background
:
#1589c3
;
margin
:
10px
auto
0
;
border-radius
:
4px
;
text-align
:
center
;
line-height
:
44px
;
font-size
:
18px
;
color
:
white
;
font-family
:
"微软雅黑"
;
-webkit-transition
:
0.3s
0.2s
ease
;
-moz-transition
:
0.3s
0.2s
ease
;
}
.header_button
:hover
{
background
:
#209cda
;
}
.header_problem
{
color
:
#8c8ab7
;
font-size
:
12px
;
position
:
relative
;
float
:
right
;
margin-right
:
10px
;
margin-top
:
10px
;
}
.header_problem
a
{
color
:
#8c8ab7
;
-webkit-transition
:
0.3s
0.2s
ease
;
-moz-transition
:
0.3s
0.2s
ease
;
}
.header_problem
a
:hover
{
color
:
#b7b6d2
;
}
.header_label
{
width
:
120px
;
font-size
:
12px
;
color
:
#fff
;
margin
:
18px
auto
0
;
padding
:
0
;
text-align
:
center
;
}
label
{
background
:
url("system/pages/login/img/login_check2.png")
left
no-repeat
;
padding-left
:
20px
;
display
:
inline-block
;
}
.input1
{
visibility
:
hidden
;
margin-left
:
-40px
;
}
.checked
{
background
:
url("system/pages/login/img/login_check1.png")
left
no-repeat
;
}
.main
{
width
:
810px
;
margin
:
38px
auto
0
;
height
:
260px
;
}
.main
ul
{
list-style
:
none
;
margin
:
0
;
padding
:
0
;
}
.main
li
{
float
:
left
;
width
:
33%
;
}
.intro_icon
{
margin
:
0
auto
;
width
:
100px
;
}
.intro_icon
a
{
width
:
100px
;
height
:
110px
;
font-size
:
0
;
display
:
inline-block
;
cursor
:
pointer
;
-webkit-transition
:
0.3s
0.2s
ease
;
-moz-transition
:
0.3s
0.2s
ease
;
}
.intro_iconTab1
a
{
background
:
url("system/pages/login/img/intro_icon1.png")
center
no-repeat
;
}
.intro_iconTab1
a
:hover
{
background
:
url("system/pages/login/img/intro_icon_hover1.png")
center
no-repeat
;
}
.intro_iconTab2
a
{
background
:
url("system/pages/login/img/intro_icon2.png")
center
no-repeat
;
}
.intro_iconTab2
a
:hover
{
background
:
url("system/pages/login/img/intro_icon_hover2.png")
center
no-repeat
;
}
.intro_iconTab3
a
{
background
:
url("system/pages/login/img/intro_icon3.png")
center
no-repeat
;
}
.intro_iconTab3
a
:hover
{
background
:
url("system/pages/login/img/intro_icon_hover3.png")
center
no-repeat
;
}
.intro_info
{
margin
:
0
auto
;
width
:
66%
;
text-align
:
center
;
}
.intro_info
h1
{
font-size
:
20px
;
font-family
:
"微软雅黑"
;
color
:
#2c9bd3
;
font-weight
:
normal
;
margin
:
18px
auto
10px
;
}
.intro_info
p
{
font-size
:
12px
;
color
:
#627b87
;
line-height
:
20px
;
}
.footer
{
width
:
100%
;
background
:
#eff2f5
;
overflow
:
hidden
;
}
.footer_inside
{
width
:
900px
;
margin
:
0
auto
;
}
.footer_logo
{
float
:
left
;
background
:
url("system/pages/login/img/footer_logo.png")
center
no-repeat
;
width
:
20px
;
height
:
60px
;
margin
:
10px
0
;
}
.footer_company_info
{
float
:
left
;
margin
:
10px
20px
;
overflow
:
hidden
;
}
.footer_company_info
h1
{
margin
:
12px
0
8px
0
;
padding
:
0
;
font-size
:
16px
;
font-weight
:
lighter
;
font-family
:
"微软雅黑"
;
color
:
#184962
;
}
.footer_company_info
p
{
margin
:
0
;
padding
:
0
;
font-size
:
12px
;
font-family
:
"Helvetica Neue"
,
Helvetica
,
Arial
,
"Lucida Grande"
,
sans-serif
;
color
:
#a5a5a5
;
}
.footer_links
{
float
:
right
;
margin
:
28px
0
;
padding
:
0
;
text-align
:
right
;
}
.links_about
{
list-style
:
none
;
}
.links_about
li
{
float
:
right
;
font-size
:
12px
;
color
:
#899ba6
;
font-weight
:
lighter
;
margin-left
:
10px
;
}
.links_about
li
a
{
color
:
#899ba6
;
-webkit-transition
:
0.3s
0.2s
ease
;
-moz-transition
:
0.3s
0.2s
ease
;
}
.links_about
li
a
:hover
{
color
:
#61747f
;
}
.footer_links
h1
{
overflow
:
hidden
;
}
.footer_links
p
{
clear
:
both
;
font-size
:
12px
;
color
:
#899ba6
;
margin
:
10px
0
20px
0
;
}
.header_login
{
width
:
120px
;
height
:
34px
;
border
:
1px
#40bbc3
solid
;
margin
:
60px
auto
;
}
.header_login
a
{
width
:
100%
;
display
:
block
;
line-height
:
34px
;
color
:
#97f1f2
;
text-align
:
center
;
}
.header_login
a
span
{
position
:
absolute
;
top
:
0
;
left
:
0
;
display
:
block
;
width
:
100%
;
height
:
0
;
z-index
:
-1
;
background
:
rgba
(
255
,
255
,
255
,
0.1
);
transition
:
all
0.3s
ease-in-out
;
-webkit-transition
:
all
0.3s
ease-in-out
;
-moz-transition
:
all
0.3s
ease-in-out
;
-o-transition
:
all
0.3s
ease-in-out
;
font
:
normal
200
15px
/
30px
'proxima-nova-condensed'
,
sans-serif
;
text-transform
:
uppercase
;
cursor
:
pointer
;
}
</style>
<script
type=
"text/javascript"
>
$
(
document
).
ready
(
function
()
{
// 判断记住密码的操作
if
(
$
.
cookie
(
"username"
)
!=
''
&&
$
.
cookie
(
"username"
)
!=
null
&&
$
.
cookie
(
"username"
)
!=
'undefined'
)
{
$
(
"#username"
).
val
(
BASE64
.
decode
(
$
.
cookie
(
"username"
)));
if
(
$
.
cookie
(
"password"
)
!=
''
&&
$
.
cookie
(
"password"
)
!=
null
&&
$
.
cookie
(
"password"
)
!=
'undefined'
)
{
$
(
"#password"
).
val
(
BASE64
.
decode
(
$
.
cookie
(
"password"
)));
$
(
"#remember"
).
attr
(
'checked'
,
'checked'
);
}
}
// 点击记住密码
$
(
"#remember"
).
live
(
'click'
,
function
()
{
updateCookie
();
});
// 点击重置
$
(
"#b_cancel"
).
live
(
'click'
,
function
()
{
$
(
"#remember"
).
removeAttr
(
'checked'
);
$
(
"#username"
).
val
(
''
);
$
(
"#password"
).
val
(
''
);
updateCookie
();
});
// 输入用户名清空密码
$
(
"#username"
).
live
(
'keyup'
,
function
()
{
$
(
"#password"
).
val
(
''
);
});
/**
* cookie操作
*/
function
updateCookie
()
{
if
(
$
(
"#remember"
).
attr
(
'checked'
)
==
'checked'
)
{
$
.
cookie
(
"username"
,
BASE64
.
encode
(
$
(
"#username"
).
val
()),
{
expires
:
1000
});
$
.
cookie
(
"password"
,
BASE64
.
encode
(
$
(
"#password"
).
val
()),
{
expires
:
1000
});
}
else
{
$
(
"#remember"
).
removeAttr
(
'checked'
);
$
.
cookie
(
"username"
,
null
);
$
.
cookie
(
"password"
,
null
);
}
}
// 设置cookie 默认7天
function
SetCookie
(
name
,
value
)
// 两个参数,一个是cookie的名子,一个是值
{
$
.
cookie
(
name
,
value
,
{
expires
:
1000
});
}
//提交操作
$
(
"#b_login"
).
live
(
'click'
,
function
()
{
updateCookie
();
$
(
"#loginForm"
).
submit
();
});
});
</script>
</head>
<body>
<div
align=
"center"
>
<div
class=
"header"
>
<div
class=
"header_problem"
><a
href=
"#"
>
登录有问题?
</a></div>
<div
class=
"header_logo"
></div>
<div
class=
"header_title"
></div>
<div
class=
"header_input"
>
<form
id=
"loginForm"
name=
"login"
method=
"post"
action=
"login"
>
<input
class=
"username"
id=
"username"
name=
"loginusername"
type=
"text"
value=
"请输入用户名"
onfocus=
"if(value=='请输入用户名') {this.style.color='#fff';value=''}"
onblur=
"if (value=='') {this.style.color='#7898b4';value='请输入用户名'}"
/>
<input
class=
"password"
id=
"password"
name=
"loginuserpass"
type=
"password"
value=
"请输入密码"
onfocus=
"if(value=='请输入密码') {this.style.color='#fff';value=''}"
onblur=
"if (value=='') {this.style.color='#7898b4';value='请输入密码'}"
/>
<s:if
test=
"#session.chkyzm!=null && #session.chkyzm==1"
>
<input
class=
"yzm"
name=
"loginyzm"
style=
"padding-top:10px;"
type=
"text"
value=
"请输入验证码"
onfocus=
"if(value=='请输入验证码') {this.style.color='#fff';value=''}"
onblur=
"if (value=='') {this.style.color='#7898b4';value='请输入验证码'}"
/>
<img
src=
"images/image.jsp"
style=
"padding-top:0px;"
/>
</s:if>
</form>
</div>
<div
id=
"remember-me"
style=
"color:#7898b4;margin-top:40px;*margin-top:0px;"
>
<input
type=
"checkbox"
name=
"remember"
id=
"remember"
/><span>
记住我
</span>
</div>
<a
href=
"#"
><div
class=
"header_button"
style=
"cursor:pointer;"
id=
"b_login"
>
登
录
</div></a>
<div
style=
"color:red;margin-top:10px;*margin-top:0px;"
><s:property
value=
"#request.err"
/></div>
<div
style=
"color:red;margin-top:10px;*margin-top:0px;"
>
<
%
if
(
session
.
getAttribute
("
beforeUser
")!=
null
){
java
.
util
.
Map
<
String
,
Object
>
beforeUser = (java.util.Map
<String
,
Object
>
)session.getAttribute("beforeUser");
request.removeAttribute("beforeUser");
System.out.println(beforeUser);
String loginDate = (String)beforeUser.get("BEFORETIME");
out.println("登陆用户已存在,之前登时间:"+loginDate+" 登陆IP:"+beforeUser.get("LOGINIP"));
}
%>
</div>
<!-- <div class="header_label"><input class="input1" type="checkbox" id="check" /><label for="check">记住我</label></div> -->
</div>
<div
class=
"footer"
>
<div
class=
"footer_inside"
>
<div
class=
"footer_logo"
></div>
<div
class=
"footer_company_info"
>
<h1>
杰夫V5微应用服务平台
</h1>
<p>
Powered By © 2014-
<
%=
jt
.
now_year
()
%
>
Jinwang.com.cn
</p>
</div>
<div
class=
"footer_links"
>
<!-- <h1> -->
<!-- <ul class="links_about"> -->
<!-- <li><a href="#">服务条款</a></li> -->
<!-- <li><a href="#">常见问题</a></li> -->
<!-- <li><a href="#">隐私说明</a></li> -->
<!-- <li><a href="#">关于我们</a></li> -->
<!-- </ul> -->
<!-- </h1> -->
<p>
建议使用IE8.0及以上版本浏览器/现代浏览器访问本站
</p>
</div>
</div>
</div>
</div>
<script>
$
(
document
).
ready
(
function
()
{
document
.
onkeydown
=
function
(
e
){
var
ev
=
document
.
all
?
window
.
event
:
e
;
if
(
ev
.
keyCode
==
13
){
$
(
"#b_login"
).
click
();
//处理事件
}}
});
</script>
</html>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment