Skip to content
GitLab
Explore
Projects
Groups
Snippets
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Bootstrap
bootstrap
Commits
eaefed51
Commit
eaefed51
authored
11 years ago
by
Jacob Thornton
Browse files
Options
Download
Email Patches
Plain Diff
fixes #8399 w/ tests
parent
930c75e5
2 merge requests
!8635
ignore Gruntfile.js in jekyll
,
!8656
Added rel="stylesheet" to CDN-Examples
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
dist/js/bootstrap.js
+3
-3
dist/js/bootstrap.js
dist/js/bootstrap.min.js
+1
-1
dist/js/bootstrap.min.js
js/carousel.js
+1
-1
js/carousel.js
js/tests/unit/tooltip.js
+45
-0
js/tests/unit/tooltip.js
js/tooltip.js
+2
-2
js/tooltip.js
with
52 additions
and
7 deletions
+52
-7
dist/js/bootstrap.js
+
3
-
3
View file @
eaefed51
...
@@ -390,7 +390,7 @@
...
@@ -390,7 +390,7 @@
$next
[
0
].
offsetWidth
// force reflow
$next
[
0
].
offsetWidth
// force reflow
$active
.
addClass
(
direction
)
$active
.
addClass
(
direction
)
$next
.
addClass
(
direction
)
$next
.
addClass
(
direction
)
this
.
$element
.
find
(
'
.item
'
)
$active
.
one
(
$
.
support
.
transition
.
end
,
function
()
{
.
one
(
$
.
support
.
transition
.
end
,
function
()
{
$next
.
removeClass
([
type
,
direction
].
join
(
'
'
)).
addClass
(
'
active
'
)
$next
.
removeClass
([
type
,
direction
].
join
(
'
'
)).
addClass
(
'
active
'
)
$active
.
removeClass
([
'
active
'
,
direction
].
join
(
'
'
))
$active
.
removeClass
([
'
active
'
,
direction
].
join
(
'
'
))
...
@@ -1138,10 +1138,10 @@
...
@@ -1138,10 +1138,10 @@
var
self
=
obj
instanceof
this
.
constructor
?
var
self
=
obj
instanceof
this
.
constructor
?
obj
:
$
(
obj
.
currentTarget
)[
this
.
type
](
options
).
data
(
'
bs.
'
+
this
.
type
)
obj
:
$
(
obj
.
currentTarget
)[
this
.
type
](
options
).
data
(
'
bs.
'
+
this
.
type
)
if
(
!
self
.
options
.
delay
||
!
self
.
options
.
delay
.
show
)
return
self
.
show
()
clearTimeout
(
self
.
timeout
)
clearTimeout
(
self
.
timeout
)
if
(
!
self
.
options
.
delay
||
!
self
.
options
.
delay
.
show
)
return
self
.
show
()
self
.
hoverState
=
'
in
'
self
.
hoverState
=
'
in
'
self
.
timeout
=
setTimeout
(
function
()
{
self
.
timeout
=
setTimeout
(
function
()
{
if
(
self
.
hoverState
==
'
in
'
)
self
.
show
()
if
(
self
.
hoverState
==
'
in
'
)
self
.
show
()
...
...
This diff is collapsed.
Click to expand it.
dist/js/bootstrap.min.js
+
1
-
1
View file @
eaefed51
...
@@ -3,4 +3,4 @@
...
@@ -3,4 +3,4 @@
* Copyright 2013 Twitter, Inc.
* Copyright 2013 Twitter, Inc.
* http://www.apache.org/licenses/LICENSE-2.0.txt
* http://www.apache.org/licenses/LICENSE-2.0.txt
*/
*/
+
function
(
e
){
"
use strict
"
;
function
t
(){
var
e
=
document
.
createElement
(
"
bootstrap
"
),
t
=
{
WebkitTransition
:
"
webkitTransitionEnd
"
,
MozTransition
:
"
transitionend
"
,
OTransition
:
"
oTransitionEnd otransitionend
"
,
transition
:
"
transitionend
"
};
for
(
var
n
in
t
)
if
(
e
.
style
[
n
]
!==
undefined
)
return
{
end
:
t
[
n
]}}
e
.
fn
.
emulateTransitionEnd
=
function
(
t
){
var
n
=!
1
,
r
=
this
;
e
(
this
).
one
(
"
webkitTransitionEnd
"
,
function
(){
n
=!
0
});
var
i
=
function
(){
n
||
e
(
r
).
trigger
(
"
webkitTransitionEnd
"
)};
setTimeout
(
i
,
t
)},
e
(
function
(){
e
.
support
.
transition
=
t
()})}(
window
.
jQuery
),
+
function
(
e
){
"
use strict
"
;
var
t
=
'
[data-dismiss="alert"]
'
,
n
=
function
(
n
){
e
(
n
).
on
(
"
click
"
,
t
,
this
.
close
)};
n
.
prototype
.
close
=
function
(
t
){
function
s
(){
i
.
trigger
(
"
closed.bs.alert
"
).
remove
()}
var
n
=
e
(
this
),
r
=
n
.
attr
(
"
data-target
"
);
r
||
(
r
=
n
.
attr
(
"
href
"
),
r
=
r
&&
r
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
""
));
var
i
=
e
(
r
);
t
&&
t
.
preventDefault
(),
i
.
length
||
(
i
=
n
.
hasClass
(
"
alert
"
)?
n
:
n
.
parent
()),
i
.
trigger
(
t
=
e
.
Event
(
"
close.bs.alert
"
));
if
(
t
.
isDefaultPrevented
())
return
;
i
.
removeClass
(
"
in
"
),
e
.
support
.
transition
&&
i
.
hasClass
(
"
fade
"
)?
i
.
one
(
e
.
support
.
transition
.
end
,
s
).
emulateTransitionEnd
(
150
):
s
()};
var
r
=
e
.
fn
.
alert
;
e
.
fn
.
alert
=
function
(
t
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"
bs.alert
"
);
i
||
r
.
data
(
"
bs.alert
"
,
i
=
new
n
(
this
)),
typeof
t
==
"
string
"
&&
i
[
t
].
call
(
r
)})},
e
.
fn
.
alert
.
Constructor
=
n
,
e
.
fn
.
alert
.
noConflict
=
function
(){
return
e
.
fn
.
alert
=
r
,
this
},
e
(
document
).
on
(
"
click.bs.alert.data-api
"
,
t
,
n
.
prototype
.
close
)}(
window
.
jQuery
),
+
function
(
e
){
"
use strict
"
;
var
t
=
function
(
n
,
r
){
this
.
$element
=
e
(
n
),
this
.
options
=
e
.
extend
({},
t
.
DEFAULTS
,
r
)};
t
.
DEFAULTS
=
{
loadingText
:
"
loading...
"
},
t
.
prototype
.
setState
=
function
(
e
){
var
t
=
"
disabled
"
,
n
=
this
.
$element
,
r
=
n
.
is
(
"
input
"
)?
"
val
"
:
"
html
"
,
i
=
n
.
data
();
e
+=
"
Text
"
,
i
.
resetText
||
n
.
data
(
"
resetText
"
,
n
[
r
]()),
n
[
r
](
i
[
e
]
||
this
.
options
[
e
]),
setTimeout
(
function
(){
e
==
"
loadingText
"
?
n
.
addClass
(
t
).
attr
(
t
,
t
):
n
.
removeClass
(
t
).
removeAttr
(
t
)},
0
)},
t
.
prototype
.
toggle
=
function
(){
var
e
=
this
.
$element
.
closest
(
'
[data-toggle="buttons"]
'
);
if
(
e
.
length
){
var
t
=
this
.
$element
.
find
(
"
input
"
).
prop
(
"
checked
"
,
!
this
.
$element
.
hasClass
(
"
active
"
));
t
.
prop
(
"
type
"
)
===
"
radio
"
&&
e
.
find
(
"
.active
"
).
removeClass
(
"
active
"
)}
this
.
$element
.
toggleClass
(
"
active
"
)};
var
n
=
e
.
fn
.
button
;
e
.
fn
.
button
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"
button
"
),
s
=
typeof
n
==
"
object
"
&&
n
;
i
||
r
.
data
(
"
bs.button
"
,
i
=
new
t
(
this
,
s
)),
n
==
"
toggle
"
?
i
.
toggle
():
n
&&
i
.
setState
(
n
)})},
e
.
fn
.
button
.
Constructor
=
t
,
e
.
fn
.
button
.
noConflict
=
function
(){
return
e
.
fn
.
button
=
n
,
this
},
e
(
document
).
on
(
"
click.bs.button.data-api
"
,
"
[data-toggle^=button]
"
,
function
(
t
){
var
n
=
e
(
t
.
target
);
n
.
hasClass
(
"
btn
"
)
||
(
n
=
n
.
closest
(
"
.btn
"
)),
n
.
button
(
"
toggle
"
),
t
.
preventDefault
()})}(
window
.
jQuery
),
+
function
(
e
){
"
use strict
"
;
var
t
=
function
(
t
,
n
){
this
.
$element
=
e
(
t
),
this
.
$indicators
=
this
.
$element
.
find
(
"
.carousel-indicators
"
),
this
.
options
=
n
,
this
.
paused
=
this
.
sliding
=
this
.
interval
=
this
.
$active
=
this
.
$items
=
null
,
this
.
options
.
pause
==
"
hover
"
&&
this
.
$element
.
on
(
"
mouseenter
"
,
e
.
proxy
(
this
.
pause
,
this
)).
on
(
"
mouseleave
"
,
e
.
proxy
(
this
.
cycle
,
this
))};
t
.
DEFAULTS
=
{
interval
:
5
e3
,
pause
:
"
hover
"
},
t
.
prototype
.
cycle
=
function
(
t
){
return
t
||
(
this
.
paused
=!
1
),
this
.
interval
&&
clearInterval
(
this
.
interval
),
this
.
options
.
interval
&&!
this
.
paused
&&
(
this
.
interval
=
setInterval
(
e
.
proxy
(
this
.
next
,
this
),
this
.
options
.
interval
)),
this
},
t
.
prototype
.
getActiveIndex
=
function
(){
return
this
.
$active
=
this
.
$element
.
find
(
"
.item.active
"
),
this
.
$items
=
this
.
$active
.
parent
().
children
(),
this
.
$items
.
index
(
this
.
$active
)},
t
.
prototype
.
to
=
function
(
t
){
var
n
=
this
,
r
=
this
.
getActiveIndex
();
if
(
t
>
this
.
$items
.
length
-
1
||
t
<
0
)
return
;
return
this
.
sliding
?
this
.
$element
.
one
(
"
slid
"
,
function
(){
n
.
to
(
t
)}):
r
==
t
?
this
.
pause
().
cycle
():
this
.
slide
(
t
>
r
?
"
next
"
:
"
prev
"
,
e
(
this
.
$items
[
t
]))},
t
.
prototype
.
pause
=
function
(
t
){
return
t
||
(
this
.
paused
=!
0
),
this
.
$element
.
find
(
"
.next, .prev
"
).
length
&&
e
.
support
.
transition
.
end
&&
(
this
.
$element
.
trigger
(
e
.
support
.
transition
.
end
),
this
.
cycle
(
!
0
)),
this
.
interval
=
clearInterval
(
this
.
interval
),
this
},
t
.
prototype
.
next
=
function
(){
if
(
this
.
sliding
)
return
;
return
this
.
slide
(
"
next
"
)},
t
.
prototype
.
prev
=
function
(){
if
(
this
.
sliding
)
return
;
return
this
.
slide
(
"
prev
"
)},
t
.
prototype
.
slide
=
function
(
t
,
n
){
var
r
=
this
.
$element
.
find
(
"
.item.active
"
),
i
=
n
||
r
[
t
](),
s
=
this
.
interval
,
o
=
t
==
"
next
"
?
"
left
"
:
"
right
"
,
u
=
t
==
"
next
"
?
"
first
"
:
"
last
"
,
a
=
this
;
this
.
sliding
=!
0
,
s
&&
this
.
pause
(),
i
=
i
.
length
?
i
:
this
.
$element
.
find
(
"
.item
"
)[
u
]();
var
f
=
e
.
Event
(
"
slide.bs.carousel
"
,{
relatedTarget
:
i
[
0
],
direction
:
o
});
if
(
i
.
hasClass
(
"
active
"
))
return
;
this
.
$indicators
.
length
&&
(
this
.
$indicators
.
find
(
"
.active
"
).
removeClass
(
"
active
"
),
this
.
$element
.
one
(
"
slid
"
,
function
(){
var
t
=
e
(
a
.
$indicators
.
children
()[
a
.
getActiveIndex
()]);
t
&&
t
.
addClass
(
"
active
"
)}));
if
(
e
.
support
.
transition
&&
this
.
$element
.
hasClass
(
"
slide
"
)){
this
.
$element
.
trigger
(
f
);
if
(
f
.
isDefaultPrevented
())
return
;
i
.
addClass
(
t
),
i
[
0
].
offsetWidth
,
r
.
addClass
(
o
),
i
.
addClass
(
o
),
this
.
$element
.
find
(
"
.item
"
).
one
(
e
.
support
.
transition
.
end
,
function
(){
i
.
removeClass
([
t
,
o
].
join
(
"
"
)).
addClass
(
"
active
"
),
r
.
removeClass
([
"
active
"
,
o
].
join
(
"
"
)),
a
.
sliding
=!
1
,
setTimeout
(
function
(){
a
.
$element
.
trigger
(
"
slid
"
)},
0
)}).
emulateTransitionEnd
(
600
)}
else
{
this
.
$element
.
trigger
(
f
);
if
(
f
.
isDefaultPrevented
())
return
;
r
.
removeClass
(
"
active
"
),
i
.
addClass
(
"
active
"
),
this
.
sliding
=!
1
,
this
.
$element
.
trigger
(
"
slid
"
)}
return
s
&&
this
.
cycle
(),
this
};
var
n
=
e
.
fn
.
carousel
;
e
.
fn
.
carousel
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"
bs.carousel
"
),
s
=
e
.
extend
({},
t
.
DEFAULTS
,
r
.
data
(),
typeof
n
==
"
object
"
&&
n
),
o
=
typeof
n
==
"
string
"
?
n
:
s
.
slide
;
i
||
r
.
data
(
"
bs.carousel
"
,
i
=
new
t
(
this
,
s
)),
typeof
n
==
"
number
"
?
i
.
to
(
n
):
o
?
i
[
o
]():
s
.
interval
&&
i
.
pause
().
cycle
()})},
e
.
fn
.
carousel
.
Constructor
=
t
,
e
.
fn
.
carousel
.
noConflict
=
function
(){
return
e
.
fn
.
carousel
=
n
,
this
},
e
(
document
).
on
(
"
click.bs.carousel.data-api
"
,
"
[data-slide], [data-slide-to]
"
,
function
(
t
){
var
n
=
e
(
this
),
r
,
i
=
e
(
n
.
attr
(
"
data-target
"
)
||
(
r
=
n
.
attr
(
"
href
"
))
&&
r
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
""
)),
s
=
e
.
extend
({},
i
.
data
(),
n
.
data
()),
o
=
n
.
attr
(
"
data-slide-to
"
);
o
&&
(
s
.
interval
=!
1
),
i
.
carousel
(
s
),(
o
=
n
.
attr
(
"
data-slide-to
"
))
&&
i
.
data
(
"
bs.carousel
"
).
to
(
o
),
t
.
preventDefault
()}),
e
(
window
).
on
(
"
load
"
,
function
(){
e
(
'
[data-ride="carousel"]
'
).
each
(
function
(){
var
t
=
e
(
this
);
t
.
carousel
(
t
.
data
())})})}(
window
.
jQuery
),
+
function
(
e
){
"
use strict
"
;
var
t
=
function
(
n
,
r
){
this
.
$element
=
e
(
n
),
this
.
options
=
e
.
extend
({},
t
.
DEFAULTS
,
r
),
this
.
transitioning
=
null
,
this
.
options
.
parent
&&
(
this
.
$parent
=
e
(
this
.
options
.
parent
)),
this
.
options
.
toggle
&&
this
.
toggle
()};
t
.
DEFAULTS
=
{
toggle
:
!
0
},
t
.
prototype
.
dimension
=
function
(){
var
e
=
this
.
$element
.
hasClass
(
"
width
"
);
return
e
?
"
width
"
:
"
height
"
},
t
.
prototype
.
show
=
function
(){
if
(
this
.
transitioning
||
this
.
$element
.
hasClass
(
"
in
"
))
return
;
var
t
=
e
.
Event
(
"
show.bs.collapse
"
);
this
.
$element
.
trigger
(
t
);
if
(
t
.
isDefaultPrevented
())
return
;
var
n
=
this
.
dimension
(),
r
=
e
.
camelCase
([
"
scroll
"
,
n
].
join
(
"
-
"
)),
i
=
this
.
$parent
&&
this
.
$parent
.
find
(
"
> .accordion-group > .in
"
);
if
(
i
&&
i
.
length
){
var
s
=
i
.
data
(
"
bs.collapse
"
);
if
(
s
&&
s
.
transitioning
)
return
;
i
.
collapse
(
"
hide
"
),
s
||
i
.
data
(
"
bs.collapse
"
,
null
)}
this
.
$element
[
n
](
0
),
this
.
transition
(
"
addClass
"
,
"
shown.bs.collapse
"
),
e
.
support
.
transition
&&
this
.
$element
[
n
](
this
.
$element
[
0
][
r
])},
t
.
prototype
.
hide
=
function
(){
if
(
this
.
transitioning
||!
this
.
$element
.
hasClass
(
"
in
"
))
return
;
var
t
=
e
.
Event
(
"
hide.bs.collapse
"
);
this
.
$element
.
trigger
(
t
);
if
(
t
.
isDefaultPrevented
())
return
;
var
n
=
this
.
dimension
();
this
.
reset
(
this
.
$element
[
n
]()),
this
.
transition
(
"
removeClass
"
,
"
shown.bs.hidden
"
),
this
.
$element
[
n
](
0
)},
t
.
prototype
.
reset
=
function
(
e
){
var
t
=
this
.
dimension
();
return
this
.
$element
.
removeClass
(
"
collapse
"
)[
t
](
e
||
"
auto
"
)[
0
].
offsetWidth
,
this
.
$element
[
e
!=
null
?
"
addClass
"
:
"
removeClass
"
](
"
collapse
"
),
this
},
t
.
prototype
.
transition
=
function
(
t
,
n
){
var
r
=
this
,
i
=
function
(){
n
==
"
shown.bs.collapse
"
&&
r
.
reset
(),
r
.
transitioning
=
0
,
r
.
$element
.
trigger
(
n
)};
this
.
transitioning
=
1
,
this
.
$element
[
t
](
"
in
"
),
e
.
support
.
transition
&&
this
.
$element
.
hasClass
(
"
collapse
"
)?
this
.
$element
.
one
(
e
.
support
.
transition
.
end
,
i
).
emulateTransitionEnd
(
350
):
i
()},
t
.
prototype
.
toggle
=
function
(){
this
[
this
.
$element
.
hasClass
(
"
in
"
)?
"
hide
"
:
"
show
"
]()};
var
n
=
e
.
fn
.
collapse
;
e
.
fn
.
collapse
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"
bs.collapse
"
),
s
=
e
.
extend
({},
t
.
DEFAULTS
,
r
.
data
(),
typeof
n
==
"
object
"
&&
n
);
i
||
r
.
data
(
"
bs.collapse
"
,
i
=
new
t
(
this
,
s
)),
typeof
n
==
"
string
"
&&
i
[
n
]()})},
e
.
fn
.
collapse
.
Constructor
=
t
,
e
.
fn
.
collapse
.
noConflict
=
function
(){
return
e
.
fn
.
collapse
=
n
,
this
},
e
(
document
).
on
(
"
click.bs.collapse.data-api
"
,
"
[data-toggle=collapse]
"
,
function
(
t
){
var
n
=
e
(
this
),
r
,
i
=
n
.
attr
(
"
data-target
"
)
||
t
.
preventDefault
()
||
(
r
=
n
.
attr
(
"
href
"
))
&&
r
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
""
),
s
=
e
(
i
),
o
=
s
.
data
(
"
bs.collapse
"
),
u
=
o
?
"
toggle
"
:
n
.
data
(),
a
=
n
.
attr
(
"
data-parent
"
),
f
=
a
&&
e
(
a
);
if
(
!
o
||!
o
.
transitioning
)
f
&&
f
.
find
(
"
[data-toggle=collapse][data-parent=
"
+
a
+
"
]
"
).
not
(
n
).
addClass
(
"
collapsed
"
),
n
[
s
.
hasClass
(
"
in
"
)?
"
addClass
"
:
"
removeClass
"
](
"
collapsed
"
);
s
.
collapse
(
u
)})}(
window
.
jQuery
),
+
function
(
e
){
"
use strict
"
;
function
i
(){
e
(
t
).
remove
(),
e
(
n
).
each
(
function
(
t
){
var
n
=
s
(
e
(
this
));
if
(
!
n
.
hasClass
(
"
open
"
))
return
;
n
.
trigger
(
t
=
e
.
Event
(
"
hide.bs.dropdown
"
));
if
(
t
.
isDefaultPrevented
())
return
;
n
.
removeClass
(
"
open
"
).
trigger
(
"
hidden.bs.dropdown
"
)})}
function
s
(
t
){
var
n
=
t
.
attr
(
"
data-target
"
);
n
||
(
n
=
t
.
attr
(
"
href
"
),
n
=
n
&&
/#/
.
test
(
n
)
&&
n
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
""
));
var
r
=
n
&&
e
(
n
);
return
r
&&
r
.
length
?
r
:
t
.
parent
()}
var
t
=
"
.dropdown-backdrop
"
,
n
=
"
[data-toggle=dropdown]
"
,
r
=
function
(
t
){
var
n
=
e
(
t
).
on
(
"
click.bs.dropdown
"
,
this
.
toggle
)};
r
.
prototype
.
toggle
=
function
(
t
){
var
n
=
e
(
this
);
if
(
n
.
is
(
"
.disabled, :disabled
"
))
return
;
var
r
=
s
(
n
),
o
=
r
.
hasClass
(
"
open
"
);
i
();
if
(
!
o
){
"
ontouchstart
"
in
document
.
documentElement
&&
e
(
'
<div class="dropdown-backdrop"/>
'
).
insertAfter
(
e
(
this
)).
on
(
"
click
"
,
i
),
r
.
trigger
(
t
=
e
.
Event
(
"
show.bs.dropdown
"
));
if
(
t
.
isDefaultPrevented
())
return
;
r
.
toggleClass
(
"
open
"
).
trigger
(
"
shown.bs.dropdown
"
)}
return
n
.
focus
(),
!
1
},
r
.
prototype
.
keydown
=
function
(
t
){
if
(
!
/
(
38|40|27
)
/
.
test
(
t
.
keyCode
))
return
;
var
r
=
e
(
this
);
t
.
preventDefault
(),
t
.
stopPropagation
();
if
(
r
.
is
(
"
.disabled, :disabled
"
))
return
;
var
i
=
s
(
r
),
o
=
i
.
hasClass
(
"
open
"
);
if
(
!
o
||
o
&&
t
.
keyCode
==
27
)
return
t
.
which
==
27
&&
i
.
find
(
n
).
focus
(),
r
.
click
();
var
u
=
e
(
"
[role=menu] li:not(.divider):visible a
"
,
i
);
if
(
!
u
.
length
)
return
;
var
a
=
u
.
index
(
u
.
filter
(
"
:focus
"
));
t
.
keyCode
==
38
&&
a
>
0
&&
a
--
,
t
.
keyCode
==
40
&&
a
<
u
.
length
-
1
&&
a
++
,
~
a
||
(
a
=
0
),
u
.
eq
(
a
).
focus
()};
var
o
=
e
.
fn
.
dropdown
;
e
.
fn
.
dropdown
=
function
(
t
){
return
this
.
each
(
function
(){
var
n
=
e
(
this
),
i
=
n
.
data
(
"
dropdown
"
);
i
||
n
.
data
(
"
dropdown
"
,
i
=
new
r
(
this
)),
typeof
t
==
"
string
"
&&
i
[
t
].
call
(
n
)})},
e
.
fn
.
dropdown
.
Constructor
=
r
,
e
.
fn
.
dropdown
.
noConflict
=
function
(){
return
e
.
fn
.
dropdown
=
o
,
this
},
e
(
document
).
on
(
"
click.bs.dropdown.data-api
"
,
i
).
on
(
"
click.bs.dropdown.data-api
"
,
"
.dropdown form
"
,
function
(
e
){
e
.
stopPropagation
()}).
on
(
"
click.bs.dropdown.data-api
"
,
n
,
r
.
prototype
.
toggle
).
on
(
"
keydown.bs.dropdown.data-api
"
,
n
+
"
, [role=menu]
"
,
r
.
prototype
.
keydown
)}(
window
.
jQuery
),
+
function
(
e
){
"
use strict
"
;
var
t
=
function
(
t
,
n
){
this
.
options
=
n
,
this
.
$element
=
e
(
t
).
on
(
"
click.dismiss.modal
"
,
'
[data-dismiss="modal"]
'
,
e
.
proxy
(
this
.
hide
,
this
)),
this
.
$backdrop
=
this
.
isShown
=
null
,
this
.
options
.
remote
&&
this
.
$element
.
find
(
"
.modal-body
"
).
load
(
this
.
options
.
remote
)};
t
.
DEFAULTS
=
{
backdrop
:
!
0
,
keyboard
:
!
0
,
show
:
!
0
},
t
.
prototype
.
toggle
=
function
(){
return
this
[
this
.
isShown
?
"
hide
"
:
"
show
"
]()},
t
.
prototype
.
show
=
function
(){
var
t
=
this
,
n
=
e
.
Event
(
"
show.bs.modal
"
);
this
.
$element
.
trigger
(
n
);
if
(
this
.
isShown
||
n
.
isDefaultPrevented
())
return
;
this
.
isShown
=!
0
,
this
.
escape
(),
this
.
backdrop
(
function
(){
var
n
=
e
.
support
.
transition
&&
t
.
$element
.
hasClass
(
"
fade
"
);
t
.
$element
.
parent
().
length
||
t
.
$element
.
appendTo
(
document
.
body
),
t
.
$element
.
show
(),
n
&&
t
.
$element
[
0
].
offsetWidth
,
t
.
$element
.
addClass
(
"
in
"
).
attr
(
"
aria-hidden
"
,
!
1
),
t
.
enforceFocus
(),
n
?
t
.
$element
.
one
(
e
.
support
.
transition
.
end
,
function
(){
t
.
$element
.
focus
().
trigger
(
"
shown.bs.modal
"
)}).
emulateTransitionEnd
(
300
):
t
.
$element
.
focus
().
trigger
(
"
shown.bs.modal
"
)})},
t
.
prototype
.
hide
=
function
(
t
){
t
&&
t
.
preventDefault
(),
t
=
e
.
Event
(
"
hide.bs.modal
"
),
this
.
$element
.
trigger
(
t
);
if
(
!
this
.
isShown
||
t
.
isDefaultPrevented
())
return
;
this
.
isShown
=!
1
,
this
.
escape
(),
e
(
document
).
off
(
"
focusin.bs.modal
"
),
this
.
$element
.
removeClass
(
"
in
"
).
attr
(
"
aria-hidden
"
,
!
0
),
e
.
support
.
transition
&&
this
.
$element
.
hasClass
(
"
fade
"
)?
this
.
$element
.
one
(
e
.
support
.
transition
.
end
,
e
.
proxy
(
this
.
hideModal
,
this
)).
emulateTransitionEnd
(
300
):
this
.
hideModal
()},
t
.
prototype
.
enforceFocus
=
function
(){
e
(
document
).
off
(
"
focusin.bs.modal
"
).
on
(
"
focusin.bs.modal
"
,
e
.
proxy
(
function
(
e
){
this
.
$element
[
0
]
!==
e
.
target
&&!
this
.
$element
.
has
(
e
.
target
).
length
&&
this
.
$element
.
focus
()},
this
))},
t
.
prototype
.
escape
=
function
(){
this
.
isShown
&&
this
.
options
.
keyboard
?
this
.
$element
.
on
(
"
keyup.dismiss.bs.modal
"
,
e
.
proxy
(
function
(
e
){
e
.
which
==
27
&&
this
.
hide
()},
this
)):
this
.
isShown
||
this
.
$element
.
off
(
"
keyup.dismiss.bs.modal
"
)},
t
.
prototype
.
hideModal
=
function
(){
var
e
=
this
;
this
.
$element
.
hide
(),
this
.
backdrop
(
function
(){
e
.
removeBackdrop
(),
e
.
$element
.
trigger
(
"
hidden.bs.modal
"
)})},
t
.
prototype
.
removeBackdrop
=
function
(){
this
.
$backdrop
&&
this
.
$backdrop
.
remove
(),
this
.
$backdrop
=
null
},
t
.
prototype
.
backdrop
=
function
(
t
){
var
n
=
this
,
r
=
this
.
$element
.
hasClass
(
"
fade
"
)?
"
fade
"
:
""
;
if
(
this
.
isShown
&&
this
.
options
.
backdrop
){
var
i
=
e
.
support
.
transition
&&
r
;
this
.
$backdrop
=
e
(
'
<div class="modal-backdrop
'
+
r
+
'
" />
'
).
appendTo
(
document
.
body
),
this
.
$element
.
on
(
"
click
"
,
e
.
proxy
(
function
(
e
){
if
(
e
.
target
!==
e
.
currentTarget
)
return
;
this
.
options
.
backdrop
==
"
static
"
?
this
.
$element
[
0
].
focus
.
call
(
this
.
$element
[
0
]):
this
.
hide
.
call
(
this
)},
this
)),
i
&&
this
.
$backdrop
[
0
].
offsetWidth
,
this
.
$backdrop
.
addClass
(
"
in
"
);
if
(
!
t
)
return
;
i
?
this
.
$backdrop
.
one
(
e
.
support
.
transition
.
end
,
t
).
emulateTransitionEnd
(
150
):
t
()}
else
!
this
.
isShown
&&
this
.
$backdrop
?(
this
.
$backdrop
.
removeClass
(
"
in
"
),
e
.
support
.
transition
&&
this
.
$element
.
hasClass
(
"
fade
"
)?
this
.
$backdrop
.
one
(
e
.
support
.
transition
.
end
,
t
).
emulateTransitionEnd
(
150
):
t
()):
t
&&
t
()};
var
n
=
e
.
fn
.
modal
;
e
.
fn
.
modal
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"
bs.modal
"
),
s
=
e
.
extend
({},
t
.
DEFAULTS
,
r
.
data
(),
typeof
n
==
"
object
"
&&
n
);
i
||
r
.
data
(
"
bs.modal
"
,
i
=
new
t
(
this
,
s
)),
typeof
n
==
"
string
"
?
i
[
n
]():
s
.
show
&&
i
.
show
()})},
e
.
fn
.
modal
.
Constructor
=
t
,
e
.
fn
.
modal
.
noConflict
=
function
(){
return
e
.
fn
.
modal
=
n
,
this
},
e
(
document
).
on
(
"
click.bs.modal.data-api
"
,
'
[data-toggle="modal"]
'
,
function
(
t
){
var
n
=
e
(
this
),
r
=
n
.
attr
(
"
href
"
),
i
=
e
(
n
.
attr
(
"
data-target
"
)
||
r
&&
r
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
""
)),
s
=
i
.
data
(
"
modal
"
)?
"
toggle
"
:
e
.
extend
({
remote
:
!
/#/
.
test
(
r
)
&&
r
},
i
.
data
(),
n
.
data
());
t
.
preventDefault
(),
i
.
modal
(
s
).
one
(
"
hide
"
,
function
(){
n
.
is
(
"
:visible
"
)
&&
n
.
focus
()})});
var
r
=
e
(
document
.
body
).
on
(
"
shown.bs.modal
"
,
"
.modal
"
,
function
(){
r
.
addClass
(
"
modal-open
"
)}).
on
(
"
hidden.bs.modal
"
,
"
.modal
"
,
function
(){
r
.
removeClass
(
"
modal-open
"
)})}(
window
.
jQuery
),
+
function
(
e
){
"
use strict
"
;
var
t
=
function
(
e
,
t
){
this
.
type
=
this
.
options
=
this
.
enabled
=
this
.
timeout
=
this
.
hoverState
=
this
.
$element
=
null
,
this
.
init
(
"
tooltip
"
,
e
,
t
)};
t
.
DEFAULTS
=
{
animation
:
!
0
,
placement
:
"
top
"
,
selector
:
!
1
,
template
:
'
<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>
'
,
trigger
:
"
hover focus
"
,
title
:
""
,
delay
:
0
,
html
:
!
1
,
container
:
!
1
},
t
.
prototype
.
init
=
function
(
t
,
n
,
r
){
this
.
enabled
=!
0
,
this
.
type
=
t
,
this
.
$element
=
e
(
n
),
this
.
options
=
this
.
getOptions
(
r
);
var
i
=
this
.
options
.
trigger
.
split
(
"
"
);
for
(
var
s
=
i
.
length
;
s
--
;){
var
o
=
i
[
s
];
if
(
o
==
"
click
"
)
this
.
$element
.
on
(
"
click.
"
+
this
.
type
,
this
.
options
.
selector
,
e
.
proxy
(
this
.
toggle
,
this
));
else
if
(
o
!=
"
manual
"
){
var
u
=
o
==
"
hover
"
?
"
mouseenter
"
:
"
focus
"
,
a
=
o
==
"
hover
"
?
"
mouseleave
"
:
"
blur
"
;
this
.
$element
.
on
(
u
+
"
.
"
+
this
.
type
,
this
.
options
.
selector
,
e
.
proxy
(
this
.
enter
,
this
)),
this
.
$element
.
on
(
a
+
"
.
"
+
this
.
type
,
this
.
options
.
selector
,
e
.
proxy
(
this
.
leave
,
this
))}}
this
.
options
.
selector
?
this
.
_options
=
e
.
extend
({},
this
.
options
,{
trigger
:
"
manual
"
,
selector
:
""
}):
this
.
fixTitle
()},
t
.
prototype
.
getDefaults
=
function
(){
return
t
.
DEFAULTS
},
t
.
prototype
.
getOptions
=
function
(
t
){
return
t
=
e
.
extend
({},
this
.
getDefaults
(),
this
.
$element
.
data
(),
t
),
t
.
delay
&&
typeof
t
.
delay
==
"
number
"
&&
(
t
.
delay
=
{
show
:
t
.
delay
,
hide
:
t
.
delay
}),
t
},
t
.
prototype
.
enter
=
function
(
t
){
var
n
=
this
.
getDefaults
(),
r
=
{};
this
.
_options
&&
e
.
each
(
this
.
_options
,
function
(
e
,
t
){
n
[
e
]
!=
t
&&
(
r
[
e
]
=
t
)});
var
i
=
t
instanceof
this
.
constructor
?
t
:
e
(
t
.
currentTarget
)[
this
.
type
](
r
).
data
(
"
bs.
"
+
this
.
type
);
if
(
!
i
.
options
.
delay
||!
i
.
options
.
delay
.
show
)
return
i
.
show
();
clearTimeout
(
i
.
timeout
),
i
.
hoverState
=
"
in
"
,
i
.
timeout
=
setTimeout
(
function
(){
i
.
hoverState
==
"
in
"
&&
i
.
show
()},
i
.
options
.
delay
.
show
)},
t
.
prototype
.
leave
=
function
(
t
){
var
n
=
t
instanceof
this
.
constructor
?
t
:
e
(
t
.
currentTarget
)[
this
.
type
](
this
.
_options
).
data
(
"
bs.
"
+
this
.
type
);
clearTimeout
(
n
.
timeout
);
if
(
!
n
.
options
.
delay
||!
n
.
options
.
delay
.
hide
)
return
n
.
hide
();
n
.
hoverState
=
"
out
"
,
n
.
timeout
=
setTimeout
(
function
(){
n
.
hoverState
==
"
out
"
&&
n
.
hide
()},
n
.
options
.
delay
.
hide
)},
t
.
prototype
.
show
=
function
(){
var
t
=
e
.
Event
(
"
show.bs.
"
+
this
.
type
);
if
(
this
.
hasContent
()
&&
this
.
enabled
){
this
.
$element
.
trigger
(
t
);
if
(
t
.
isDefaultPrevented
())
return
;
var
n
=
this
.
tip
();
this
.
setContent
(),
this
.
options
.
animation
&&
n
.
addClass
(
"
fade
"
);
var
r
=
typeof
this
.
options
.
placement
==
"
function
"
?
this
.
options
.
placement
.
call
(
this
,
n
[
0
],
this
.
$element
[
0
]):
this
.
options
.
placement
,
i
=
/
\s?
auto
?\s?
/i
,
s
=
i
.
test
(
r
);
s
&&
(
r
=
r
.
replace
(
i
,
""
)
||
"
top
"
),
n
.
detach
().
css
({
top
:
0
,
left
:
0
,
display
:
"
block
"
}).
addClass
(
r
),
this
.
options
.
container
?
n
.
appendTo
(
this
.
options
.
container
):
n
.
insertAfter
(
this
.
$element
);
var
o
,
u
=
this
.
getPosition
(),
a
=
n
[
0
].
offsetWidth
,
f
=
n
[
0
].
offsetHeight
;
if
(
s
){
var
l
=
this
.
$element
.
parent
(),
c
=
r
,
h
=
document
.
documentElement
.
scrollTop
||
document
.
body
.
scrollTop
,
p
=
this
.
options
.
container
==
"
body
"
?
window
.
innerWidth
:
l
.
outerWidth
(),
d
=
this
.
options
.
container
==
"
body
"
?
window
.
innerHeight
:
l
.
outerHeight
(),
v
=
this
.
options
.
container
==
"
body
"
?
0
:
l
.
offset
().
left
;
r
=
r
==
"
bottom
"
&&
u
.
top
+
u
.
height
+
f
-
h
>
d
?
"
top
"
:
r
==
"
top
"
&&
u
.
top
-
h
-
f
<
0
?
"
bottom
"
:
r
==
"
right
"
&&
u
.
right
+
a
>
p
?
"
left
"
:
r
==
"
left
"
&&
u
.
left
-
a
<
v
?
"
right
"
:
r
,
n
.
removeClass
(
c
).
addClass
(
r
)}
switch
(
r
){
case
"
bottom
"
:
o
=
{
top
:
u
.
top
+
u
.
height
,
left
:
u
.
left
+
u
.
width
/
2
-
a
/
2
};
break
;
case
"
top
"
:
o
=
{
top
:
u
.
top
-
f
,
left
:
u
.
left
+
u
.
width
/
2
-
a
/
2
};
break
;
case
"
left
"
:
o
=
{
top
:
u
.
top
+
u
.
height
/
2
-
f
/
2
,
left
:
u
.
left
-
a
};
break
;
case
"
right
"
:
o
=
{
top
:
u
.
top
+
u
.
height
/
2
-
f
/
2
,
left
:
u
.
left
+
u
.
width
}}
this
.
applyPlacement
(
o
,
r
),
this
.
$element
.
trigger
(
"
shown.bs.
"
+
this
.
type
)}},
t
.
prototype
.
applyPlacement
=
function
(
e
,
t
){
var
n
,
r
=
this
.
tip
(),
i
=
r
[
0
].
offsetWidth
,
s
=
r
[
0
].
offsetHeight
;
r
.
offset
(
e
).
addClass
(
"
in
"
);
var
o
=
r
[
0
].
offsetWidth
,
u
=
r
[
0
].
offsetHeight
;
t
==
"
top
"
&&
u
!=
s
&&
(
n
=!
0
,
e
.
top
=
e
.
top
+
s
-
u
);
if
(
t
==
"
bottom
"
||
t
==
"
top
"
){
var
a
=
0
;
e
.
left
<
0
&&
(
a
=
e
.
left
*-
2
,
e
.
left
=
0
,
r
.
offset
(
e
),
o
=
r
[
0
].
offsetWidth
,
u
=
r
[
0
].
offsetHeight
),
this
.
replaceArrow
(
a
-
i
+
o
,
o
,
"
left
"
)}
else
this
.
replaceArrow
(
u
-
s
,
u
,
"
top
"
);
n
&&
r
.
offset
(
e
)},
t
.
prototype
.
replaceArrow
=
function
(
e
,
t
,
n
){
this
.
arrow
().
css
(
n
,
e
?
50
*
(
1
-
e
/
t
)
+
"
%
"
:
""
)},
t
.
prototype
.
setContent
=
function
(){
var
e
=
this
.
tip
(),
t
=
this
.
getTitle
();
e
.
find
(
"
.tooltip-inner
"
)[
this
.
options
.
html
?
"
html
"
:
"
text
"
](
t
),
e
.
removeClass
(
"
fade in top bottom left right
"
)},
t
.
prototype
.
hide
=
function
(){
var
t
=
this
,
n
=
this
.
tip
(),
r
=
e
.
Event
(
"
hide.bs.
"
+
this
.
type
);
this
.
$element
.
trigger
(
r
);
if
(
r
.
isDefaultPrevented
())
return
;
return
n
.
removeClass
(
"
in
"
),
e
.
support
.
transition
&&
this
.
$tip
.
hasClass
(
"
fade
"
)?
n
.
one
(
e
.
support
.
transition
.
end
,
n
.
detach
).
emulateTransitionEnd
(
150
):
n
.
detach
(),
this
.
$element
.
trigger
(
"
hidden.bs.
"
+
this
.
type
),
this
},
t
.
prototype
.
fixTitle
=
function
(){
var
e
=
this
.
$element
;(
e
.
attr
(
"
title
"
)
||
typeof
e
.
attr
(
"
data-original-title
"
)
!=
"
string
"
)
&&
e
.
attr
(
"
data-original-title
"
,
e
.
attr
(
"
title
"
)
||
""
).
attr
(
"
title
"
,
""
)},
t
.
prototype
.
hasContent
=
function
(){
return
this
.
getTitle
()},
t
.
prototype
.
getPosition
=
function
(){
var
t
=
this
.
$element
[
0
];
return
e
.
extend
({},
typeof
t
.
getBoundingClientRect
==
"
function
"
?
t
.
getBoundingClientRect
():{
width
:
t
.
offsetWidth
,
height
:
t
.
offsetHeight
},
this
.
$element
.
offset
())},
t
.
prototype
.
getTitle
=
function
(){
var
e
,
t
=
this
.
$element
,
n
=
this
.
options
;
return
e
=
t
.
attr
(
"
data-original-title
"
)
||
(
typeof
n
.
title
==
"
function
"
?
n
.
title
.
call
(
t
[
0
]):
n
.
title
),
e
},
t
.
prototype
.
tip
=
function
(){
return
this
.
$tip
=
this
.
$tip
||
e
(
this
.
options
.
template
)},
t
.
prototype
.
arrow
=
function
(){
return
this
.
$arrow
=
this
.
$arrow
||
this
.
tip
().
find
(
"
.tooltip-arrow
"
)},
t
.
prototype
.
validate
=
function
(){
this
.
$element
[
0
].
parentNode
||
(
this
.
hide
(),
this
.
$element
=
null
,
this
.
options
=
null
)},
t
.
prototype
.
enable
=
function
(){
this
.
enabled
=!
0
},
t
.
prototype
.
disable
=
function
(){
this
.
enabled
=!
1
},
t
.
prototype
.
toggleEnabled
=
function
(){
this
.
enabled
=!
this
.
enabled
},
t
.
prototype
.
toggle
=
function
(
t
){
var
n
=
t
?
e
(
t
.
currentTarget
)[
this
.
type
](
this
.
_options
).
data
(
"
bs.
"
+
this
.
type
):
this
;
n
.
tip
().
hasClass
(
"
in
"
)?
n
.
leave
(
n
):
n
.
enter
(
n
)},
t
.
prototype
.
destroy
=
function
(){
this
.
hide
().
$element
.
off
(
"
.
"
+
this
.
type
).
removeData
(
"
bs.
"
+
this
.
type
)};
var
n
=
e
.
fn
.
tooltip
;
e
.
fn
.
tooltip
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"
bs.tooltip
"
),
s
=
typeof
n
==
"
object
"
&&
n
;
i
||
r
.
data
(
"
bs.tooltip
"
,
i
=
new
t
(
this
,
s
)),
typeof
n
==
"
string
"
&&
i
[
n
]()})},
e
.
fn
.
tooltip
.
Constructor
=
t
,
e
.
fn
.
tooltip
.
noConflict
=
function
(){
return
e
.
fn
.
tooltip
=
n
,
this
}}(
window
.
jQuery
),
+
function
(
e
){
"
use strict
"
;
var
t
=
function
(
e
,
t
){
this
.
init
(
"
popover
"
,
e
,
t
)};
t
.
DEFAULTS
=
e
.
extend
({},
e
.
fn
.
tooltip
.
Constructor
.
DEFAULTS
,{
placement
:
"
right
"
,
trigger
:
"
click
"
,
content
:
""
,
template
:
'
<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>
'
}),
t
.
prototype
=
e
.
extend
({},
e
.
fn
.
tooltip
.
Constructor
.
prototype
),
t
.
prototype
.
constructor
=
t
,
t
.
prototype
.
getDefaults
=
function
(){
return
t
.
DEFAULTS
},
t
.
prototype
.
setContent
=
function
(){
var
e
=
this
.
tip
(),
t
=
this
.
getTitle
(),
n
=
this
.
getContent
();
e
.
find
(
"
.popover-title
"
)[
this
.
options
.
html
?
"
html
"
:
"
text
"
](
t
),
e
.
find
(
"
.popover-content
"
)[
this
.
options
.
html
?
"
html
"
:
"
text
"
](
n
),
e
.
removeClass
(
"
fade top bottom left right in
"
),
e
.
find
(
"
.popover-title:empty
"
).
hide
()},
t
.
prototype
.
hasContent
=
function
(){
return
this
.
getTitle
()
||
this
.
getContent
()},
t
.
prototype
.
getContent
=
function
(){
var
e
=
this
.
$element
,
t
=
this
.
options
;
return
e
.
attr
(
"
data-content
"
)
||
(
typeof
t
.
content
==
"
function
"
?
t
.
content
.
call
(
e
[
0
]):
t
.
content
)},
t
.
prototype
.
tip
=
function
(){
return
this
.
$tip
||
(
this
.
$tip
=
e
(
this
.
options
.
template
)),
this
.
$tip
},
t
.
prototype
.
destroy
=
function
(){
this
.
hide
().
$element
.
off
(
"
.
"
+
this
.
type
).
removeData
(
this
.
type
)};
var
n
=
e
.
fn
.
popover
;
e
.
fn
.
popover
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"
bs.popover
"
),
s
=
typeof
n
==
"
object
"
&&
n
;
i
||
r
.
data
(
"
bs.popover
"
,
i
=
new
t
(
this
,
s
)),
typeof
n
==
"
string
"
&&
i
[
n
]()})},
e
.
fn
.
popover
.
Constructor
=
t
,
e
.
fn
.
popover
.
noConflict
=
function
(){
return
e
.
fn
.
popover
=
n
,
this
}}(
window
.
jQuery
),
+
function
(
e
){
"
use strict
"
;
function
t
(
n
,
r
){
var
i
,
s
=
e
.
proxy
(
this
.
process
,
this
),
o
=
e
(
n
).
is
(
"
body
"
)?
e
(
window
):
e
(
n
);
this
.
$body
=
e
(
"
body
"
),
this
.
$scrollElement
=
o
.
on
(
"
scroll.bs.scroll-spy.data-api
"
,
s
),
this
.
options
=
e
.
extend
({},
t
.
DEFAULTS
,
r
),
this
.
selector
=
(
this
.
options
.
target
||
(
i
=
e
(
n
).
attr
(
"
href
"
))
&&
i
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
""
)
||
""
)
+
"
.nav li > a
"
,
this
.
offsets
=
e
([]),
this
.
targets
=
e
([]),
this
.
activeTarget
=
null
,
this
.
refresh
(),
this
.
process
()}
t
.
DEFAULTS
=
{
offset
:
10
},
t
.
prototype
.
refresh
=
function
(){
this
.
offsets
=
e
([]),
this
.
targets
=
e
([]);
var
t
=
this
,
n
=
this
.
$body
.
find
(
this
.
selector
).
map
(
function
(){
var
n
=
e
(
this
),
r
=
n
.
data
(
"
target
"
)
||
n
.
attr
(
"
href
"
),
i
=
/^#
\w
/
.
test
(
r
)
&&
e
(
r
);
return
i
&&
i
.
length
&&
[[
i
.
position
().
top
+
(
!
e
.
isWindow
(
t
.
$scrollElement
.
get
(
0
))
&&
t
.
$scrollElement
.
scrollTop
()),
r
]]
||
null
}).
sort
(
function
(
e
,
t
){
return
e
[
0
]
-
t
[
0
]}).
each
(
function
(){
t
.
offsets
.
push
(
this
[
0
]),
t
.
targets
.
push
(
this
[
1
])})},
t
.
prototype
.
process
=
function
(){
var
e
=
this
.
$scrollElement
.
scrollTop
()
+
this
.
options
.
offset
,
t
=
this
.
$scrollElement
[
0
].
scrollHeight
||
this
.
$body
[
0
].
scrollHeight
,
n
=
t
-
this
.
$scrollElement
.
height
(),
r
=
this
.
offsets
,
i
=
this
.
targets
,
s
=
this
.
activeTarget
,
o
;
if
(
e
>=
n
)
return
s
!=
(
o
=
i
.
last
()[
0
])
&&
this
.
activate
(
o
);
for
(
o
=
r
.
length
;
o
--
;)
s
!=
i
[
o
]
&&
e
>=
r
[
o
]
&&
(
!
r
[
o
+
1
]
||
e
<=
r
[
o
+
1
])
&&
this
.
activate
(
i
[
o
])},
t
.
prototype
.
activate
=
function
(
t
){
this
.
activeTarget
=
t
,
e
(
this
.
selector
).
parents
(
"
.active
"
).
removeClass
(
"
active
"
);
var
n
=
this
.
selector
+
'
[data-target="
'
+
t
+
'
"],
'
+
this
.
selector
+
'
[href="
'
+
t
+
'
"]
'
,
r
=
e
(
n
).
parents
(
"
li
"
).
addClass
(
"
active
"
);
r
.
parent
(
"
.dropdown-menu
"
).
length
&&
(
r
=
r
.
closest
(
"
li.dropdown
"
).
addClass
(
"
active
"
)),
r
.
trigger
(
"
activate
"
)};
var
n
=
e
.
fn
.
scrollspy
;
e
.
fn
.
scrollspy
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"
bs.scrollspy
"
),
s
=
typeof
n
==
"
object
"
&&
n
;
i
||
r
.
data
(
"
bs.scrollspy
"
,
i
=
new
t
(
this
,
s
)),
typeof
n
==
"
string
"
&&
i
[
n
]()})},
e
.
fn
.
scrollspy
.
Constructor
=
t
,
e
.
fn
.
scrollspy
.
noConflict
=
function
(){
return
e
.
fn
.
scrollspy
=
n
,
this
},
e
(
window
).
on
(
"
load
"
,
function
(){
e
(
'
[data-spy="scroll"]
'
).
each
(
function
(){
var
t
=
e
(
this
);
t
.
scrollspy
(
t
.
data
())})})}(
window
.
jQuery
),
+
function
(
e
){
"
use strict
"
;
var
t
=
function
(
t
){
this
.
element
=
e
(
t
)};
t
.
prototype
.
show
=
function
(){
var
t
=
this
.
element
,
n
=
t
.
closest
(
"
ul:not(.dropdown-menu)
"
),
r
=
t
.
attr
(
"
data-target
"
);
r
||
(
r
=
t
.
attr
(
"
href
"
),
r
=
r
&&
r
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
""
));
if
(
t
.
parent
(
"
li
"
).
hasClass
(
"
active
"
))
return
;
var
i
=
n
.
find
(
"
.active:last a
"
)[
0
],
s
=
e
.
Event
(
"
show.bs.tab
"
,{
relatedTarget
:
i
});
t
.
trigger
(
s
);
if
(
s
.
isDefaultPrevented
())
return
;
var
o
=
e
(
r
);
this
.
activate
(
t
.
parent
(
"
li
"
),
n
),
this
.
activate
(
o
,
o
.
parent
(),
function
(){
t
.
trigger
({
type
:
"
shown.bs.tab
"
,
relatedTarget
:
i
})})},
t
.
prototype
.
activate
=
function
(
t
,
n
,
r
){
function
o
(){
i
.
removeClass
(
"
active
"
).
find
(
"
> .dropdown-menu > .active
"
).
removeClass
(
"
active
"
),
t
.
addClass
(
"
active
"
),
s
?(
t
[
0
].
offsetWidth
,
t
.
addClass
(
"
in
"
)):
t
.
removeClass
(
"
fade
"
),
t
.
parent
(
"
.dropdown-menu
"
)
&&
t
.
closest
(
"
li.dropdown
"
).
addClass
(
"
active
"
),
r
&&
r
()}
var
i
=
n
.
find
(
"
> .active
"
),
s
=
r
&&
e
.
support
.
transition
&&
i
.
hasClass
(
"
fade
"
);
s
?
i
.
one
(
e
.
support
.
transition
.
end
,
o
).
emulateTransitionEnd
(
150
):
o
(),
i
.
removeClass
(
"
in
"
)};
var
n
=
e
.
fn
.
tab
;
e
.
fn
.
tab
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"
bs.tab
"
);
i
||
r
.
data
(
"
bs.tab
"
,
i
=
new
t
(
this
)),
typeof
n
==
"
string
"
&&
i
[
n
]()})},
e
.
fn
.
tab
.
Constructor
=
t
,
e
.
fn
.
tab
.
noConflict
=
function
(){
return
e
.
fn
.
tab
=
n
,
this
},
e
(
document
).
on
(
"
click.bs.tab.data-api
"
,
'
[data-toggle="tab"], [data-toggle="pill"]
'
,
function
(
t
){
t
.
preventDefault
(),
e
(
this
).
tab
(
"
show
"
)})}(
window
.
jQuery
),
+
function
(
e
){
"
use strict
"
;
var
t
=
function
(
n
,
r
){
this
.
options
=
e
.
extend
({},
t
.
DEFAULTS
,
r
),
this
.
$window
=
e
(
window
).
on
(
"
scroll.bs.affix.data-api
"
,
e
.
proxy
(
this
.
checkPosition
,
this
)).
on
(
"
click.bs.affix.data-api
"
,
e
.
proxy
(
this
.
checkPositionWithEventLoop
,
this
)),
this
.
$element
=
e
(
n
),
this
.
affixed
=
this
.
unpin
=
null
,
this
.
checkPosition
()};
t
.
DEFAULTS
=
{
offset
:
0
},
t
.
prototype
.
checkPositionWithEventLoop
=
function
(){
setTimeout
(
e
.
proxy
(
this
.
checkPosition
,
this
),
1
)},
t
.
prototype
.
checkPosition
=
function
(){
if
(
!
this
.
$element
.
is
(
"
:visible
"
))
return
;
var
t
=
e
(
document
).
height
(),
n
=
this
.
$window
.
scrollTop
(),
r
=
this
.
$element
.
offset
(),
i
=
this
.
options
.
offset
,
s
=
i
.
top
,
o
=
i
.
bottom
,
u
=
"
affix affix-top affix-bottom
"
;
typeof
i
!=
"
object
"
&&
(
o
=
s
=
i
),
typeof
s
==
"
function
"
&&
(
s
=
i
.
top
()),
typeof
o
==
"
function
"
&&
(
o
=
i
.
bottom
());
var
a
=
this
.
unpin
!=
null
&&
n
+
this
.
unpin
<=
r
.
top
?
!
1
:
o
!=
null
&&
r
.
top
+
this
.
$element
.
height
()
>=
t
-
o
?
"
bottom
"
:
s
!=
null
&&
n
<=
s
?
"
top
"
:
!
1
;
if
(
this
.
affixed
===
a
)
return
;
this
.
affixed
=
a
,
this
.
unpin
=
a
==
"
bottom
"
?
r
.
top
-
n
:
null
,
this
.
$element
.
removeClass
(
u
).
addClass
(
"
affix
"
+
(
a
?
"
-
"
+
a
:
""
))};
var
n
=
e
.
fn
.
affix
;
e
.
fn
.
affix
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"
bs.affix
"
),
s
=
typeof
n
==
"
object
"
&&
n
;
i
||
r
.
data
(
"
bs.affix
"
,
i
=
new
t
(
this
,
s
)),
typeof
n
==
"
string
"
&&
i
[
n
]()})},
e
.
fn
.
affix
.
Constructor
=
t
,
e
.
fn
.
affix
.
noConflict
=
function
(){
return
e
.
fn
.
affix
=
n
,
this
},
e
(
window
).
on
(
"
load
"
,
function
(){
e
(
'
[data-spy="affix"]
'
).
each
(
function
(){
var
t
=
e
(
this
),
n
=
t
.
data
();
n
.
offset
=
n
.
offset
||
{},
n
.
offsetBottom
&&
(
n
.
offset
.
bottom
=
n
.
offsetBottom
),
n
.
offsetTop
&&
(
n
.
offset
.
top
=
n
.
offsetTop
),
t
.
affix
(
n
)})})}(
window
.
jQuery
);
+
function
(
e
){
"
use strict
"
;
function
t
(){
var
e
=
document
.
createElement
(
"
bootstrap
"
),
t
=
{
WebkitTransition
:
"
webkitTransitionEnd
"
,
MozTransition
:
"
transitionend
"
,
OTransition
:
"
oTransitionEnd otransitionend
"
,
transition
:
"
transitionend
"
};
for
(
var
n
in
t
)
if
(
e
.
style
[
n
]
!==
undefined
)
return
{
end
:
t
[
n
]}}
e
.
fn
.
emulateTransitionEnd
=
function
(
t
){
var
n
=!
1
,
r
=
this
;
e
(
this
).
one
(
"
webkitTransitionEnd
"
,
function
(){
n
=!
0
});
var
i
=
function
(){
n
||
e
(
r
).
trigger
(
"
webkitTransitionEnd
"
)};
setTimeout
(
i
,
t
)},
e
(
function
(){
e
.
support
.
transition
=
t
()})}(
window
.
jQuery
),
+
function
(
e
){
"
use strict
"
;
var
t
=
'
[data-dismiss="alert"]
'
,
n
=
function
(
n
){
e
(
n
).
on
(
"
click
"
,
t
,
this
.
close
)};
n
.
prototype
.
close
=
function
(
t
){
function
s
(){
i
.
trigger
(
"
closed.bs.alert
"
).
remove
()}
var
n
=
e
(
this
),
r
=
n
.
attr
(
"
data-target
"
);
r
||
(
r
=
n
.
attr
(
"
href
"
),
r
=
r
&&
r
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
""
));
var
i
=
e
(
r
);
t
&&
t
.
preventDefault
(),
i
.
length
||
(
i
=
n
.
hasClass
(
"
alert
"
)?
n
:
n
.
parent
()),
i
.
trigger
(
t
=
e
.
Event
(
"
close.bs.alert
"
));
if
(
t
.
isDefaultPrevented
())
return
;
i
.
removeClass
(
"
in
"
),
e
.
support
.
transition
&&
i
.
hasClass
(
"
fade
"
)?
i
.
one
(
e
.
support
.
transition
.
end
,
s
).
emulateTransitionEnd
(
150
):
s
()};
var
r
=
e
.
fn
.
alert
;
e
.
fn
.
alert
=
function
(
t
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"
bs.alert
"
);
i
||
r
.
data
(
"
bs.alert
"
,
i
=
new
n
(
this
)),
typeof
t
==
"
string
"
&&
i
[
t
].
call
(
r
)})},
e
.
fn
.
alert
.
Constructor
=
n
,
e
.
fn
.
alert
.
noConflict
=
function
(){
return
e
.
fn
.
alert
=
r
,
this
},
e
(
document
).
on
(
"
click.bs.alert.data-api
"
,
t
,
n
.
prototype
.
close
)}(
window
.
jQuery
),
+
function
(
e
){
"
use strict
"
;
var
t
=
function
(
n
,
r
){
this
.
$element
=
e
(
n
),
this
.
options
=
e
.
extend
({},
t
.
DEFAULTS
,
r
)};
t
.
DEFAULTS
=
{
loadingText
:
"
loading...
"
},
t
.
prototype
.
setState
=
function
(
e
){
var
t
=
"
disabled
"
,
n
=
this
.
$element
,
r
=
n
.
is
(
"
input
"
)?
"
val
"
:
"
html
"
,
i
=
n
.
data
();
e
+=
"
Text
"
,
i
.
resetText
||
n
.
data
(
"
resetText
"
,
n
[
r
]()),
n
[
r
](
i
[
e
]
||
this
.
options
[
e
]),
setTimeout
(
function
(){
e
==
"
loadingText
"
?
n
.
addClass
(
t
).
attr
(
t
,
t
):
n
.
removeClass
(
t
).
removeAttr
(
t
)},
0
)},
t
.
prototype
.
toggle
=
function
(){
var
e
=
this
.
$element
.
closest
(
'
[data-toggle="buttons"]
'
);
if
(
e
.
length
){
var
t
=
this
.
$element
.
find
(
"
input
"
).
prop
(
"
checked
"
,
!
this
.
$element
.
hasClass
(
"
active
"
));
t
.
prop
(
"
type
"
)
===
"
radio
"
&&
e
.
find
(
"
.active
"
).
removeClass
(
"
active
"
)}
this
.
$element
.
toggleClass
(
"
active
"
)};
var
n
=
e
.
fn
.
button
;
e
.
fn
.
button
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"
button
"
),
s
=
typeof
n
==
"
object
"
&&
n
;
i
||
r
.
data
(
"
bs.button
"
,
i
=
new
t
(
this
,
s
)),
n
==
"
toggle
"
?
i
.
toggle
():
n
&&
i
.
setState
(
n
)})},
e
.
fn
.
button
.
Constructor
=
t
,
e
.
fn
.
button
.
noConflict
=
function
(){
return
e
.
fn
.
button
=
n
,
this
},
e
(
document
).
on
(
"
click.bs.button.data-api
"
,
"
[data-toggle^=button]
"
,
function
(
t
){
var
n
=
e
(
t
.
target
);
n
.
hasClass
(
"
btn
"
)
||
(
n
=
n
.
closest
(
"
.btn
"
)),
n
.
button
(
"
toggle
"
),
t
.
preventDefault
()})}(
window
.
jQuery
),
+
function
(
e
){
"
use strict
"
;
var
t
=
function
(
t
,
n
){
this
.
$element
=
e
(
t
),
this
.
$indicators
=
this
.
$element
.
find
(
"
.carousel-indicators
"
),
this
.
options
=
n
,
this
.
paused
=
this
.
sliding
=
this
.
interval
=
this
.
$active
=
this
.
$items
=
null
,
this
.
options
.
pause
==
"
hover
"
&&
this
.
$element
.
on
(
"
mouseenter
"
,
e
.
proxy
(
this
.
pause
,
this
)).
on
(
"
mouseleave
"
,
e
.
proxy
(
this
.
cycle
,
this
))};
t
.
DEFAULTS
=
{
interval
:
5
e3
,
pause
:
"
hover
"
},
t
.
prototype
.
cycle
=
function
(
t
){
return
t
||
(
this
.
paused
=!
1
),
this
.
interval
&&
clearInterval
(
this
.
interval
),
this
.
options
.
interval
&&!
this
.
paused
&&
(
this
.
interval
=
setInterval
(
e
.
proxy
(
this
.
next
,
this
),
this
.
options
.
interval
)),
this
},
t
.
prototype
.
getActiveIndex
=
function
(){
return
this
.
$active
=
this
.
$element
.
find
(
"
.item.active
"
),
this
.
$items
=
this
.
$active
.
parent
().
children
(),
this
.
$items
.
index
(
this
.
$active
)},
t
.
prototype
.
to
=
function
(
t
){
var
n
=
this
,
r
=
this
.
getActiveIndex
();
if
(
t
>
this
.
$items
.
length
-
1
||
t
<
0
)
return
;
return
this
.
sliding
?
this
.
$element
.
one
(
"
slid
"
,
function
(){
n
.
to
(
t
)}):
r
==
t
?
this
.
pause
().
cycle
():
this
.
slide
(
t
>
r
?
"
next
"
:
"
prev
"
,
e
(
this
.
$items
[
t
]))},
t
.
prototype
.
pause
=
function
(
t
){
return
t
||
(
this
.
paused
=!
0
),
this
.
$element
.
find
(
"
.next, .prev
"
).
length
&&
e
.
support
.
transition
.
end
&&
(
this
.
$element
.
trigger
(
e
.
support
.
transition
.
end
),
this
.
cycle
(
!
0
)),
this
.
interval
=
clearInterval
(
this
.
interval
),
this
},
t
.
prototype
.
next
=
function
(){
if
(
this
.
sliding
)
return
;
return
this
.
slide
(
"
next
"
)},
t
.
prototype
.
prev
=
function
(){
if
(
this
.
sliding
)
return
;
return
this
.
slide
(
"
prev
"
)},
t
.
prototype
.
slide
=
function
(
t
,
n
){
var
r
=
this
.
$element
.
find
(
"
.item.active
"
),
i
=
n
||
r
[
t
](),
s
=
this
.
interval
,
o
=
t
==
"
next
"
?
"
left
"
:
"
right
"
,
u
=
t
==
"
next
"
?
"
first
"
:
"
last
"
,
a
=
this
;
this
.
sliding
=!
0
,
s
&&
this
.
pause
(),
i
=
i
.
length
?
i
:
this
.
$element
.
find
(
"
.item
"
)[
u
]();
var
f
=
e
.
Event
(
"
slide.bs.carousel
"
,{
relatedTarget
:
i
[
0
],
direction
:
o
});
if
(
i
.
hasClass
(
"
active
"
))
return
;
this
.
$indicators
.
length
&&
(
this
.
$indicators
.
find
(
"
.active
"
).
removeClass
(
"
active
"
),
this
.
$element
.
one
(
"
slid
"
,
function
(){
var
t
=
e
(
a
.
$indicators
.
children
()[
a
.
getActiveIndex
()]);
t
&&
t
.
addClass
(
"
active
"
)}));
if
(
e
.
support
.
transition
&&
this
.
$element
.
hasClass
(
"
slide
"
)){
this
.
$element
.
trigger
(
f
);
if
(
f
.
isDefaultPrevented
())
return
;
i
.
addClass
(
t
),
i
[
0
].
offsetWidth
,
r
.
addClass
(
o
),
i
.
addClass
(
o
),
r
.
one
(
e
.
support
.
transition
.
end
,
function
(){
i
.
removeClass
([
t
,
o
].
join
(
"
"
)).
addClass
(
"
active
"
),
r
.
removeClass
([
"
active
"
,
o
].
join
(
"
"
)),
a
.
sliding
=!
1
,
setTimeout
(
function
(){
a
.
$element
.
trigger
(
"
slid
"
)},
0
)}).
emulateTransitionEnd
(
600
)}
else
{
this
.
$element
.
trigger
(
f
);
if
(
f
.
isDefaultPrevented
())
return
;
r
.
removeClass
(
"
active
"
),
i
.
addClass
(
"
active
"
),
this
.
sliding
=!
1
,
this
.
$element
.
trigger
(
"
slid
"
)}
return
s
&&
this
.
cycle
(),
this
};
var
n
=
e
.
fn
.
carousel
;
e
.
fn
.
carousel
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"
bs.carousel
"
),
s
=
e
.
extend
({},
t
.
DEFAULTS
,
r
.
data
(),
typeof
n
==
"
object
"
&&
n
),
o
=
typeof
n
==
"
string
"
?
n
:
s
.
slide
;
i
||
r
.
data
(
"
bs.carousel
"
,
i
=
new
t
(
this
,
s
)),
typeof
n
==
"
number
"
?
i
.
to
(
n
):
o
?
i
[
o
]():
s
.
interval
&&
i
.
pause
().
cycle
()})},
e
.
fn
.
carousel
.
Constructor
=
t
,
e
.
fn
.
carousel
.
noConflict
=
function
(){
return
e
.
fn
.
carousel
=
n
,
this
},
e
(
document
).
on
(
"
click.bs.carousel.data-api
"
,
"
[data-slide], [data-slide-to]
"
,
function
(
t
){
var
n
=
e
(
this
),
r
,
i
=
e
(
n
.
attr
(
"
data-target
"
)
||
(
r
=
n
.
attr
(
"
href
"
))
&&
r
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
""
)),
s
=
e
.
extend
({},
i
.
data
(),
n
.
data
()),
o
=
n
.
attr
(
"
data-slide-to
"
);
o
&&
(
s
.
interval
=!
1
),
i
.
carousel
(
s
),(
o
=
n
.
attr
(
"
data-slide-to
"
))
&&
i
.
data
(
"
bs.carousel
"
).
to
(
o
),
t
.
preventDefault
()}),
e
(
window
).
on
(
"
load
"
,
function
(){
e
(
'
[data-ride="carousel"]
'
).
each
(
function
(){
var
t
=
e
(
this
);
t
.
carousel
(
t
.
data
())})})}(
window
.
jQuery
),
+
function
(
e
){
"
use strict
"
;
var
t
=
function
(
n
,
r
){
this
.
$element
=
e
(
n
),
this
.
options
=
e
.
extend
({},
t
.
DEFAULTS
,
r
),
this
.
transitioning
=
null
,
this
.
options
.
parent
&&
(
this
.
$parent
=
e
(
this
.
options
.
parent
)),
this
.
options
.
toggle
&&
this
.
toggle
()};
t
.
DEFAULTS
=
{
toggle
:
!
0
},
t
.
prototype
.
dimension
=
function
(){
var
e
=
this
.
$element
.
hasClass
(
"
width
"
);
return
e
?
"
width
"
:
"
height
"
},
t
.
prototype
.
show
=
function
(){
if
(
this
.
transitioning
||
this
.
$element
.
hasClass
(
"
in
"
))
return
;
var
t
=
e
.
Event
(
"
show.bs.collapse
"
);
this
.
$element
.
trigger
(
t
);
if
(
t
.
isDefaultPrevented
())
return
;
var
n
=
this
.
dimension
(),
r
=
e
.
camelCase
([
"
scroll
"
,
n
].
join
(
"
-
"
)),
i
=
this
.
$parent
&&
this
.
$parent
.
find
(
"
> .accordion-group > .in
"
);
if
(
i
&&
i
.
length
){
var
s
=
i
.
data
(
"
bs.collapse
"
);
if
(
s
&&
s
.
transitioning
)
return
;
i
.
collapse
(
"
hide
"
),
s
||
i
.
data
(
"
bs.collapse
"
,
null
)}
this
.
$element
[
n
](
0
),
this
.
transition
(
"
addClass
"
,
"
shown.bs.collapse
"
),
e
.
support
.
transition
&&
this
.
$element
[
n
](
this
.
$element
[
0
][
r
])},
t
.
prototype
.
hide
=
function
(){
if
(
this
.
transitioning
||!
this
.
$element
.
hasClass
(
"
in
"
))
return
;
var
t
=
e
.
Event
(
"
hide.bs.collapse
"
);
this
.
$element
.
trigger
(
t
);
if
(
t
.
isDefaultPrevented
())
return
;
var
n
=
this
.
dimension
();
this
.
reset
(
this
.
$element
[
n
]()),
this
.
transition
(
"
removeClass
"
,
"
shown.bs.hidden
"
),
this
.
$element
[
n
](
0
)},
t
.
prototype
.
reset
=
function
(
e
){
var
t
=
this
.
dimension
();
return
this
.
$element
.
removeClass
(
"
collapse
"
)[
t
](
e
||
"
auto
"
)[
0
].
offsetWidth
,
this
.
$element
[
e
!=
null
?
"
addClass
"
:
"
removeClass
"
](
"
collapse
"
),
this
},
t
.
prototype
.
transition
=
function
(
t
,
n
){
var
r
=
this
,
i
=
function
(){
n
==
"
shown.bs.collapse
"
&&
r
.
reset
(),
r
.
transitioning
=
0
,
r
.
$element
.
trigger
(
n
)};
this
.
transitioning
=
1
,
this
.
$element
[
t
](
"
in
"
),
e
.
support
.
transition
&&
this
.
$element
.
hasClass
(
"
collapse
"
)?
this
.
$element
.
one
(
e
.
support
.
transition
.
end
,
i
).
emulateTransitionEnd
(
350
):
i
()},
t
.
prototype
.
toggle
=
function
(){
this
[
this
.
$element
.
hasClass
(
"
in
"
)?
"
hide
"
:
"
show
"
]()};
var
n
=
e
.
fn
.
collapse
;
e
.
fn
.
collapse
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"
bs.collapse
"
),
s
=
e
.
extend
({},
t
.
DEFAULTS
,
r
.
data
(),
typeof
n
==
"
object
"
&&
n
);
i
||
r
.
data
(
"
bs.collapse
"
,
i
=
new
t
(
this
,
s
)),
typeof
n
==
"
string
"
&&
i
[
n
]()})},
e
.
fn
.
collapse
.
Constructor
=
t
,
e
.
fn
.
collapse
.
noConflict
=
function
(){
return
e
.
fn
.
collapse
=
n
,
this
},
e
(
document
).
on
(
"
click.bs.collapse.data-api
"
,
"
[data-toggle=collapse]
"
,
function
(
t
){
var
n
=
e
(
this
),
r
,
i
=
n
.
attr
(
"
data-target
"
)
||
t
.
preventDefault
()
||
(
r
=
n
.
attr
(
"
href
"
))
&&
r
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
""
),
s
=
e
(
i
),
o
=
s
.
data
(
"
bs.collapse
"
),
u
=
o
?
"
toggle
"
:
n
.
data
(),
a
=
n
.
attr
(
"
data-parent
"
),
f
=
a
&&
e
(
a
);
if
(
!
o
||!
o
.
transitioning
)
f
&&
f
.
find
(
"
[data-toggle=collapse][data-parent=
"
+
a
+
"
]
"
).
not
(
n
).
addClass
(
"
collapsed
"
),
n
[
s
.
hasClass
(
"
in
"
)?
"
addClass
"
:
"
removeClass
"
](
"
collapsed
"
);
s
.
collapse
(
u
)})}(
window
.
jQuery
),
+
function
(
e
){
"
use strict
"
;
function
i
(){
e
(
t
).
remove
(),
e
(
n
).
each
(
function
(
t
){
var
n
=
s
(
e
(
this
));
if
(
!
n
.
hasClass
(
"
open
"
))
return
;
n
.
trigger
(
t
=
e
.
Event
(
"
hide.bs.dropdown
"
));
if
(
t
.
isDefaultPrevented
())
return
;
n
.
removeClass
(
"
open
"
).
trigger
(
"
hidden.bs.dropdown
"
)})}
function
s
(
t
){
var
n
=
t
.
attr
(
"
data-target
"
);
n
||
(
n
=
t
.
attr
(
"
href
"
),
n
=
n
&&
/#/
.
test
(
n
)
&&
n
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
""
));
var
r
=
n
&&
e
(
n
);
return
r
&&
r
.
length
?
r
:
t
.
parent
()}
var
t
=
"
.dropdown-backdrop
"
,
n
=
"
[data-toggle=dropdown]
"
,
r
=
function
(
t
){
var
n
=
e
(
t
).
on
(
"
click.bs.dropdown
"
,
this
.
toggle
)};
r
.
prototype
.
toggle
=
function
(
t
){
var
n
=
e
(
this
);
if
(
n
.
is
(
"
.disabled, :disabled
"
))
return
;
var
r
=
s
(
n
),
o
=
r
.
hasClass
(
"
open
"
);
i
();
if
(
!
o
){
"
ontouchstart
"
in
document
.
documentElement
&&
e
(
'
<div class="dropdown-backdrop"/>
'
).
insertAfter
(
e
(
this
)).
on
(
"
click
"
,
i
),
r
.
trigger
(
t
=
e
.
Event
(
"
show.bs.dropdown
"
));
if
(
t
.
isDefaultPrevented
())
return
;
r
.
toggleClass
(
"
open
"
).
trigger
(
"
shown.bs.dropdown
"
)}
return
n
.
focus
(),
!
1
},
r
.
prototype
.
keydown
=
function
(
t
){
if
(
!
/
(
38|40|27
)
/
.
test
(
t
.
keyCode
))
return
;
var
r
=
e
(
this
);
t
.
preventDefault
(),
t
.
stopPropagation
();
if
(
r
.
is
(
"
.disabled, :disabled
"
))
return
;
var
i
=
s
(
r
),
o
=
i
.
hasClass
(
"
open
"
);
if
(
!
o
||
o
&&
t
.
keyCode
==
27
)
return
t
.
which
==
27
&&
i
.
find
(
n
).
focus
(),
r
.
click
();
var
u
=
e
(
"
[role=menu] li:not(.divider):visible a
"
,
i
);
if
(
!
u
.
length
)
return
;
var
a
=
u
.
index
(
u
.
filter
(
"
:focus
"
));
t
.
keyCode
==
38
&&
a
>
0
&&
a
--
,
t
.
keyCode
==
40
&&
a
<
u
.
length
-
1
&&
a
++
,
~
a
||
(
a
=
0
),
u
.
eq
(
a
).
focus
()};
var
o
=
e
.
fn
.
dropdown
;
e
.
fn
.
dropdown
=
function
(
t
){
return
this
.
each
(
function
(){
var
n
=
e
(
this
),
i
=
n
.
data
(
"
dropdown
"
);
i
||
n
.
data
(
"
dropdown
"
,
i
=
new
r
(
this
)),
typeof
t
==
"
string
"
&&
i
[
t
].
call
(
n
)})},
e
.
fn
.
dropdown
.
Constructor
=
r
,
e
.
fn
.
dropdown
.
noConflict
=
function
(){
return
e
.
fn
.
dropdown
=
o
,
this
},
e
(
document
).
on
(
"
click.bs.dropdown.data-api
"
,
i
).
on
(
"
click.bs.dropdown.data-api
"
,
"
.dropdown form
"
,
function
(
e
){
e
.
stopPropagation
()}).
on
(
"
click.bs.dropdown.data-api
"
,
n
,
r
.
prototype
.
toggle
).
on
(
"
keydown.bs.dropdown.data-api
"
,
n
+
"
, [role=menu]
"
,
r
.
prototype
.
keydown
)}(
window
.
jQuery
),
+
function
(
e
){
"
use strict
"
;
var
t
=
function
(
t
,
n
){
this
.
options
=
n
,
this
.
$element
=
e
(
t
).
on
(
"
click.dismiss.modal
"
,
'
[data-dismiss="modal"]
'
,
e
.
proxy
(
this
.
hide
,
this
)),
this
.
$backdrop
=
this
.
isShown
=
null
,
this
.
options
.
remote
&&
this
.
$element
.
find
(
"
.modal-body
"
).
load
(
this
.
options
.
remote
)};
t
.
DEFAULTS
=
{
backdrop
:
!
0
,
keyboard
:
!
0
,
show
:
!
0
},
t
.
prototype
.
toggle
=
function
(){
return
this
[
this
.
isShown
?
"
hide
"
:
"
show
"
]()},
t
.
prototype
.
show
=
function
(){
var
t
=
this
,
n
=
e
.
Event
(
"
show.bs.modal
"
);
this
.
$element
.
trigger
(
n
);
if
(
this
.
isShown
||
n
.
isDefaultPrevented
())
return
;
this
.
isShown
=!
0
,
this
.
escape
(),
this
.
backdrop
(
function
(){
var
n
=
e
.
support
.
transition
&&
t
.
$element
.
hasClass
(
"
fade
"
);
t
.
$element
.
parent
().
length
||
t
.
$element
.
appendTo
(
document
.
body
),
t
.
$element
.
show
(),
n
&&
t
.
$element
[
0
].
offsetWidth
,
t
.
$element
.
addClass
(
"
in
"
).
attr
(
"
aria-hidden
"
,
!
1
),
t
.
enforceFocus
(),
n
?
t
.
$element
.
one
(
e
.
support
.
transition
.
end
,
function
(){
t
.
$element
.
focus
().
trigger
(
"
shown.bs.modal
"
)}).
emulateTransitionEnd
(
300
):
t
.
$element
.
focus
().
trigger
(
"
shown.bs.modal
"
)})},
t
.
prototype
.
hide
=
function
(
t
){
t
&&
t
.
preventDefault
(),
t
=
e
.
Event
(
"
hide.bs.modal
"
),
this
.
$element
.
trigger
(
t
);
if
(
!
this
.
isShown
||
t
.
isDefaultPrevented
())
return
;
this
.
isShown
=!
1
,
this
.
escape
(),
e
(
document
).
off
(
"
focusin.bs.modal
"
),
this
.
$element
.
removeClass
(
"
in
"
).
attr
(
"
aria-hidden
"
,
!
0
),
e
.
support
.
transition
&&
this
.
$element
.
hasClass
(
"
fade
"
)?
this
.
$element
.
one
(
e
.
support
.
transition
.
end
,
e
.
proxy
(
this
.
hideModal
,
this
)).
emulateTransitionEnd
(
300
):
this
.
hideModal
()},
t
.
prototype
.
enforceFocus
=
function
(){
e
(
document
).
off
(
"
focusin.bs.modal
"
).
on
(
"
focusin.bs.modal
"
,
e
.
proxy
(
function
(
e
){
this
.
$element
[
0
]
!==
e
.
target
&&!
this
.
$element
.
has
(
e
.
target
).
length
&&
this
.
$element
.
focus
()},
this
))},
t
.
prototype
.
escape
=
function
(){
this
.
isShown
&&
this
.
options
.
keyboard
?
this
.
$element
.
on
(
"
keyup.dismiss.bs.modal
"
,
e
.
proxy
(
function
(
e
){
e
.
which
==
27
&&
this
.
hide
()},
this
)):
this
.
isShown
||
this
.
$element
.
off
(
"
keyup.dismiss.bs.modal
"
)},
t
.
prototype
.
hideModal
=
function
(){
var
e
=
this
;
this
.
$element
.
hide
(),
this
.
backdrop
(
function
(){
e
.
removeBackdrop
(),
e
.
$element
.
trigger
(
"
hidden.bs.modal
"
)})},
t
.
prototype
.
removeBackdrop
=
function
(){
this
.
$backdrop
&&
this
.
$backdrop
.
remove
(),
this
.
$backdrop
=
null
},
t
.
prototype
.
backdrop
=
function
(
t
){
var
n
=
this
,
r
=
this
.
$element
.
hasClass
(
"
fade
"
)?
"
fade
"
:
""
;
if
(
this
.
isShown
&&
this
.
options
.
backdrop
){
var
i
=
e
.
support
.
transition
&&
r
;
this
.
$backdrop
=
e
(
'
<div class="modal-backdrop
'
+
r
+
'
" />
'
).
appendTo
(
document
.
body
),
this
.
$element
.
on
(
"
click
"
,
e
.
proxy
(
function
(
e
){
if
(
e
.
target
!==
e
.
currentTarget
)
return
;
this
.
options
.
backdrop
==
"
static
"
?
this
.
$element
[
0
].
focus
.
call
(
this
.
$element
[
0
]):
this
.
hide
.
call
(
this
)},
this
)),
i
&&
this
.
$backdrop
[
0
].
offsetWidth
,
this
.
$backdrop
.
addClass
(
"
in
"
);
if
(
!
t
)
return
;
i
?
this
.
$backdrop
.
one
(
e
.
support
.
transition
.
end
,
t
).
emulateTransitionEnd
(
150
):
t
()}
else
!
this
.
isShown
&&
this
.
$backdrop
?(
this
.
$backdrop
.
removeClass
(
"
in
"
),
e
.
support
.
transition
&&
this
.
$element
.
hasClass
(
"
fade
"
)?
this
.
$backdrop
.
one
(
e
.
support
.
transition
.
end
,
t
).
emulateTransitionEnd
(
150
):
t
()):
t
&&
t
()};
var
n
=
e
.
fn
.
modal
;
e
.
fn
.
modal
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"
bs.modal
"
),
s
=
e
.
extend
({},
t
.
DEFAULTS
,
r
.
data
(),
typeof
n
==
"
object
"
&&
n
);
i
||
r
.
data
(
"
bs.modal
"
,
i
=
new
t
(
this
,
s
)),
typeof
n
==
"
string
"
?
i
[
n
]():
s
.
show
&&
i
.
show
()})},
e
.
fn
.
modal
.
Constructor
=
t
,
e
.
fn
.
modal
.
noConflict
=
function
(){
return
e
.
fn
.
modal
=
n
,
this
},
e
(
document
).
on
(
"
click.bs.modal.data-api
"
,
'
[data-toggle="modal"]
'
,
function
(
t
){
var
n
=
e
(
this
),
r
=
n
.
attr
(
"
href
"
),
i
=
e
(
n
.
attr
(
"
data-target
"
)
||
r
&&
r
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
""
)),
s
=
i
.
data
(
"
modal
"
)?
"
toggle
"
:
e
.
extend
({
remote
:
!
/#/
.
test
(
r
)
&&
r
},
i
.
data
(),
n
.
data
());
t
.
preventDefault
(),
i
.
modal
(
s
).
one
(
"
hide
"
,
function
(){
n
.
is
(
"
:visible
"
)
&&
n
.
focus
()})});
var
r
=
e
(
document
.
body
).
on
(
"
shown.bs.modal
"
,
"
.modal
"
,
function
(){
r
.
addClass
(
"
modal-open
"
)}).
on
(
"
hidden.bs.modal
"
,
"
.modal
"
,
function
(){
r
.
removeClass
(
"
modal-open
"
)})}(
window
.
jQuery
),
+
function
(
e
){
"
use strict
"
;
var
t
=
function
(
e
,
t
){
this
.
type
=
this
.
options
=
this
.
enabled
=
this
.
timeout
=
this
.
hoverState
=
this
.
$element
=
null
,
this
.
init
(
"
tooltip
"
,
e
,
t
)};
t
.
DEFAULTS
=
{
animation
:
!
0
,
placement
:
"
top
"
,
selector
:
!
1
,
template
:
'
<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>
'
,
trigger
:
"
hover focus
"
,
title
:
""
,
delay
:
0
,
html
:
!
1
,
container
:
!
1
},
t
.
prototype
.
init
=
function
(
t
,
n
,
r
){
this
.
enabled
=!
0
,
this
.
type
=
t
,
this
.
$element
=
e
(
n
),
this
.
options
=
this
.
getOptions
(
r
);
var
i
=
this
.
options
.
trigger
.
split
(
"
"
);
for
(
var
s
=
i
.
length
;
s
--
;){
var
o
=
i
[
s
];
if
(
o
==
"
click
"
)
this
.
$element
.
on
(
"
click.
"
+
this
.
type
,
this
.
options
.
selector
,
e
.
proxy
(
this
.
toggle
,
this
));
else
if
(
o
!=
"
manual
"
){
var
u
=
o
==
"
hover
"
?
"
mouseenter
"
:
"
focus
"
,
a
=
o
==
"
hover
"
?
"
mouseleave
"
:
"
blur
"
;
this
.
$element
.
on
(
u
+
"
.
"
+
this
.
type
,
this
.
options
.
selector
,
e
.
proxy
(
this
.
enter
,
this
)),
this
.
$element
.
on
(
a
+
"
.
"
+
this
.
type
,
this
.
options
.
selector
,
e
.
proxy
(
this
.
leave
,
this
))}}
this
.
options
.
selector
?
this
.
_options
=
e
.
extend
({},
this
.
options
,{
trigger
:
"
manual
"
,
selector
:
""
}):
this
.
fixTitle
()},
t
.
prototype
.
getDefaults
=
function
(){
return
t
.
DEFAULTS
},
t
.
prototype
.
getOptions
=
function
(
t
){
return
t
=
e
.
extend
({},
this
.
getDefaults
(),
this
.
$element
.
data
(),
t
),
t
.
delay
&&
typeof
t
.
delay
==
"
number
"
&&
(
t
.
delay
=
{
show
:
t
.
delay
,
hide
:
t
.
delay
}),
t
},
t
.
prototype
.
enter
=
function
(
t
){
var
n
=
this
.
getDefaults
(),
r
=
{};
this
.
_options
&&
e
.
each
(
this
.
_options
,
function
(
e
,
t
){
n
[
e
]
!=
t
&&
(
r
[
e
]
=
t
)});
var
i
=
t
instanceof
this
.
constructor
?
t
:
e
(
t
.
currentTarget
)[
this
.
type
](
r
).
data
(
"
bs.
"
+
this
.
type
);
clearTimeout
(
i
.
timeout
);
if
(
!
i
.
options
.
delay
||!
i
.
options
.
delay
.
show
)
return
i
.
show
();
i
.
hoverState
=
"
in
"
,
i
.
timeout
=
setTimeout
(
function
(){
i
.
hoverState
==
"
in
"
&&
i
.
show
()},
i
.
options
.
delay
.
show
)},
t
.
prototype
.
leave
=
function
(
t
){
var
n
=
t
instanceof
this
.
constructor
?
t
:
e
(
t
.
currentTarget
)[
this
.
type
](
this
.
_options
).
data
(
"
bs.
"
+
this
.
type
);
clearTimeout
(
n
.
timeout
);
if
(
!
n
.
options
.
delay
||!
n
.
options
.
delay
.
hide
)
return
n
.
hide
();
n
.
hoverState
=
"
out
"
,
n
.
timeout
=
setTimeout
(
function
(){
n
.
hoverState
==
"
out
"
&&
n
.
hide
()},
n
.
options
.
delay
.
hide
)},
t
.
prototype
.
show
=
function
(){
var
t
=
e
.
Event
(
"
show.bs.
"
+
this
.
type
);
if
(
this
.
hasContent
()
&&
this
.
enabled
){
this
.
$element
.
trigger
(
t
);
if
(
t
.
isDefaultPrevented
())
return
;
var
n
=
this
.
tip
();
this
.
setContent
(),
this
.
options
.
animation
&&
n
.
addClass
(
"
fade
"
);
var
r
=
typeof
this
.
options
.
placement
==
"
function
"
?
this
.
options
.
placement
.
call
(
this
,
n
[
0
],
this
.
$element
[
0
]):
this
.
options
.
placement
,
i
=
/
\s?
auto
?\s?
/i
,
s
=
i
.
test
(
r
);
s
&&
(
r
=
r
.
replace
(
i
,
""
)
||
"
top
"
),
n
.
detach
().
css
({
top
:
0
,
left
:
0
,
display
:
"
block
"
}).
addClass
(
r
),
this
.
options
.
container
?
n
.
appendTo
(
this
.
options
.
container
):
n
.
insertAfter
(
this
.
$element
);
var
o
,
u
=
this
.
getPosition
(),
a
=
n
[
0
].
offsetWidth
,
f
=
n
[
0
].
offsetHeight
;
if
(
s
){
var
l
=
this
.
$element
.
parent
(),
c
=
r
,
h
=
document
.
documentElement
.
scrollTop
||
document
.
body
.
scrollTop
,
p
=
this
.
options
.
container
==
"
body
"
?
window
.
innerWidth
:
l
.
outerWidth
(),
d
=
this
.
options
.
container
==
"
body
"
?
window
.
innerHeight
:
l
.
outerHeight
(),
v
=
this
.
options
.
container
==
"
body
"
?
0
:
l
.
offset
().
left
;
r
=
r
==
"
bottom
"
&&
u
.
top
+
u
.
height
+
f
-
h
>
d
?
"
top
"
:
r
==
"
top
"
&&
u
.
top
-
h
-
f
<
0
?
"
bottom
"
:
r
==
"
right
"
&&
u
.
right
+
a
>
p
?
"
left
"
:
r
==
"
left
"
&&
u
.
left
-
a
<
v
?
"
right
"
:
r
,
n
.
removeClass
(
c
).
addClass
(
r
)}
switch
(
r
){
case
"
bottom
"
:
o
=
{
top
:
u
.
top
+
u
.
height
,
left
:
u
.
left
+
u
.
width
/
2
-
a
/
2
};
break
;
case
"
top
"
:
o
=
{
top
:
u
.
top
-
f
,
left
:
u
.
left
+
u
.
width
/
2
-
a
/
2
};
break
;
case
"
left
"
:
o
=
{
top
:
u
.
top
+
u
.
height
/
2
-
f
/
2
,
left
:
u
.
left
-
a
};
break
;
case
"
right
"
:
o
=
{
top
:
u
.
top
+
u
.
height
/
2
-
f
/
2
,
left
:
u
.
left
+
u
.
width
}}
this
.
applyPlacement
(
o
,
r
),
this
.
$element
.
trigger
(
"
shown.bs.
"
+
this
.
type
)}},
t
.
prototype
.
applyPlacement
=
function
(
e
,
t
){
var
n
,
r
=
this
.
tip
(),
i
=
r
[
0
].
offsetWidth
,
s
=
r
[
0
].
offsetHeight
;
r
.
offset
(
e
).
addClass
(
"
in
"
);
var
o
=
r
[
0
].
offsetWidth
,
u
=
r
[
0
].
offsetHeight
;
t
==
"
top
"
&&
u
!=
s
&&
(
n
=!
0
,
e
.
top
=
e
.
top
+
s
-
u
);
if
(
t
==
"
bottom
"
||
t
==
"
top
"
){
var
a
=
0
;
e
.
left
<
0
&&
(
a
=
e
.
left
*-
2
,
e
.
left
=
0
,
r
.
offset
(
e
),
o
=
r
[
0
].
offsetWidth
,
u
=
r
[
0
].
offsetHeight
),
this
.
replaceArrow
(
a
-
i
+
o
,
o
,
"
left
"
)}
else
this
.
replaceArrow
(
u
-
s
,
u
,
"
top
"
);
n
&&
r
.
offset
(
e
)},
t
.
prototype
.
replaceArrow
=
function
(
e
,
t
,
n
){
this
.
arrow
().
css
(
n
,
e
?
50
*
(
1
-
e
/
t
)
+
"
%
"
:
""
)},
t
.
prototype
.
setContent
=
function
(){
var
e
=
this
.
tip
(),
t
=
this
.
getTitle
();
e
.
find
(
"
.tooltip-inner
"
)[
this
.
options
.
html
?
"
html
"
:
"
text
"
](
t
),
e
.
removeClass
(
"
fade in top bottom left right
"
)},
t
.
prototype
.
hide
=
function
(){
var
t
=
this
,
n
=
this
.
tip
(),
r
=
e
.
Event
(
"
hide.bs.
"
+
this
.
type
);
this
.
$element
.
trigger
(
r
);
if
(
r
.
isDefaultPrevented
())
return
;
return
n
.
removeClass
(
"
in
"
),
e
.
support
.
transition
&&
this
.
$tip
.
hasClass
(
"
fade
"
)?
n
.
one
(
e
.
support
.
transition
.
end
,
n
.
detach
).
emulateTransitionEnd
(
150
):
n
.
detach
(),
this
.
$element
.
trigger
(
"
hidden.bs.
"
+
this
.
type
),
this
},
t
.
prototype
.
fixTitle
=
function
(){
var
e
=
this
.
$element
;(
e
.
attr
(
"
title
"
)
||
typeof
e
.
attr
(
"
data-original-title
"
)
!=
"
string
"
)
&&
e
.
attr
(
"
data-original-title
"
,
e
.
attr
(
"
title
"
)
||
""
).
attr
(
"
title
"
,
""
)},
t
.
prototype
.
hasContent
=
function
(){
return
this
.
getTitle
()},
t
.
prototype
.
getPosition
=
function
(){
var
t
=
this
.
$element
[
0
];
return
e
.
extend
({},
typeof
t
.
getBoundingClientRect
==
"
function
"
?
t
.
getBoundingClientRect
():{
width
:
t
.
offsetWidth
,
height
:
t
.
offsetHeight
},
this
.
$element
.
offset
())},
t
.
prototype
.
getTitle
=
function
(){
var
e
,
t
=
this
.
$element
,
n
=
this
.
options
;
return
e
=
t
.
attr
(
"
data-original-title
"
)
||
(
typeof
n
.
title
==
"
function
"
?
n
.
title
.
call
(
t
[
0
]):
n
.
title
),
e
},
t
.
prototype
.
tip
=
function
(){
return
this
.
$tip
=
this
.
$tip
||
e
(
this
.
options
.
template
)},
t
.
prototype
.
arrow
=
function
(){
return
this
.
$arrow
=
this
.
$arrow
||
this
.
tip
().
find
(
"
.tooltip-arrow
"
)},
t
.
prototype
.
validate
=
function
(){
this
.
$element
[
0
].
parentNode
||
(
this
.
hide
(),
this
.
$element
=
null
,
this
.
options
=
null
)},
t
.
prototype
.
enable
=
function
(){
this
.
enabled
=!
0
},
t
.
prototype
.
disable
=
function
(){
this
.
enabled
=!
1
},
t
.
prototype
.
toggleEnabled
=
function
(){
this
.
enabled
=!
this
.
enabled
},
t
.
prototype
.
toggle
=
function
(
t
){
var
n
=
t
?
e
(
t
.
currentTarget
)[
this
.
type
](
this
.
_options
).
data
(
"
bs.
"
+
this
.
type
):
this
;
n
.
tip
().
hasClass
(
"
in
"
)?
n
.
leave
(
n
):
n
.
enter
(
n
)},
t
.
prototype
.
destroy
=
function
(){
this
.
hide
().
$element
.
off
(
"
.
"
+
this
.
type
).
removeData
(
"
bs.
"
+
this
.
type
)};
var
n
=
e
.
fn
.
tooltip
;
e
.
fn
.
tooltip
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"
bs.tooltip
"
),
s
=
typeof
n
==
"
object
"
&&
n
;
i
||
r
.
data
(
"
bs.tooltip
"
,
i
=
new
t
(
this
,
s
)),
typeof
n
==
"
string
"
&&
i
[
n
]()})},
e
.
fn
.
tooltip
.
Constructor
=
t
,
e
.
fn
.
tooltip
.
noConflict
=
function
(){
return
e
.
fn
.
tooltip
=
n
,
this
}}(
window
.
jQuery
),
+
function
(
e
){
"
use strict
"
;
var
t
=
function
(
e
,
t
){
this
.
init
(
"
popover
"
,
e
,
t
)};
t
.
DEFAULTS
=
e
.
extend
({},
e
.
fn
.
tooltip
.
Constructor
.
DEFAULTS
,{
placement
:
"
right
"
,
trigger
:
"
click
"
,
content
:
""
,
template
:
'
<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>
'
}),
t
.
prototype
=
e
.
extend
({},
e
.
fn
.
tooltip
.
Constructor
.
prototype
),
t
.
prototype
.
constructor
=
t
,
t
.
prototype
.
getDefaults
=
function
(){
return
t
.
DEFAULTS
},
t
.
prototype
.
setContent
=
function
(){
var
e
=
this
.
tip
(),
t
=
this
.
getTitle
(),
n
=
this
.
getContent
();
e
.
find
(
"
.popover-title
"
)[
this
.
options
.
html
?
"
html
"
:
"
text
"
](
t
),
e
.
find
(
"
.popover-content
"
)[
this
.
options
.
html
?
"
html
"
:
"
text
"
](
n
),
e
.
removeClass
(
"
fade top bottom left right in
"
),
e
.
find
(
"
.popover-title:empty
"
).
hide
()},
t
.
prototype
.
hasContent
=
function
(){
return
this
.
getTitle
()
||
this
.
getContent
()},
t
.
prototype
.
getContent
=
function
(){
var
e
=
this
.
$element
,
t
=
this
.
options
;
return
e
.
attr
(
"
data-content
"
)
||
(
typeof
t
.
content
==
"
function
"
?
t
.
content
.
call
(
e
[
0
]):
t
.
content
)},
t
.
prototype
.
tip
=
function
(){
return
this
.
$tip
||
(
this
.
$tip
=
e
(
this
.
options
.
template
)),
this
.
$tip
},
t
.
prototype
.
destroy
=
function
(){
this
.
hide
().
$element
.
off
(
"
.
"
+
this
.
type
).
removeData
(
this
.
type
)};
var
n
=
e
.
fn
.
popover
;
e
.
fn
.
popover
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"
bs.popover
"
),
s
=
typeof
n
==
"
object
"
&&
n
;
i
||
r
.
data
(
"
bs.popover
"
,
i
=
new
t
(
this
,
s
)),
typeof
n
==
"
string
"
&&
i
[
n
]()})},
e
.
fn
.
popover
.
Constructor
=
t
,
e
.
fn
.
popover
.
noConflict
=
function
(){
return
e
.
fn
.
popover
=
n
,
this
}}(
window
.
jQuery
),
+
function
(
e
){
"
use strict
"
;
function
t
(
n
,
r
){
var
i
,
s
=
e
.
proxy
(
this
.
process
,
this
),
o
=
e
(
n
).
is
(
"
body
"
)?
e
(
window
):
e
(
n
);
this
.
$body
=
e
(
"
body
"
),
this
.
$scrollElement
=
o
.
on
(
"
scroll.bs.scroll-spy.data-api
"
,
s
),
this
.
options
=
e
.
extend
({},
t
.
DEFAULTS
,
r
),
this
.
selector
=
(
this
.
options
.
target
||
(
i
=
e
(
n
).
attr
(
"
href
"
))
&&
i
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
""
)
||
""
)
+
"
.nav li > a
"
,
this
.
offsets
=
e
([]),
this
.
targets
=
e
([]),
this
.
activeTarget
=
null
,
this
.
refresh
(),
this
.
process
()}
t
.
DEFAULTS
=
{
offset
:
10
},
t
.
prototype
.
refresh
=
function
(){
this
.
offsets
=
e
([]),
this
.
targets
=
e
([]);
var
t
=
this
,
n
=
this
.
$body
.
find
(
this
.
selector
).
map
(
function
(){
var
n
=
e
(
this
),
r
=
n
.
data
(
"
target
"
)
||
n
.
attr
(
"
href
"
),
i
=
/^#
\w
/
.
test
(
r
)
&&
e
(
r
);
return
i
&&
i
.
length
&&
[[
i
.
position
().
top
+
(
!
e
.
isWindow
(
t
.
$scrollElement
.
get
(
0
))
&&
t
.
$scrollElement
.
scrollTop
()),
r
]]
||
null
}).
sort
(
function
(
e
,
t
){
return
e
[
0
]
-
t
[
0
]}).
each
(
function
(){
t
.
offsets
.
push
(
this
[
0
]),
t
.
targets
.
push
(
this
[
1
])})},
t
.
prototype
.
process
=
function
(){
var
e
=
this
.
$scrollElement
.
scrollTop
()
+
this
.
options
.
offset
,
t
=
this
.
$scrollElement
[
0
].
scrollHeight
||
this
.
$body
[
0
].
scrollHeight
,
n
=
t
-
this
.
$scrollElement
.
height
(),
r
=
this
.
offsets
,
i
=
this
.
targets
,
s
=
this
.
activeTarget
,
o
;
if
(
e
>=
n
)
return
s
!=
(
o
=
i
.
last
()[
0
])
&&
this
.
activate
(
o
);
for
(
o
=
r
.
length
;
o
--
;)
s
!=
i
[
o
]
&&
e
>=
r
[
o
]
&&
(
!
r
[
o
+
1
]
||
e
<=
r
[
o
+
1
])
&&
this
.
activate
(
i
[
o
])},
t
.
prototype
.
activate
=
function
(
t
){
this
.
activeTarget
=
t
,
e
(
this
.
selector
).
parents
(
"
.active
"
).
removeClass
(
"
active
"
);
var
n
=
this
.
selector
+
'
[data-target="
'
+
t
+
'
"],
'
+
this
.
selector
+
'
[href="
'
+
t
+
'
"]
'
,
r
=
e
(
n
).
parents
(
"
li
"
).
addClass
(
"
active
"
);
r
.
parent
(
"
.dropdown-menu
"
).
length
&&
(
r
=
r
.
closest
(
"
li.dropdown
"
).
addClass
(
"
active
"
)),
r
.
trigger
(
"
activate
"
)};
var
n
=
e
.
fn
.
scrollspy
;
e
.
fn
.
scrollspy
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"
bs.scrollspy
"
),
s
=
typeof
n
==
"
object
"
&&
n
;
i
||
r
.
data
(
"
bs.scrollspy
"
,
i
=
new
t
(
this
,
s
)),
typeof
n
==
"
string
"
&&
i
[
n
]()})},
e
.
fn
.
scrollspy
.
Constructor
=
t
,
e
.
fn
.
scrollspy
.
noConflict
=
function
(){
return
e
.
fn
.
scrollspy
=
n
,
this
},
e
(
window
).
on
(
"
load
"
,
function
(){
e
(
'
[data-spy="scroll"]
'
).
each
(
function
(){
var
t
=
e
(
this
);
t
.
scrollspy
(
t
.
data
())})})}(
window
.
jQuery
),
+
function
(
e
){
"
use strict
"
;
var
t
=
function
(
t
){
this
.
element
=
e
(
t
)};
t
.
prototype
.
show
=
function
(){
var
t
=
this
.
element
,
n
=
t
.
closest
(
"
ul:not(.dropdown-menu)
"
),
r
=
t
.
attr
(
"
data-target
"
);
r
||
(
r
=
t
.
attr
(
"
href
"
),
r
=
r
&&
r
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
""
));
if
(
t
.
parent
(
"
li
"
).
hasClass
(
"
active
"
))
return
;
var
i
=
n
.
find
(
"
.active:last a
"
)[
0
],
s
=
e
.
Event
(
"
show.bs.tab
"
,{
relatedTarget
:
i
});
t
.
trigger
(
s
);
if
(
s
.
isDefaultPrevented
())
return
;
var
o
=
e
(
r
);
this
.
activate
(
t
.
parent
(
"
li
"
),
n
),
this
.
activate
(
o
,
o
.
parent
(),
function
(){
t
.
trigger
({
type
:
"
shown.bs.tab
"
,
relatedTarget
:
i
})})},
t
.
prototype
.
activate
=
function
(
t
,
n
,
r
){
function
o
(){
i
.
removeClass
(
"
active
"
).
find
(
"
> .dropdown-menu > .active
"
).
removeClass
(
"
active
"
),
t
.
addClass
(
"
active
"
),
s
?(
t
[
0
].
offsetWidth
,
t
.
addClass
(
"
in
"
)):
t
.
removeClass
(
"
fade
"
),
t
.
parent
(
"
.dropdown-menu
"
)
&&
t
.
closest
(
"
li.dropdown
"
).
addClass
(
"
active
"
),
r
&&
r
()}
var
i
=
n
.
find
(
"
> .active
"
),
s
=
r
&&
e
.
support
.
transition
&&
i
.
hasClass
(
"
fade
"
);
s
?
i
.
one
(
e
.
support
.
transition
.
end
,
o
).
emulateTransitionEnd
(
150
):
o
(),
i
.
removeClass
(
"
in
"
)};
var
n
=
e
.
fn
.
tab
;
e
.
fn
.
tab
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"
bs.tab
"
);
i
||
r
.
data
(
"
bs.tab
"
,
i
=
new
t
(
this
)),
typeof
n
==
"
string
"
&&
i
[
n
]()})},
e
.
fn
.
tab
.
Constructor
=
t
,
e
.
fn
.
tab
.
noConflict
=
function
(){
return
e
.
fn
.
tab
=
n
,
this
},
e
(
document
).
on
(
"
click.bs.tab.data-api
"
,
'
[data-toggle="tab"], [data-toggle="pill"]
'
,
function
(
t
){
t
.
preventDefault
(),
e
(
this
).
tab
(
"
show
"
)})}(
window
.
jQuery
),
+
function
(
e
){
"
use strict
"
;
var
t
=
function
(
n
,
r
){
this
.
options
=
e
.
extend
({},
t
.
DEFAULTS
,
r
),
this
.
$window
=
e
(
window
).
on
(
"
scroll.bs.affix.data-api
"
,
e
.
proxy
(
this
.
checkPosition
,
this
)).
on
(
"
click.bs.affix.data-api
"
,
e
.
proxy
(
this
.
checkPositionWithEventLoop
,
this
)),
this
.
$element
=
e
(
n
),
this
.
affixed
=
this
.
unpin
=
null
,
this
.
checkPosition
()};
t
.
DEFAULTS
=
{
offset
:
0
},
t
.
prototype
.
checkPositionWithEventLoop
=
function
(){
setTimeout
(
e
.
proxy
(
this
.
checkPosition
,
this
),
1
)},
t
.
prototype
.
checkPosition
=
function
(){
if
(
!
this
.
$element
.
is
(
"
:visible
"
))
return
;
var
t
=
e
(
document
).
height
(),
n
=
this
.
$window
.
scrollTop
(),
r
=
this
.
$element
.
offset
(),
i
=
this
.
options
.
offset
,
s
=
i
.
top
,
o
=
i
.
bottom
,
u
=
"
affix affix-top affix-bottom
"
;
typeof
i
!=
"
object
"
&&
(
o
=
s
=
i
),
typeof
s
==
"
function
"
&&
(
s
=
i
.
top
()),
typeof
o
==
"
function
"
&&
(
o
=
i
.
bottom
());
var
a
=
this
.
unpin
!=
null
&&
n
+
this
.
unpin
<=
r
.
top
?
!
1
:
o
!=
null
&&
r
.
top
+
this
.
$element
.
height
()
>=
t
-
o
?
"
bottom
"
:
s
!=
null
&&
n
<=
s
?
"
top
"
:
!
1
;
if
(
this
.
affixed
===
a
)
return
;
this
.
affixed
=
a
,
this
.
unpin
=
a
==
"
bottom
"
?
r
.
top
-
n
:
null
,
this
.
$element
.
removeClass
(
u
).
addClass
(
"
affix
"
+
(
a
?
"
-
"
+
a
:
""
))};
var
n
=
e
.
fn
.
affix
;
e
.
fn
.
affix
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"
bs.affix
"
),
s
=
typeof
n
==
"
object
"
&&
n
;
i
||
r
.
data
(
"
bs.affix
"
,
i
=
new
t
(
this
,
s
)),
typeof
n
==
"
string
"
&&
i
[
n
]()})},
e
.
fn
.
affix
.
Constructor
=
t
,
e
.
fn
.
affix
.
noConflict
=
function
(){
return
e
.
fn
.
affix
=
n
,
this
},
e
(
window
).
on
(
"
load
"
,
function
(){
e
(
'
[data-spy="affix"]
'
).
each
(
function
(){
var
t
=
e
(
this
),
n
=
t
.
data
();
n
.
offset
=
n
.
offset
||
{},
n
.
offsetBottom
&&
(
n
.
offset
.
bottom
=
n
.
offsetBottom
),
n
.
offsetTop
&&
(
n
.
offset
.
top
=
n
.
offsetTop
),
t
.
affix
(
n
)})})}(
window
.
jQuery
);
\ No newline at end of file
\ No newline at end of file
This diff is collapsed.
Click to expand it.
js/carousel.js
+
1
-
1
View file @
eaefed51
...
@@ -130,7 +130,7 @@
...
@@ -130,7 +130,7 @@
$next
[
0
].
offsetWidth
// force reflow
$next
[
0
].
offsetWidth
// force reflow
$active
.
addClass
(
direction
)
$active
.
addClass
(
direction
)
$next
.
addClass
(
direction
)
$next
.
addClass
(
direction
)
this
.
$element
.
find
(
'
.item
'
)
$active
.
one
(
$
.
support
.
transition
.
end
,
function
()
{
.
one
(
$
.
support
.
transition
.
end
,
function
()
{
$next
.
removeClass
([
type
,
direction
].
join
(
'
'
)).
addClass
(
'
active
'
)
$next
.
removeClass
([
type
,
direction
].
join
(
'
'
)).
addClass
(
'
active
'
)
$active
.
removeClass
([
'
active
'
,
direction
].
join
(
'
'
))
$active
.
removeClass
([
'
active
'
,
direction
].
join
(
'
'
))
...
...
This diff is collapsed.
Click to expand it.
js/tests/unit/tooltip.js
+
45
-
0
View file @
eaefed51
...
@@ -181,6 +181,51 @@ $(function () {
...
@@ -181,6 +181,51 @@ $(function () {
},
100
)
},
100
)
})
})
test
(
"
should wait 200 ms before hiding the tooltip
"
,
3
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"></a>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
tooltip
({
delay
:
{
show
:
0
,
hide
:
200
}
})
stop
()
tooltip
.
trigger
(
'
mouseenter
'
)
setTimeout
(
function
()
{
ok
(
$
(
"
.tooltip
"
).
is
(
'
.fade.in
'
),
'
tooltip is faded in
'
)
tooltip
.
trigger
(
'
mouseout
'
)
setTimeout
(
function
()
{
ok
(
$
(
"
.tooltip
"
).
is
(
'
.fade.in
'
),
'
100ms:tooltip is still faded in
'
)
setTimeout
(
function
()
{
ok
(
!
$
(
"
.tooltip
"
).
is
(
'
.in
'
),
'
tooltip removed
'
)
start
()
},
150
)
},
100
)
},
1
)
})
test
(
"
should not hide tooltip if leave event occurs, then tooltip is show immediately again
"
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"></a>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
tooltip
({
delay
:
{
show
:
0
,
hide
:
200
}
})
stop
()
tooltip
.
trigger
(
'
mouseenter
'
)
setTimeout
(
function
()
{
ok
(
$
(
"
.tooltip
"
).
is
(
'
.fade.in
'
),
'
tooltip is faded in
'
)
tooltip
.
trigger
(
'
mouseout
'
)
setTimeout
(
function
()
{
ok
(
$
(
"
.tooltip
"
).
is
(
'
.fade.in
'
),
'
100ms:tooltip is still faded in
'
)
tooltip
.
trigger
(
'
mouseenter
'
)
setTimeout
(
function
()
{
ok
(
$
(
"
.tooltip
"
).
is
(
'
.in
'
),
'
tooltip removed
'
)
start
()
},
150
)
},
100
)
},
1
)
})
test
(
"
should not show tooltip if leave event occurs before delay expires
"
,
function
()
{
test
(
"
should not show tooltip if leave event occurs before delay expires
"
,
function
()
{
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"></a>
'
)
var
tooltip
=
$
(
'
<a href="#" rel="tooltip" title="Another tooltip"></a>
'
)
.
appendTo
(
'
#qunit-fixture
'
)
.
appendTo
(
'
#qunit-fixture
'
)
...
...
This diff is collapsed.
Click to expand it.
js/tooltip.js
+
2
-
2
View file @
eaefed51
...
@@ -102,10 +102,10 @@
...
@@ -102,10 +102,10 @@
var
self
=
obj
instanceof
this
.
constructor
?
var
self
=
obj
instanceof
this
.
constructor
?
obj
:
$
(
obj
.
currentTarget
)[
this
.
type
](
options
).
data
(
'
bs.
'
+
this
.
type
)
obj
:
$
(
obj
.
currentTarget
)[
this
.
type
](
options
).
data
(
'
bs.
'
+
this
.
type
)
if
(
!
self
.
options
.
delay
||
!
self
.
options
.
delay
.
show
)
return
self
.
show
()
clearTimeout
(
self
.
timeout
)
clearTimeout
(
self
.
timeout
)
if
(
!
self
.
options
.
delay
||
!
self
.
options
.
delay
.
show
)
return
self
.
show
()
self
.
hoverState
=
'
in
'
self
.
hoverState
=
'
in
'
self
.
timeout
=
setTimeout
(
function
()
{
self
.
timeout
=
setTimeout
(
function
()
{
if
(
self
.
hoverState
==
'
in
'
)
self
.
show
()
if
(
self
.
hoverState
==
'
in
'
)
self
.
show
()
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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
Menu
Explore
Projects
Groups
Snippets