Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
B
BeHub-web
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Dominik Rosiek
BeHub-web
Commits
6cfb7fb6
Commit
6cfb7fb6
authored
Nov 22, 2015
by
Rafal
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
toggle work
parent
ea3e9864
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
2400 additions
and
23 deletions
+2400
-23
bootstrap.js
BeHub/Hub/static/js/bootstrap.js
+2363
-0
bootstrap.min.js
BeHub/Hub/static/js/bootstrap.min.js
+7
-0
map.js
BeHub/Hub/static/js/map.js
+0
-0
project_detail.js
BeHub/Hub/static/js/project_detail.js
+4
-0
maps.html
BeHub/Hub/templates/user_panel/content/maps.html
+1
-17
project.html
BeHub/Hub/templates/user_panel/content/project.html
+22
-2
base.html
BeHub/Hub/templates/user_panel/default/base.html
+3
-4
No files found.
BeHub/Hub/static/js/bootstrap.js
0 → 100644
View file @
6cfb7fb6
/*!
* Bootstrap v3.3.5 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under the MIT license
*/
if
(
typeof
jQuery
===
'undefined'
)
{
throw
new
Error
(
'Bootstrap
\'
s JavaScript requires jQuery'
)
}
+
function
(
$
)
{
'use strict'
;
var
version
=
$
.
fn
.
jquery
.
split
(
' '
)[
0
].
split
(
'.'
)
if
((
version
[
0
]
<
2
&&
version
[
1
]
<
9
)
||
(
version
[
0
]
==
1
&&
version
[
1
]
==
9
&&
version
[
2
]
<
1
))
{
throw
new
Error
(
'Bootstrap
\'
s JavaScript requires jQuery version 1.9.1 or higher'
)
}
}(
jQuery
);
/* ========================================================================
* Bootstrap: transition.js v3.3.5
* http://getbootstrap.com/javascript/#transitions
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+
function
(
$
)
{
'use strict'
;
// CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
// ============================================================
function
transitionEnd
()
{
var
el
=
document
.
createElement
(
'bootstrap'
)
var
transEndEventNames
=
{
WebkitTransition
:
'webkitTransitionEnd'
,
MozTransition
:
'transitionend'
,
OTransition
:
'oTransitionEnd otransitionend'
,
transition
:
'transitionend'
}
for
(
var
name
in
transEndEventNames
)
{
if
(
el
.
style
[
name
]
!==
undefined
)
{
return
{
end
:
transEndEventNames
[
name
]
}
}
}
return
false
// explicit for ie8 ( ._.)
}
// http://blog.alexmaccaw.com/css-transitions
$
.
fn
.
emulateTransitionEnd
=
function
(
duration
)
{
var
called
=
false
var
$el
=
this
$
(
this
).
one
(
'bsTransitionEnd'
,
function
()
{
called
=
true
})
var
callback
=
function
()
{
if
(
!
called
)
$
(
$el
).
trigger
(
$
.
support
.
transition
.
end
)
}
setTimeout
(
callback
,
duration
)
return
this
}
$
(
function
()
{
$
.
support
.
transition
=
transitionEnd
()
if
(
!
$
.
support
.
transition
)
return
$
.
event
.
special
.
bsTransitionEnd
=
{
bindType
:
$
.
support
.
transition
.
end
,
delegateType
:
$
.
support
.
transition
.
end
,
handle
:
function
(
e
)
{
if
(
$
(
e
.
target
).
is
(
this
))
return
e
.
handleObj
.
handler
.
apply
(
this
,
arguments
)
}
}
})
}(
jQuery
);
/* ========================================================================
* Bootstrap: alert.js v3.3.5
* http://getbootstrap.com/javascript/#alerts
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+
function
(
$
)
{
'use strict'
;
// ALERT CLASS DEFINITION
// ======================
var
dismiss
=
'[data-dismiss="alert"]'
var
Alert
=
function
(
el
)
{
$
(
el
).
on
(
'click'
,
dismiss
,
this
.
close
)
}
Alert
.
VERSION
=
'3.3.5'
Alert
.
TRANSITION_DURATION
=
150
Alert
.
prototype
.
close
=
function
(
e
)
{
var
$this
=
$
(
this
)
var
selector
=
$this
.
attr
(
'data-target'
)
if
(
!
selector
)
{
selector
=
$this
.
attr
(
'href'
)
selector
=
selector
&&
selector
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
''
)
// strip for ie7
}
var
$parent
=
$
(
selector
)
if
(
e
)
e
.
preventDefault
()
if
(
!
$parent
.
length
)
{
$parent
=
$this
.
closest
(
'.alert'
)
}
$parent
.
trigger
(
e
=
$
.
Event
(
'close.bs.alert'
))
if
(
e
.
isDefaultPrevented
())
return
$parent
.
removeClass
(
'in'
)
function
removeElement
()
{
// detach from parent, fire event then clean up data
$parent
.
detach
().
trigger
(
'closed.bs.alert'
).
remove
()
}
$
.
support
.
transition
&&
$parent
.
hasClass
(
'fade'
)
?
$parent
.
one
(
'bsTransitionEnd'
,
removeElement
)
.
emulateTransitionEnd
(
Alert
.
TRANSITION_DURATION
)
:
removeElement
()
}
// ALERT PLUGIN DEFINITION
// =======================
function
Plugin
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'bs.alert'
)
if
(
!
data
)
$this
.
data
(
'bs.alert'
,
(
data
=
new
Alert
(
this
)))
if
(
typeof
option
==
'string'
)
data
[
option
].
call
(
$this
)
})
}
var
old
=
$
.
fn
.
alert
$
.
fn
.
alert
=
Plugin
$
.
fn
.
alert
.
Constructor
=
Alert
// ALERT NO CONFLICT
// =================
$
.
fn
.
alert
.
noConflict
=
function
()
{
$
.
fn
.
alert
=
old
return
this
}
// ALERT DATA-API
// ==============
$
(
document
).
on
(
'click.bs.alert.data-api'
,
dismiss
,
Alert
.
prototype
.
close
)
}(
jQuery
);
/* ========================================================================
* Bootstrap: button.js v3.3.5
* http://getbootstrap.com/javascript/#buttons
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+
function
(
$
)
{
'use strict'
;
// BUTTON PUBLIC CLASS DEFINITION
// ==============================
var
Button
=
function
(
element
,
options
)
{
this
.
$element
=
$
(
element
)
this
.
options
=
$
.
extend
({},
Button
.
DEFAULTS
,
options
)
this
.
isLoading
=
false
}
Button
.
VERSION
=
'3.3.5'
Button
.
DEFAULTS
=
{
loadingText
:
'loading...'
}
Button
.
prototype
.
setState
=
function
(
state
)
{
var
d
=
'disabled'
var
$el
=
this
.
$element
var
val
=
$el
.
is
(
'input'
)
?
'val'
:
'html'
var
data
=
$el
.
data
()
state
+=
'Text'
if
(
data
.
resetText
==
null
)
$el
.
data
(
'resetText'
,
$el
[
val
]())
// push to event loop to allow forms to submit
setTimeout
(
$
.
proxy
(
function
()
{
$el
[
val
](
data
[
state
]
==
null
?
this
.
options
[
state
]
:
data
[
state
])
if
(
state
==
'loadingText'
)
{
this
.
isLoading
=
true
$el
.
addClass
(
d
).
attr
(
d
,
d
)
}
else
if
(
this
.
isLoading
)
{
this
.
isLoading
=
false
$el
.
removeClass
(
d
).
removeAttr
(
d
)
}
},
this
),
0
)
}
Button
.
prototype
.
toggle
=
function
()
{
var
changed
=
true
var
$parent
=
this
.
$element
.
closest
(
'[data-toggle="buttons"]'
)
if
(
$parent
.
length
)
{
var
$input
=
this
.
$element
.
find
(
'input'
)
if
(
$input
.
prop
(
'type'
)
==
'radio'
)
{
if
(
$input
.
prop
(
'checked'
))
changed
=
false
$parent
.
find
(
'.active'
).
removeClass
(
'active'
)
this
.
$element
.
addClass
(
'active'
)
}
else
if
(
$input
.
prop
(
'type'
)
==
'checkbox'
)
{
if
((
$input
.
prop
(
'checked'
))
!==
this
.
$element
.
hasClass
(
'active'
))
changed
=
false
this
.
$element
.
toggleClass
(
'active'
)
}
$input
.
prop
(
'checked'
,
this
.
$element
.
hasClass
(
'active'
))
if
(
changed
)
$input
.
trigger
(
'change'
)
}
else
{
this
.
$element
.
attr
(
'aria-pressed'
,
!
this
.
$element
.
hasClass
(
'active'
))
this
.
$element
.
toggleClass
(
'active'
)
}
}
// BUTTON PLUGIN DEFINITION
// ========================
function
Plugin
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'bs.button'
)
var
options
=
typeof
option
==
'object'
&&
option
if
(
!
data
)
$this
.
data
(
'bs.button'
,
(
data
=
new
Button
(
this
,
options
)))
if
(
option
==
'toggle'
)
data
.
toggle
()
else
if
(
option
)
data
.
setState
(
option
)
})
}
var
old
=
$
.
fn
.
button
$
.
fn
.
button
=
Plugin
$
.
fn
.
button
.
Constructor
=
Button
// BUTTON NO CONFLICT
// ==================
$
.
fn
.
button
.
noConflict
=
function
()
{
$
.
fn
.
button
=
old
return
this
}
// BUTTON DATA-API
// ===============
$
(
document
)
.
on
(
'click.bs.button.data-api'
,
'[data-toggle^="button"]'
,
function
(
e
)
{
var
$btn
=
$
(
e
.
target
)
if
(
!
$btn
.
hasClass
(
'btn'
))
$btn
=
$btn
.
closest
(
'.btn'
)
Plugin
.
call
(
$btn
,
'toggle'
)
if
(
!
(
$
(
e
.
target
).
is
(
'input[type="radio"]'
)
||
$
(
e
.
target
).
is
(
'input[type="checkbox"]'
)))
e
.
preventDefault
()
})
.
on
(
'focus.bs.button.data-api blur.bs.button.data-api'
,
'[data-toggle^="button"]'
,
function
(
e
)
{
$
(
e
.
target
).
closest
(
'.btn'
).
toggleClass
(
'focus'
,
/^focus
(
in
)?
$/
.
test
(
e
.
type
))
})
}(
jQuery
);
/* ========================================================================
* Bootstrap: carousel.js v3.3.5
* http://getbootstrap.com/javascript/#carousel
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+
function
(
$
)
{
'use strict'
;
// CAROUSEL CLASS DEFINITION
// =========================
var
Carousel
=
function
(
element
,
options
)
{
this
.
$element
=
$
(
element
)
this
.
$indicators
=
this
.
$element
.
find
(
'.carousel-indicators'
)
this
.
options
=
options
this
.
paused
=
null
this
.
sliding
=
null
this
.
interval
=
null
this
.
$active
=
null
this
.
$items
=
null
this
.
options
.
keyboard
&&
this
.
$element
.
on
(
'keydown.bs.carousel'
,
$
.
proxy
(
this
.
keydown
,
this
))
this
.
options
.
pause
==
'hover'
&&
!
(
'ontouchstart'
in
document
.
documentElement
)
&&
this
.
$element
.
on
(
'mouseenter.bs.carousel'
,
$
.
proxy
(
this
.
pause
,
this
))
.
on
(
'mouseleave.bs.carousel'
,
$
.
proxy
(
this
.
cycle
,
this
))
}
Carousel
.
VERSION
=
'3.3.5'
Carousel
.
TRANSITION_DURATION
=
600
Carousel
.
DEFAULTS
=
{
interval
:
5000
,
pause
:
'hover'
,
wrap
:
true
,
keyboard
:
true
}
Carousel
.
prototype
.
keydown
=
function
(
e
)
{
if
(
/input|textarea/i
.
test
(
e
.
target
.
tagName
))
return
switch
(
e
.
which
)
{
case
37
:
this
.
prev
();
break
case
39
:
this
.
next
();
break
default
:
return
}
e
.
preventDefault
()
}
Carousel
.
prototype
.
cycle
=
function
(
e
)
{
e
||
(
this
.
paused
=
false
)
this
.
interval
&&
clearInterval
(
this
.
interval
)
this
.
options
.
interval
&&
!
this
.
paused
&&
(
this
.
interval
=
setInterval
(
$
.
proxy
(
this
.
next
,
this
),
this
.
options
.
interval
))
return
this
}
Carousel
.
prototype
.
getItemIndex
=
function
(
item
)
{
this
.
$items
=
item
.
parent
().
children
(
'.item'
)
return
this
.
$items
.
index
(
item
||
this
.
$active
)
}
Carousel
.
prototype
.
getItemForDirection
=
function
(
direction
,
active
)
{
var
activeIndex
=
this
.
getItemIndex
(
active
)
var
willWrap
=
(
direction
==
'prev'
&&
activeIndex
===
0
)
||
(
direction
==
'next'
&&
activeIndex
==
(
this
.
$items
.
length
-
1
))
if
(
willWrap
&&
!
this
.
options
.
wrap
)
return
active
var
delta
=
direction
==
'prev'
?
-
1
:
1
var
itemIndex
=
(
activeIndex
+
delta
)
%
this
.
$items
.
length
return
this
.
$items
.
eq
(
itemIndex
)
}
Carousel
.
prototype
.
to
=
function
(
pos
)
{
var
that
=
this
var
activeIndex
=
this
.
getItemIndex
(
this
.
$active
=
this
.
$element
.
find
(
'.item.active'
))
if
(
pos
>
(
this
.
$items
.
length
-
1
)
||
pos
<
0
)
return
if
(
this
.
sliding
)
return
this
.
$element
.
one
(
'slid.bs.carousel'
,
function
()
{
that
.
to
(
pos
)
})
// yes, "slid"
if
(
activeIndex
==
pos
)
return
this
.
pause
().
cycle
()
return
this
.
slide
(
pos
>
activeIndex
?
'next'
:
'prev'
,
this
.
$items
.
eq
(
pos
))
}
Carousel
.
prototype
.
pause
=
function
(
e
)
{
e
||
(
this
.
paused
=
true
)
if
(
this
.
$element
.
find
(
'.next, .prev'
).
length
&&
$
.
support
.
transition
)
{
this
.
$element
.
trigger
(
$
.
support
.
transition
.
end
)
this
.
cycle
(
true
)
}
this
.
interval
=
clearInterval
(
this
.
interval
)
return
this
}
Carousel
.
prototype
.
next
=
function
()
{
if
(
this
.
sliding
)
return
return
this
.
slide
(
'next'
)
}
Carousel
.
prototype
.
prev
=
function
()
{
if
(
this
.
sliding
)
return
return
this
.
slide
(
'prev'
)
}
Carousel
.
prototype
.
slide
=
function
(
type
,
next
)
{
var
$active
=
this
.
$element
.
find
(
'.item.active'
)
var
$next
=
next
||
this
.
getItemForDirection
(
type
,
$active
)
var
isCycling
=
this
.
interval
var
direction
=
type
==
'next'
?
'left'
:
'right'
var
that
=
this
if
(
$next
.
hasClass
(
'active'
))
return
(
this
.
sliding
=
false
)
var
relatedTarget
=
$next
[
0
]
var
slideEvent
=
$
.
Event
(
'slide.bs.carousel'
,
{
relatedTarget
:
relatedTarget
,
direction
:
direction
})
this
.
$element
.
trigger
(
slideEvent
)
if
(
slideEvent
.
isDefaultPrevented
())
return
this
.
sliding
=
true
isCycling
&&
this
.
pause
()
if
(
this
.
$indicators
.
length
)
{
this
.
$indicators
.
find
(
'.active'
).
removeClass
(
'active'
)
var
$nextIndicator
=
$
(
this
.
$indicators
.
children
()[
this
.
getItemIndex
(
$next
)])
$nextIndicator
&&
$nextIndicator
.
addClass
(
'active'
)
}
var
slidEvent
=
$
.
Event
(
'slid.bs.carousel'
,
{
relatedTarget
:
relatedTarget
,
direction
:
direction
})
// yes, "slid"
if
(
$
.
support
.
transition
&&
this
.
$element
.
hasClass
(
'slide'
))
{
$next
.
addClass
(
type
)
$next
[
0
].
offsetWidth
// force reflow
$active
.
addClass
(
direction
)
$next
.
addClass
(
direction
)
$active
.
one
(
'bsTransitionEnd'
,
function
()
{
$next
.
removeClass
([
type
,
direction
].
join
(
' '
)).
addClass
(
'active'
)
$active
.
removeClass
([
'active'
,
direction
].
join
(
' '
))
that
.
sliding
=
false
setTimeout
(
function
()
{
that
.
$element
.
trigger
(
slidEvent
)
},
0
)
})
.
emulateTransitionEnd
(
Carousel
.
TRANSITION_DURATION
)
}
else
{
$active
.
removeClass
(
'active'
)
$next
.
addClass
(
'active'
)
this
.
sliding
=
false
this
.
$element
.
trigger
(
slidEvent
)
}
isCycling
&&
this
.
cycle
()
return
this
}
// CAROUSEL PLUGIN DEFINITION
// ==========================
function
Plugin
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'bs.carousel'
)
var
options
=
$
.
extend
({},
Carousel
.
DEFAULTS
,
$this
.
data
(),
typeof
option
==
'object'
&&
option
)
var
action
=
typeof
option
==
'string'
?
option
:
options
.
slide
if
(
!
data
)
$this
.
data
(
'bs.carousel'
,
(
data
=
new
Carousel
(
this
,
options
)))
if
(
typeof
option
==
'number'
)
data
.
to
(
option
)
else
if
(
action
)
data
[
action
]()
else
if
(
options
.
interval
)
data
.
pause
().
cycle
()
})
}
var
old
=
$
.
fn
.
carousel
$
.
fn
.
carousel
=
Plugin
$
.
fn
.
carousel
.
Constructor
=
Carousel
// CAROUSEL NO CONFLICT
// ====================
$
.
fn
.
carousel
.
noConflict
=
function
()
{
$
.
fn
.
carousel
=
old
return
this
}
// CAROUSEL DATA-API
// =================
var
clickHandler
=
function
(
e
)
{
var
href
var
$this
=
$
(
this
)
var
$target
=
$
(
$this
.
attr
(
'data-target'
)
||
(
href
=
$this
.
attr
(
'href'
))
&&
href
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
''
))
// strip for ie7
if
(
!
$target
.
hasClass
(
'carousel'
))
return
var
options
=
$
.
extend
({},
$target
.
data
(),
$this
.
data
())
var
slideIndex
=
$this
.
attr
(
'data-slide-to'
)
if
(
slideIndex
)
options
.
interval
=
false
Plugin
.
call
(
$target
,
options
)
if
(
slideIndex
)
{
$target
.
data
(
'bs.carousel'
).
to
(
slideIndex
)
}
e
.
preventDefault
()
}
$
(
document
)
.
on
(
'click.bs.carousel.data-api'
,
'[data-slide]'
,
clickHandler
)
.
on
(
'click.bs.carousel.data-api'
,
'[data-slide-to]'
,
clickHandler
)
$
(
window
).
on
(
'load'
,
function
()
{
$
(
'[data-ride="carousel"]'
).
each
(
function
()
{
var
$carousel
=
$
(
this
)
Plugin
.
call
(
$carousel
,
$carousel
.
data
())
})
})
}(
jQuery
);
/* ========================================================================
* Bootstrap: collapse.js v3.3.5
* http://getbootstrap.com/javascript/#collapse
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+
function
(
$
)
{
'use strict'
;
// COLLAPSE PUBLIC CLASS DEFINITION
// ================================
var
Collapse
=
function
(
element
,
options
)
{
this
.
$element
=
$
(
element
)
this
.
options
=
$
.
extend
({},
Collapse
.
DEFAULTS
,
options
)
this
.
$trigger
=
$
(
'[data-toggle="collapse"][href="#'
+
element
.
id
+
'"],'
+
'[data-toggle="collapse"][data-target="#'
+
element
.
id
+
'"]'
)
this
.
transitioning
=
null
if
(
this
.
options
.
parent
)
{
this
.
$parent
=
this
.
getParent
()
}
else
{
this
.
addAriaAndCollapsedClass
(
this
.
$element
,
this
.
$trigger
)
}
if
(
this
.
options
.
toggle
)
this
.
toggle
()
}
Collapse
.
VERSION
=
'3.3.5'
Collapse
.
TRANSITION_DURATION
=
350
Collapse
.
DEFAULTS
=
{
toggle
:
true
}
Collapse
.
prototype
.
dimension
=
function
()
{
var
hasWidth
=
this
.
$element
.
hasClass
(
'width'
)
return
hasWidth
?
'width'
:
'height'
}
Collapse
.
prototype
.
show
=
function
()
{
if
(
this
.
transitioning
||
this
.
$element
.
hasClass
(
'in'
))
return
var
activesData
var
actives
=
this
.
$parent
&&
this
.
$parent
.
children
(
'.panel'
).
children
(
'.in, .collapsing'
)
if
(
actives
&&
actives
.
length
)
{
activesData
=
actives
.
data
(
'bs.collapse'
)
if
(
activesData
&&
activesData
.
transitioning
)
return
}
var
startEvent
=
$
.
Event
(
'show.bs.collapse'
)
this
.
$element
.
trigger
(
startEvent
)
if
(
startEvent
.
isDefaultPrevented
())
return
if
(
actives
&&
actives
.
length
)
{
Plugin
.
call
(
actives
,
'hide'
)
activesData
||
actives
.
data
(
'bs.collapse'
,
null
)
}
var
dimension
=
this
.
dimension
()
this
.
$element
.
removeClass
(
'collapse'
)
.
addClass
(
'collapsing'
)[
dimension
](
0
)
.
attr
(
'aria-expanded'
,
true
)
this
.
$trigger
.
removeClass
(
'collapsed'
)
.
attr
(
'aria-expanded'
,
true
)
this
.
transitioning
=
1
var
complete
=
function
()
{
this
.
$element
.
removeClass
(
'collapsing'
)
.
addClass
(
'collapse in'
)[
dimension
](
''
)
this
.
transitioning
=
0
this
.
$element
.
trigger
(
'shown.bs.collapse'
)
}
if
(
!
$
.
support
.
transition
)
return
complete
.
call
(
this
)
var
scrollSize
=
$
.
camelCase
([
'scroll'
,
dimension
].
join
(
'-'
))
this
.
$element
.
one
(
'bsTransitionEnd'
,
$
.
proxy
(
complete
,
this
))
.
emulateTransitionEnd
(
Collapse
.
TRANSITION_DURATION
)[
dimension
](
this
.
$element
[
0
][
scrollSize
])
}
Collapse
.
prototype
.
hide
=
function
()
{
if
(
this
.
transitioning
||
!
this
.
$element
.
hasClass
(
'in'
))
return
var
startEvent
=
$
.
Event
(
'hide.bs.collapse'
)
this
.
$element
.
trigger
(
startEvent
)
if
(
startEvent
.
isDefaultPrevented
())
return
var
dimension
=
this
.
dimension
()
this
.
$element
[
dimension
](
this
.
$element
[
dimension
]())[
0
].
offsetHeight
this
.
$element
.
addClass
(
'collapsing'
)
.
removeClass
(
'collapse in'
)
.
attr
(
'aria-expanded'
,
false
)
this
.
$trigger
.
addClass
(
'collapsed'
)
.
attr
(
'aria-expanded'
,
false
)
this
.
transitioning
=
1
var
complete
=
function
()
{
this
.
transitioning
=
0
this
.
$element
.
removeClass
(
'collapsing'
)
.
addClass
(
'collapse'
)
.
trigger
(
'hidden.bs.collapse'
)
}
if
(
!
$
.
support
.
transition
)
return
complete
.
call
(
this
)
this
.
$element
[
dimension
](
0
)
.
one
(
'bsTransitionEnd'
,
$
.
proxy
(
complete
,
this
))
.
emulateTransitionEnd
(
Collapse
.
TRANSITION_DURATION
)
}
Collapse
.
prototype
.
toggle
=
function
()
{
this
[
this
.
$element
.
hasClass
(
'in'
)
?
'hide'
:
'show'
]()
}
Collapse
.
prototype
.
getParent
=
function
()
{
return
$
(
this
.
options
.
parent
)
.
find
(
'[data-toggle="collapse"][data-parent="'
+
this
.
options
.
parent
+
'"]'
)
.
each
(
$
.
proxy
(
function
(
i
,
element
)
{
var
$element
=
$
(
element
)
this
.
addAriaAndCollapsedClass
(
getTargetFromTrigger
(
$element
),
$element
)
},
this
))
.
end
()
}
Collapse
.
prototype
.
addAriaAndCollapsedClass
=
function
(
$element
,
$trigger
)
{
var
isOpen
=
$element
.
hasClass
(
'in'
)
$element
.
attr
(
'aria-expanded'
,
isOpen
)
$trigger
.
toggleClass
(
'collapsed'
,
!
isOpen
)
.
attr
(
'aria-expanded'
,
isOpen
)
}
function
getTargetFromTrigger
(
$trigger
)
{
var
href
var
target
=
$trigger
.
attr
(
'data-target'
)
||
(
href
=
$trigger
.
attr
(
'href'
))
&&
href
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
''
)
// strip for ie7
return
$
(
target
)
}
// COLLAPSE PLUGIN DEFINITION
// ==========================
function
Plugin
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'bs.collapse'
)
var
options
=
$
.
extend
({},
Collapse
.
DEFAULTS
,
$this
.
data
(),
typeof
option
==
'object'
&&
option
)
if
(
!
data
&&
options
.
toggle
&&
/show|hide/
.
test
(
option
))
options
.
toggle
=
false
if
(
!
data
)
$this
.
data
(
'bs.collapse'
,
(
data
=
new
Collapse
(
this
,
options
)))
if
(
typeof
option
==
'string'
)
data
[
option
]()
})
}
var
old
=
$
.
fn
.
collapse
$
.
fn
.
collapse
=
Plugin
$
.
fn
.
collapse
.
Constructor
=
Collapse
// COLLAPSE NO CONFLICT
// ====================
$
.
fn
.
collapse
.
noConflict
=
function
()
{
$
.
fn
.
collapse
=
old
return
this
}
// COLLAPSE DATA-API
// =================
$
(
document
).
on
(
'click.bs.collapse.data-api'
,
'[data-toggle="collapse"]'
,
function
(
e
)
{
var
$this
=
$
(
this
)
if
(
!
$this
.
attr
(
'data-target'
))
e
.
preventDefault
()
var
$target
=
getTargetFromTrigger
(
$this
)
var
data
=
$target
.
data
(
'bs.collapse'
)
var
option
=
data
?
'toggle'
:
$this
.
data
()
Plugin
.
call
(
$target
,
option
)
})
}(
jQuery
);
/* ========================================================================
* Bootstrap: dropdown.js v3.3.5
* http://getbootstrap.com/javascript/#dropdowns
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+
function
(
$
)
{
'use strict'
;
// DROPDOWN CLASS DEFINITION
// =========================
var
backdrop
=
'.dropdown-backdrop'
var
toggle
=
'[data-toggle="dropdown"]'
var
Dropdown
=
function
(
element
)
{
$
(
element
).
on
(
'click.bs.dropdown'
,
this
.
toggle
)
}
Dropdown
.
VERSION
=
'3.3.5'
function
getParent
(
$this
)
{
var
selector
=
$this
.
attr
(
'data-target'
)
if
(
!
selector
)
{
selector
=
$this
.
attr
(
'href'
)
selector
=
selector
&&
/#
[
A-Za-z
]
/
.
test
(
selector
)
&&
selector
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
''
)
// strip for ie7
}
var
$parent
=
selector
&&
$
(
selector
)
return
$parent
&&
$parent
.
length
?
$parent
:
$this
.
parent
()
}
function
clearMenus
(
e
)
{
if
(
e
&&
e
.
which
===
3
)
return
$
(
backdrop
).
remove
()
$
(
toggle
).
each
(
function
()
{
var
$this
=
$
(
this
)
var
$parent
=
getParent
(
$this
)
var
relatedTarget
=
{
relatedTarget
:
this
}
if
(
!
$parent
.
hasClass
(
'open'
))
return
if
(
e
&&
e
.
type
==
'click'
&&
/input|textarea/i
.
test
(
e
.
target
.
tagName
)
&&
$
.
contains
(
$parent
[
0
],
e
.
target
))
return
$parent
.
trigger
(
e
=
$
.
Event
(
'hide.bs.dropdown'
,
relatedTarget
))
if
(
e
.
isDefaultPrevented
())
return
$this
.
attr
(
'aria-expanded'
,
'false'
)
$parent
.
removeClass
(
'open'
).
trigger
(
'hidden.bs.dropdown'
,
relatedTarget
)
})
}
Dropdown
.
prototype
.
toggle
=
function
(
e
)
{
var
$this
=
$
(
this
)
if
(
$this
.
is
(
'.disabled, :disabled'
))
return
var
$parent
=
getParent
(
$this
)
var
isActive
=
$parent
.
hasClass
(
'open'
)
clearMenus
()
if
(
!
isActive
)
{
if
(
'ontouchstart'
in
document
.
documentElement
&&
!
$parent
.
closest
(
'.navbar-nav'
).
length
)
{
// if mobile we use a backdrop because click events don't delegate
$
(
document
.
createElement
(
'div'
))
.
addClass
(
'dropdown-backdrop'
)
.
insertAfter
(
$
(
this
))
.
on
(
'click'
,
clearMenus
)
}
var
relatedTarget
=
{
relatedTarget
:
this
}
$parent
.
trigger
(
e
=
$
.
Event
(
'show.bs.dropdown'
,
relatedTarget
))
if
(
e
.
isDefaultPrevented
())
return
$this
.
trigger
(
'focus'
)
.
attr
(
'aria-expanded'
,
'true'
)
$parent
.
toggleClass
(
'open'
)
.
trigger
(
'shown.bs.dropdown'
,
relatedTarget
)
}
return
false
}
Dropdown
.
prototype
.
keydown
=
function
(
e
)
{
if
(
!
/
(
38|40|27|32
)
/
.
test
(
e
.
which
)
||
/input|textarea/i
.
test
(
e
.
target
.
tagName
))
return
var
$this
=
$
(
this
)
e
.
preventDefault
()
e
.
stopPropagation
()
if
(
$this
.
is
(
'.disabled, :disabled'
))
return
var
$parent
=
getParent
(
$this
)
var
isActive
=
$parent
.
hasClass
(
'open'
)
if
(
!
isActive
&&
e
.
which
!=
27
||
isActive
&&
e
.
which
==
27
)
{
if
(
e
.
which
==
27
)
$parent
.
find
(
toggle
).
trigger
(
'focus'
)
return
$this
.
trigger
(
'click'
)
}
var
desc
=
' li:not(.disabled):visible a'
var
$items
=
$parent
.
find
(
'.dropdown-menu'
+
desc
)
if
(
!
$items
.
length
)
return
var
index
=
$items
.
index
(
e
.
target
)
if
(
e
.
which
==
38
&&
index
>
0
)
index
--
// up
if
(
e
.
which
==
40
&&
index
<
$items
.
length
-
1
)
index
++
// down
if
(
!~
index
)
index
=
0
$items
.
eq
(
index
).
trigger
(
'focus'
)
}
// DROPDOWN PLUGIN DEFINITION
// ==========================
function
Plugin
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'bs.dropdown'
)
if
(
!
data
)
$this
.
data
(
'bs.dropdown'
,
(
data
=
new
Dropdown
(
this
)))
if
(
typeof
option
==
'string'
)
data
[
option
].
call
(
$this
)
})
}
var
old
=
$
.
fn
.
dropdown
$
.
fn
.
dropdown
=
Plugin
$
.
fn
.
dropdown
.
Constructor
=
Dropdown
// DROPDOWN NO CONFLICT
// ====================
$
.
fn
.
dropdown
.
noConflict
=
function
()
{
$
.
fn
.
dropdown
=
old
return
this
}
// APPLY TO STANDARD DROPDOWN ELEMENTS
// ===================================
$
(
document
)
.
on
(
'click.bs.dropdown.data-api'
,
clearMenus
)
.
on
(
'click.bs.dropdown.data-api'
,
'.dropdown form'
,
function
(
e
)
{
e
.
stopPropagation
()
})
.
on
(
'click.bs.dropdown.data-api'
,
toggle
,
Dropdown
.
prototype
.
toggle
)
.
on
(
'keydown.bs.dropdown.data-api'
,
toggle
,
Dropdown
.
prototype
.
keydown
)
.
on
(
'keydown.bs.dropdown.data-api'
,
'.dropdown-menu'
,
Dropdown
.
prototype
.
keydown
)
}(
jQuery
);
/* ========================================================================
* Bootstrap: modal.js v3.3.5
* http://getbootstrap.com/javascript/#modals
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+
function
(
$
)
{
'use strict'
;
// MODAL CLASS DEFINITION
// ======================
var
Modal
=
function
(
element
,
options
)
{
this
.
options
=
options
this
.
$body
=
$
(
document
.
body
)
this
.
$element
=
$
(
element
)
this
.
$dialog
=
this
.
$element
.
find
(
'.modal-dialog'
)
this
.
$backdrop
=
null
this
.
isShown
=
null
this
.
originalBodyPad
=
null
this
.
scrollbarWidth
=
0
this
.
ignoreBackdropClick
=
false
if
(
this
.
options
.
remote
)
{
this
.
$element
.
find
(
'.modal-content'
)
.
load
(
this
.
options
.
remote
,
$
.
proxy
(
function
()
{
this
.
$element
.
trigger
(
'loaded.bs.modal'
)
},
this
))
}
}
Modal
.
VERSION
=
'3.3.5'
Modal
.
TRANSITION_DURATION
=
300
Modal
.
BACKDROP_TRANSITION_DURATION
=
150
Modal
.
DEFAULTS
=
{
backdrop
:
true
,
keyboard
:
true
,
show
:
true
}
Modal
.
prototype
.
toggle
=
function
(
_relatedTarget
)
{
return
this
.
isShown
?
this
.
hide
()
:
this
.
show
(
_relatedTarget
)
}
Modal
.
prototype
.
show
=
function
(
_relatedTarget
)
{
var
that
=
this
var
e
=
$
.
Event
(
'show.bs.modal'
,
{
relatedTarget
:
_relatedTarget
})
this
.
$element
.
trigger
(
e
)
if
(
this
.
isShown
||
e
.
isDefaultPrevented
())
return
this
.
isShown
=
true
this
.
checkScrollbar
()
this
.
setScrollbar
()
this
.
$body
.
addClass
(
'modal-open'
)
this
.
escape
()
this
.
resize
()
this
.
$element
.
on
(
'click.dismiss.bs.modal'
,
'[data-dismiss="modal"]'
,
$
.
proxy
(
this
.
hide
,
this
))
this
.
$dialog
.
on
(
'mousedown.dismiss.bs.modal'
,
function
()
{
that
.
$element
.
one
(
'mouseup.dismiss.bs.modal'
,
function
(
e
)
{
if
(
$
(
e
.
target
).
is
(
that
.
$element
))
that
.
ignoreBackdropClick
=
true
})
})
this
.
backdrop
(
function
()
{
var
transition
=
$
.
support
.
transition
&&
that
.
$element
.
hasClass
(
'fade'
)
if
(
!
that
.
$element
.
parent
().
length
)
{
that
.
$element
.
appendTo
(
that
.
$body
)
// don't move modals dom position
}
that
.
$element
.
show
()
.
scrollTop
(
0
)
that
.
adjustDialog
()
if
(
transition
)
{
that
.
$element
[
0
].
offsetWidth
// force reflow
}
that
.
$element
.
addClass
(
'in'
)
that
.
enforceFocus
()
var
e
=
$
.
Event
(
'shown.bs.modal'
,
{
relatedTarget
:
_relatedTarget
})
transition
?
that
.
$dialog
// wait for modal to slide in
.
one
(
'bsTransitionEnd'
,
function
()
{
that
.
$element
.
trigger
(
'focus'
).
trigger
(
e
)
})
.
emulateTransitionEnd
(
Modal
.
TRANSITION_DURATION
)
:
that
.
$element
.
trigger
(
'focus'
).
trigger
(
e
)
})
}
Modal
.
prototype
.
hide
=
function
(
e
)
{
if
(
e
)
e
.
preventDefault
()
e
=
$
.
Event
(
'hide.bs.modal'
)
this
.
$element
.
trigger
(
e
)
if
(
!
this
.
isShown
||
e
.
isDefaultPrevented
())
return
this
.
isShown
=
false
this
.
escape
()
this
.
resize
()
$
(
document
).
off
(
'focusin.bs.modal'
)
this
.
$element
.
removeClass
(
'in'
)
.
off
(
'click.dismiss.bs.modal'
)
.
off
(
'mouseup.dismiss.bs.modal'
)
this
.
$dialog
.
off
(
'mousedown.dismiss.bs.modal'
)
$
.
support
.
transition
&&
this
.
$element
.
hasClass
(
'fade'
)
?
this
.
$element
.
one
(
'bsTransitionEnd'
,
$
.
proxy
(
this
.
hideModal
,
this
))
.
emulateTransitionEnd
(
Modal
.
TRANSITION_DURATION
)
:
this
.
hideModal
()
}
Modal
.
prototype
.
enforceFocus
=
function
()
{
$
(
document
)
.
off
(
'focusin.bs.modal'
)
// guard against infinite focus loop
.
on
(
'focusin.bs.modal'
,
$
.
proxy
(
function
(
e
)
{
if
(
this
.
$element
[
0
]
!==
e
.
target
&&
!
this
.
$element
.
has
(
e
.
target
).
length
)
{
this
.
$element
.
trigger
(
'focus'
)
}
},
this
))
}
Modal
.
prototype
.
escape
=
function
()
{
if
(
this
.
isShown
&&
this
.
options
.
keyboard
)
{
this
.
$element
.
on
(
'keydown.dismiss.bs.modal'
,
$
.
proxy
(
function
(
e
)
{
e
.
which
==
27
&&
this
.
hide
()
},
this
))
}
else
if
(
!
this
.
isShown
)
{
this
.
$element
.
off
(
'keydown.dismiss.bs.modal'
)
}
}
Modal
.
prototype
.
resize
=
function
()
{
if
(
this
.
isShown
)
{
$
(
window
).
on
(
'resize.bs.modal'
,
$
.
proxy
(
this
.
handleUpdate
,
this
))
}
else
{
$
(
window
).
off
(
'resize.bs.modal'
)
}
}
Modal
.
prototype
.
hideModal
=
function
()
{
var
that
=
this
this
.
$element
.
hide
()
this
.
backdrop
(
function
()
{
that
.
$body
.
removeClass
(
'modal-open'
)
that
.
resetAdjustments
()
that
.
resetScrollbar
()
that
.
$element
.
trigger
(
'hidden.bs.modal'
)
})
}
Modal
.
prototype
.
removeBackdrop
=
function
()
{
this
.
$backdrop
&&
this
.
$backdrop
.
remove
()
this
.
$backdrop
=
null
}
Modal
.
prototype
.
backdrop
=
function
(
callback
)
{
var
that
=
this
var
animate
=
this
.
$element
.
hasClass
(
'fade'
)
?
'fade'
:
''
if
(
this
.
isShown
&&
this
.
options
.
backdrop
)
{
var
doAnimate
=
$
.
support
.
transition
&&
animate
this
.
$backdrop
=
$
(
document
.
createElement
(
'div'
))
.
addClass
(
'modal-backdrop '
+
animate
)
.
appendTo
(
this
.
$body
)
this
.
$element
.
on
(
'click.dismiss.bs.modal'
,
$
.
proxy
(
function
(
e
)
{
if
(
this
.
ignoreBackdropClick
)
{
this
.
ignoreBackdropClick
=
false
return
}
if
(
e
.
target
!==
e
.
currentTarget
)
return
this
.
options
.
backdrop
==
'static'
?
this
.
$element
[
0
].
focus
()
:
this
.
hide
()
},
this
))
if
(
doAnimate
)
this
.
$backdrop
[
0
].
offsetWidth
// force reflow
this
.
$backdrop
.
addClass
(
'in'
)
if
(
!
callback
)
return
doAnimate
?
this
.
$backdrop
.
one
(
'bsTransitionEnd'
,
callback
)
.
emulateTransitionEnd
(
Modal
.
BACKDROP_TRANSITION_DURATION
)
:
callback
()
}
else
if
(
!
this
.
isShown
&&
this
.
$backdrop
)
{
this
.
$backdrop
.
removeClass
(
'in'
)
var
callbackRemove
=
function
()
{
that
.
removeBackdrop
()
callback
&&
callback
()
}
$
.
support
.
transition
&&
this
.
$element
.
hasClass
(
'fade'
)
?
this
.
$backdrop
.
one
(
'bsTransitionEnd'
,
callbackRemove
)
.
emulateTransitionEnd
(
Modal
.
BACKDROP_TRANSITION_DURATION
)
:
callbackRemove
()
}
else
if
(
callback
)
{
callback
()
}
}
// these following methods are used to handle overflowing modals
Modal
.
prototype
.
handleUpdate
=
function
()
{
this
.
adjustDialog
()
}
Modal
.
prototype
.
adjustDialog
=
function
()
{
var
modalIsOverflowing
=
this
.
$element
[
0
].
scrollHeight
>
document
.
documentElement
.
clientHeight
this
.
$element
.
css
({
paddingLeft
:
!
this
.
bodyIsOverflowing
&&
modalIsOverflowing
?
this
.
scrollbarWidth
:
''
,
paddingRight
:
this
.
bodyIsOverflowing
&&
!
modalIsOverflowing
?
this
.
scrollbarWidth
:
''
})
}
Modal
.
prototype
.
resetAdjustments
=
function
()
{
this
.
$element
.
css
({
paddingLeft
:
''
,
paddingRight
:
''
})
}
Modal
.
prototype
.
checkScrollbar
=
function
()
{
var
fullWindowWidth
=
window
.
innerWidth
if
(
!
fullWindowWidth
)
{
// workaround for missing window.innerWidth in IE8
var
documentElementRect
=
document
.
documentElement
.
getBoundingClientRect
()
fullWindowWidth
=
documentElementRect
.
right
-
Math
.
abs
(
documentElementRect
.
left
)
}
this
.
bodyIsOverflowing
=
document
.
body
.
clientWidth
<
fullWindowWidth
this
.
scrollbarWidth
=
this
.
measureScrollbar
()
}
Modal
.
prototype
.
setScrollbar
=
function
()
{
var
bodyPad
=
parseInt
((
this
.
$body
.
css
(
'padding-right'
)
||
0
),
10
)
this
.
originalBodyPad
=
document
.
body
.
style
.
paddingRight
||
''
if
(
this
.
bodyIsOverflowing
)
this
.
$body
.
css
(
'padding-right'
,
bodyPad
+
this
.
scrollbarWidth
)
}
Modal
.
prototype
.
resetScrollbar
=
function
()
{
this
.
$body
.
css
(
'padding-right'
,
this
.
originalBodyPad
)
}
Modal
.
prototype
.
measureScrollbar
=
function
()
{
// thx walsh
var
scrollDiv
=
document
.
createElement
(
'div'
)
scrollDiv
.
className
=
'modal-scrollbar-measure'
this
.
$body
.
append
(
scrollDiv
)
var
scrollbarWidth
=
scrollDiv
.
offsetWidth
-
scrollDiv
.
clientWidth
this
.
$body
[
0
].
removeChild
(
scrollDiv
)
return
scrollbarWidth
}
// MODAL PLUGIN DEFINITION
// =======================
function
Plugin
(
option
,
_relatedTarget
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'bs.modal'
)
var
options
=
$
.
extend
({},
Modal
.
DEFAULTS
,
$this
.
data
(),
typeof
option
==
'object'
&&
option
)
if
(
!
data
)
$this
.
data
(
'bs.modal'
,
(
data
=
new
Modal
(
this
,
options
)))
if
(
typeof
option
==
'string'
)
data
[
option
](
_relatedTarget
)
else
if
(
options
.
show
)
data
.
show
(
_relatedTarget
)
})
}
var
old
=
$
.
fn
.
modal
$
.
fn
.
modal
=
Plugin
$
.
fn
.
modal
.
Constructor
=
Modal
// MODAL NO CONFLICT
// =================
$
.
fn
.
modal
.
noConflict
=
function
()
{
$
.
fn
.
modal
=
old
return
this
}
// MODAL DATA-API
// ==============
$
(
document
).
on
(
'click.bs.modal.data-api'
,
'[data-toggle="modal"]'
,
function
(
e
)
{
var
$this
=
$
(
this
)
var
href
=
$this
.
attr
(
'href'
)
var
$target
=
$
(
$this
.
attr
(
'data-target'
)
||
(
href
&&
href
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
''
)))
// strip for ie7
var
option
=
$target
.
data
(
'bs.modal'
)
?
'toggle'
:
$
.
extend
({
remote
:
!
/#/
.
test
(
href
)
&&
href
},
$target
.
data
(),
$this
.
data
())
if
(
$this
.
is
(
'a'
))
e
.
preventDefault
()
$target
.
one
(
'show.bs.modal'
,
function
(
showEvent
)
{
if
(
showEvent
.
isDefaultPrevented
())
return
// only register focus restorer if modal will actually get shown
$target
.
one
(
'hidden.bs.modal'
,
function
()
{
$this
.
is
(
':visible'
)
&&
$this
.
trigger
(
'focus'
)
})
})
Plugin
.
call
(
$target
,
option
,
this
)
})
}(
jQuery
);
/* ========================================================================
* Bootstrap: tooltip.js v3.3.5
* http://getbootstrap.com/javascript/#tooltip
* Inspired by the original jQuery.tipsy by Jason Frame
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+
function
(
$
)
{
'use strict'
;
// TOOLTIP PUBLIC CLASS DEFINITION
// ===============================
var
Tooltip
=
function
(
element
,
options
)
{
this
.
type
=
null
this
.
options
=
null
this
.
enabled
=
null
this
.
timeout
=
null
this
.
hoverState
=
null
this
.
$element
=
null
this
.
inState
=
null
this
.
init
(
'tooltip'
,
element
,
options
)
}
Tooltip
.
VERSION
=
'3.3.5'
Tooltip
.
TRANSITION_DURATION
=
150
Tooltip
.
DEFAULTS
=
{
animation
:
true
,
placement
:
'top'
,
selector
:
false
,
template
:
'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
,
trigger
:
'hover focus'
,
title
:
''
,
delay
:
0
,
html
:
false
,
container
:
false
,
viewport
:
{
selector
:
'body'
,
padding
:
0
}
}
Tooltip
.
prototype
.
init
=
function
(
type
,
element
,
options
)
{
this
.
enabled
=
true
this
.
type
=
type
this
.
$element
=
$
(
element
)
this
.
options
=
this
.
getOptions
(
options
)
this
.
$viewport
=
this
.
options
.
viewport
&&
$
(
$
.
isFunction
(
this
.
options
.
viewport
)
?
this
.
options
.
viewport
.
call
(
this
,
this
.
$element
)
:
(
this
.
options
.
viewport
.
selector
||
this
.
options
.
viewport
))
this
.
inState
=
{
click
:
false
,
hover
:
false
,
focus
:
false
}
if
(
this
.
$element
[
0
]
instanceof
document
.
constructor
&&
!
this
.
options
.
selector
)
{
throw
new
Error
(
'`selector` option must be specified when initializing '
+
this
.
type
+
' on the window.document object!'
)
}
var
triggers
=
this
.
options
.
trigger
.
split
(
' '
)
for
(
var
i
=
triggers
.
length
;
i
--
;)
{
var
trigger
=
triggers
[
i
]
if
(
trigger
==
'click'
)
{
this
.
$element
.
on
(
'click.'
+
this
.
type
,
this
.
options
.
selector
,
$
.
proxy
(
this
.
toggle
,
this
))
}
else
if
(
trigger
!=
'manual'
)
{
var
eventIn
=
trigger
==
'hover'
?
'mouseenter'
:
'focusin'
var
eventOut
=
trigger
==
'hover'
?
'mouseleave'
:
'focusout'
this
.
$element
.
on
(
eventIn
+
'.'
+
this
.
type
,
this
.
options
.
selector
,
$
.
proxy
(
this
.
enter
,
this
))
this
.
$element
.
on
(
eventOut
+
'.'
+
this
.
type
,
this
.
options
.
selector
,
$
.
proxy
(
this
.
leave
,
this
))
}
}
this
.
options
.
selector
?
(
this
.
_options
=
$
.
extend
({},
this
.
options
,
{
trigger
:
'manual'
,
selector
:
''
}))
:
this
.
fixTitle
()
}
Tooltip
.
prototype
.
getDefaults
=
function
()
{
return
Tooltip
.
DEFAULTS
}
Tooltip
.
prototype
.
getOptions
=
function
(
options
)
{
options
=
$
.
extend
({},
this
.
getDefaults
(),
this
.
$element
.
data
(),
options
)
if
(
options
.
delay
&&
typeof
options
.
delay
==
'number'
)
{
options
.
delay
=
{
show
:
options
.
delay
,
hide
:
options
.
delay
}
}
return
options
}
Tooltip
.
prototype
.
getDelegateOptions
=
function
()
{
var
options
=
{}
var
defaults
=
this
.
getDefaults
()
this
.
_options
&&
$
.
each
(
this
.
_options
,
function
(
key
,
value
)
{
if
(
defaults
[
key
]
!=
value
)
options
[
key
]
=
value
})
return
options
}
Tooltip
.
prototype
.
enter
=
function
(
obj
)
{
var
self
=
obj
instanceof
this
.
constructor
?
obj
:
$
(
obj
.
currentTarget
).
data
(
'bs.'
+
this
.
type
)
if
(
!
self
)
{
self
=
new
this
.
constructor
(
obj
.
currentTarget
,
this
.
getDelegateOptions
())
$
(
obj
.
currentTarget
).
data
(
'bs.'
+
this
.
type
,
self
)
}
if
(
obj
instanceof
$
.
Event
)
{
self
.
inState
[
obj
.
type
==
'focusin'
?
'focus'
:
'hover'
]
=
true
}
if
(
self
.
tip
().
hasClass
(
'in'
)
||
self
.
hoverState
==
'in'
)
{
self
.
hoverState
=
'in'
return
}
clearTimeout
(
self
.
timeout
)
self
.
hoverState
=
'in'
if
(
!
self
.
options
.
delay
||
!
self
.
options
.
delay
.
show
)
return
self
.
show
()
self
.
timeout
=
setTimeout
(
function
()
{
if
(
self
.
hoverState
==
'in'
)
self
.
show
()
},
self
.
options
.
delay
.
show
)
}
Tooltip
.
prototype
.
isInStateTrue
=
function
()
{
for
(
var
key
in
this
.
inState
)
{
if
(
this
.
inState
[
key
])
return
true
}
return
false
}
Tooltip
.
prototype
.
leave
=
function
(
obj
)
{
var
self
=
obj
instanceof
this
.
constructor
?
obj
:
$
(
obj
.
currentTarget
).
data
(
'bs.'
+
this
.
type
)
if
(
!
self
)
{
self
=
new
this
.
constructor
(
obj
.
currentTarget
,
this
.
getDelegateOptions
())
$
(
obj
.
currentTarget
).
data
(
'bs.'
+
this
.
type
,
self
)
}
if
(
obj
instanceof
$
.
Event
)
{
self
.
inState
[
obj
.
type
==
'focusout'
?
'focus'
:
'hover'
]
=
false
}
if
(
self
.
isInStateTrue
())
return
clearTimeout
(
self
.
timeout
)
self
.
hoverState
=
'out'
if
(
!
self
.
options
.
delay
||
!
self
.
options
.
delay
.
hide
)
return
self
.
hide
()
self
.
timeout
=
setTimeout
(
function
()
{
if
(
self
.
hoverState
==
'out'
)
self
.
hide
()
},
self
.
options
.
delay
.
hide
)
}
Tooltip
.
prototype
.
show
=
function
()
{
var
e
=
$
.
Event
(
'show.bs.'
+
this
.
type
)
if
(
this
.
hasContent
()
&&
this
.
enabled
)
{
this
.
$element
.
trigger
(
e
)
var
inDom
=
$
.
contains
(
this
.
$element
[
0
].
ownerDocument
.
documentElement
,
this
.
$element
[
0
])
if
(
e
.
isDefaultPrevented
()
||
!
inDom
)
return
var
that
=
this
var
$tip
=
this
.
tip
()
var
tipId
=
this
.
getUID
(
this
.
type
)
this
.
setContent
()
$tip
.
attr
(
'id'
,
tipId
)
this
.
$element
.
attr
(
'aria-describedby'
,
tipId
)
if
(
this
.
options
.
animation
)
$tip
.
addClass
(
'fade'
)
var
placement
=
typeof
this
.
options
.
placement
==
'function'
?
this
.
options
.
placement
.
call
(
this
,
$tip
[
0
],
this
.
$element
[
0
])
:
this
.
options
.
placement
var
autoToken
=
/
\s?
auto
?\s?
/i
var
autoPlace
=
autoToken
.
test
(
placement
)
if
(
autoPlace
)
placement
=
placement
.
replace
(
autoToken
,
''
)
||
'top'
$tip
.
detach
()
.
css
({
top
:
0
,
left
:
0
,
display
:
'block'
})
.
addClass
(
placement
)
.
data
(
'bs.'
+
this
.
type
,
this
)
this
.
options
.
container
?
$tip
.
appendTo
(
this
.
options
.
container
)
:
$tip
.
insertAfter
(
this
.
$element
)
this
.
$element
.
trigger
(
'inserted.bs.'
+
this
.
type
)
var
pos
=
this
.
getPosition
()
var
actualWidth
=
$tip
[
0
].
offsetWidth
var
actualHeight
=
$tip
[
0
].
offsetHeight
if
(
autoPlace
)
{
var
orgPlacement
=
placement
var
viewportDim
=
this
.
getPosition
(
this
.
$viewport
)
placement
=
placement
==
'bottom'
&&
pos
.
bottom
+
actualHeight
>
viewportDim
.
bottom
?
'top'
:
placement
==
'top'
&&
pos
.
top
-
actualHeight
<
viewportDim
.
top
?
'bottom'
:
placement
==
'right'
&&
pos
.
right
+
actualWidth
>
viewportDim
.
width
?
'left'
:
placement
==
'left'
&&
pos
.
left
-
actualWidth
<
viewportDim
.
left
?
'right'
:
placement
$tip
.
removeClass
(
orgPlacement
)
.
addClass
(
placement
)
}
var
calculatedOffset
=
this
.
getCalculatedOffset
(
placement
,
pos
,
actualWidth
,
actualHeight
)
this
.
applyPlacement
(
calculatedOffset
,
placement
)
var
complete
=
function
()
{
var
prevHoverState
=
that
.
hoverState
that
.
$element
.
trigger
(
'shown.bs.'
+
that
.
type
)
that
.
hoverState
=
null
if
(
prevHoverState
==
'out'
)
that
.
leave
(
that
)
}
$
.
support
.
transition
&&
this
.
$tip
.
hasClass
(
'fade'
)
?
$tip
.
one
(
'bsTransitionEnd'
,
complete
)
.
emulateTransitionEnd
(
Tooltip
.
TRANSITION_DURATION
)
:
complete
()
}
}
Tooltip
.
prototype
.
applyPlacement
=
function
(
offset
,
placement
)
{
var
$tip
=
this
.
tip
()
var
width
=
$tip
[
0
].
offsetWidth
var
height
=
$tip
[
0
].
offsetHeight
// manually read margins because getBoundingClientRect includes difference
var
marginTop
=
parseInt
(
$tip
.
css
(
'margin-top'
),
10
)
var
marginLeft
=
parseInt
(
$tip
.
css
(
'margin-left'
),
10
)
// we must check for NaN for ie 8/9
if
(
isNaN
(
marginTop
))
marginTop
=
0
if
(
isNaN
(
marginLeft
))
marginLeft
=
0
offset
.
top
+=
marginTop
offset
.
left
+=
marginLeft
// $.fn.offset doesn't round pixel values
// so we use setOffset directly with our own function B-0
$
.
offset
.
setOffset
(
$tip
[
0
],
$
.
extend
({
using
:
function
(
props
)
{
$tip
.
css
({
top
:
Math
.
round
(
props
.
top
),
left
:
Math
.
round
(
props
.
left
)
})
}
},
offset
),
0
)
$tip
.
addClass
(
'in'
)
// check to see if placing tip in new offset caused the tip to resize itself
var
actualWidth
=
$tip
[
0
].
offsetWidth
var
actualHeight
=
$tip
[
0
].
offsetHeight
if
(
placement
==
'top'
&&
actualHeight
!=
height
)
{
offset
.
top
=
offset
.
top
+
height
-
actualHeight
}
var
delta
=
this
.
getViewportAdjustedDelta
(
placement
,
offset
,
actualWidth
,
actualHeight
)
if
(
delta
.
left
)
offset
.
left
+=
delta
.
left
else
offset
.
top
+=
delta
.
top
var
isVertical
=
/top|bottom/
.
test
(
placement
)
var
arrowDelta
=
isVertical
?
delta
.
left
*
2
-
width
+
actualWidth
:
delta
.
top
*
2
-
height
+
actualHeight
var
arrowOffsetPosition
=
isVertical
?
'offsetWidth'
:
'offsetHeight'
$tip
.
offset
(
offset
)
this
.
replaceArrow
(
arrowDelta
,
$tip
[
0
][
arrowOffsetPosition
],
isVertical
)
}
Tooltip
.
prototype
.
replaceArrow
=
function
(
delta
,
dimension
,
isVertical
)
{
this
.
arrow
()
.
css
(
isVertical
?
'left'
:
'top'
,
50
*
(
1
-
delta
/
dimension
)
+
'%'
)
.
css
(
isVertical
?
'top'
:
'left'
,
''
)
}
Tooltip
.
prototype
.
setContent
=
function
()
{
var
$tip
=
this
.
tip
()
var
title
=
this
.
getTitle
()
$tip
.
find
(
'.tooltip-inner'
)[
this
.
options
.
html
?
'html'
:
'text'
](
title
)
$tip
.
removeClass
(
'fade in top bottom left right'
)
}
Tooltip
.
prototype
.
hide
=
function
(
callback
)
{
var
that
=
this
var
$tip
=
$
(
this
.
$tip
)
var
e
=
$
.
Event
(
'hide.bs.'
+
this
.
type
)
function
complete
()
{
if
(
that
.
hoverState
!=
'in'
)
$tip
.
detach
()
that
.
$element
.
removeAttr
(
'aria-describedby'
)
.
trigger
(
'hidden.bs.'
+
that
.
type
)
callback
&&
callback
()
}
this
.
$element
.
trigger
(
e
)
if
(
e
.
isDefaultPrevented
())
return
$tip
.
removeClass
(
'in'
)
$
.
support
.
transition
&&
$tip
.
hasClass
(
'fade'
)
?
$tip
.
one
(
'bsTransitionEnd'
,
complete
)
.
emulateTransitionEnd
(
Tooltip
.
TRANSITION_DURATION
)
:
complete
()
this
.
hoverState
=
null
return
this
}
Tooltip
.
prototype
.
fixTitle
=
function
()
{
var
$e
=
this
.
$element
if
(
$e
.
attr
(
'title'
)
||
typeof
$e
.
attr
(
'data-original-title'
)
!=
'string'
)
{
$e
.
attr
(
'data-original-title'
,
$e
.
attr
(
'title'
)
||
''
).
attr
(
'title'
,
''
)
}
}
Tooltip
.
prototype
.
hasContent
=
function
()
{
return
this
.
getTitle
()
}
Tooltip
.
prototype
.
getPosition
=
function
(
$element
)
{
$element
=
$element
||
this
.
$element
var
el
=
$element
[
0
]
var
isBody
=
el
.
tagName
==
'BODY'
var
elRect
=
el
.
getBoundingClientRect
()
if
(
elRect
.
width
==
null
)
{
// width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
elRect
=
$
.
extend
({},
elRect
,
{
width
:
elRect
.
right
-
elRect
.
left
,
height
:
elRect
.
bottom
-
elRect
.
top
})
}
var
elOffset
=
isBody
?
{
top
:
0
,
left
:
0
}
:
$element
.
offset
()
var
scroll
=
{
scroll
:
isBody
?
document
.
documentElement
.
scrollTop
||
document
.
body
.
scrollTop
:
$element
.
scrollTop
()
}
var
outerDims
=
isBody
?
{
width
:
$
(
window
).
width
(),
height
:
$
(
window
).
height
()
}
:
null
return
$
.
extend
({},
elRect
,
scroll
,
outerDims
,
elOffset
)
}
Tooltip
.
prototype
.
getCalculatedOffset
=
function
(
placement
,
pos
,
actualWidth
,
actualHeight
)
{
return
placement
==
'bottom'
?
{
top
:
pos
.
top
+
pos
.
height
,
left
:
pos
.
left
+
pos
.
width
/
2
-
actualWidth
/
2
}
:
placement
==
'top'
?
{
top
:
pos
.
top
-
actualHeight
,
left
:
pos
.
left
+
pos
.
width
/
2
-
actualWidth
/
2
}
:
placement
==
'left'
?
{
top
:
pos
.
top
+
pos
.
height
/
2
-
actualHeight
/
2
,
left
:
pos
.
left
-
actualWidth
}
:
/* placement == 'right' */
{
top
:
pos
.
top
+
pos
.
height
/
2
-
actualHeight
/
2
,
left
:
pos
.
left
+
pos
.
width
}
}
Tooltip
.
prototype
.
getViewportAdjustedDelta
=
function
(
placement
,
pos
,
actualWidth
,
actualHeight
)
{
var
delta
=
{
top
:
0
,
left
:
0
}
if
(
!
this
.
$viewport
)
return
delta
var
viewportPadding
=
this
.
options
.
viewport
&&
this
.
options
.
viewport
.
padding
||
0
var
viewportDimensions
=
this
.
getPosition
(
this
.
$viewport
)
if
(
/right|left/
.
test
(
placement
))
{
var
topEdgeOffset
=
pos
.
top
-
viewportPadding
-
viewportDimensions
.
scroll
var
bottomEdgeOffset
=
pos
.
top
+
viewportPadding
-
viewportDimensions
.
scroll
+
actualHeight
if
(
topEdgeOffset
<
viewportDimensions
.
top
)
{
// top overflow
delta
.
top
=
viewportDimensions
.
top
-
topEdgeOffset
}
else
if
(
bottomEdgeOffset
>
viewportDimensions
.
top
+
viewportDimensions
.
height
)
{
// bottom overflow
delta
.
top
=
viewportDimensions
.
top
+
viewportDimensions
.
height
-
bottomEdgeOffset
}
}
else
{
var
leftEdgeOffset
=
pos
.
left
-
viewportPadding
var
rightEdgeOffset
=
pos
.
left
+
viewportPadding
+
actualWidth
if
(
leftEdgeOffset
<
viewportDimensions
.
left
)
{
// left overflow
delta
.
left
=
viewportDimensions
.
left
-
leftEdgeOffset
}
else
if
(
rightEdgeOffset
>
viewportDimensions
.
right
)
{
// right overflow
delta
.
left
=
viewportDimensions
.
left
+
viewportDimensions
.
width
-
rightEdgeOffset
}
}
return
delta
}
Tooltip
.
prototype
.
getTitle
=
function
()
{
var
title
var
$e
=
this
.
$element
var
o
=
this
.
options
title
=
$e
.
attr
(
'data-original-title'
)
||
(
typeof
o
.
title
==
'function'
?
o
.
title
.
call
(
$e
[
0
])
:
o
.
title
)
return
title
}
Tooltip
.
prototype
.
getUID
=
function
(
prefix
)
{
do
prefix
+=
~~
(
Math
.
random
()
*
1000000
)
while
(
document
.
getElementById
(
prefix
))
return
prefix
}
Tooltip
.
prototype
.
tip
=
function
()
{
if
(
!
this
.
$tip
)
{
this
.
$tip
=
$
(
this
.
options
.
template
)
if
(
this
.
$tip
.
length
!=
1
)
{
throw
new
Error
(
this
.
type
+
' `template` option must consist of exactly 1 top-level element!'
)
}
}
return
this
.
$tip
}
Tooltip
.
prototype
.
arrow
=
function
()
{
return
(
this
.
$arrow
=
this
.
$arrow
||
this
.
tip
().
find
(
'.tooltip-arrow'
))
}
Tooltip
.
prototype
.
enable
=
function
()
{
this
.
enabled
=
true
}
Tooltip
.
prototype
.
disable
=
function
()
{
this
.
enabled
=
false
}
Tooltip
.
prototype
.
toggleEnabled
=
function
()
{
this
.
enabled
=
!
this
.
enabled
}
Tooltip
.
prototype
.
toggle
=
function
(
e
)
{
var
self
=
this
if
(
e
)
{
self
=
$
(
e
.
currentTarget
).
data
(
'bs.'
+
this
.
type
)
if
(
!
self
)
{
self
=
new
this
.
constructor
(
e
.
currentTarget
,
this
.
getDelegateOptions
())
$
(
e
.
currentTarget
).
data
(
'bs.'
+
this
.
type
,
self
)
}
}
if
(
e
)
{
self
.
inState
.
click
=
!
self
.
inState
.
click
if
(
self
.
isInStateTrue
())
self
.
enter
(
self
)
else
self
.
leave
(
self
)
}
else
{
self
.
tip
().
hasClass
(
'in'
)
?
self
.
leave
(
self
)
:
self
.
enter
(
self
)
}
}
Tooltip
.
prototype
.
destroy
=
function
()
{
var
that
=
this
clearTimeout
(
this
.
timeout
)
this
.
hide
(
function
()
{
that
.
$element
.
off
(
'.'
+
that
.
type
).
removeData
(
'bs.'
+
that
.
type
)
if
(
that
.
$tip
)
{
that
.
$tip
.
detach
()
}
that
.
$tip
=
null
that
.
$arrow
=
null
that
.
$viewport
=
null
})
}
// TOOLTIP PLUGIN DEFINITION
// =========================
function
Plugin
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'bs.tooltip'
)
var
options
=
typeof
option
==
'object'
&&
option
if
(
!
data
&&
/destroy|hide/
.
test
(
option
))
return
if
(
!
data
)
$this
.
data
(
'bs.tooltip'
,
(
data
=
new
Tooltip
(
this
,
options
)))
if
(
typeof
option
==
'string'
)
data
[
option
]()
})
}
var
old
=
$
.
fn
.
tooltip
$
.
fn
.
tooltip
=
Plugin
$
.
fn
.
tooltip
.
Constructor
=
Tooltip
// TOOLTIP NO CONFLICT
// ===================
$
.
fn
.
tooltip
.
noConflict
=
function
()
{
$
.
fn
.
tooltip
=
old
return
this
}
}(
jQuery
);
/* ========================================================================
* Bootstrap: popover.js v3.3.5
* http://getbootstrap.com/javascript/#popovers
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+
function
(
$
)
{
'use strict'
;
// POPOVER PUBLIC CLASS DEFINITION
// ===============================
var
Popover
=
function
(
element
,
options
)
{
this
.
init
(
'popover'
,
element
,
options
)
}
if
(
!
$
.
fn
.
tooltip
)
throw
new
Error
(
'Popover requires tooltip.js'
)
Popover
.
VERSION
=
'3.3.5'
Popover
.
DEFAULTS
=
$
.
extend
({},
$
.
fn
.
tooltip
.
Constructor
.
DEFAULTS
,
{
placement
:
'right'
,
trigger
:
'click'
,
content
:
''
,
template
:
'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
})
// NOTE: POPOVER EXTENDS tooltip.js
// ================================
Popover
.
prototype
=
$
.
extend
({},
$
.
fn
.
tooltip
.
Constructor
.
prototype
)
Popover
.
prototype
.
constructor
=
Popover
Popover
.
prototype
.
getDefaults
=
function
()
{
return
Popover
.
DEFAULTS
}
Popover
.
prototype
.
setContent
=
function
()
{
var
$tip
=
this
.
tip
()
var
title
=
this
.
getTitle
()
var
content
=
this
.
getContent
()
$tip
.
find
(
'.popover-title'
)[
this
.
options
.
html
?
'html'
:
'text'
](
title
)
$tip
.
find
(
'.popover-content'
).
children
().
detach
().
end
()[
// we use append for html objects to maintain js events
this
.
options
.
html
?
(
typeof
content
==
'string'
?
'html'
:
'append'
)
:
'text'
](
content
)
$tip
.
removeClass
(
'fade top bottom left right in'
)
// IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
// this manually by checking the contents.
if
(
!
$tip
.
find
(
'.popover-title'
).
html
())
$tip
.
find
(
'.popover-title'
).
hide
()
}
Popover
.
prototype
.
hasContent
=
function
()
{
return
this
.
getTitle
()
||
this
.
getContent
()
}
Popover
.
prototype
.
getContent
=
function
()
{
var
$e
=
this
.
$element
var
o
=
this
.
options
return
$e
.
attr
(
'data-content'
)
||
(
typeof
o
.
content
==
'function'
?
o
.
content
.
call
(
$e
[
0
])
:
o
.
content
)
}
Popover
.
prototype
.
arrow
=
function
()
{
return
(
this
.
$arrow
=
this
.
$arrow
||
this
.
tip
().
find
(
'.arrow'
))
}
// POPOVER PLUGIN DEFINITION
// =========================
function
Plugin
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'bs.popover'
)
var
options
=
typeof
option
==
'object'
&&
option
if
(
!
data
&&
/destroy|hide/
.
test
(
option
))
return
if
(
!
data
)
$this
.
data
(
'bs.popover'
,
(
data
=
new
Popover
(
this
,
options
)))
if
(
typeof
option
==
'string'
)
data
[
option
]()
})
}
var
old
=
$
.
fn
.
popover
$
.
fn
.
popover
=
Plugin
$
.
fn
.
popover
.
Constructor
=
Popover
// POPOVER NO CONFLICT
// ===================
$
.
fn
.
popover
.
noConflict
=
function
()
{
$
.
fn
.
popover
=
old
return
this
}
}(
jQuery
);
/* ========================================================================
* Bootstrap: scrollspy.js v3.3.5
* http://getbootstrap.com/javascript/#scrollspy
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+
function
(
$
)
{
'use strict'
;
// SCROLLSPY CLASS DEFINITION
// ==========================
function
ScrollSpy
(
element
,
options
)
{
this
.
$body
=
$
(
document
.
body
)
this
.
$scrollElement
=
$
(
element
).
is
(
document
.
body
)
?
$
(
window
)
:
$
(
element
)
this
.
options
=
$
.
extend
({},
ScrollSpy
.
DEFAULTS
,
options
)
this
.
selector
=
(
this
.
options
.
target
||
''
)
+
' .nav li > a'
this
.
offsets
=
[]
this
.
targets
=
[]
this
.
activeTarget
=
null
this
.
scrollHeight
=
0
this
.
$scrollElement
.
on
(
'scroll.bs.scrollspy'
,
$
.
proxy
(
this
.
process
,
this
))
this
.
refresh
()
this
.
process
()
}
ScrollSpy
.
VERSION
=
'3.3.5'
ScrollSpy
.
DEFAULTS
=
{
offset
:
10
}
ScrollSpy
.
prototype
.
getScrollHeight
=
function
()
{
return
this
.
$scrollElement
[
0
].
scrollHeight
||
Math
.
max
(
this
.
$body
[
0
].
scrollHeight
,
document
.
documentElement
.
scrollHeight
)
}
ScrollSpy
.
prototype
.
refresh
=
function
()
{
var
that
=
this
var
offsetMethod
=
'offset'
var
offsetBase
=
0
this
.
offsets
=
[]
this
.
targets
=
[]
this
.
scrollHeight
=
this
.
getScrollHeight
()
if
(
!
$
.
isWindow
(
this
.
$scrollElement
[
0
]))
{
offsetMethod
=
'position'
offsetBase
=
this
.
$scrollElement
.
scrollTop
()
}
this
.
$body
.
find
(
this
.
selector
)
.
map
(
function
()
{
var
$el
=
$
(
this
)
var
href
=
$el
.
data
(
'target'
)
||
$el
.
attr
(
'href'
)
var
$href
=
/^#./
.
test
(
href
)
&&
$
(
href
)
return
(
$href
&&
$href
.
length
&&
$href
.
is
(
':visible'
)
&&
[[
$href
[
offsetMethod
]().
top
+
offsetBase
,
href
]])
||
null
})
.
sort
(
function
(
a
,
b
)
{
return
a
[
0
]
-
b
[
0
]
})
.
each
(
function
()
{
that
.
offsets
.
push
(
this
[
0
])
that
.
targets
.
push
(
this
[
1
])
})
}
ScrollSpy
.
prototype
.
process
=
function
()
{
var
scrollTop
=
this
.
$scrollElement
.
scrollTop
()
+
this
.
options
.
offset
var
scrollHeight
=
this
.
getScrollHeight
()
var
maxScroll
=
this
.
options
.
offset
+
scrollHeight
-
this
.
$scrollElement
.
height
()
var
offsets
=
this
.
offsets
var
targets
=
this
.
targets
var
activeTarget
=
this
.
activeTarget
var
i
if
(
this
.
scrollHeight
!=
scrollHeight
)
{
this
.
refresh
()
}
if
(
scrollTop
>=
maxScroll
)
{
return
activeTarget
!=
(
i
=
targets
[
targets
.
length
-
1
])
&&
this
.
activate
(
i
)
}
if
(
activeTarget
&&
scrollTop
<
offsets
[
0
])
{
this
.
activeTarget
=
null
return
this
.
clear
()
}
for
(
i
=
offsets
.
length
;
i
--
;)
{
activeTarget
!=
targets
[
i
]
&&
scrollTop
>=
offsets
[
i
]
&&
(
offsets
[
i
+
1
]
===
undefined
||
scrollTop
<
offsets
[
i
+
1
])
&&
this
.
activate
(
targets
[
i
])
}
}
ScrollSpy
.
prototype
.
activate
=
function
(
target
)
{
this
.
activeTarget
=
target
this
.
clear
()
var
selector
=
this
.
selector
+
'[data-target="'
+
target
+
'"],'
+
this
.
selector
+
'[href="'
+
target
+
'"]'
var
active
=
$
(
selector
)
.
parents
(
'li'
)
.
addClass
(
'active'
)
if
(
active
.
parent
(
'.dropdown-menu'
).
length
)
{
active
=
active
.
closest
(
'li.dropdown'
)
.
addClass
(
'active'
)
}
active
.
trigger
(
'activate.bs.scrollspy'
)
}
ScrollSpy
.
prototype
.
clear
=
function
()
{
$
(
this
.
selector
)
.
parentsUntil
(
this
.
options
.
target
,
'.active'
)
.
removeClass
(
'active'
)
}
// SCROLLSPY PLUGIN DEFINITION
// ===========================
function
Plugin
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'bs.scrollspy'
)
var
options
=
typeof
option
==
'object'
&&
option
if
(
!
data
)
$this
.
data
(
'bs.scrollspy'
,
(
data
=
new
ScrollSpy
(
this
,
options
)))
if
(
typeof
option
==
'string'
)
data
[
option
]()
})
}
var
old
=
$
.
fn
.
scrollspy
$
.
fn
.
scrollspy
=
Plugin
$
.
fn
.
scrollspy
.
Constructor
=
ScrollSpy
// SCROLLSPY NO CONFLICT
// =====================
$
.
fn
.
scrollspy
.
noConflict
=
function
()
{
$
.
fn
.
scrollspy
=
old
return
this
}
// SCROLLSPY DATA-API
// ==================
$
(
window
).
on
(
'load.bs.scrollspy.data-api'
,
function
()
{
$
(
'[data-spy="scroll"]'
).
each
(
function
()
{
var
$spy
=
$
(
this
)
Plugin
.
call
(
$spy
,
$spy
.
data
())
})
})
}(
jQuery
);
/* ========================================================================
* Bootstrap: tab.js v3.3.5
* http://getbootstrap.com/javascript/#tabs
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+
function
(
$
)
{
'use strict'
;
// TAB CLASS DEFINITION
// ====================
var
Tab
=
function
(
element
)
{
// jscs:disable requireDollarBeforejQueryAssignment
this
.
element
=
$
(
element
)
// jscs:enable requireDollarBeforejQueryAssignment
}
Tab
.
VERSION
=
'3.3.5'
Tab
.
TRANSITION_DURATION
=
150
Tab
.
prototype
.
show
=
function
()
{
var
$this
=
this
.
element
var
$ul
=
$this
.
closest
(
'ul:not(.dropdown-menu)'
)
var
selector
=
$this
.
data
(
'target'
)
if
(
!
selector
)
{
selector
=
$this
.
attr
(
'href'
)
selector
=
selector
&&
selector
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
''
)
// strip for ie7
}
if
(
$this
.
parent
(
'li'
).
hasClass
(
'active'
))
return
var
$previous
=
$ul
.
find
(
'.active:last a'
)
var
hideEvent
=
$
.
Event
(
'hide.bs.tab'
,
{
relatedTarget
:
$this
[
0
]
})
var
showEvent
=
$
.
Event
(
'show.bs.tab'
,
{
relatedTarget
:
$previous
[
0
]
})
$previous
.
trigger
(
hideEvent
)
$this
.
trigger
(
showEvent
)
if
(
showEvent
.
isDefaultPrevented
()
||
hideEvent
.
isDefaultPrevented
())
return
var
$target
=
$
(
selector
)
this
.
activate
(
$this
.
closest
(
'li'
),
$ul
)
this
.
activate
(
$target
,
$target
.
parent
(),
function
()
{
$previous
.
trigger
({
type
:
'hidden.bs.tab'
,
relatedTarget
:
$this
[
0
]
})
$this
.
trigger
({
type
:
'shown.bs.tab'
,
relatedTarget
:
$previous
[
0
]
})
})
}
Tab
.
prototype
.
activate
=
function
(
element
,
container
,
callback
)
{
var
$active
=
container
.
find
(
'> .active'
)
var
transition
=
callback
&&
$
.
support
.
transition
&&
(
$active
.
length
&&
$active
.
hasClass
(
'fade'
)
||
!!
container
.
find
(
'> .fade'
).
length
)
function
next
()
{
$active
.
removeClass
(
'active'
)
.
find
(
'> .dropdown-menu > .active'
)
.
removeClass
(
'active'
)
.
end
()
.
find
(
'[data-toggle="tab"]'
)
.
attr
(
'aria-expanded'
,
false
)
element
.
addClass
(
'active'
)
.
find
(
'[data-toggle="tab"]'
)
.
attr
(
'aria-expanded'
,
true
)
if
(
transition
)
{
element
[
0
].
offsetWidth
// reflow for transition
element
.
addClass
(
'in'
)
}
else
{
element
.
removeClass
(
'fade'
)
}
if
(
element
.
parent
(
'.dropdown-menu'
).
length
)
{
element
.
closest
(
'li.dropdown'
)
.
addClass
(
'active'
)
.
end
()
.
find
(
'[data-toggle="tab"]'
)
.
attr
(
'aria-expanded'
,
true
)
}
callback
&&
callback
()
}
$active
.
length
&&
transition
?
$active
.
one
(
'bsTransitionEnd'
,
next
)
.
emulateTransitionEnd
(
Tab
.
TRANSITION_DURATION
)
:
next
()
$active
.
removeClass
(
'in'
)
}
// TAB PLUGIN DEFINITION
// =====================
function
Plugin
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'bs.tab'
)
if
(
!
data
)
$this
.
data
(
'bs.tab'
,
(
data
=
new
Tab
(
this
)))
if
(
typeof
option
==
'string'
)
data
[
option
]()
})
}
var
old
=
$
.
fn
.
tab
$
.
fn
.
tab
=
Plugin
$
.
fn
.
tab
.
Constructor
=
Tab
// TAB NO CONFLICT
// ===============
$
.
fn
.
tab
.
noConflict
=
function
()
{
$
.
fn
.
tab
=
old
return
this
}
// TAB DATA-API
// ============
var
clickHandler
=
function
(
e
)
{
e
.
preventDefault
()
Plugin
.
call
(
$
(
this
),
'show'
)
}
$
(
document
)
.
on
(
'click.bs.tab.data-api'
,
'[data-toggle="tab"]'
,
clickHandler
)
.
on
(
'click.bs.tab.data-api'
,
'[data-toggle="pill"]'
,
clickHandler
)
}(
jQuery
);
/* ========================================================================
* Bootstrap: affix.js v3.3.5
* http://getbootstrap.com/javascript/#affix
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+
function
(
$
)
{
'use strict'
;
// AFFIX CLASS DEFINITION
// ======================
var
Affix
=
function
(
element
,
options
)
{
this
.
options
=
$
.
extend
({},
Affix
.
DEFAULTS
,
options
)
this
.
$target
=
$
(
this
.
options
.
target
)
.
on
(
'scroll.bs.affix.data-api'
,
$
.
proxy
(
this
.
checkPosition
,
this
))
.
on
(
'click.bs.affix.data-api'
,
$
.
proxy
(
this
.
checkPositionWithEventLoop
,
this
))
this
.
$element
=
$
(
element
)
this
.
affixed
=
null
this
.
unpin
=
null
this
.
pinnedOffset
=
null
this
.
checkPosition
()
}
Affix
.
VERSION
=
'3.3.5'
Affix
.
RESET
=
'affix affix-top affix-bottom'
Affix
.
DEFAULTS
=
{
offset
:
0
,
target
:
window
}
Affix
.
prototype
.
getState
=
function
(
scrollHeight
,
height
,
offsetTop
,
offsetBottom
)
{
var
scrollTop
=
this
.
$target
.
scrollTop
()
var
position
=
this
.
$element
.
offset
()
var
targetHeight
=
this
.
$target
.
height
()
if
(
offsetTop
!=
null
&&
this
.
affixed
==
'top'
)
return
scrollTop
<
offsetTop
?
'top'
:
false
if
(
this
.
affixed
==
'bottom'
)
{
if
(
offsetTop
!=
null
)
return
(
scrollTop
+
this
.
unpin
<=
position
.
top
)
?
false
:
'bottom'
return
(
scrollTop
+
targetHeight
<=
scrollHeight
-
offsetBottom
)
?
false
:
'bottom'
}
var
initializing
=
this
.
affixed
==
null
var
colliderTop
=
initializing
?
scrollTop
:
position
.
top
var
colliderHeight
=
initializing
?
targetHeight
:
height
if
(
offsetTop
!=
null
&&
scrollTop
<=
offsetTop
)
return
'top'
if
(
offsetBottom
!=
null
&&
(
colliderTop
+
colliderHeight
>=
scrollHeight
-
offsetBottom
))
return
'bottom'
return
false
}
Affix
.
prototype
.
getPinnedOffset
=
function
()
{
if
(
this
.
pinnedOffset
)
return
this
.
pinnedOffset
this
.
$element
.
removeClass
(
Affix
.
RESET
).
addClass
(
'affix'
)
var
scrollTop
=
this
.
$target
.
scrollTop
()
var
position
=
this
.
$element
.
offset
()
return
(
this
.
pinnedOffset
=
position
.
top
-
scrollTop
)
}
Affix
.
prototype
.
checkPositionWithEventLoop
=
function
()
{
setTimeout
(
$
.
proxy
(
this
.
checkPosition
,
this
),
1
)
}
Affix
.
prototype
.
checkPosition
=
function
()
{
if
(
!
this
.
$element
.
is
(
':visible'
))
return
var
height
=
this
.
$element
.
height
()
var
offset
=
this
.
options
.
offset
var
offsetTop
=
offset
.
top
var
offsetBottom
=
offset
.
bottom
var
scrollHeight
=
Math
.
max
(
$
(
document
).
height
(),
$
(
document
.
body
).
height
())
if
(
typeof
offset
!=
'object'
)
offsetBottom
=
offsetTop
=
offset
if
(
typeof
offsetTop
==
'function'
)
offsetTop
=
offset
.
top
(
this
.
$element
)
if
(
typeof
offsetBottom
==
'function'
)
offsetBottom
=
offset
.
bottom
(
this
.
$element
)
var
affix
=
this
.
getState
(
scrollHeight
,
height
,
offsetTop
,
offsetBottom
)
if
(
this
.
affixed
!=
affix
)
{
if
(
this
.
unpin
!=
null
)
this
.
$element
.
css
(
'top'
,
''
)
var
affixType
=
'affix'
+
(
affix
?
'-'
+
affix
:
''
)
var
e
=
$
.
Event
(
affixType
+
'.bs.affix'
)
this
.
$element
.
trigger
(
e
)
if
(
e
.
isDefaultPrevented
())
return
this
.
affixed
=
affix
this
.
unpin
=
affix
==
'bottom'
?
this
.
getPinnedOffset
()
:
null
this
.
$element
.
removeClass
(
Affix
.
RESET
)
.
addClass
(
affixType
)
.
trigger
(
affixType
.
replace
(
'affix'
,
'affixed'
)
+
'.bs.affix'
)
}
if
(
affix
==
'bottom'
)
{
this
.
$element
.
offset
({
top
:
scrollHeight
-
height
-
offsetBottom
})
}
}
// AFFIX PLUGIN DEFINITION
// =======================
function
Plugin
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
var
data
=
$this
.
data
(
'bs.affix'
)
var
options
=
typeof
option
==
'object'
&&
option
if
(
!
data
)
$this
.
data
(
'bs.affix'
,
(
data
=
new
Affix
(
this
,
options
)))
if
(
typeof
option
==
'string'
)
data
[
option
]()
})
}
var
old
=
$
.
fn
.
affix
$
.
fn
.
affix
=
Plugin
$
.
fn
.
affix
.
Constructor
=
Affix
// AFFIX NO CONFLICT
// =================
$
.
fn
.
affix
.
noConflict
=
function
()
{
$
.
fn
.
affix
=
old
return
this
}
// AFFIX DATA-API
// ==============
$
(
window
).
on
(
'load'
,
function
()
{
$
(
'[data-spy="affix"]'
).
each
(
function
()
{
var
$spy
=
$
(
this
)
var
data
=
$spy
.
data
()
data
.
offset
=
data
.
offset
||
{}
if
(
data
.
offsetBottom
!=
null
)
data
.
offset
.
bottom
=
data
.
offsetBottom
if
(
data
.
offsetTop
!=
null
)
data
.
offset
.
top
=
data
.
offsetTop
Plugin
.
call
(
$spy
,
data
)
})
})
}(
jQuery
);
BeHub/Hub/static/js/bootstrap.min.js
0 → 100644
View file @
6cfb7fb6
/*!
* Bootstrap v3.3.5 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under the MIT license
*/
if
(
"undefined"
==
typeof
jQuery
)
throw
new
Error
(
"Bootstrap's JavaScript requires jQuery"
);
+
function
(
a
){
"use strict"
;
var
b
=
a
.
fn
.
jquery
.
split
(
" "
)[
0
].
split
(
"."
);
if
(
b
[
0
]
<
2
&&
b
[
1
]
<
9
||
1
==
b
[
0
]
&&
9
==
b
[
1
]
&&
b
[
2
]
<
1
)
throw
new
Error
(
"Bootstrap's JavaScript requires jQuery version 1.9.1 or higher"
)}(
jQuery
),
+
function
(
a
){
"use strict"
;
function
b
(){
var
a
=
document
.
createElement
(
"bootstrap"
),
b
=
{
WebkitTransition
:
"webkitTransitionEnd"
,
MozTransition
:
"transitionend"
,
OTransition
:
"oTransitionEnd otransitionend"
,
transition
:
"transitionend"
};
for
(
var
c
in
b
)
if
(
void
0
!==
a
.
style
[
c
])
return
{
end
:
b
[
c
]};
return
!
1
}
a
.
fn
.
emulateTransitionEnd
=
function
(
b
){
var
c
=!
1
,
d
=
this
;
a
(
this
).
one
(
"bsTransitionEnd"
,
function
(){
c
=!
0
});
var
e
=
function
(){
c
||
a
(
d
).
trigger
(
a
.
support
.
transition
.
end
)};
return
setTimeout
(
e
,
b
),
this
},
a
(
function
(){
a
.
support
.
transition
=
b
(),
a
.
support
.
transition
&&
(
a
.
event
.
special
.
bsTransitionEnd
=
{
bindType
:
a
.
support
.
transition
.
end
,
delegateType
:
a
.
support
.
transition
.
end
,
handle
:
function
(
b
){
return
a
(
b
.
target
).
is
(
this
)?
b
.
handleObj
.
handler
.
apply
(
this
,
arguments
):
void
0
}})})}(
jQuery
),
+
function
(
a
){
"use strict"
;
function
b
(
b
){
return
this
.
each
(
function
(){
var
c
=
a
(
this
),
e
=
c
.
data
(
"bs.alert"
);
e
||
c
.
data
(
"bs.alert"
,
e
=
new
d
(
this
)),
"string"
==
typeof
b
&&
e
[
b
].
call
(
c
)})}
var
c
=
'[data-dismiss="alert"]'
,
d
=
function
(
b
){
a
(
b
).
on
(
"click"
,
c
,
this
.
close
)};
d
.
VERSION
=
"3.3.5"
,
d
.
TRANSITION_DURATION
=
150
,
d
.
prototype
.
close
=
function
(
b
){
function
c
(){
g
.
detach
().
trigger
(
"closed.bs.alert"
).
remove
()}
var
e
=
a
(
this
),
f
=
e
.
attr
(
"data-target"
);
f
||
(
f
=
e
.
attr
(
"href"
),
f
=
f
&&
f
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
""
));
var
g
=
a
(
f
);
b
&&
b
.
preventDefault
(),
g
.
length
||
(
g
=
e
.
closest
(
".alert"
)),
g
.
trigger
(
b
=
a
.
Event
(
"close.bs.alert"
)),
b
.
isDefaultPrevented
()
||
(
g
.
removeClass
(
"in"
),
a
.
support
.
transition
&&
g
.
hasClass
(
"fade"
)?
g
.
one
(
"bsTransitionEnd"
,
c
).
emulateTransitionEnd
(
d
.
TRANSITION_DURATION
):
c
())};
var
e
=
a
.
fn
.
alert
;
a
.
fn
.
alert
=
b
,
a
.
fn
.
alert
.
Constructor
=
d
,
a
.
fn
.
alert
.
noConflict
=
function
(){
return
a
.
fn
.
alert
=
e
,
this
},
a
(
document
).
on
(
"click.bs.alert.data-api"
,
c
,
d
.
prototype
.
close
)}(
jQuery
),
+
function
(
a
){
"use strict"
;
function
b
(
b
){
return
this
.
each
(
function
(){
var
d
=
a
(
this
),
e
=
d
.
data
(
"bs.button"
),
f
=
"object"
==
typeof
b
&&
b
;
e
||
d
.
data
(
"bs.button"
,
e
=
new
c
(
this
,
f
)),
"toggle"
==
b
?
e
.
toggle
():
b
&&
e
.
setState
(
b
)})}
var
c
=
function
(
b
,
d
){
this
.
$element
=
a
(
b
),
this
.
options
=
a
.
extend
({},
c
.
DEFAULTS
,
d
),
this
.
isLoading
=!
1
};
c
.
VERSION
=
"3.3.5"
,
c
.
DEFAULTS
=
{
loadingText
:
"loading..."
},
c
.
prototype
.
setState
=
function
(
b
){
var
c
=
"disabled"
,
d
=
this
.
$element
,
e
=
d
.
is
(
"input"
)?
"val"
:
"html"
,
f
=
d
.
data
();
b
+=
"Text"
,
null
==
f
.
resetText
&&
d
.
data
(
"resetText"
,
d
[
e
]()),
setTimeout
(
a
.
proxy
(
function
(){
d
[
e
](
null
==
f
[
b
]?
this
.
options
[
b
]:
f
[
b
]),
"loadingText"
==
b
?(
this
.
isLoading
=!
0
,
d
.
addClass
(
c
).
attr
(
c
,
c
)):
this
.
isLoading
&&
(
this
.
isLoading
=!
1
,
d
.
removeClass
(
c
).
removeAttr
(
c
))},
this
),
0
)},
c
.
prototype
.
toggle
=
function
(){
var
a
=!
0
,
b
=
this
.
$element
.
closest
(
'[data-toggle="buttons"]'
);
if
(
b
.
length
){
var
c
=
this
.
$element
.
find
(
"input"
);
"radio"
==
c
.
prop
(
"type"
)?(
c
.
prop
(
"checked"
)
&&
(
a
=!
1
),
b
.
find
(
".active"
).
removeClass
(
"active"
),
this
.
$element
.
addClass
(
"active"
)):
"checkbox"
==
c
.
prop
(
"type"
)
&&
(
c
.
prop
(
"checked"
)
!==
this
.
$element
.
hasClass
(
"active"
)
&&
(
a
=!
1
),
this
.
$element
.
toggleClass
(
"active"
)),
c
.
prop
(
"checked"
,
this
.
$element
.
hasClass
(
"active"
)),
a
&&
c
.
trigger
(
"change"
)}
else
this
.
$element
.
attr
(
"aria-pressed"
,
!
this
.
$element
.
hasClass
(
"active"
)),
this
.
$element
.
toggleClass
(
"active"
)};
var
d
=
a
.
fn
.
button
;
a
.
fn
.
button
=
b
,
a
.
fn
.
button
.
Constructor
=
c
,
a
.
fn
.
button
.
noConflict
=
function
(){
return
a
.
fn
.
button
=
d
,
this
},
a
(
document
).
on
(
"click.bs.button.data-api"
,
'[data-toggle^="button"]'
,
function
(
c
){
var
d
=
a
(
c
.
target
);
d
.
hasClass
(
"btn"
)
||
(
d
=
d
.
closest
(
".btn"
)),
b
.
call
(
d
,
"toggle"
),
a
(
c
.
target
).
is
(
'input[type="radio"]'
)
||
a
(
c
.
target
).
is
(
'input[type="checkbox"]'
)
||
c
.
preventDefault
()}).
on
(
"focus.bs.button.data-api blur.bs.button.data-api"
,
'[data-toggle^="button"]'
,
function
(
b
){
a
(
b
.
target
).
closest
(
".btn"
).
toggleClass
(
"focus"
,
/^focus
(
in
)?
$/
.
test
(
b
.
type
))})}(
jQuery
),
+
function
(
a
){
"use strict"
;
function
b
(
b
){
return
this
.
each
(
function
(){
var
d
=
a
(
this
),
e
=
d
.
data
(
"bs.carousel"
),
f
=
a
.
extend
({},
c
.
DEFAULTS
,
d
.
data
(),
"object"
==
typeof
b
&&
b
),
g
=
"string"
==
typeof
b
?
b
:
f
.
slide
;
e
||
d
.
data
(
"bs.carousel"
,
e
=
new
c
(
this
,
f
)),
"number"
==
typeof
b
?
e
.
to
(
b
):
g
?
e
[
g
]():
f
.
interval
&&
e
.
pause
().
cycle
()})}
var
c
=
function
(
b
,
c
){
this
.
$element
=
a
(
b
),
this
.
$indicators
=
this
.
$element
.
find
(
".carousel-indicators"
),
this
.
options
=
c
,
this
.
paused
=
null
,
this
.
sliding
=
null
,
this
.
interval
=
null
,
this
.
$active
=
null
,
this
.
$items
=
null
,
this
.
options
.
keyboard
&&
this
.
$element
.
on
(
"keydown.bs.carousel"
,
a
.
proxy
(
this
.
keydown
,
this
)),
"hover"
==
this
.
options
.
pause
&&!
(
"ontouchstart"
in
document
.
documentElement
)
&&
this
.
$element
.
on
(
"mouseenter.bs.carousel"
,
a
.
proxy
(
this
.
pause
,
this
)).
on
(
"mouseleave.bs.carousel"
,
a
.
proxy
(
this
.
cycle
,
this
))};
c
.
VERSION
=
"3.3.5"
,
c
.
TRANSITION_DURATION
=
600
,
c
.
DEFAULTS
=
{
interval
:
5
e3
,
pause
:
"hover"
,
wrap
:
!
0
,
keyboard
:
!
0
},
c
.
prototype
.
keydown
=
function
(
a
){
if
(
!
/input|textarea/i
.
test
(
a
.
target
.
tagName
)){
switch
(
a
.
which
){
case
37
:
this
.
prev
();
break
;
case
39
:
this
.
next
();
break
;
default
:
return
}
a
.
preventDefault
()}},
c
.
prototype
.
cycle
=
function
(
b
){
return
b
||
(
this
.
paused
=!
1
),
this
.
interval
&&
clearInterval
(
this
.
interval
),
this
.
options
.
interval
&&!
this
.
paused
&&
(
this
.
interval
=
setInterval
(
a
.
proxy
(
this
.
next
,
this
),
this
.
options
.
interval
)),
this
},
c
.
prototype
.
getItemIndex
=
function
(
a
){
return
this
.
$items
=
a
.
parent
().
children
(
".item"
),
this
.
$items
.
index
(
a
||
this
.
$active
)},
c
.
prototype
.
getItemForDirection
=
function
(
a
,
b
){
var
c
=
this
.
getItemIndex
(
b
),
d
=
"prev"
==
a
&&
0
===
c
||
"next"
==
a
&&
c
==
this
.
$items
.
length
-
1
;
if
(
d
&&!
this
.
options
.
wrap
)
return
b
;
var
e
=
"prev"
==
a
?
-
1
:
1
,
f
=
(
c
+
e
)
%
this
.
$items
.
length
;
return
this
.
$items
.
eq
(
f
)},
c
.
prototype
.
to
=
function
(
a
){
var
b
=
this
,
c
=
this
.
getItemIndex
(
this
.
$active
=
this
.
$element
.
find
(
".item.active"
));
return
a
>
this
.
$items
.
length
-
1
||
0
>
a
?
void
0
:
this
.
sliding
?
this
.
$element
.
one
(
"slid.bs.carousel"
,
function
(){
b
.
to
(
a
)}):
c
==
a
?
this
.
pause
().
cycle
():
this
.
slide
(
a
>
c
?
"next"
:
"prev"
,
this
.
$items
.
eq
(
a
))},
c
.
prototype
.
pause
=
function
(
b
){
return
b
||
(
this
.
paused
=!
0
),
this
.
$element
.
find
(
".next, .prev"
).
length
&&
a
.
support
.
transition
&&
(
this
.
$element
.
trigger
(
a
.
support
.
transition
.
end
),
this
.
cycle
(
!
0
)),
this
.
interval
=
clearInterval
(
this
.
interval
),
this
},
c
.
prototype
.
next
=
function
(){
return
this
.
sliding
?
void
0
:
this
.
slide
(
"next"
)},
c
.
prototype
.
prev
=
function
(){
return
this
.
sliding
?
void
0
:
this
.
slide
(
"prev"
)},
c
.
prototype
.
slide
=
function
(
b
,
d
){
var
e
=
this
.
$element
.
find
(
".item.active"
),
f
=
d
||
this
.
getItemForDirection
(
b
,
e
),
g
=
this
.
interval
,
h
=
"next"
==
b
?
"left"
:
"right"
,
i
=
this
;
if
(
f
.
hasClass
(
"active"
))
return
this
.
sliding
=!
1
;
var
j
=
f
[
0
],
k
=
a
.
Event
(
"slide.bs.carousel"
,{
relatedTarget
:
j
,
direction
:
h
});
if
(
this
.
$element
.
trigger
(
k
),
!
k
.
isDefaultPrevented
()){
if
(
this
.
sliding
=!
0
,
g
&&
this
.
pause
(),
this
.
$indicators
.
length
){
this
.
$indicators
.
find
(
".active"
).
removeClass
(
"active"
);
var
l
=
a
(
this
.
$indicators
.
children
()[
this
.
getItemIndex
(
f
)]);
l
&&
l
.
addClass
(
"active"
)}
var
m
=
a
.
Event
(
"slid.bs.carousel"
,{
relatedTarget
:
j
,
direction
:
h
});
return
a
.
support
.
transition
&&
this
.
$element
.
hasClass
(
"slide"
)?(
f
.
addClass
(
b
),
f
[
0
].
offsetWidth
,
e
.
addClass
(
h
),
f
.
addClass
(
h
),
e
.
one
(
"bsTransitionEnd"
,
function
(){
f
.
removeClass
([
b
,
h
].
join
(
" "
)).
addClass
(
"active"
),
e
.
removeClass
([
"active"
,
h
].
join
(
" "
)),
i
.
sliding
=!
1
,
setTimeout
(
function
(){
i
.
$element
.
trigger
(
m
)},
0
)}).
emulateTransitionEnd
(
c
.
TRANSITION_DURATION
)):(
e
.
removeClass
(
"active"
),
f
.
addClass
(
"active"
),
this
.
sliding
=!
1
,
this
.
$element
.
trigger
(
m
)),
g
&&
this
.
cycle
(),
this
}};
var
d
=
a
.
fn
.
carousel
;
a
.
fn
.
carousel
=
b
,
a
.
fn
.
carousel
.
Constructor
=
c
,
a
.
fn
.
carousel
.
noConflict
=
function
(){
return
a
.
fn
.
carousel
=
d
,
this
};
var
e
=
function
(
c
){
var
d
,
e
=
a
(
this
),
f
=
a
(
e
.
attr
(
"data-target"
)
||
(
d
=
e
.
attr
(
"href"
))
&&
d
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
""
));
if
(
f
.
hasClass
(
"carousel"
)){
var
g
=
a
.
extend
({},
f
.
data
(),
e
.
data
()),
h
=
e
.
attr
(
"data-slide-to"
);
h
&&
(
g
.
interval
=!
1
),
b
.
call
(
f
,
g
),
h
&&
f
.
data
(
"bs.carousel"
).
to
(
h
),
c
.
preventDefault
()}};
a
(
document
).
on
(
"click.bs.carousel.data-api"
,
"[data-slide]"
,
e
).
on
(
"click.bs.carousel.data-api"
,
"[data-slide-to]"
,
e
),
a
(
window
).
on
(
"load"
,
function
(){
a
(
'[data-ride="carousel"]'
).
each
(
function
(){
var
c
=
a
(
this
);
b
.
call
(
c
,
c
.
data
())})})}(
jQuery
),
+
function
(
a
){
"use strict"
;
function
b
(
b
){
var
c
,
d
=
b
.
attr
(
"data-target"
)
||
(
c
=
b
.
attr
(
"href"
))
&&
c
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
""
);
return
a
(
d
)}
function
c
(
b
){
return
this
.
each
(
function
(){
var
c
=
a
(
this
),
e
=
c
.
data
(
"bs.collapse"
),
f
=
a
.
extend
({},
d
.
DEFAULTS
,
c
.
data
(),
"object"
==
typeof
b
&&
b
);
!
e
&&
f
.
toggle
&&
/show|hide/
.
test
(
b
)
&&
(
f
.
toggle
=!
1
),
e
||
c
.
data
(
"bs.collapse"
,
e
=
new
d
(
this
,
f
)),
"string"
==
typeof
b
&&
e
[
b
]()})}
var
d
=
function
(
b
,
c
){
this
.
$element
=
a
(
b
),
this
.
options
=
a
.
extend
({},
d
.
DEFAULTS
,
c
),
this
.
$trigger
=
a
(
'[data-toggle="collapse"][href="#'
+
b
.
id
+
'"],[data-toggle="collapse"][data-target="#'
+
b
.
id
+
'"]'
),
this
.
transitioning
=
null
,
this
.
options
.
parent
?
this
.
$parent
=
this
.
getParent
():
this
.
addAriaAndCollapsedClass
(
this
.
$element
,
this
.
$trigger
),
this
.
options
.
toggle
&&
this
.
toggle
()};
d
.
VERSION
=
"3.3.5"
,
d
.
TRANSITION_DURATION
=
350
,
d
.
DEFAULTS
=
{
toggle
:
!
0
},
d
.
prototype
.
dimension
=
function
(){
var
a
=
this
.
$element
.
hasClass
(
"width"
);
return
a
?
"width"
:
"height"
},
d
.
prototype
.
show
=
function
(){
if
(
!
this
.
transitioning
&&!
this
.
$element
.
hasClass
(
"in"
)){
var
b
,
e
=
this
.
$parent
&&
this
.
$parent
.
children
(
".panel"
).
children
(
".in, .collapsing"
);
if
(
!
(
e
&&
e
.
length
&&
(
b
=
e
.
data
(
"bs.collapse"
),
b
&&
b
.
transitioning
))){
var
f
=
a
.
Event
(
"show.bs.collapse"
);
if
(
this
.
$element
.
trigger
(
f
),
!
f
.
isDefaultPrevented
()){
e
&&
e
.
length
&&
(
c
.
call
(
e
,
"hide"
),
b
||
e
.
data
(
"bs.collapse"
,
null
));
var
g
=
this
.
dimension
();
this
.
$element
.
removeClass
(
"collapse"
).
addClass
(
"collapsing"
)[
g
](
0
).
attr
(
"aria-expanded"
,
!
0
),
this
.
$trigger
.
removeClass
(
"collapsed"
).
attr
(
"aria-expanded"
,
!
0
),
this
.
transitioning
=
1
;
var
h
=
function
(){
this
.
$element
.
removeClass
(
"collapsing"
).
addClass
(
"collapse in"
)[
g
](
""
),
this
.
transitioning
=
0
,
this
.
$element
.
trigger
(
"shown.bs.collapse"
)};
if
(
!
a
.
support
.
transition
)
return
h
.
call
(
this
);
var
i
=
a
.
camelCase
([
"scroll"
,
g
].
join
(
"-"
));
this
.
$element
.
one
(
"bsTransitionEnd"
,
a
.
proxy
(
h
,
this
)).
emulateTransitionEnd
(
d
.
TRANSITION_DURATION
)[
g
](
this
.
$element
[
0
][
i
])}}}},
d
.
prototype
.
hide
=
function
(){
if
(
!
this
.
transitioning
&&
this
.
$element
.
hasClass
(
"in"
)){
var
b
=
a
.
Event
(
"hide.bs.collapse"
);
if
(
this
.
$element
.
trigger
(
b
),
!
b
.
isDefaultPrevented
()){
var
c
=
this
.
dimension
();
this
.
$element
[
c
](
this
.
$element
[
c
]())[
0
].
offsetHeight
,
this
.
$element
.
addClass
(
"collapsing"
).
removeClass
(
"collapse in"
).
attr
(
"aria-expanded"
,
!
1
),
this
.
$trigger
.
addClass
(
"collapsed"
).
attr
(
"aria-expanded"
,
!
1
),
this
.
transitioning
=
1
;
var
e
=
function
(){
this
.
transitioning
=
0
,
this
.
$element
.
removeClass
(
"collapsing"
).
addClass
(
"collapse"
).
trigger
(
"hidden.bs.collapse"
)};
return
a
.
support
.
transition
?
void
this
.
$element
[
c
](
0
).
one
(
"bsTransitionEnd"
,
a
.
proxy
(
e
,
this
)).
emulateTransitionEnd
(
d
.
TRANSITION_DURATION
):
e
.
call
(
this
)}}},
d
.
prototype
.
toggle
=
function
(){
this
[
this
.
$element
.
hasClass
(
"in"
)?
"hide"
:
"show"
]()},
d
.
prototype
.
getParent
=
function
(){
return
a
(
this
.
options
.
parent
).
find
(
'[data-toggle="collapse"][data-parent="'
+
this
.
options
.
parent
+
'"]'
).
each
(
a
.
proxy
(
function
(
c
,
d
){
var
e
=
a
(
d
);
this
.
addAriaAndCollapsedClass
(
b
(
e
),
e
)},
this
)).
end
()},
d
.
prototype
.
addAriaAndCollapsedClass
=
function
(
a
,
b
){
var
c
=
a
.
hasClass
(
"in"
);
a
.
attr
(
"aria-expanded"
,
c
),
b
.
toggleClass
(
"collapsed"
,
!
c
).
attr
(
"aria-expanded"
,
c
)};
var
e
=
a
.
fn
.
collapse
;
a
.
fn
.
collapse
=
c
,
a
.
fn
.
collapse
.
Constructor
=
d
,
a
.
fn
.
collapse
.
noConflict
=
function
(){
return
a
.
fn
.
collapse
=
e
,
this
},
a
(
document
).
on
(
"click.bs.collapse.data-api"
,
'[data-toggle="collapse"]'
,
function
(
d
){
var
e
=
a
(
this
);
e
.
attr
(
"data-target"
)
||
d
.
preventDefault
();
var
f
=
b
(
e
),
g
=
f
.
data
(
"bs.collapse"
),
h
=
g
?
"toggle"
:
e
.
data
();
c
.
call
(
f
,
h
)})}(
jQuery
),
+
function
(
a
){
"use strict"
;
function
b
(
b
){
var
c
=
b
.
attr
(
"data-target"
);
c
||
(
c
=
b
.
attr
(
"href"
),
c
=
c
&&
/#
[
A-Za-z
]
/
.
test
(
c
)
&&
c
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
""
));
var
d
=
c
&&
a
(
c
);
return
d
&&
d
.
length
?
d
:
b
.
parent
()}
function
c
(
c
){
c
&&
3
===
c
.
which
||
(
a
(
e
).
remove
(),
a
(
f
).
each
(
function
(){
var
d
=
a
(
this
),
e
=
b
(
d
),
f
=
{
relatedTarget
:
this
};
e
.
hasClass
(
"open"
)
&&
(
c
&&
"click"
==
c
.
type
&&
/input|textarea/i
.
test
(
c
.
target
.
tagName
)
&&
a
.
contains
(
e
[
0
],
c
.
target
)
||
(
e
.
trigger
(
c
=
a
.
Event
(
"hide.bs.dropdown"
,
f
)),
c
.
isDefaultPrevented
()
||
(
d
.
attr
(
"aria-expanded"
,
"false"
),
e
.
removeClass
(
"open"
).
trigger
(
"hidden.bs.dropdown"
,
f
))))}))}
function
d
(
b
){
return
this
.
each
(
function
(){
var
c
=
a
(
this
),
d
=
c
.
data
(
"bs.dropdown"
);
d
||
c
.
data
(
"bs.dropdown"
,
d
=
new
g
(
this
)),
"string"
==
typeof
b
&&
d
[
b
].
call
(
c
)})}
var
e
=
".dropdown-backdrop"
,
f
=
'[data-toggle="dropdown"]'
,
g
=
function
(
b
){
a
(
b
).
on
(
"click.bs.dropdown"
,
this
.
toggle
)};
g
.
VERSION
=
"3.3.5"
,
g
.
prototype
.
toggle
=
function
(
d
){
var
e
=
a
(
this
);
if
(
!
e
.
is
(
".disabled, :disabled"
)){
var
f
=
b
(
e
),
g
=
f
.
hasClass
(
"open"
);
if
(
c
(),
!
g
){
"ontouchstart"
in
document
.
documentElement
&&!
f
.
closest
(
".navbar-nav"
).
length
&&
a
(
document
.
createElement
(
"div"
)).
addClass
(
"dropdown-backdrop"
).
insertAfter
(
a
(
this
)).
on
(
"click"
,
c
);
var
h
=
{
relatedTarget
:
this
};
if
(
f
.
trigger
(
d
=
a
.
Event
(
"show.bs.dropdown"
,
h
)),
d
.
isDefaultPrevented
())
return
;
e
.
trigger
(
"focus"
).
attr
(
"aria-expanded"
,
"true"
),
f
.
toggleClass
(
"open"
).
trigger
(
"shown.bs.dropdown"
,
h
)}
return
!
1
}},
g
.
prototype
.
keydown
=
function
(
c
){
if
(
/
(
38|40|27|32
)
/
.
test
(
c
.
which
)
&&!
/input|textarea/i
.
test
(
c
.
target
.
tagName
)){
var
d
=
a
(
this
);
if
(
c
.
preventDefault
(),
c
.
stopPropagation
(),
!
d
.
is
(
".disabled, :disabled"
)){
var
e
=
b
(
d
),
g
=
e
.
hasClass
(
"open"
);
if
(
!
g
&&
27
!=
c
.
which
||
g
&&
27
==
c
.
which
)
return
27
==
c
.
which
&&
e
.
find
(
f
).
trigger
(
"focus"
),
d
.
trigger
(
"click"
);
var
h
=
" li:not(.disabled):visible a"
,
i
=
e
.
find
(
".dropdown-menu"
+
h
);
if
(
i
.
length
){
var
j
=
i
.
index
(
c
.
target
);
38
==
c
.
which
&&
j
>
0
&&
j
--
,
40
==
c
.
which
&&
j
<
i
.
length
-
1
&&
j
++
,
~
j
||
(
j
=
0
),
i
.
eq
(
j
).
trigger
(
"focus"
)}}}};
var
h
=
a
.
fn
.
dropdown
;
a
.
fn
.
dropdown
=
d
,
a
.
fn
.
dropdown
.
Constructor
=
g
,
a
.
fn
.
dropdown
.
noConflict
=
function
(){
return
a
.
fn
.
dropdown
=
h
,
this
},
a
(
document
).
on
(
"click.bs.dropdown.data-api"
,
c
).
on
(
"click.bs.dropdown.data-api"
,
".dropdown form"
,
function
(
a
){
a
.
stopPropagation
()}).
on
(
"click.bs.dropdown.data-api"
,
f
,
g
.
prototype
.
toggle
).
on
(
"keydown.bs.dropdown.data-api"
,
f
,
g
.
prototype
.
keydown
).
on
(
"keydown.bs.dropdown.data-api"
,
".dropdown-menu"
,
g
.
prototype
.
keydown
)}(
jQuery
),
+
function
(
a
){
"use strict"
;
function
b
(
b
,
d
){
return
this
.
each
(
function
(){
var
e
=
a
(
this
),
f
=
e
.
data
(
"bs.modal"
),
g
=
a
.
extend
({},
c
.
DEFAULTS
,
e
.
data
(),
"object"
==
typeof
b
&&
b
);
f
||
e
.
data
(
"bs.modal"
,
f
=
new
c
(
this
,
g
)),
"string"
==
typeof
b
?
f
[
b
](
d
):
g
.
show
&&
f
.
show
(
d
)})}
var
c
=
function
(
b
,
c
){
this
.
options
=
c
,
this
.
$body
=
a
(
document
.
body
),
this
.
$element
=
a
(
b
),
this
.
$dialog
=
this
.
$element
.
find
(
".modal-dialog"
),
this
.
$backdrop
=
null
,
this
.
isShown
=
null
,
this
.
originalBodyPad
=
null
,
this
.
scrollbarWidth
=
0
,
this
.
ignoreBackdropClick
=!
1
,
this
.
options
.
remote
&&
this
.
$element
.
find
(
".modal-content"
).
load
(
this
.
options
.
remote
,
a
.
proxy
(
function
(){
this
.
$element
.
trigger
(
"loaded.bs.modal"
)},
this
))};
c
.
VERSION
=
"3.3.5"
,
c
.
TRANSITION_DURATION
=
300
,
c
.
BACKDROP_TRANSITION_DURATION
=
150
,
c
.
DEFAULTS
=
{
backdrop
:
!
0
,
keyboard
:
!
0
,
show
:
!
0
},
c
.
prototype
.
toggle
=
function
(
a
){
return
this
.
isShown
?
this
.
hide
():
this
.
show
(
a
)},
c
.
prototype
.
show
=
function
(
b
){
var
d
=
this
,
e
=
a
.
Event
(
"show.bs.modal"
,{
relatedTarget
:
b
});
this
.
$element
.
trigger
(
e
),
this
.
isShown
||
e
.
isDefaultPrevented
()
||
(
this
.
isShown
=!
0
,
this
.
checkScrollbar
(),
this
.
setScrollbar
(),
this
.
$body
.
addClass
(
"modal-open"
),
this
.
escape
(),
this
.
resize
(),
this
.
$element
.
on
(
"click.dismiss.bs.modal"
,
'[data-dismiss="modal"]'
,
a
.
proxy
(
this
.
hide
,
this
)),
this
.
$dialog
.
on
(
"mousedown.dismiss.bs.modal"
,
function
(){
d
.
$element
.
one
(
"mouseup.dismiss.bs.modal"
,
function
(
b
){
a
(
b
.
target
).
is
(
d
.
$element
)
&&
(
d
.
ignoreBackdropClick
=!
0
)})}),
this
.
backdrop
(
function
(){
var
e
=
a
.
support
.
transition
&&
d
.
$element
.
hasClass
(
"fade"
);
d
.
$element
.
parent
().
length
||
d
.
$element
.
appendTo
(
d
.
$body
),
d
.
$element
.
show
().
scrollTop
(
0
),
d
.
adjustDialog
(),
e
&&
d
.
$element
[
0
].
offsetWidth
,
d
.
$element
.
addClass
(
"in"
),
d
.
enforceFocus
();
var
f
=
a
.
Event
(
"shown.bs.modal"
,{
relatedTarget
:
b
});
e
?
d
.
$dialog
.
one
(
"bsTransitionEnd"
,
function
(){
d
.
$element
.
trigger
(
"focus"
).
trigger
(
f
)}).
emulateTransitionEnd
(
c
.
TRANSITION_DURATION
):
d
.
$element
.
trigger
(
"focus"
).
trigger
(
f
)}))},
c
.
prototype
.
hide
=
function
(
b
){
b
&&
b
.
preventDefault
(),
b
=
a
.
Event
(
"hide.bs.modal"
),
this
.
$element
.
trigger
(
b
),
this
.
isShown
&&!
b
.
isDefaultPrevented
()
&&
(
this
.
isShown
=!
1
,
this
.
escape
(),
this
.
resize
(),
a
(
document
).
off
(
"focusin.bs.modal"
),
this
.
$element
.
removeClass
(
"in"
).
off
(
"click.dismiss.bs.modal"
).
off
(
"mouseup.dismiss.bs.modal"
),
this
.
$dialog
.
off
(
"mousedown.dismiss.bs.modal"
),
a
.
support
.
transition
&&
this
.
$element
.
hasClass
(
"fade"
)?
this
.
$element
.
one
(
"bsTransitionEnd"
,
a
.
proxy
(
this
.
hideModal
,
this
)).
emulateTransitionEnd
(
c
.
TRANSITION_DURATION
):
this
.
hideModal
())},
c
.
prototype
.
enforceFocus
=
function
(){
a
(
document
).
off
(
"focusin.bs.modal"
).
on
(
"focusin.bs.modal"
,
a
.
proxy
(
function
(
a
){
this
.
$element
[
0
]
===
a
.
target
||
this
.
$element
.
has
(
a
.
target
).
length
||
this
.
$element
.
trigger
(
"focus"
)},
this
))},
c
.
prototype
.
escape
=
function
(){
this
.
isShown
&&
this
.
options
.
keyboard
?
this
.
$element
.
on
(
"keydown.dismiss.bs.modal"
,
a
.
proxy
(
function
(
a
){
27
==
a
.
which
&&
this
.
hide
()},
this
)):
this
.
isShown
||
this
.
$element
.
off
(
"keydown.dismiss.bs.modal"
)},
c
.
prototype
.
resize
=
function
(){
this
.
isShown
?
a
(
window
).
on
(
"resize.bs.modal"
,
a
.
proxy
(
this
.
handleUpdate
,
this
)):
a
(
window
).
off
(
"resize.bs.modal"
)},
c
.
prototype
.
hideModal
=
function
(){
var
a
=
this
;
this
.
$element
.
hide
(),
this
.
backdrop
(
function
(){
a
.
$body
.
removeClass
(
"modal-open"
),
a
.
resetAdjustments
(),
a
.
resetScrollbar
(),
a
.
$element
.
trigger
(
"hidden.bs.modal"
)})},
c
.
prototype
.
removeBackdrop
=
function
(){
this
.
$backdrop
&&
this
.
$backdrop
.
remove
(),
this
.
$backdrop
=
null
},
c
.
prototype
.
backdrop
=
function
(
b
){
var
d
=
this
,
e
=
this
.
$element
.
hasClass
(
"fade"
)?
"fade"
:
""
;
if
(
this
.
isShown
&&
this
.
options
.
backdrop
){
var
f
=
a
.
support
.
transition
&&
e
;
if
(
this
.
$backdrop
=
a
(
document
.
createElement
(
"div"
)).
addClass
(
"modal-backdrop "
+
e
).
appendTo
(
this
.
$body
),
this
.
$element
.
on
(
"click.dismiss.bs.modal"
,
a
.
proxy
(
function
(
a
){
return
this
.
ignoreBackdropClick
?
void
(
this
.
ignoreBackdropClick
=!
1
):
void
(
a
.
target
===
a
.
currentTarget
&&
(
"static"
==
this
.
options
.
backdrop
?
this
.
$element
[
0
].
focus
():
this
.
hide
()))},
this
)),
f
&&
this
.
$backdrop
[
0
].
offsetWidth
,
this
.
$backdrop
.
addClass
(
"in"
),
!
b
)
return
;
f
?
this
.
$backdrop
.
one
(
"bsTransitionEnd"
,
b
).
emulateTransitionEnd
(
c
.
BACKDROP_TRANSITION_DURATION
):
b
()}
else
if
(
!
this
.
isShown
&&
this
.
$backdrop
){
this
.
$backdrop
.
removeClass
(
"in"
);
var
g
=
function
(){
d
.
removeBackdrop
(),
b
&&
b
()};
a
.
support
.
transition
&&
this
.
$element
.
hasClass
(
"fade"
)?
this
.
$backdrop
.
one
(
"bsTransitionEnd"
,
g
).
emulateTransitionEnd
(
c
.
BACKDROP_TRANSITION_DURATION
):
g
()}
else
b
&&
b
()},
c
.
prototype
.
handleUpdate
=
function
(){
this
.
adjustDialog
()},
c
.
prototype
.
adjustDialog
=
function
(){
var
a
=
this
.
$element
[
0
].
scrollHeight
>
document
.
documentElement
.
clientHeight
;
this
.
$element
.
css
({
paddingLeft
:
!
this
.
bodyIsOverflowing
&&
a
?
this
.
scrollbarWidth
:
""
,
paddingRight
:
this
.
bodyIsOverflowing
&&!
a
?
this
.
scrollbarWidth
:
""
})},
c
.
prototype
.
resetAdjustments
=
function
(){
this
.
$element
.
css
({
paddingLeft
:
""
,
paddingRight
:
""
})},
c
.
prototype
.
checkScrollbar
=
function
(){
var
a
=
window
.
innerWidth
;
if
(
!
a
){
var
b
=
document
.
documentElement
.
getBoundingClientRect
();
a
=
b
.
right
-
Math
.
abs
(
b
.
left
)}
this
.
bodyIsOverflowing
=
document
.
body
.
clientWidth
<
a
,
this
.
scrollbarWidth
=
this
.
measureScrollbar
()},
c
.
prototype
.
setScrollbar
=
function
(){
var
a
=
parseInt
(
this
.
$body
.
css
(
"padding-right"
)
||
0
,
10
);
this
.
originalBodyPad
=
document
.
body
.
style
.
paddingRight
||
""
,
this
.
bodyIsOverflowing
&&
this
.
$body
.
css
(
"padding-right"
,
a
+
this
.
scrollbarWidth
)},
c
.
prototype
.
resetScrollbar
=
function
(){
this
.
$body
.
css
(
"padding-right"
,
this
.
originalBodyPad
)},
c
.
prototype
.
measureScrollbar
=
function
(){
var
a
=
document
.
createElement
(
"div"
);
a
.
className
=
"modal-scrollbar-measure"
,
this
.
$body
.
append
(
a
);
var
b
=
a
.
offsetWidth
-
a
.
clientWidth
;
return
this
.
$body
[
0
].
removeChild
(
a
),
b
};
var
d
=
a
.
fn
.
modal
;
a
.
fn
.
modal
=
b
,
a
.
fn
.
modal
.
Constructor
=
c
,
a
.
fn
.
modal
.
noConflict
=
function
(){
return
a
.
fn
.
modal
=
d
,
this
},
a
(
document
).
on
(
"click.bs.modal.data-api"
,
'[data-toggle="modal"]'
,
function
(
c
){
var
d
=
a
(
this
),
e
=
d
.
attr
(
"href"
),
f
=
a
(
d
.
attr
(
"data-target"
)
||
e
&&
e
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
""
)),
g
=
f
.
data
(
"bs.modal"
)?
"toggle"
:
a
.
extend
({
remote
:
!
/#/
.
test
(
e
)
&&
e
},
f
.
data
(),
d
.
data
());
d
.
is
(
"a"
)
&&
c
.
preventDefault
(),
f
.
one
(
"show.bs.modal"
,
function
(
a
){
a
.
isDefaultPrevented
()
||
f
.
one
(
"hidden.bs.modal"
,
function
(){
d
.
is
(
":visible"
)
&&
d
.
trigger
(
"focus"
)})}),
b
.
call
(
f
,
g
,
this
)})}(
jQuery
),
+
function
(
a
){
"use strict"
;
function
b
(
b
){
return
this
.
each
(
function
(){
var
d
=
a
(
this
),
e
=
d
.
data
(
"bs.tooltip"
),
f
=
"object"
==
typeof
b
&&
b
;(
e
||!
/destroy|hide/
.
test
(
b
))
&&
(
e
||
d
.
data
(
"bs.tooltip"
,
e
=
new
c
(
this
,
f
)),
"string"
==
typeof
b
&&
e
[
b
]())})}
var
c
=
function
(
a
,
b
){
this
.
type
=
null
,
this
.
options
=
null
,
this
.
enabled
=
null
,
this
.
timeout
=
null
,
this
.
hoverState
=
null
,
this
.
$element
=
null
,
this
.
inState
=
null
,
this
.
init
(
"tooltip"
,
a
,
b
)};
c
.
VERSION
=
"3.3.5"
,
c
.
TRANSITION_DURATION
=
150
,
c
.
DEFAULTS
=
{
animation
:
!
0
,
placement
:
"top"
,
selector
:
!
1
,
template
:
'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
,
trigger
:
"hover focus"
,
title
:
""
,
delay
:
0
,
html
:
!
1
,
container
:
!
1
,
viewport
:{
selector
:
"body"
,
padding
:
0
}},
c
.
prototype
.
init
=
function
(
b
,
c
,
d
){
if
(
this
.
enabled
=!
0
,
this
.
type
=
b
,
this
.
$element
=
a
(
c
),
this
.
options
=
this
.
getOptions
(
d
),
this
.
$viewport
=
this
.
options
.
viewport
&&
a
(
a
.
isFunction
(
this
.
options
.
viewport
)?
this
.
options
.
viewport
.
call
(
this
,
this
.
$element
):
this
.
options
.
viewport
.
selector
||
this
.
options
.
viewport
),
this
.
inState
=
{
click
:
!
1
,
hover
:
!
1
,
focus
:
!
1
},
this
.
$element
[
0
]
instanceof
document
.
constructor
&&!
this
.
options
.
selector
)
throw
new
Error
(
"`selector` option must be specified when initializing "
+
this
.
type
+
" on the window.document object!"
);
for
(
var
e
=
this
.
options
.
trigger
.
split
(
" "
),
f
=
e
.
length
;
f
--
;){
var
g
=
e
[
f
];
if
(
"click"
==
g
)
this
.
$element
.
on
(
"click."
+
this
.
type
,
this
.
options
.
selector
,
a
.
proxy
(
this
.
toggle
,
this
));
else
if
(
"manual"
!=
g
){
var
h
=
"hover"
==
g
?
"mouseenter"
:
"focusin"
,
i
=
"hover"
==
g
?
"mouseleave"
:
"focusout"
;
this
.
$element
.
on
(
h
+
"."
+
this
.
type
,
this
.
options
.
selector
,
a
.
proxy
(
this
.
enter
,
this
)),
this
.
$element
.
on
(
i
+
"."
+
this
.
type
,
this
.
options
.
selector
,
a
.
proxy
(
this
.
leave
,
this
))}}
this
.
options
.
selector
?
this
.
_options
=
a
.
extend
({},
this
.
options
,{
trigger
:
"manual"
,
selector
:
""
}):
this
.
fixTitle
()},
c
.
prototype
.
getDefaults
=
function
(){
return
c
.
DEFAULTS
},
c
.
prototype
.
getOptions
=
function
(
b
){
return
b
=
a
.
extend
({},
this
.
getDefaults
(),
this
.
$element
.
data
(),
b
),
b
.
delay
&&
"number"
==
typeof
b
.
delay
&&
(
b
.
delay
=
{
show
:
b
.
delay
,
hide
:
b
.
delay
}),
b
},
c
.
prototype
.
getDelegateOptions
=
function
(){
var
b
=
{},
c
=
this
.
getDefaults
();
return
this
.
_options
&&
a
.
each
(
this
.
_options
,
function
(
a
,
d
){
c
[
a
]
!=
d
&&
(
b
[
a
]
=
d
)}),
b
},
c
.
prototype
.
enter
=
function
(
b
){
var
c
=
b
instanceof
this
.
constructor
?
b
:
a
(
b
.
currentTarget
).
data
(
"bs."
+
this
.
type
);
return
c
||
(
c
=
new
this
.
constructor
(
b
.
currentTarget
,
this
.
getDelegateOptions
()),
a
(
b
.
currentTarget
).
data
(
"bs."
+
this
.
type
,
c
)),
b
instanceof
a
.
Event
&&
(
c
.
inState
[
"focusin"
==
b
.
type
?
"focus"
:
"hover"
]
=!
0
),
c
.
tip
().
hasClass
(
"in"
)
||
"in"
==
c
.
hoverState
?
void
(
c
.
hoverState
=
"in"
):(
clearTimeout
(
c
.
timeout
),
c
.
hoverState
=
"in"
,
c
.
options
.
delay
&&
c
.
options
.
delay
.
show
?
void
(
c
.
timeout
=
setTimeout
(
function
(){
"in"
==
c
.
hoverState
&&
c
.
show
()},
c
.
options
.
delay
.
show
)):
c
.
show
())},
c
.
prototype
.
isInStateTrue
=
function
(){
for
(
var
a
in
this
.
inState
)
if
(
this
.
inState
[
a
])
return
!
0
;
return
!
1
},
c
.
prototype
.
leave
=
function
(
b
){
var
c
=
b
instanceof
this
.
constructor
?
b
:
a
(
b
.
currentTarget
).
data
(
"bs."
+
this
.
type
);
return
c
||
(
c
=
new
this
.
constructor
(
b
.
currentTarget
,
this
.
getDelegateOptions
()),
a
(
b
.
currentTarget
).
data
(
"bs."
+
this
.
type
,
c
)),
b
instanceof
a
.
Event
&&
(
c
.
inState
[
"focusout"
==
b
.
type
?
"focus"
:
"hover"
]
=!
1
),
c
.
isInStateTrue
()?
void
0
:(
clearTimeout
(
c
.
timeout
),
c
.
hoverState
=
"out"
,
c
.
options
.
delay
&&
c
.
options
.
delay
.
hide
?
void
(
c
.
timeout
=
setTimeout
(
function
(){
"out"
==
c
.
hoverState
&&
c
.
hide
()},
c
.
options
.
delay
.
hide
)):
c
.
hide
())},
c
.
prototype
.
show
=
function
(){
var
b
=
a
.
Event
(
"show.bs."
+
this
.
type
);
if
(
this
.
hasContent
()
&&
this
.
enabled
){
this
.
$element
.
trigger
(
b
);
var
d
=
a
.
contains
(
this
.
$element
[
0
].
ownerDocument
.
documentElement
,
this
.
$element
[
0
]);
if
(
b
.
isDefaultPrevented
()
||!
d
)
return
;
var
e
=
this
,
f
=
this
.
tip
(),
g
=
this
.
getUID
(
this
.
type
);
this
.
setContent
(),
f
.
attr
(
"id"
,
g
),
this
.
$element
.
attr
(
"aria-describedby"
,
g
),
this
.
options
.
animation
&&
f
.
addClass
(
"fade"
);
var
h
=
"function"
==
typeof
this
.
options
.
placement
?
this
.
options
.
placement
.
call
(
this
,
f
[
0
],
this
.
$element
[
0
]):
this
.
options
.
placement
,
i
=
/
\s?
auto
?\s?
/i
,
j
=
i
.
test
(
h
);
j
&&
(
h
=
h
.
replace
(
i
,
""
)
||
"top"
),
f
.
detach
().
css
({
top
:
0
,
left
:
0
,
display
:
"block"
}).
addClass
(
h
).
data
(
"bs."
+
this
.
type
,
this
),
this
.
options
.
container
?
f
.
appendTo
(
this
.
options
.
container
):
f
.
insertAfter
(
this
.
$element
),
this
.
$element
.
trigger
(
"inserted.bs."
+
this
.
type
);
var
k
=
this
.
getPosition
(),
l
=
f
[
0
].
offsetWidth
,
m
=
f
[
0
].
offsetHeight
;
if
(
j
){
var
n
=
h
,
o
=
this
.
getPosition
(
this
.
$viewport
);
h
=
"bottom"
==
h
&&
k
.
bottom
+
m
>
o
.
bottom
?
"top"
:
"top"
==
h
&&
k
.
top
-
m
<
o
.
top
?
"bottom"
:
"right"
==
h
&&
k
.
right
+
l
>
o
.
width
?
"left"
:
"left"
==
h
&&
k
.
left
-
l
<
o
.
left
?
"right"
:
h
,
f
.
removeClass
(
n
).
addClass
(
h
)}
var
p
=
this
.
getCalculatedOffset
(
h
,
k
,
l
,
m
);
this
.
applyPlacement
(
p
,
h
);
var
q
=
function
(){
var
a
=
e
.
hoverState
;
e
.
$element
.
trigger
(
"shown.bs."
+
e
.
type
),
e
.
hoverState
=
null
,
"out"
==
a
&&
e
.
leave
(
e
)};
a
.
support
.
transition
&&
this
.
$tip
.
hasClass
(
"fade"
)?
f
.
one
(
"bsTransitionEnd"
,
q
).
emulateTransitionEnd
(
c
.
TRANSITION_DURATION
):
q
()}},
c
.
prototype
.
applyPlacement
=
function
(
b
,
c
){
var
d
=
this
.
tip
(),
e
=
d
[
0
].
offsetWidth
,
f
=
d
[
0
].
offsetHeight
,
g
=
parseInt
(
d
.
css
(
"margin-top"
),
10
),
h
=
parseInt
(
d
.
css
(
"margin-left"
),
10
);
isNaN
(
g
)
&&
(
g
=
0
),
isNaN
(
h
)
&&
(
h
=
0
),
b
.
top
+=
g
,
b
.
left
+=
h
,
a
.
offset
.
setOffset
(
d
[
0
],
a
.
extend
({
using
:
function
(
a
){
d
.
css
({
top
:
Math
.
round
(
a
.
top
),
left
:
Math
.
round
(
a
.
left
)})}},
b
),
0
),
d
.
addClass
(
"in"
);
var
i
=
d
[
0
].
offsetWidth
,
j
=
d
[
0
].
offsetHeight
;
"top"
==
c
&&
j
!=
f
&&
(
b
.
top
=
b
.
top
+
f
-
j
);
var
k
=
this
.
getViewportAdjustedDelta
(
c
,
b
,
i
,
j
);
k
.
left
?
b
.
left
+=
k
.
left
:
b
.
top
+=
k
.
top
;
var
l
=
/top|bottom/
.
test
(
c
),
m
=
l
?
2
*
k
.
left
-
e
+
i
:
2
*
k
.
top
-
f
+
j
,
n
=
l
?
"offsetWidth"
:
"offsetHeight"
;
d
.
offset
(
b
),
this
.
replaceArrow
(
m
,
d
[
0
][
n
],
l
)},
c
.
prototype
.
replaceArrow
=
function
(
a
,
b
,
c
){
this
.
arrow
().
css
(
c
?
"left"
:
"top"
,
50
*
(
1
-
a
/
b
)
+
"%"
).
css
(
c
?
"top"
:
"left"
,
""
)},
c
.
prototype
.
setContent
=
function
(){
var
a
=
this
.
tip
(),
b
=
this
.
getTitle
();
a
.
find
(
".tooltip-inner"
)[
this
.
options
.
html
?
"html"
:
"text"
](
b
),
a
.
removeClass
(
"fade in top bottom left right"
)},
c
.
prototype
.
hide
=
function
(
b
){
function
d
(){
"in"
!=
e
.
hoverState
&&
f
.
detach
(),
e
.
$element
.
removeAttr
(
"aria-describedby"
).
trigger
(
"hidden.bs."
+
e
.
type
),
b
&&
b
()}
var
e
=
this
,
f
=
a
(
this
.
$tip
),
g
=
a
.
Event
(
"hide.bs."
+
this
.
type
);
return
this
.
$element
.
trigger
(
g
),
g
.
isDefaultPrevented
()?
void
0
:(
f
.
removeClass
(
"in"
),
a
.
support
.
transition
&&
f
.
hasClass
(
"fade"
)?
f
.
one
(
"bsTransitionEnd"
,
d
).
emulateTransitionEnd
(
c
.
TRANSITION_DURATION
):
d
(),
this
.
hoverState
=
null
,
this
)},
c
.
prototype
.
fixTitle
=
function
(){
var
a
=
this
.
$element
;(
a
.
attr
(
"title"
)
||
"string"
!=
typeof
a
.
attr
(
"data-original-title"
))
&&
a
.
attr
(
"data-original-title"
,
a
.
attr
(
"title"
)
||
""
).
attr
(
"title"
,
""
)},
c
.
prototype
.
hasContent
=
function
(){
return
this
.
getTitle
()},
c
.
prototype
.
getPosition
=
function
(
b
){
b
=
b
||
this
.
$element
;
var
c
=
b
[
0
],
d
=
"BODY"
==
c
.
tagName
,
e
=
c
.
getBoundingClientRect
();
null
==
e
.
width
&&
(
e
=
a
.
extend
({},
e
,{
width
:
e
.
right
-
e
.
left
,
height
:
e
.
bottom
-
e
.
top
}));
var
f
=
d
?{
top
:
0
,
left
:
0
}:
b
.
offset
(),
g
=
{
scroll
:
d
?
document
.
documentElement
.
scrollTop
||
document
.
body
.
scrollTop
:
b
.
scrollTop
()},
h
=
d
?{
width
:
a
(
window
).
width
(),
height
:
a
(
window
).
height
()}:
null
;
return
a
.
extend
({},
e
,
g
,
h
,
f
)},
c
.
prototype
.
getCalculatedOffset
=
function
(
a
,
b
,
c
,
d
){
return
"bottom"
==
a
?{
top
:
b
.
top
+
b
.
height
,
left
:
b
.
left
+
b
.
width
/
2
-
c
/
2
}:
"top"
==
a
?{
top
:
b
.
top
-
d
,
left
:
b
.
left
+
b
.
width
/
2
-
c
/
2
}:
"left"
==
a
?{
top
:
b
.
top
+
b
.
height
/
2
-
d
/
2
,
left
:
b
.
left
-
c
}:{
top
:
b
.
top
+
b
.
height
/
2
-
d
/
2
,
left
:
b
.
left
+
b
.
width
}},
c
.
prototype
.
getViewportAdjustedDelta
=
function
(
a
,
b
,
c
,
d
){
var
e
=
{
top
:
0
,
left
:
0
};
if
(
!
this
.
$viewport
)
return
e
;
var
f
=
this
.
options
.
viewport
&&
this
.
options
.
viewport
.
padding
||
0
,
g
=
this
.
getPosition
(
this
.
$viewport
);
if
(
/right|left/
.
test
(
a
)){
var
h
=
b
.
top
-
f
-
g
.
scroll
,
i
=
b
.
top
+
f
-
g
.
scroll
+
d
;
h
<
g
.
top
?
e
.
top
=
g
.
top
-
h
:
i
>
g
.
top
+
g
.
height
&&
(
e
.
top
=
g
.
top
+
g
.
height
-
i
)}
else
{
var
j
=
b
.
left
-
f
,
k
=
b
.
left
+
f
+
c
;
j
<
g
.
left
?
e
.
left
=
g
.
left
-
j
:
k
>
g
.
right
&&
(
e
.
left
=
g
.
left
+
g
.
width
-
k
)}
return
e
},
c
.
prototype
.
getTitle
=
function
(){
var
a
,
b
=
this
.
$element
,
c
=
this
.
options
;
return
a
=
b
.
attr
(
"data-original-title"
)
||
(
"function"
==
typeof
c
.
title
?
c
.
title
.
call
(
b
[
0
]):
c
.
title
)},
c
.
prototype
.
getUID
=
function
(
a
){
do
a
+=~~
(
1
e6
*
Math
.
random
());
while
(
document
.
getElementById
(
a
));
return
a
},
c
.
prototype
.
tip
=
function
(){
if
(
!
this
.
$tip
&&
(
this
.
$tip
=
a
(
this
.
options
.
template
),
1
!=
this
.
$tip
.
length
))
throw
new
Error
(
this
.
type
+
" `template` option must consist of exactly 1 top-level element!"
);
return
this
.
$tip
},
c
.
prototype
.
arrow
=
function
(){
return
this
.
$arrow
=
this
.
$arrow
||
this
.
tip
().
find
(
".tooltip-arrow"
)},
c
.
prototype
.
enable
=
function
(){
this
.
enabled
=!
0
},
c
.
prototype
.
disable
=
function
(){
this
.
enabled
=!
1
},
c
.
prototype
.
toggleEnabled
=
function
(){
this
.
enabled
=!
this
.
enabled
},
c
.
prototype
.
toggle
=
function
(
b
){
var
c
=
this
;
b
&&
(
c
=
a
(
b
.
currentTarget
).
data
(
"bs."
+
this
.
type
),
c
||
(
c
=
new
this
.
constructor
(
b
.
currentTarget
,
this
.
getDelegateOptions
()),
a
(
b
.
currentTarget
).
data
(
"bs."
+
this
.
type
,
c
))),
b
?(
c
.
inState
.
click
=!
c
.
inState
.
click
,
c
.
isInStateTrue
()?
c
.
enter
(
c
):
c
.
leave
(
c
)):
c
.
tip
().
hasClass
(
"in"
)?
c
.
leave
(
c
):
c
.
enter
(
c
)},
c
.
prototype
.
destroy
=
function
(){
var
a
=
this
;
clearTimeout
(
this
.
timeout
),
this
.
hide
(
function
(){
a
.
$element
.
off
(
"."
+
a
.
type
).
removeData
(
"bs."
+
a
.
type
),
a
.
$tip
&&
a
.
$tip
.
detach
(),
a
.
$tip
=
null
,
a
.
$arrow
=
null
,
a
.
$viewport
=
null
})};
var
d
=
a
.
fn
.
tooltip
;
a
.
fn
.
tooltip
=
b
,
a
.
fn
.
tooltip
.
Constructor
=
c
,
a
.
fn
.
tooltip
.
noConflict
=
function
(){
return
a
.
fn
.
tooltip
=
d
,
this
}}(
jQuery
),
+
function
(
a
){
"use strict"
;
function
b
(
b
){
return
this
.
each
(
function
(){
var
d
=
a
(
this
),
e
=
d
.
data
(
"bs.popover"
),
f
=
"object"
==
typeof
b
&&
b
;(
e
||!
/destroy|hide/
.
test
(
b
))
&&
(
e
||
d
.
data
(
"bs.popover"
,
e
=
new
c
(
this
,
f
)),
"string"
==
typeof
b
&&
e
[
b
]())})}
var
c
=
function
(
a
,
b
){
this
.
init
(
"popover"
,
a
,
b
)};
if
(
!
a
.
fn
.
tooltip
)
throw
new
Error
(
"Popover requires tooltip.js"
);
c
.
VERSION
=
"3.3.5"
,
c
.
DEFAULTS
=
a
.
extend
({},
a
.
fn
.
tooltip
.
Constructor
.
DEFAULTS
,{
placement
:
"right"
,
trigger
:
"click"
,
content
:
""
,
template
:
'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
}),
c
.
prototype
=
a
.
extend
({},
a
.
fn
.
tooltip
.
Constructor
.
prototype
),
c
.
prototype
.
constructor
=
c
,
c
.
prototype
.
getDefaults
=
function
(){
return
c
.
DEFAULTS
},
c
.
prototype
.
setContent
=
function
(){
var
a
=
this
.
tip
(),
b
=
this
.
getTitle
(),
c
=
this
.
getContent
();
a
.
find
(
".popover-title"
)[
this
.
options
.
html
?
"html"
:
"text"
](
b
),
a
.
find
(
".popover-content"
).
children
().
detach
().
end
()[
this
.
options
.
html
?
"string"
==
typeof
c
?
"html"
:
"append"
:
"text"
](
c
),
a
.
removeClass
(
"fade top bottom left right in"
),
a
.
find
(
".popover-title"
).
html
()
||
a
.
find
(
".popover-title"
).
hide
()},
c
.
prototype
.
hasContent
=
function
(){
return
this
.
getTitle
()
||
this
.
getContent
()},
c
.
prototype
.
getContent
=
function
(){
var
a
=
this
.
$element
,
b
=
this
.
options
;
return
a
.
attr
(
"data-content"
)
||
(
"function"
==
typeof
b
.
content
?
b
.
content
.
call
(
a
[
0
]):
b
.
content
)},
c
.
prototype
.
arrow
=
function
(){
return
this
.
$arrow
=
this
.
$arrow
||
this
.
tip
().
find
(
".arrow"
)};
var
d
=
a
.
fn
.
popover
;
a
.
fn
.
popover
=
b
,
a
.
fn
.
popover
.
Constructor
=
c
,
a
.
fn
.
popover
.
noConflict
=
function
(){
return
a
.
fn
.
popover
=
d
,
this
}}(
jQuery
),
+
function
(
a
){
"use strict"
;
function
b
(
c
,
d
){
this
.
$body
=
a
(
document
.
body
),
this
.
$scrollElement
=
a
(
a
(
c
).
is
(
document
.
body
)?
window
:
c
),
this
.
options
=
a
.
extend
({},
b
.
DEFAULTS
,
d
),
this
.
selector
=
(
this
.
options
.
target
||
""
)
+
" .nav li > a"
,
this
.
offsets
=
[],
this
.
targets
=
[],
this
.
activeTarget
=
null
,
this
.
scrollHeight
=
0
,
this
.
$scrollElement
.
on
(
"scroll.bs.scrollspy"
,
a
.
proxy
(
this
.
process
,
this
)),
this
.
refresh
(),
this
.
process
()}
function
c
(
c
){
return
this
.
each
(
function
(){
var
d
=
a
(
this
),
e
=
d
.
data
(
"bs.scrollspy"
),
f
=
"object"
==
typeof
c
&&
c
;
e
||
d
.
data
(
"bs.scrollspy"
,
e
=
new
b
(
this
,
f
)),
"string"
==
typeof
c
&&
e
[
c
]()})}
b
.
VERSION
=
"3.3.5"
,
b
.
DEFAULTS
=
{
offset
:
10
},
b
.
prototype
.
getScrollHeight
=
function
(){
return
this
.
$scrollElement
[
0
].
scrollHeight
||
Math
.
max
(
this
.
$body
[
0
].
scrollHeight
,
document
.
documentElement
.
scrollHeight
)},
b
.
prototype
.
refresh
=
function
(){
var
b
=
this
,
c
=
"offset"
,
d
=
0
;
this
.
offsets
=
[],
this
.
targets
=
[],
this
.
scrollHeight
=
this
.
getScrollHeight
(),
a
.
isWindow
(
this
.
$scrollElement
[
0
])
||
(
c
=
"position"
,
d
=
this
.
$scrollElement
.
scrollTop
()),
this
.
$body
.
find
(
this
.
selector
).
map
(
function
(){
var
b
=
a
(
this
),
e
=
b
.
data
(
"target"
)
||
b
.
attr
(
"href"
),
f
=
/^#./
.
test
(
e
)
&&
a
(
e
);
return
f
&&
f
.
length
&&
f
.
is
(
":visible"
)
&&
[[
f
[
c
]().
top
+
d
,
e
]]
||
null
}).
sort
(
function
(
a
,
b
){
return
a
[
0
]
-
b
[
0
]}).
each
(
function
(){
b
.
offsets
.
push
(
this
[
0
]),
b
.
targets
.
push
(
this
[
1
])})},
b
.
prototype
.
process
=
function
(){
var
a
,
b
=
this
.
$scrollElement
.
scrollTop
()
+
this
.
options
.
offset
,
c
=
this
.
getScrollHeight
(),
d
=
this
.
options
.
offset
+
c
-
this
.
$scrollElement
.
height
(),
e
=
this
.
offsets
,
f
=
this
.
targets
,
g
=
this
.
activeTarget
;
if
(
this
.
scrollHeight
!=
c
&&
this
.
refresh
(),
b
>=
d
)
return
g
!=
(
a
=
f
[
f
.
length
-
1
])
&&
this
.
activate
(
a
);
if
(
g
&&
b
<
e
[
0
])
return
this
.
activeTarget
=
null
,
this
.
clear
();
for
(
a
=
e
.
length
;
a
--
;)
g
!=
f
[
a
]
&&
b
>=
e
[
a
]
&&
(
void
0
===
e
[
a
+
1
]
||
b
<
e
[
a
+
1
])
&&
this
.
activate
(
f
[
a
])},
b
.
prototype
.
activate
=
function
(
b
){
this
.
activeTarget
=
b
,
this
.
clear
();
var
c
=
this
.
selector
+
'[data-target="'
+
b
+
'"],'
+
this
.
selector
+
'[href="'
+
b
+
'"]'
,
d
=
a
(
c
).
parents
(
"li"
).
addClass
(
"active"
);
d
.
parent
(
".dropdown-menu"
).
length
&&
(
d
=
d
.
closest
(
"li.dropdown"
).
addClass
(
"active"
)),
d
.
trigger
(
"activate.bs.scrollspy"
)},
b
.
prototype
.
clear
=
function
(){
a
(
this
.
selector
).
parentsUntil
(
this
.
options
.
target
,
".active"
).
removeClass
(
"active"
)};
var
d
=
a
.
fn
.
scrollspy
;
a
.
fn
.
scrollspy
=
c
,
a
.
fn
.
scrollspy
.
Constructor
=
b
,
a
.
fn
.
scrollspy
.
noConflict
=
function
(){
return
a
.
fn
.
scrollspy
=
d
,
this
},
a
(
window
).
on
(
"load.bs.scrollspy.data-api"
,
function
(){
a
(
'[data-spy="scroll"]'
).
each
(
function
(){
var
b
=
a
(
this
);
c
.
call
(
b
,
b
.
data
())})})}(
jQuery
),
+
function
(
a
){
"use strict"
;
function
b
(
b
){
return
this
.
each
(
function
(){
var
d
=
a
(
this
),
e
=
d
.
data
(
"bs.tab"
);
e
||
d
.
data
(
"bs.tab"
,
e
=
new
c
(
this
)),
"string"
==
typeof
b
&&
e
[
b
]()})}
var
c
=
function
(
b
){
this
.
element
=
a
(
b
)};
c
.
VERSION
=
"3.3.5"
,
c
.
TRANSITION_DURATION
=
150
,
c
.
prototype
.
show
=
function
(){
var
b
=
this
.
element
,
c
=
b
.
closest
(
"ul:not(.dropdown-menu)"
),
d
=
b
.
data
(
"target"
);
if
(
d
||
(
d
=
b
.
attr
(
"href"
),
d
=
d
&&
d
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
""
)),
!
b
.
parent
(
"li"
).
hasClass
(
"active"
)){
var
e
=
c
.
find
(
".active:last a"
),
f
=
a
.
Event
(
"hide.bs.tab"
,{
relatedTarget
:
b
[
0
]}),
g
=
a
.
Event
(
"show.bs.tab"
,{
relatedTarget
:
e
[
0
]});
if
(
e
.
trigger
(
f
),
b
.
trigger
(
g
),
!
g
.
isDefaultPrevented
()
&&!
f
.
isDefaultPrevented
()){
var
h
=
a
(
d
);
this
.
activate
(
b
.
closest
(
"li"
),
c
),
this
.
activate
(
h
,
h
.
parent
(),
function
(){
e
.
trigger
({
type
:
"hidden.bs.tab"
,
relatedTarget
:
b
[
0
]}),
b
.
trigger
({
type
:
"shown.bs.tab"
,
relatedTarget
:
e
[
0
]})})}}},
c
.
prototype
.
activate
=
function
(
b
,
d
,
e
){
function
f
(){
g
.
removeClass
(
"active"
).
find
(
"> .dropdown-menu > .active"
).
removeClass
(
"active"
).
end
().
find
(
'[data-toggle="tab"]'
).
attr
(
"aria-expanded"
,
!
1
),
b
.
addClass
(
"active"
).
find
(
'[data-toggle="tab"]'
).
attr
(
"aria-expanded"
,
!
0
),
h
?(
b
[
0
].
offsetWidth
,
b
.
addClass
(
"in"
)):
b
.
removeClass
(
"fade"
),
b
.
parent
(
".dropdown-menu"
).
length
&&
b
.
closest
(
"li.dropdown"
).
addClass
(
"active"
).
end
().
find
(
'[data-toggle="tab"]'
).
attr
(
"aria-expanded"
,
!
0
),
e
&&
e
()}
var
g
=
d
.
find
(
"> .active"
),
h
=
e
&&
a
.
support
.
transition
&&
(
g
.
length
&&
g
.
hasClass
(
"fade"
)
||!!
d
.
find
(
"> .fade"
).
length
);
g
.
length
&&
h
?
g
.
one
(
"bsTransitionEnd"
,
f
).
emulateTransitionEnd
(
c
.
TRANSITION_DURATION
):
f
(),
g
.
removeClass
(
"in"
)};
var
d
=
a
.
fn
.
tab
;
a
.
fn
.
tab
=
b
,
a
.
fn
.
tab
.
Constructor
=
c
,
a
.
fn
.
tab
.
noConflict
=
function
(){
return
a
.
fn
.
tab
=
d
,
this
};
var
e
=
function
(
c
){
c
.
preventDefault
(),
b
.
call
(
a
(
this
),
"show"
)};
a
(
document
).
on
(
"click.bs.tab.data-api"
,
'[data-toggle="tab"]'
,
e
).
on
(
"click.bs.tab.data-api"
,
'[data-toggle="pill"]'
,
e
)}(
jQuery
),
+
function
(
a
){
"use strict"
;
function
b
(
b
){
return
this
.
each
(
function
(){
var
d
=
a
(
this
),
e
=
d
.
data
(
"bs.affix"
),
f
=
"object"
==
typeof
b
&&
b
;
e
||
d
.
data
(
"bs.affix"
,
e
=
new
c
(
this
,
f
)),
"string"
==
typeof
b
&&
e
[
b
]()})}
var
c
=
function
(
b
,
d
){
this
.
options
=
a
.
extend
({},
c
.
DEFAULTS
,
d
),
this
.
$target
=
a
(
this
.
options
.
target
).
on
(
"scroll.bs.affix.data-api"
,
a
.
proxy
(
this
.
checkPosition
,
this
)).
on
(
"click.bs.affix.data-api"
,
a
.
proxy
(
this
.
checkPositionWithEventLoop
,
this
)),
this
.
$element
=
a
(
b
),
this
.
affixed
=
null
,
this
.
unpin
=
null
,
this
.
pinnedOffset
=
null
,
this
.
checkPosition
()};
c
.
VERSION
=
"3.3.5"
,
c
.
RESET
=
"affix affix-top affix-bottom"
,
c
.
DEFAULTS
=
{
offset
:
0
,
target
:
window
},
c
.
prototype
.
getState
=
function
(
a
,
b
,
c
,
d
){
var
e
=
this
.
$target
.
scrollTop
(),
f
=
this
.
$element
.
offset
(),
g
=
this
.
$target
.
height
();
if
(
null
!=
c
&&
"top"
==
this
.
affixed
)
return
c
>
e
?
"top"
:
!
1
;
if
(
"bottom"
==
this
.
affixed
)
return
null
!=
c
?
e
+
this
.
unpin
<=
f
.
top
?
!
1
:
"bottom"
:
a
-
d
>=
e
+
g
?
!
1
:
"bottom"
;
var
h
=
null
==
this
.
affixed
,
i
=
h
?
e
:
f
.
top
,
j
=
h
?
g
:
b
;
return
null
!=
c
&&
c
>=
e
?
"top"
:
null
!=
d
&&
i
+
j
>=
a
-
d
?
"bottom"
:
!
1
},
c
.
prototype
.
getPinnedOffset
=
function
(){
if
(
this
.
pinnedOffset
)
return
this
.
pinnedOffset
;
this
.
$element
.
removeClass
(
c
.
RESET
).
addClass
(
"affix"
);
var
a
=
this
.
$target
.
scrollTop
(),
b
=
this
.
$element
.
offset
();
return
this
.
pinnedOffset
=
b
.
top
-
a
},
c
.
prototype
.
checkPositionWithEventLoop
=
function
(){
setTimeout
(
a
.
proxy
(
this
.
checkPosition
,
this
),
1
)},
c
.
prototype
.
checkPosition
=
function
(){
if
(
this
.
$element
.
is
(
":visible"
)){
var
b
=
this
.
$element
.
height
(),
d
=
this
.
options
.
offset
,
e
=
d
.
top
,
f
=
d
.
bottom
,
g
=
Math
.
max
(
a
(
document
).
height
(),
a
(
document
.
body
).
height
());
"object"
!=
typeof
d
&&
(
f
=
e
=
d
),
"function"
==
typeof
e
&&
(
e
=
d
.
top
(
this
.
$element
)),
"function"
==
typeof
f
&&
(
f
=
d
.
bottom
(
this
.
$element
));
var
h
=
this
.
getState
(
g
,
b
,
e
,
f
);
if
(
this
.
affixed
!=
h
){
null
!=
this
.
unpin
&&
this
.
$element
.
css
(
"top"
,
""
);
var
i
=
"affix"
+
(
h
?
"-"
+
h
:
""
),
j
=
a
.
Event
(
i
+
".bs.affix"
);
if
(
this
.
$element
.
trigger
(
j
),
j
.
isDefaultPrevented
())
return
;
this
.
affixed
=
h
,
this
.
unpin
=
"bottom"
==
h
?
this
.
getPinnedOffset
():
null
,
this
.
$element
.
removeClass
(
c
.
RESET
).
addClass
(
i
).
trigger
(
i
.
replace
(
"affix"
,
"affixed"
)
+
".bs.affix"
)}
"bottom"
==
h
&&
this
.
$element
.
offset
({
top
:
g
-
b
-
f
})}};
var
d
=
a
.
fn
.
affix
;
a
.
fn
.
affix
=
b
,
a
.
fn
.
affix
.
Constructor
=
c
,
a
.
fn
.
affix
.
noConflict
=
function
(){
return
a
.
fn
.
affix
=
d
,
this
},
a
(
window
).
on
(
"load"
,
function
(){
a
(
'[data-spy="affix"]'
).
each
(
function
(){
var
c
=
a
(
this
),
d
=
c
.
data
();
d
.
offset
=
d
.
offset
||
{},
null
!=
d
.
offsetBottom
&&
(
d
.
offset
.
bottom
=
d
.
offsetBottom
),
null
!=
d
.
offsetTop
&&
(
d
.
offset
.
top
=
d
.
offsetTop
),
b
.
call
(
c
,
d
)})})}(
jQuery
);
\ No newline at end of file
BeHub/Hub/static/js/map
,
js
→
BeHub/Hub/static/js/map
.
js
View file @
6cfb7fb6
File moved
BeHub/Hub/static/js/project_detail.js
0 → 100644
View file @
6cfb7fb6
$
(
'#myTabs a'
).
click
(
function
(
e
)
{
e
.
preventDefault
()
$
(
this
).
tab
(
'show'
)
})
\ No newline at end of file
BeHub/Hub/templates/user_panel/content/maps.html
View file @
6cfb7fb6
{% extends 'user_panel/default/base.html' %}
{% block content %}
<div
class=
"container"
>
<div
class=
"row"
>
<div
class=
"col-md-6"
>
<h2>
Mapa
</h2>
</div>
</div>
</div>
{% endblock content %}
\ No newline at end of file
<h2>
Mapa
</h2>
BeHub/Hub/templates/user_panel/content/project.html
View file @
6cfb7fb6
...
...
@@ -4,9 +4,29 @@
<div
class=
"container"
>
{% include 'user_panel/content/maps.html' %}
<div
class=
"row"
>
<div
class=
"col-md-10 col-md-offset-1"
>
<ul
class=
"nav nav-tabs nav-justified"
>
<li
class=
"active"
><a
data-toggle=
"tab"
href=
"#beacons"
>
Twoje beacony
</a></li>
<li><a
data-toggle=
"tab"
href=
"#map"
>
Mapa
</a></li>
</ul>
<div
class=
"tab-content"
>
<div
id=
"beacons"
class=
"tab-pane fade in active"
>
<h3>
HOME
</h3>
<p>
Some content.
</p>
</div>
<div
id=
"map"
class=
"tab-pane fade"
>
{% include 'user_panel/content/maps.html' %}
</div>
</div>
</div>
</div>
{% endblock content %}
\ No newline at end of file
BeHub/Hub/templates/user_panel/default/base.html
View file @
6cfb7fb6
...
...
@@ -10,7 +10,6 @@
<link
rel=
"stylesheet"
type=
"text/css"
href=
"{% static 'css/dashboard.css' %}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"{% static 'css/login.css' %}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"{% static 'css/footer.css' %}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"{% static 'css/left_bar.css' %}"
/>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"{% static 'css/font-awesome.min.css' %}"
/>
<title>
Activy
</title>
...
...
@@ -18,7 +17,6 @@
<body>
{% include 'user_panel/default/user_bar.html' %}
{% include 'user_panel/default/left_bar.html' %}
<div
id=
"wrap"
style=
"margin-top:20px;"
>
...
...
@@ -30,9 +28,10 @@
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script
src=
"https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"
></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script
src=
"{% static 'js/bootstrap.min.js' %}"
></script>
<script
src=
"{% static 'js/hobby_detail.js' %}"
></script>
<script
src=
"{% static 'js/map.js' %}"
></script>
<script
src=
"{% static 'js/project_detail.js' %}"
></script>
<script
src=
"{% static 'js/bootstrap.js' %}"
></script>
<script
src=
"{% static 'js/bootstrap.min.js' %}"
></script>
<
</
body
>
</html>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment