Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PSDI Army
yii2
Commits
b1460fe5
Commit
b1460fe5
authored
May 21, 2013
by
Alexander Kochetov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bundle names fixes, base widget fixes, other widgets fixes
parent
0763684e
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
27 additions
and
2314 deletions
+27
-2314
Alert.php
yii/bootstrap/Alert.php
+1
-0
Modal.php
yii/bootstrap/Modal.php
+1
-0
TypeAhead.php
yii/bootstrap/TypeAhead.php
+1
-0
Widget.php
yii/bootstrap/Widget.php
+8
-3
assets.php
yii/bootstrap/assets.php
+16
-23
bootstrap.js
yii/bootstrap/assets/js/bootstrap.js
+0
-2281
bootstrap.min.js
yii/bootstrap/assets/js/bootstrap.min.js
+0
-7
No files found.
yii/bootstrap/Alert.php
View file @
b1460fe5
...
...
@@ -77,6 +77,7 @@ class Alert extends Widget
{
parent
::
init
();
$this
->
getView
()
->
registerAssetBundle
(
'yii/bootstrap/alert'
);
$this
->
initOptions
();
echo
Html
::
beginTag
(
'div'
,
$this
->
options
)
.
"
\n
"
;
...
...
yii/bootstrap/Modal.php
View file @
b1460fe5
...
...
@@ -102,6 +102,7 @@ class Modal extends Widget
{
parent
::
init
();
$this
->
getView
()
->
registerAssetBundle
(
'yii/bootstrap/modal'
);
$this
->
initOptions
();
echo
$this
->
renderToggleButton
()
.
"
\n
"
;
...
...
yii/bootstrap/TypeAhead.php
View file @
b1460fe5
...
...
@@ -68,6 +68,7 @@ class TypeAhead extends Widget
*/
public
function
run
()
{
$this
->
getView
()
->
registerAssetBundle
(
'yii/bootstrap/typeahead'
);
echo
$this
->
renderField
();
$this
->
registerPlugin
(
'typeahead'
);
}
...
...
yii/bootstrap/Widget.php
View file @
b1460fe5
...
...
@@ -25,7 +25,10 @@ class Widget extends \yii\base\Widget
* @var boolean whether to use the responsive version of Bootstrap.
*/
public
static
$responsive
=
true
;
/**
* @var boolean whether to use the transition effects.
*/
public
static
$transition
=
true
;
/**
* @var array the HTML attributes for the widget container tag.
*/
...
...
@@ -67,9 +70,11 @@ class Widget extends \yii\base\Widget
{
$id
=
$this
->
options
[
'id'
];
$view
=
$this
->
getView
();
$view
->
registerAssetBundle
(
static
::
$responsive
?
'yii/bootstrap/responsive'
:
'yii/bootstrap'
);
$bundle
=
static
::
$responsive
?
'yii/bootstrap-responsive'
:
'yii/bootstrap'
;
$view
->
registerAssetBundle
(
$bundle
);
if
(
static
::
$transition
)
{
$view
->
registerAssetBundle
(
'yii/bootstrap/transition'
);
}
if
(
$this
->
pluginOptions
!==
false
)
{
$options
=
empty
(
$this
->
pluginOptions
)
?
''
:
Json
::
encode
(
$this
->
pluginOptions
);
...
...
yii/bootstrap/assets.php
View file @
b1460fe5
<?php
return
array
(
'yii/bootstrap
/css
'
=>
array
(
'yii/bootstrap'
=>
array
(
'sourcePath'
=>
__DIR__
.
'/assets'
,
'css'
=>
array
(
YII_DEBUG
?
'css/bootstrap.css'
:
'css/bootstrap.min.css'
,
),
),
'yii/bootstrap/
css-
responsive'
=>
array
(
'yii/bootstrap/responsive'
=>
array
(
'sourcePath'
=>
__DIR__
.
'/assets'
,
'css'
=>
array
(
YII_DEBUG
?
'css/bootstrap-responsive.css'
:
'css/bootstrap-responsive.min.css'
,
),
'depends'
=>
array
(
'yii/bootstrap/css'
),
),
'yii/bootstrap/all'
=>
array
(
'sourcePath'
=>
__DIR__
.
'/assets'
,
'js'
=>
array
(
YII_DEBUG
?
'js/bootstrap.js'
:
'js/bootstrap.min.js'
,
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap/css'
),
'depends'
=>
array
(
'yii/bootstrap'
),
),
'yii/bootstrap/affix'
=>
array
(
'sourcePath'
=>
__DIR__
.
'/assets'
,
'js'
=>
array
(
'js/bootstrap-affix.js'
,
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap
/css
'
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap'
),
),
'yii/bootstrap/alert'
=>
array
(
'sourcePath'
=>
__DIR__
.
'/assets'
,
'js'
=>
array
(
'js/bootstrap-alert.js'
,
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap
/css
'
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap'
),
),
'yii/bootstrap/button'
=>
array
(
'sourcePath'
=>
__DIR__
.
'/assets'
,
'js'
=>
array
(
'js/bootstrap-button.js'
,
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap
/css
'
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap'
),
),
'yii/bootstrap/carousel'
=>
array
(
'sourcePath'
=>
__DIR__
.
'/assets'
,
'js'
=>
array
(
'js/bootstrap-carousel.js'
,
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap
/css
'
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap'
),
),
'yii/bootstrap/collapse'
=>
array
(
'sourcePath'
=>
__DIR__
.
'/assets'
,
'js'
=>
array
(
'js/bootstrap-collapse.js'
,
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap
/css
'
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap'
),
),
'yii/bootstrap/dropdown'
=>
array
(
'sourcePath'
=>
__DIR__
.
'/assets'
,
'js'
=>
array
(
'js/bootstrap-dropdown.js'
,
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap
/css
'
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap'
),
),
'yii/bootstrap/modal'
=>
array
(
'sourcePath'
=>
__DIR__
.
'/assets'
,
'js'
=>
array
(
'js/bootstrap-modal.js'
,
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap
/css
'
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap'
),
),
'yii/bootstrap/popover'
=>
array
(
'sourcePath'
=>
__DIR__
.
'/assets'
,
'js'
=>
array
(
'js/bootstrap-popover.js'
,
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap/tooltip'
,
'yii/bootstrap
/css
'
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap/tooltip'
,
'yii/bootstrap'
),
),
'yii/bootstrap/scrollspy'
=>
array
(
'sourcePath'
=>
__DIR__
.
'/assets'
,
'js'
=>
array
(
'js/bootstrap-scrollspy.js'
,
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap
/css
'
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap'
),
),
'yii/bootstrap/tab'
=>
array
(
'sourcePath'
=>
__DIR__
.
'/assets'
,
'js'
=>
array
(
'js/bootstrap-tab.js'
,
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap
/css
'
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap'
),
),
'yii/bootstrap/tooltip'
=>
array
(
'sourcePath'
=>
__DIR__
.
'/assets'
,
'js'
=>
array
(
'js/bootstrap-tooltip.js'
,
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap
/css
'
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap'
),
),
'yii/bootstrap/transition'
=>
array
(
'sourcePath'
=>
__DIR__
.
'/assets'
,
'js'
=>
array
(
'js/bootstrap-transition.js'
,
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap
/css
'
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap'
),
),
'yii/bootstrap/typeahead'
=>
array
(
'sourcePath'
=>
__DIR__
.
'/assets'
,
'js'
=>
array
(
'js/bootstrap-typeahead.js'
,
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap
/css
'
),
'depends'
=>
array
(
'yii/jquery'
,
'yii/bootstrap'
),
),
);
yii/bootstrap/assets/js/bootstrap.js
deleted
100644 → 0
View file @
0763684e
/* ===================================================
* bootstrap-transition.js v2.3.2
* http://twitter.github.com/bootstrap/javascript.html#transitions
* ===================================================
* Copyright 2012 Twitter, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ========================================================== */
!
function
(
$
)
{
"use strict"
;
// jshint ;_;
/* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
* ======================================================= */
$
(
function
()
{
$
.
support
.
transition
=
(
function
()
{
var
transitionEnd
=
(
function
()
{
var
el
=
document
.
createElement
(
'bootstrap'
)
,
transEndEventNames
=
{
'WebkitTransition'
:
'webkitTransitionEnd'
,
'MozTransition'
:
'transitionend'
,
'OTransition'
:
'oTransitionEnd otransitionend'
,
'transition'
:
'transitionend'
}
,
name
for
(
name
in
transEndEventNames
){
if
(
el
.
style
[
name
]
!==
undefined
)
{
return
transEndEventNames
[
name
]
}
}
}())
return
transitionEnd
&&
{
end
:
transitionEnd
}
})()
})
}(
window
.
jQuery
);
/* ==========================================================
* bootstrap-alert.js v2.3.2
* http://twitter.github.com/bootstrap/javascript.html#alerts
* ==========================================================
* Copyright 2012 Twitter, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ========================================================== */
!
function
(
$
)
{
"use strict"
;
// jshint ;_;
/* ALERT CLASS DEFINITION
* ====================== */
var
dismiss
=
'[data-dismiss="alert"]'
,
Alert
=
function
(
el
)
{
$
(
el
).
on
(
'click'
,
dismiss
,
this
.
close
)
}
Alert
.
prototype
.
close
=
function
(
e
)
{
var
$this
=
$
(
this
)
,
selector
=
$this
.
attr
(
'data-target'
)
,
$parent
if
(
!
selector
)
{
selector
=
$this
.
attr
(
'href'
)
selector
=
selector
&&
selector
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
''
)
//strip for ie7
}
$parent
=
$
(
selector
)
e
&&
e
.
preventDefault
()
$parent
.
length
||
(
$parent
=
$this
.
hasClass
(
'alert'
)
?
$this
:
$this
.
parent
())
$parent
.
trigger
(
e
=
$
.
Event
(
'close'
))
if
(
e
.
isDefaultPrevented
())
return
$parent
.
removeClass
(
'in'
)
function
removeElement
()
{
$parent
.
trigger
(
'closed'
)
.
remove
()
}
$
.
support
.
transition
&&
$parent
.
hasClass
(
'fade'
)
?
$parent
.
on
(
$
.
support
.
transition
.
end
,
removeElement
)
:
removeElement
()
}
/* ALERT PLUGIN DEFINITION
* ======================= */
var
old
=
$
.
fn
.
alert
$
.
fn
.
alert
=
function
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
,
data
=
$this
.
data
(
'alert'
)
if
(
!
data
)
$this
.
data
(
'alert'
,
(
data
=
new
Alert
(
this
)))
if
(
typeof
option
==
'string'
)
data
[
option
].
call
(
$this
)
})
}
$
.
fn
.
alert
.
Constructor
=
Alert
/* ALERT NO CONFLICT
* ================= */
$
.
fn
.
alert
.
noConflict
=
function
()
{
$
.
fn
.
alert
=
old
return
this
}
/* ALERT DATA-API
* ============== */
$
(
document
).
on
(
'click.alert.data-api'
,
dismiss
,
Alert
.
prototype
.
close
)
}(
window
.
jQuery
);
/* ============================================================
* bootstrap-button.js v2.3.2
* http://twitter.github.com/bootstrap/javascript.html#buttons
* ============================================================
* Copyright 2012 Twitter, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============================================================ */
!
function
(
$
)
{
"use strict"
;
// jshint ;_;
/* BUTTON PUBLIC CLASS DEFINITION
* ============================== */
var
Button
=
function
(
element
,
options
)
{
this
.
$element
=
$
(
element
)
this
.
options
=
$
.
extend
({},
$
.
fn
.
button
.
defaults
,
options
)
}
Button
.
prototype
.
setState
=
function
(
state
)
{
var
d
=
'disabled'
,
$el
=
this
.
$element
,
data
=
$el
.
data
()
,
val
=
$el
.
is
(
'input'
)
?
'val'
:
'html'
state
=
state
+
'Text'
data
.
resetText
||
$el
.
data
(
'resetText'
,
$el
[
val
]())
$el
[
val
](
data
[
state
]
||
this
.
options
[
state
])
// push to event loop to allow forms to submit
setTimeout
(
function
()
{
state
==
'loadingText'
?
$el
.
addClass
(
d
).
attr
(
d
,
d
)
:
$el
.
removeClass
(
d
).
removeAttr
(
d
)
},
0
)
}
Button
.
prototype
.
toggle
=
function
()
{
var
$parent
=
this
.
$element
.
closest
(
'[data-toggle="buttons-radio"]'
)
$parent
&&
$parent
.
find
(
'.active'
)
.
removeClass
(
'active'
)
this
.
$element
.
toggleClass
(
'active'
)
}
/* BUTTON PLUGIN DEFINITION
* ======================== */
var
old
=
$
.
fn
.
button
$
.
fn
.
button
=
function
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
,
data
=
$this
.
data
(
'button'
)
,
options
=
typeof
option
==
'object'
&&
option
if
(
!
data
)
$this
.
data
(
'button'
,
(
data
=
new
Button
(
this
,
options
)))
if
(
option
==
'toggle'
)
data
.
toggle
()
else
if
(
option
)
data
.
setState
(
option
)
})
}
$
.
fn
.
button
.
defaults
=
{
loadingText
:
'loading...'
}
$
.
fn
.
button
.
Constructor
=
Button
/* BUTTON NO CONFLICT
* ================== */
$
.
fn
.
button
.
noConflict
=
function
()
{
$
.
fn
.
button
=
old
return
this
}
/* BUTTON DATA-API
* =============== */
$
(
document
).
on
(
'click.button.data-api'
,
'[data-toggle^=button]'
,
function
(
e
)
{
var
$btn
=
$
(
e
.
target
)
if
(
!
$btn
.
hasClass
(
'btn'
))
$btn
=
$btn
.
closest
(
'.btn'
)
$btn
.
button
(
'toggle'
)
})
}(
window
.
jQuery
);
/* ==========================================================
* bootstrap-carousel.js v2.3.2
* http://twitter.github.com/bootstrap/javascript.html#carousel
* ==========================================================
* Copyright 2012 Twitter, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ========================================================== */
!
function
(
$
)
{
"use strict"
;
// jshint ;_;
/* CAROUSEL CLASS DEFINITION
* ========================= */
var
Carousel
=
function
(
element
,
options
)
{
this
.
$element
=
$
(
element
)
this
.
$indicators
=
this
.
$element
.
find
(
'.carousel-indicators'
)
this
.
options
=
options
this
.
options
.
pause
==
'hover'
&&
this
.
$element
.
on
(
'mouseenter'
,
$
.
proxy
(
this
.
pause
,
this
))
.
on
(
'mouseleave'
,
$
.
proxy
(
this
.
cycle
,
this
))
}
Carousel
.
prototype
=
{
cycle
:
function
(
e
)
{
if
(
!
e
)
this
.
paused
=
false
if
(
this
.
interval
)
clearInterval
(
this
.
interval
);
this
.
options
.
interval
&&
!
this
.
paused
&&
(
this
.
interval
=
setInterval
(
$
.
proxy
(
this
.
next
,
this
),
this
.
options
.
interval
))
return
this
}
,
getActiveIndex
:
function
()
{
this
.
$active
=
this
.
$element
.
find
(
'.item.active'
)
this
.
$items
=
this
.
$active
.
parent
().
children
()
return
this
.
$items
.
index
(
this
.
$active
)
}
,
to
:
function
(
pos
)
{
var
activeIndex
=
this
.
getActiveIndex
()
,
that
=
this
if
(
pos
>
(
this
.
$items
.
length
-
1
)
||
pos
<
0
)
return
if
(
this
.
sliding
)
{
return
this
.
$element
.
one
(
'slid'
,
function
()
{
that
.
to
(
pos
)
})
}
if
(
activeIndex
==
pos
)
{
return
this
.
pause
().
cycle
()
}
return
this
.
slide
(
pos
>
activeIndex
?
'next'
:
'prev'
,
$
(
this
.
$items
[
pos
]))
}
,
pause
:
function
(
e
)
{
if
(
!
e
)
this
.
paused
=
true
if
(
this
.
$element
.
find
(
'.next, .prev'
).
length
&&
$
.
support
.
transition
.
end
)
{
this
.
$element
.
trigger
(
$
.
support
.
transition
.
end
)
this
.
cycle
(
true
)
}
clearInterval
(
this
.
interval
)
this
.
interval
=
null
return
this
}
,
next
:
function
()
{
if
(
this
.
sliding
)
return
return
this
.
slide
(
'next'
)
}
,
prev
:
function
()
{
if
(
this
.
sliding
)
return
return
this
.
slide
(
'prev'
)
}
,
slide
:
function
(
type
,
next
)
{
var
$active
=
this
.
$element
.
find
(
'.item.active'
)
,
$next
=
next
||
$active
[
type
]()
,
isCycling
=
this
.
interval
,
direction
=
type
==
'next'
?
'left'
:
'right'
,
fallback
=
type
==
'next'
?
'first'
:
'last'
,
that
=
this
,
e
this
.
sliding
=
true
isCycling
&&
this
.
pause
()
$next
=
$next
.
length
?
$next
:
this
.
$element
.
find
(
'.item'
)[
fallback
]()
e
=
$
.
Event
(
'slide'
,
{
relatedTarget
:
$next
[
0
]
,
direction
:
direction
})
if
(
$next
.
hasClass
(
'active'
))
return
if
(
this
.
$indicators
.
length
)
{
this
.
$indicators
.
find
(
'.active'
).
removeClass
(
'active'
)
this
.
$element
.
one
(
'slid'
,
function
()
{
var
$nextIndicator
=
$
(
that
.
$indicators
.
children
()[
that
.
getActiveIndex
()])
$nextIndicator
&&
$nextIndicator
.
addClass
(
'active'
)
})
}
if
(
$
.
support
.
transition
&&
this
.
$element
.
hasClass
(
'slide'
))
{
this
.
$element
.
trigger
(
e
)
if
(
e
.
isDefaultPrevented
())
return
$next
.
addClass
(
type
)
$next
[
0
].
offsetWidth
// force reflow
$active
.
addClass
(
direction
)
$next
.
addClass
(
direction
)
this
.
$element
.
one
(
$
.
support
.
transition
.
end
,
function
()
{
$next
.
removeClass
([
type
,
direction
].
join
(
' '
)).
addClass
(
'active'
)
$active
.
removeClass
([
'active'
,
direction
].
join
(
' '
))
that
.
sliding
=
false
setTimeout
(
function
()
{
that
.
$element
.
trigger
(
'slid'
)
},
0
)
})
}
else
{
this
.
$element
.
trigger
(
e
)
if
(
e
.
isDefaultPrevented
())
return
$active
.
removeClass
(
'active'
)
$next
.
addClass
(
'active'
)
this
.
sliding
=
false
this
.
$element
.
trigger
(
'slid'
)
}
isCycling
&&
this
.
cycle
()
return
this
}
}
/* CAROUSEL PLUGIN DEFINITION
* ========================== */
var
old
=
$
.
fn
.
carousel
$
.
fn
.
carousel
=
function
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
,
data
=
$this
.
data
(
'carousel'
)
,
options
=
$
.
extend
({},
$
.
fn
.
carousel
.
defaults
,
typeof
option
==
'object'
&&
option
)
,
action
=
typeof
option
==
'string'
?
option
:
options
.
slide
if
(
!
data
)
$this
.
data
(
'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
()
})
}
$
.
fn
.
carousel
.
defaults
=
{
interval
:
5000
,
pause
:
'hover'
}
$
.
fn
.
carousel
.
Constructor
=
Carousel
/* CAROUSEL NO CONFLICT
* ==================== */
$
.
fn
.
carousel
.
noConflict
=
function
()
{
$
.
fn
.
carousel
=
old
return
this
}
/* CAROUSEL DATA-API
* ================= */
$
(
document
).
on
(
'click.carousel.data-api'
,
'[data-slide], [data-slide-to]'
,
function
(
e
)
{
var
$this
=
$
(
this
),
href
,
$target
=
$
(
$this
.
attr
(
'data-target'
)
||
(
href
=
$this
.
attr
(
'href'
))
&&
href
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
''
))
//strip for ie7
,
options
=
$
.
extend
({},
$target
.
data
(),
$this
.
data
())
,
slideIndex
$target
.
carousel
(
options
)
if
(
slideIndex
=
$this
.
attr
(
'data-slide-to'
))
{
$target
.
data
(
'carousel'
).
pause
().
to
(
slideIndex
).
cycle
()
}
e
.
preventDefault
()
})
}(
window
.
jQuery
);
/* =============================================================
* bootstrap-collapse.js v2.3.2
* http://twitter.github.com/bootstrap/javascript.html#collapse
* =============================================================
* Copyright 2012 Twitter, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============================================================ */
!
function
(
$
)
{
"use strict"
;
// jshint ;_;
/* COLLAPSE PUBLIC CLASS DEFINITION
* ================================ */
var
Collapse
=
function
(
element
,
options
)
{
this
.
$element
=
$
(
element
)
this
.
options
=
$
.
extend
({},
$
.
fn
.
collapse
.
defaults
,
options
)
if
(
this
.
options
.
parent
)
{
this
.
$parent
=
$
(
this
.
options
.
parent
)
}
this
.
options
.
toggle
&&
this
.
toggle
()
}
Collapse
.
prototype
=
{
constructor
:
Collapse
,
dimension
:
function
()
{
var
hasWidth
=
this
.
$element
.
hasClass
(
'width'
)
return
hasWidth
?
'width'
:
'height'
}
,
show
:
function
()
{
var
dimension
,
scroll
,
actives
,
hasData
if
(
this
.
transitioning
||
this
.
$element
.
hasClass
(
'in'
))
return
dimension
=
this
.
dimension
()
scroll
=
$
.
camelCase
([
'scroll'
,
dimension
].
join
(
'-'
))
actives
=
this
.
$parent
&&
this
.
$parent
.
find
(
'> .accordion-group > .in'
)
if
(
actives
&&
actives
.
length
)
{
hasData
=
actives
.
data
(
'collapse'
)
if
(
hasData
&&
hasData
.
transitioning
)
return
actives
.
collapse
(
'hide'
)
hasData
||
actives
.
data
(
'collapse'
,
null
)
}
this
.
$element
[
dimension
](
0
)
this
.
transition
(
'addClass'
,
$
.
Event
(
'show'
),
'shown'
)
$
.
support
.
transition
&&
this
.
$element
[
dimension
](
this
.
$element
[
0
][
scroll
])
}
,
hide
:
function
()
{
var
dimension
if
(
this
.
transitioning
||
!
this
.
$element
.
hasClass
(
'in'
))
return
dimension
=
this
.
dimension
()
this
.
reset
(
this
.
$element
[
dimension
]())
this
.
transition
(
'removeClass'
,
$
.
Event
(
'hide'
),
'hidden'
)
this
.
$element
[
dimension
](
0
)
}
,
reset
:
function
(
size
)
{
var
dimension
=
this
.
dimension
()
this
.
$element
.
removeClass
(
'collapse'
)
[
dimension
](
size
||
'auto'
)
[
0
].
offsetWidth
this
.
$element
[
size
!==
null
?
'addClass'
:
'removeClass'
](
'collapse'
)
return
this
}
,
transition
:
function
(
method
,
startEvent
,
completeEvent
)
{
var
that
=
this
,
complete
=
function
()
{
if
(
startEvent
.
type
==
'show'
)
that
.
reset
()
that
.
transitioning
=
0
that
.
$element
.
trigger
(
completeEvent
)
}
this
.
$element
.
trigger
(
startEvent
)
if
(
startEvent
.
isDefaultPrevented
())
return
this
.
transitioning
=
1
this
.
$element
[
method
](
'in'
)
$
.
support
.
transition
&&
this
.
$element
.
hasClass
(
'collapse'
)
?
this
.
$element
.
one
(
$
.
support
.
transition
.
end
,
complete
)
:
complete
()
}
,
toggle
:
function
()
{
this
[
this
.
$element
.
hasClass
(
'in'
)
?
'hide'
:
'show'
]()
}
}
/* COLLAPSE PLUGIN DEFINITION
* ========================== */
var
old
=
$
.
fn
.
collapse
$
.
fn
.
collapse
=
function
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
,
data
=
$this
.
data
(
'collapse'
)
,
options
=
$
.
extend
({},
$
.
fn
.
collapse
.
defaults
,
$this
.
data
(),
typeof
option
==
'object'
&&
option
)
if
(
!
data
)
$this
.
data
(
'collapse'
,
(
data
=
new
Collapse
(
this
,
options
)))
if
(
typeof
option
==
'string'
)
data
[
option
]()
})
}
$
.
fn
.
collapse
.
defaults
=
{
toggle
:
true
}
$
.
fn
.
collapse
.
Constructor
=
Collapse
/* COLLAPSE NO CONFLICT
* ==================== */
$
.
fn
.
collapse
.
noConflict
=
function
()
{
$
.
fn
.
collapse
=
old
return
this
}
/* COLLAPSE DATA-API
* ================= */
$
(
document
).
on
(
'click.collapse.data-api'
,
'[data-toggle=collapse]'
,
function
(
e
)
{
var
$this
=
$
(
this
),
href
,
target
=
$this
.
attr
(
'data-target'
)
||
e
.
preventDefault
()
||
(
href
=
$this
.
attr
(
'href'
))
&&
href
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
''
)
//strip for ie7
,
option
=
$
(
target
).
data
(
'collapse'
)
?
'toggle'
:
$this
.
data
()
$this
[
$
(
target
).
hasClass
(
'in'
)
?
'addClass'
:
'removeClass'
](
'collapsed'
)
$
(
target
).
collapse
(
option
)
})
}(
window
.
jQuery
);
/* ============================================================
* bootstrap-dropdown.js v2.3.2
* http://twitter.github.com/bootstrap/javascript.html#dropdowns
* ============================================================
* Copyright 2012 Twitter, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============================================================ */
!
function
(
$
)
{
"use strict"
;
// jshint ;_;
/* DROPDOWN CLASS DEFINITION
* ========================= */
var
toggle
=
'[data-toggle=dropdown]'
,
Dropdown
=
function
(
element
)
{
var
$el
=
$
(
element
).
on
(
'click.dropdown.data-api'
,
this
.
toggle
)
$
(
'html'
).
on
(
'click.dropdown.data-api'
,
function
()
{
$el
.
parent
().
removeClass
(
'open'
)
})
}
Dropdown
.
prototype
=
{
constructor
:
Dropdown
,
toggle
:
function
(
e
)
{
var
$this
=
$
(
this
)
,
$parent
,
isActive
if
(
$this
.
is
(
'.disabled, :disabled'
))
return
$parent
=
getParent
(
$this
)
isActive
=
$parent
.
hasClass
(
'open'
)
clearMenus
()
if
(
!
isActive
)
{
if
(
'ontouchstart'
in
document
.
documentElement
)
{
// if mobile we we use a backdrop because click events don't delegate
$
(
'<div class="dropdown-backdrop"/>'
).
insertBefore
(
$
(
this
)).
on
(
'click'
,
clearMenus
)
}
$parent
.
toggleClass
(
'open'
)
}
$this
.
focus
()
return
false
}
,
keydown
:
function
(
e
)
{
var
$this
,
$items
,
$active
,
$parent
,
isActive
,
index
if
(
!
/
(
38|40|27
)
/
.
test
(
e
.
keyCode
))
return
$this
=
$
(
this
)
e
.
preventDefault
()
e
.
stopPropagation
()
if
(
$this
.
is
(
'.disabled, :disabled'
))
return
$parent
=
getParent
(
$this
)
isActive
=
$parent
.
hasClass
(
'open'
)
if
(
!
isActive
||
(
isActive
&&
e
.
keyCode
==
27
))
{
if
(
e
.
which
==
27
)
$parent
.
find
(
toggle
).
focus
()
return
$this
.
click
()
}
$items
=
$
(
'[role=menu] li:not(.divider):visible a'
,
$parent
)
if
(
!
$items
.
length
)
return
index
=
$items
.
index
(
$items
.
filter
(
':focus'
))
if
(
e
.
keyCode
==
38
&&
index
>
0
)
index
--
// up
if
(
e
.
keyCode
==
40
&&
index
<
$items
.
length
-
1
)
index
++
// down
if
(
!~
index
)
index
=
0
$items
.
eq
(
index
)
.
focus
()
}
}
function
clearMenus
()
{
$
(
'.dropdown-backdrop'
).
remove
()
$
(
toggle
).
each
(
function
()
{
getParent
(
$
(
this
)).
removeClass
(
'open'
)
})
}
function
getParent
(
$this
)
{
var
selector
=
$this
.
attr
(
'data-target'
)
,
$parent
if
(
!
selector
)
{
selector
=
$this
.
attr
(
'href'
)
selector
=
selector
&&
/#/
.
test
(
selector
)
&&
selector
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
''
)
//strip for ie7
}
$parent
=
selector
&&
$
(
selector
)
if
(
!
$parent
||
!
$parent
.
length
)
$parent
=
$this
.
parent
()
return
$parent
}
/* DROPDOWN PLUGIN DEFINITION
* ========================== */
var
old
=
$
.
fn
.
dropdown
$
.
fn
.
dropdown
=
function
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
,
data
=
$this
.
data
(
'dropdown'
)
if
(
!
data
)
$this
.
data
(
'dropdown'
,
(
data
=
new
Dropdown
(
this
)))
if
(
typeof
option
==
'string'
)
data
[
option
].
call
(
$this
)
})
}
$
.
fn
.
dropdown
.
Constructor
=
Dropdown
/* DROPDOWN NO CONFLICT
* ==================== */
$
.
fn
.
dropdown
.
noConflict
=
function
()
{
$
.
fn
.
dropdown
=
old
return
this
}
/* APPLY TO STANDARD DROPDOWN ELEMENTS
* =================================== */
$
(
document
)
.
on
(
'click.dropdown.data-api'
,
clearMenus
)
.
on
(
'click.dropdown.data-api'
,
'.dropdown form'
,
function
(
e
)
{
e
.
stopPropagation
()
})
.
on
(
'click.dropdown.data-api'
,
toggle
,
Dropdown
.
prototype
.
toggle
)
.
on
(
'keydown.dropdown.data-api'
,
toggle
+
', [role=menu]'
,
Dropdown
.
prototype
.
keydown
)
}(
window
.
jQuery
);
/* =========================================================
* bootstrap-modal.js v2.3.2
* http://twitter.github.com/bootstrap/javascript.html#modals
* =========================================================
* Copyright 2012 Twitter, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ========================================================= */
!
function
(
$
)
{
"use strict"
;
// jshint ;_;
/* MODAL CLASS DEFINITION
* ====================== */
var
Modal
=
function
(
element
,
options
)
{
this
.
options
=
options
this
.
$element
=
$
(
element
)
.
delegate
(
'[data-dismiss="modal"]'
,
'click.dismiss.modal'
,
$
.
proxy
(
this
.
hide
,
this
))
this
.
options
.
remote
&&
this
.
$element
.
find
(
'.modal-body'
).
load
(
this
.
options
.
remote
)
}
Modal
.
prototype
=
{
constructor
:
Modal
,
toggle
:
function
()
{
return
this
[
!
this
.
isShown
?
'show'
:
'hide'
]()
}
,
show
:
function
()
{
var
that
=
this
,
e
=
$
.
Event
(
'show'
)
this
.
$element
.
trigger
(
e
)
if
(
this
.
isShown
||
e
.
isDefaultPrevented
())
return
this
.
isShown
=
true
this
.
escape
()
this
.
backdrop
(
function
()
{
var
transition
=
$
.
support
.
transition
&&
that
.
$element
.
hasClass
(
'fade'
)
if
(
!
that
.
$element
.
parent
().
length
)
{
that
.
$element
.
appendTo
(
document
.
body
)
//don't move modals dom position
}
that
.
$element
.
show
()
if
(
transition
)
{
that
.
$element
[
0
].
offsetWidth
// force reflow
}
that
.
$element
.
addClass
(
'in'
)
.
attr
(
'aria-hidden'
,
false
)
that
.
enforceFocus
()
transition
?
that
.
$element
.
one
(
$
.
support
.
transition
.
end
,
function
()
{
that
.
$element
.
focus
().
trigger
(
'shown'
)
})
:
that
.
$element
.
focus
().
trigger
(
'shown'
)
})
}
,
hide
:
function
(
e
)
{
e
&&
e
.
preventDefault
()
var
that
=
this
e
=
$
.
Event
(
'hide'
)
this
.
$element
.
trigger
(
e
)
if
(
!
this
.
isShown
||
e
.
isDefaultPrevented
())
return
this
.
isShown
=
false
this
.
escape
()
$
(
document
).
off
(
'focusin.modal'
)
this
.
$element
.
removeClass
(
'in'
)
.
attr
(
'aria-hidden'
,
true
)
$
.
support
.
transition
&&
this
.
$element
.
hasClass
(
'fade'
)
?
this
.
hideWithTransition
()
:
this
.
hideModal
()
}
,
enforceFocus
:
function
()
{
var
that
=
this
$
(
document
).
on
(
'focusin.modal'
,
function
(
e
)
{
if
(
that
.
$element
[
0
]
!==
e
.
target
&&
!
that
.
$element
.
has
(
e
.
target
).
length
)
{
that
.
$element
.
focus
()
}
})
}
,
escape
:
function
()
{
var
that
=
this
if
(
this
.
isShown
&&
this
.
options
.
keyboard
)
{
this
.
$element
.
on
(
'keyup.dismiss.modal'
,
function
(
e
)
{
e
.
which
==
27
&&
that
.
hide
()
})
}
else
if
(
!
this
.
isShown
)
{
this
.
$element
.
off
(
'keyup.dismiss.modal'
)
}
}
,
hideWithTransition
:
function
()
{
var
that
=
this
,
timeout
=
setTimeout
(
function
()
{
that
.
$element
.
off
(
$
.
support
.
transition
.
end
)
that
.
hideModal
()
},
500
)
this
.
$element
.
one
(
$
.
support
.
transition
.
end
,
function
()
{
clearTimeout
(
timeout
)
that
.
hideModal
()
})
}
,
hideModal
:
function
()
{
var
that
=
this
this
.
$element
.
hide
()
this
.
backdrop
(
function
()
{
that
.
removeBackdrop
()
that
.
$element
.
trigger
(
'hidden'
)
})
}
,
removeBackdrop
:
function
()
{
this
.
$backdrop
&&
this
.
$backdrop
.
remove
()
this
.
$backdrop
=
null
}
,
backdrop
:
function
(
callback
)
{
var
that
=
this
,
animate
=
this
.
$element
.
hasClass
(
'fade'
)
?
'fade'
:
''
if
(
this
.
isShown
&&
this
.
options
.
backdrop
)
{
var
doAnimate
=
$
.
support
.
transition
&&
animate
this
.
$backdrop
=
$
(
'<div class="modal-backdrop '
+
animate
+
'" />'
)
.
appendTo
(
document
.
body
)
this
.
$backdrop
.
click
(
this
.
options
.
backdrop
==
'static'
?
$
.
proxy
(
this
.
$element
[
0
].
focus
,
this
.
$element
[
0
])
:
$
.
proxy
(
this
.
hide
,
this
)
)
if
(
doAnimate
)
this
.
$backdrop
[
0
].
offsetWidth
// force reflow
this
.
$backdrop
.
addClass
(
'in'
)
if
(
!
callback
)
return
doAnimate
?
this
.
$backdrop
.
one
(
$
.
support
.
transition
.
end
,
callback
)
:
callback
()
}
else
if
(
!
this
.
isShown
&&
this
.
$backdrop
)
{
this
.
$backdrop
.
removeClass
(
'in'
)
$
.
support
.
transition
&&
this
.
$element
.
hasClass
(
'fade'
)?
this
.
$backdrop
.
one
(
$
.
support
.
transition
.
end
,
callback
)
:
callback
()
}
else
if
(
callback
)
{
callback
()
}
}
}
/* MODAL PLUGIN DEFINITION
* ======================= */
var
old
=
$
.
fn
.
modal
$
.
fn
.
modal
=
function
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
,
data
=
$this
.
data
(
'modal'
)
,
options
=
$
.
extend
({},
$
.
fn
.
modal
.
defaults
,
$this
.
data
(),
typeof
option
==
'object'
&&
option
)
if
(
!
data
)
$this
.
data
(
'modal'
,
(
data
=
new
Modal
(
this
,
options
)))
if
(
typeof
option
==
'string'
)
data
[
option
]()
else
if
(
options
.
show
)
data
.
show
()
})
}
$
.
fn
.
modal
.
defaults
=
{
backdrop
:
true
,
keyboard
:
true
,
show
:
true
}
$
.
fn
.
modal
.
Constructor
=
Modal
/* MODAL NO CONFLICT
* ================= */
$
.
fn
.
modal
.
noConflict
=
function
()
{
$
.
fn
.
modal
=
old
return
this
}
/* MODAL DATA-API
* ============== */
$
(
document
).
on
(
'click.modal.data-api'
,
'[data-toggle="modal"]'
,
function
(
e
)
{
var
$this
=
$
(
this
)
,
href
=
$this
.
attr
(
'href'
)
,
$target
=
$
(
$this
.
attr
(
'data-target'
)
||
(
href
&&
href
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
''
)))
//strip for ie7
,
option
=
$target
.
data
(
'modal'
)
?
'toggle'
:
$
.
extend
({
remote
:
!
/#/
.
test
(
href
)
&&
href
},
$target
.
data
(),
$this
.
data
())
e
.
preventDefault
()
$target
.
modal
(
option
)
.
one
(
'hide'
,
function
()
{
$this
.
focus
()
})
})
}(
window
.
jQuery
);
/* ===========================================================
* bootstrap-tooltip.js v2.3.2
* http://twitter.github.com/bootstrap/javascript.html#tooltips
* Inspired by the original jQuery.tipsy by Jason Frame
* ===========================================================
* Copyright 2012 Twitter, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ========================================================== */
!
function
(
$
)
{
"use strict"
;
// jshint ;_;
/* TOOLTIP PUBLIC CLASS DEFINITION
* =============================== */
var
Tooltip
=
function
(
element
,
options
)
{
this
.
init
(
'tooltip'
,
element
,
options
)
}
Tooltip
.
prototype
=
{
constructor
:
Tooltip
,
init
:
function
(
type
,
element
,
options
)
{
var
eventIn
,
eventOut
,
triggers
,
trigger
,
i
this
.
type
=
type
this
.
$element
=
$
(
element
)
this
.
options
=
this
.
getOptions
(
options
)
this
.
enabled
=
true
triggers
=
this
.
options
.
trigger
.
split
(
' '
)
for
(
i
=
triggers
.
length
;
i
--
;)
{
trigger
=
triggers
[
i
]
if
(
trigger
==
'click'
)
{
this
.
$element
.
on
(
'click.'
+
this
.
type
,
this
.
options
.
selector
,
$
.
proxy
(
this
.
toggle
,
this
))
}
else
if
(
trigger
!=
'manual'
)
{
eventIn
=
trigger
==
'hover'
?
'mouseenter'
:
'focus'
eventOut
=
trigger
==
'hover'
?
'mouseleave'
:
'blur'
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
()
}
,
getOptions
:
function
(
options
)
{
options
=
$
.
extend
({},
$
.
fn
[
this
.
type
].
defaults
,
this
.
$element
.
data
(),
options
)
if
(
options
.
delay
&&
typeof
options
.
delay
==
'number'
)
{
options
.
delay
=
{
show
:
options
.
delay
,
hide
:
options
.
delay
}
}
return
options
}
,
enter
:
function
(
e
)
{
var
defaults
=
$
.
fn
[
this
.
type
].
defaults
,
options
=
{}
,
self
this
.
_options
&&
$
.
each
(
this
.
_options
,
function
(
key
,
value
)
{
if
(
defaults
[
key
]
!=
value
)
options
[
key
]
=
value
},
this
)
self
=
$
(
e
.
currentTarget
)[
this
.
type
](
options
).
data
(
this
.
type
)
if
(
!
self
.
options
.
delay
||
!
self
.
options
.
delay
.
show
)
return
self
.
show
()
clearTimeout
(
this
.
timeout
)
self
.
hoverState
=
'in'
this
.
timeout
=
setTimeout
(
function
()
{
if
(
self
.
hoverState
==
'in'
)
self
.
show
()
},
self
.
options
.
delay
.
show
)
}
,
leave
:
function
(
e
)
{
var
self
=
$
(
e
.
currentTarget
)[
this
.
type
](
this
.
_options
).
data
(
this
.
type
)
if
(
this
.
timeout
)
clearTimeout
(
this
.
timeout
)
if
(
!
self
.
options
.
delay
||
!
self
.
options
.
delay
.
hide
)
return
self
.
hide
()
self
.
hoverState
=
'out'
this
.
timeout
=
setTimeout
(
function
()
{
if
(
self
.
hoverState
==
'out'
)
self
.
hide
()
},
self
.
options
.
delay
.
hide
)
}
,
show
:
function
()
{
var
$tip
,
pos
,
actualWidth
,
actualHeight
,
placement
,
tp
,
e
=
$
.
Event
(
'show'
)
if
(
this
.
hasContent
()
&&
this
.
enabled
)
{
this
.
$element
.
trigger
(
e
)
if
(
e
.
isDefaultPrevented
())
return
$tip
=
this
.
tip
()
this
.
setContent
()
if
(
this
.
options
.
animation
)
{
$tip
.
addClass
(
'fade'
)
}
placement
=
typeof
this
.
options
.
placement
==
'function'
?
this
.
options
.
placement
.
call
(
this
,
$tip
[
0
],
this
.
$element
[
0
])
:
this
.
options
.
placement
$tip
.
detach
()
.
css
({
top
:
0
,
left
:
0
,
display
:
'block'
})
this
.
options
.
container
?
$tip
.
appendTo
(
this
.
options
.
container
)
:
$tip
.
insertAfter
(
this
.
$element
)
pos
=
this
.
getPosition
()
actualWidth
=
$tip
[
0
].
offsetWidth
actualHeight
=
$tip
[
0
].
offsetHeight
switch
(
placement
)
{
case
'bottom'
:
tp
=
{
top
:
pos
.
top
+
pos
.
height
,
left
:
pos
.
left
+
pos
.
width
/
2
-
actualWidth
/
2
}
break
case
'top'
:
tp
=
{
top
:
pos
.
top
-
actualHeight
,
left
:
pos
.
left
+
pos
.
width
/
2
-
actualWidth
/
2
}
break
case
'left'
:
tp
=
{
top
:
pos
.
top
+
pos
.
height
/
2
-
actualHeight
/
2
,
left
:
pos
.
left
-
actualWidth
}
break
case
'right'
:
tp
=
{
top
:
pos
.
top
+
pos
.
height
/
2
-
actualHeight
/
2
,
left
:
pos
.
left
+
pos
.
width
}
break
}
this
.
applyPlacement
(
tp
,
placement
)
this
.
$element
.
trigger
(
'shown'
)
}
}
,
applyPlacement
:
function
(
offset
,
placement
){
var
$tip
=
this
.
tip
()
,
width
=
$tip
[
0
].
offsetWidth
,
height
=
$tip
[
0
].
offsetHeight
,
actualWidth
,
actualHeight
,
delta
,
replace
$tip
.
offset
(
offset
)
.
addClass
(
placement
)
.
addClass
(
'in'
)
actualWidth
=
$tip
[
0
].
offsetWidth
actualHeight
=
$tip
[
0
].
offsetHeight
if
(
placement
==
'top'
&&
actualHeight
!=
height
)
{
offset
.
top
=
offset
.
top
+
height
-
actualHeight
replace
=
true
}
if
(
placement
==
'bottom'
||
placement
==
'top'
)
{
delta
=
0
if
(
offset
.
left
<
0
){
delta
=
offset
.
left
*
-
2
offset
.
left
=
0
$tip
.
offset
(
offset
)
actualWidth
=
$tip
[
0
].
offsetWidth
actualHeight
=
$tip
[
0
].
offsetHeight
}
this
.
replaceArrow
(
delta
-
width
+
actualWidth
,
actualWidth
,
'left'
)
}
else
{
this
.
replaceArrow
(
actualHeight
-
height
,
actualHeight
,
'top'
)
}
if
(
replace
)
$tip
.
offset
(
offset
)
}
,
replaceArrow
:
function
(
delta
,
dimension
,
position
){
this
.
arrow
()
.
css
(
position
,
delta
?
(
50
*
(
1
-
delta
/
dimension
)
+
"%"
)
:
''
)
}
,
setContent
:
function
()
{
var
$tip
=
this
.
tip
()
,
title
=
this
.
getTitle
()
$tip
.
find
(
'.tooltip-inner'
)[
this
.
options
.
html
?
'html'
:
'text'
](
title
)
$tip
.
removeClass
(
'fade in top bottom left right'
)
}
,
hide
:
function
()
{
var
that
=
this
,
$tip
=
this
.
tip
()
,
e
=
$
.
Event
(
'hide'
)
this
.
$element
.
trigger
(
e
)
if
(
e
.
isDefaultPrevented
())
return
$tip
.
removeClass
(
'in'
)
function
removeWithAnimation
()
{
var
timeout
=
setTimeout
(
function
()
{
$tip
.
off
(
$
.
support
.
transition
.
end
).
detach
()
},
500
)
$tip
.
one
(
$
.
support
.
transition
.
end
,
function
()
{
clearTimeout
(
timeout
)
$tip
.
detach
()
})
}
$
.
support
.
transition
&&
this
.
$tip
.
hasClass
(
'fade'
)
?
removeWithAnimation
()
:
$tip
.
detach
()
this
.
$element
.
trigger
(
'hidden'
)
return
this
}
,
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'
,
''
)
}
}
,
hasContent
:
function
()
{
return
this
.
getTitle
()
}
,
getPosition
:
function
()
{
var
el
=
this
.
$element
[
0
]
return
$
.
extend
({},
(
typeof
el
.
getBoundingClientRect
==
'function'
)
?
el
.
getBoundingClientRect
()
:
{
width
:
el
.
offsetWidth
,
height
:
el
.
offsetHeight
},
this
.
$element
.
offset
())
}
,
getTitle
:
function
()
{
var
title
,
$e
=
this
.
$element
,
o
=
this
.
options
title
=
$e
.
attr
(
'data-original-title'
)
||
(
typeof
o
.
title
==
'function'
?
o
.
title
.
call
(
$e
[
0
])
:
o
.
title
)
return
title
}
,
tip
:
function
()
{
return
this
.
$tip
=
this
.
$tip
||
$
(
this
.
options
.
template
)
}
,
arrow
:
function
(){
return
this
.
$arrow
=
this
.
$arrow
||
this
.
tip
().
find
(
".tooltip-arrow"
)
}
,
validate
:
function
()
{
if
(
!
this
.
$element
[
0
].
parentNode
)
{
this
.
hide
()
this
.
$element
=
null
this
.
options
=
null
}
}
,
enable
:
function
()
{
this
.
enabled
=
true
}
,
disable
:
function
()
{
this
.
enabled
=
false
}
,
toggleEnabled
:
function
()
{
this
.
enabled
=
!
this
.
enabled
}
,
toggle
:
function
(
e
)
{
var
self
=
e
?
$
(
e
.
currentTarget
)[
this
.
type
](
this
.
_options
).
data
(
this
.
type
)
:
this
self
.
tip
().
hasClass
(
'in'
)
?
self
.
hide
()
:
self
.
show
()
}
,
destroy
:
function
()
{
this
.
hide
().
$element
.
off
(
'.'
+
this
.
type
).
removeData
(
this
.
type
)
}
}
/* TOOLTIP PLUGIN DEFINITION
* ========================= */
var
old
=
$
.
fn
.
tooltip
$
.
fn
.
tooltip
=
function
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
,
data
=
$this
.
data
(
'tooltip'
)
,
options
=
typeof
option
==
'object'
&&
option
if
(
!
data
)
$this
.
data
(
'tooltip'
,
(
data
=
new
Tooltip
(
this
,
options
)))
if
(
typeof
option
==
'string'
)
data
[
option
]()
})
}
$
.
fn
.
tooltip
.
Constructor
=
Tooltip
$
.
fn
.
tooltip
.
defaults
=
{
animation
:
true
,
placement
:
'top'
,
selector
:
false
,
template
:
'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
,
trigger
:
'hover focus'
,
title
:
''
,
delay
:
0
,
html
:
false
,
container
:
false
}
/* TOOLTIP NO CONFLICT
* =================== */
$
.
fn
.
tooltip
.
noConflict
=
function
()
{
$
.
fn
.
tooltip
=
old
return
this
}
}(
window
.
jQuery
);
/* ===========================================================
* bootstrap-popover.js v2.3.2
* http://twitter.github.com/bootstrap/javascript.html#popovers
* ===========================================================
* Copyright 2012 Twitter, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* =========================================================== */
!
function
(
$
)
{
"use strict"
;
// jshint ;_;
/* POPOVER PUBLIC CLASS DEFINITION
* =============================== */
var
Popover
=
function
(
element
,
options
)
{
this
.
init
(
'popover'
,
element
,
options
)
}
/* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
========================================== */
Popover
.
prototype
=
$
.
extend
({},
$
.
fn
.
tooltip
.
Constructor
.
prototype
,
{
constructor
:
Popover
,
setContent
:
function
()
{
var
$tip
=
this
.
tip
()
,
title
=
this
.
getTitle
()
,
content
=
this
.
getContent
()
$tip
.
find
(
'.popover-title'
)[
this
.
options
.
html
?
'html'
:
'text'
](
title
)
$tip
.
find
(
'.popover-content'
)[
this
.
options
.
html
?
'html'
:
'text'
](
content
)
$tip
.
removeClass
(
'fade top bottom left right in'
)
}
,
hasContent
:
function
()
{
return
this
.
getTitle
()
||
this
.
getContent
()
}
,
getContent
:
function
()
{
var
content
,
$e
=
this
.
$element
,
o
=
this
.
options
content
=
(
typeof
o
.
content
==
'function'
?
o
.
content
.
call
(
$e
[
0
])
:
o
.
content
)
||
$e
.
attr
(
'data-content'
)
return
content
}
,
tip
:
function
()
{
if
(
!
this
.
$tip
)
{
this
.
$tip
=
$
(
this
.
options
.
template
)
}
return
this
.
$tip
}
,
destroy
:
function
()
{
this
.
hide
().
$element
.
off
(
'.'
+
this
.
type
).
removeData
(
this
.
type
)
}
})
/* POPOVER PLUGIN DEFINITION
* ======================= */
var
old
=
$
.
fn
.
popover
$
.
fn
.
popover
=
function
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
,
data
=
$this
.
data
(
'popover'
)
,
options
=
typeof
option
==
'object'
&&
option
if
(
!
data
)
$this
.
data
(
'popover'
,
(
data
=
new
Popover
(
this
,
options
)))
if
(
typeof
option
==
'string'
)
data
[
option
]()
})
}
$
.
fn
.
popover
.
Constructor
=
Popover
$
.
fn
.
popover
.
defaults
=
$
.
extend
({}
,
$
.
fn
.
tooltip
.
defaults
,
{
placement
:
'right'
,
trigger
:
'click'
,
content
:
''
,
template
:
'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
})
/* POPOVER NO CONFLICT
* =================== */
$
.
fn
.
popover
.
noConflict
=
function
()
{
$
.
fn
.
popover
=
old
return
this
}
}(
window
.
jQuery
);
/* =============================================================
* bootstrap-scrollspy.js v2.3.2
* http://twitter.github.com/bootstrap/javascript.html#scrollspy
* =============================================================
* Copyright 2012 Twitter, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============================================================== */
!
function
(
$
)
{
"use strict"
;
// jshint ;_;
/* SCROLLSPY CLASS DEFINITION
* ========================== */
function
ScrollSpy
(
element
,
options
)
{
var
process
=
$
.
proxy
(
this
.
process
,
this
)
,
$element
=
$
(
element
).
is
(
'body'
)
?
$
(
window
)
:
$
(
element
)
,
href
this
.
options
=
$
.
extend
({},
$
.
fn
.
scrollspy
.
defaults
,
options
)
this
.
$scrollElement
=
$element
.
on
(
'scroll.scroll-spy.data-api'
,
process
)
this
.
selector
=
(
this
.
options
.
target
||
((
href
=
$
(
element
).
attr
(
'href'
))
&&
href
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
''
))
//strip for ie7
||
''
)
+
' .nav li > a'
this
.
$body
=
$
(
'body'
)
this
.
refresh
()
this
.
process
()
}
ScrollSpy
.
prototype
=
{
constructor
:
ScrollSpy
,
refresh
:
function
()
{
var
self
=
this
,
$targets
this
.
offsets
=
$
([])
this
.
targets
=
$
([])
$targets
=
this
.
$body
.
find
(
this
.
selector
)
.
map
(
function
()
{
var
$el
=
$
(
this
)
,
href
=
$el
.
data
(
'target'
)
||
$el
.
attr
(
'href'
)
,
$href
=
/^#
\w
/
.
test
(
href
)
&&
$
(
href
)
return
(
$href
&&
$href
.
length
&&
[[
$href
.
position
().
top
+
(
!
$
.
isWindow
(
self
.
$scrollElement
.
get
(
0
))
&&
self
.
$scrollElement
.
scrollTop
()),
href
]]
)
||
null
})
.
sort
(
function
(
a
,
b
)
{
return
a
[
0
]
-
b
[
0
]
})
.
each
(
function
()
{
self
.
offsets
.
push
(
this
[
0
])
self
.
targets
.
push
(
this
[
1
])
})
}
,
process
:
function
()
{
var
scrollTop
=
this
.
$scrollElement
.
scrollTop
()
+
this
.
options
.
offset
,
scrollHeight
=
this
.
$scrollElement
[
0
].
scrollHeight
||
this
.
$body
[
0
].
scrollHeight
,
maxScroll
=
scrollHeight
-
this
.
$scrollElement
.
height
()
,
offsets
=
this
.
offsets
,
targets
=
this
.
targets
,
activeTarget
=
this
.
activeTarget
,
i
if
(
scrollTop
>=
maxScroll
)
{
return
activeTarget
!=
(
i
=
targets
.
last
()[
0
])
&&
this
.
activate
(
i
)
}
for
(
i
=
offsets
.
length
;
i
--
;)
{
activeTarget
!=
targets
[
i
]
&&
scrollTop
>=
offsets
[
i
]
&&
(
!
offsets
[
i
+
1
]
||
scrollTop
<=
offsets
[
i
+
1
])
&&
this
.
activate
(
targets
[
i
]
)
}
}
,
activate
:
function
(
target
)
{
var
active
,
selector
this
.
activeTarget
=
target
$
(
this
.
selector
)
.
parent
(
'.active'
)
.
removeClass
(
'active'
)
selector
=
this
.
selector
+
'[data-target="'
+
target
+
'"],'
+
this
.
selector
+
'[href="'
+
target
+
'"]'
active
=
$
(
selector
)
.
parent
(
'li'
)
.
addClass
(
'active'
)
if
(
active
.
parent
(
'.dropdown-menu'
).
length
)
{
active
=
active
.
closest
(
'li.dropdown'
).
addClass
(
'active'
)
}
active
.
trigger
(
'activate'
)
}
}
/* SCROLLSPY PLUGIN DEFINITION
* =========================== */
var
old
=
$
.
fn
.
scrollspy
$
.
fn
.
scrollspy
=
function
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
,
data
=
$this
.
data
(
'scrollspy'
)
,
options
=
typeof
option
==
'object'
&&
option
if
(
!
data
)
$this
.
data
(
'scrollspy'
,
(
data
=
new
ScrollSpy
(
this
,
options
)))
if
(
typeof
option
==
'string'
)
data
[
option
]()
})
}
$
.
fn
.
scrollspy
.
Constructor
=
ScrollSpy
$
.
fn
.
scrollspy
.
defaults
=
{
offset
:
10
}
/* SCROLLSPY NO CONFLICT
* ===================== */
$
.
fn
.
scrollspy
.
noConflict
=
function
()
{
$
.
fn
.
scrollspy
=
old
return
this
}
/* SCROLLSPY DATA-API
* ================== */
$
(
window
).
on
(
'load'
,
function
()
{
$
(
'[data-spy="scroll"]'
).
each
(
function
()
{
var
$spy
=
$
(
this
)
$spy
.
scrollspy
(
$spy
.
data
())
})
})
}(
window
.
jQuery
);
/* ========================================================
* bootstrap-tab.js v2.3.2
* http://twitter.github.com/bootstrap/javascript.html#tabs
* ========================================================
* Copyright 2012 Twitter, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ======================================================== */
!
function
(
$
)
{
"use strict"
;
// jshint ;_;
/* TAB CLASS DEFINITION
* ==================== */
var
Tab
=
function
(
element
)
{
this
.
element
=
$
(
element
)
}
Tab
.
prototype
=
{
constructor
:
Tab
,
show
:
function
()
{
var
$this
=
this
.
element
,
$ul
=
$this
.
closest
(
'ul:not(.dropdown-menu)'
)
,
selector
=
$this
.
attr
(
'data-target'
)
,
previous
,
$target
,
e
if
(
!
selector
)
{
selector
=
$this
.
attr
(
'href'
)
selector
=
selector
&&
selector
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
''
)
//strip for ie7
}
if
(
$this
.
parent
(
'li'
).
hasClass
(
'active'
)
)
return
previous
=
$ul
.
find
(
'.active:last a'
)[
0
]
e
=
$
.
Event
(
'show'
,
{
relatedTarget
:
previous
})
$this
.
trigger
(
e
)
if
(
e
.
isDefaultPrevented
())
return
$target
=
$
(
selector
)
this
.
activate
(
$this
.
parent
(
'li'
),
$ul
)
this
.
activate
(
$target
,
$target
.
parent
(),
function
()
{
$this
.
trigger
({
type
:
'shown'
,
relatedTarget
:
previous
})
})
}
,
activate
:
function
(
element
,
container
,
callback
)
{
var
$active
=
container
.
find
(
'> .active'
)
,
transition
=
callback
&&
$
.
support
.
transition
&&
$active
.
hasClass
(
'fade'
)
function
next
()
{
$active
.
removeClass
(
'active'
)
.
find
(
'> .dropdown-menu > .active'
)
.
removeClass
(
'active'
)
element
.
addClass
(
'active'
)
if
(
transition
)
{
element
[
0
].
offsetWidth
// reflow for transition
element
.
addClass
(
'in'
)
}
else
{
element
.
removeClass
(
'fade'
)
}
if
(
element
.
parent
(
'.dropdown-menu'
)
)
{
element
.
closest
(
'li.dropdown'
).
addClass
(
'active'
)
}
callback
&&
callback
()
}
transition
?
$active
.
one
(
$
.
support
.
transition
.
end
,
next
)
:
next
()
$active
.
removeClass
(
'in'
)
}
}
/* TAB PLUGIN DEFINITION
* ===================== */
var
old
=
$
.
fn
.
tab
$
.
fn
.
tab
=
function
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
,
data
=
$this
.
data
(
'tab'
)
if
(
!
data
)
$this
.
data
(
'tab'
,
(
data
=
new
Tab
(
this
)))
if
(
typeof
option
==
'string'
)
data
[
option
]()
})
}
$
.
fn
.
tab
.
Constructor
=
Tab
/* TAB NO CONFLICT
* =============== */
$
.
fn
.
tab
.
noConflict
=
function
()
{
$
.
fn
.
tab
=
old
return
this
}
/* TAB DATA-API
* ============ */
$
(
document
).
on
(
'click.tab.data-api'
,
'[data-toggle="tab"], [data-toggle="pill"]'
,
function
(
e
)
{
e
.
preventDefault
()
$
(
this
).
tab
(
'show'
)
})
}(
window
.
jQuery
);
/* =============================================================
* bootstrap-typeahead.js v2.3.2
* http://twitter.github.com/bootstrap/javascript.html#typeahead
* =============================================================
* Copyright 2012 Twitter, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============================================================ */
!
function
(
$
){
"use strict"
;
// jshint ;_;
/* TYPEAHEAD PUBLIC CLASS DEFINITION
* ================================= */
var
Typeahead
=
function
(
element
,
options
)
{
this
.
$element
=
$
(
element
)
this
.
options
=
$
.
extend
({},
$
.
fn
.
typeahead
.
defaults
,
options
)
this
.
matcher
=
this
.
options
.
matcher
||
this
.
matcher
this
.
sorter
=
this
.
options
.
sorter
||
this
.
sorter
this
.
highlighter
=
this
.
options
.
highlighter
||
this
.
highlighter
this
.
updater
=
this
.
options
.
updater
||
this
.
updater
this
.
source
=
this
.
options
.
source
this
.
$menu
=
$
(
this
.
options
.
menu
)
this
.
shown
=
false
this
.
listen
()
}
Typeahead
.
prototype
=
{
constructor
:
Typeahead
,
select
:
function
()
{
var
val
=
this
.
$menu
.
find
(
'.active'
).
attr
(
'data-value'
)
this
.
$element
.
val
(
this
.
updater
(
val
))
.
change
()
return
this
.
hide
()
}
,
updater
:
function
(
item
)
{
return
item
}
,
show
:
function
()
{
var
pos
=
$
.
extend
({},
this
.
$element
.
position
(),
{
height
:
this
.
$element
[
0
].
offsetHeight
})
this
.
$menu
.
insertAfter
(
this
.
$element
)
.
css
({
top
:
pos
.
top
+
pos
.
height
,
left
:
pos
.
left
})
.
show
()
this
.
shown
=
true
return
this
}
,
hide
:
function
()
{
this
.
$menu
.
hide
()
this
.
shown
=
false
return
this
}
,
lookup
:
function
(
event
)
{
var
items
this
.
query
=
this
.
$element
.
val
()
if
(
!
this
.
query
||
this
.
query
.
length
<
this
.
options
.
minLength
)
{
return
this
.
shown
?
this
.
hide
()
:
this
}
items
=
$
.
isFunction
(
this
.
source
)
?
this
.
source
(
this
.
query
,
$
.
proxy
(
this
.
process
,
this
))
:
this
.
source
return
items
?
this
.
process
(
items
)
:
this
}
,
process
:
function
(
items
)
{
var
that
=
this
items
=
$
.
grep
(
items
,
function
(
item
)
{
return
that
.
matcher
(
item
)
})
items
=
this
.
sorter
(
items
)
if
(
!
items
.
length
)
{
return
this
.
shown
?
this
.
hide
()
:
this
}
return
this
.
render
(
items
.
slice
(
0
,
this
.
options
.
items
)).
show
()
}
,
matcher
:
function
(
item
)
{
return
~
item
.
toLowerCase
().
indexOf
(
this
.
query
.
toLowerCase
())
}
,
sorter
:
function
(
items
)
{
var
beginswith
=
[]
,
caseSensitive
=
[]
,
caseInsensitive
=
[]
,
item
while
(
item
=
items
.
shift
())
{
if
(
!
item
.
toLowerCase
().
indexOf
(
this
.
query
.
toLowerCase
()))
beginswith
.
push
(
item
)
else
if
(
~
item
.
indexOf
(
this
.
query
))
caseSensitive
.
push
(
item
)
else
caseInsensitive
.
push
(
item
)
}
return
beginswith
.
concat
(
caseSensitive
,
caseInsensitive
)
}
,
highlighter
:
function
(
item
)
{
var
query
=
this
.
query
.
replace
(
/
[\-\[\]
{}()*+?.,
\\\^
$|#
\s]
/g
,
'
\\
$&'
)
return
item
.
replace
(
new
RegExp
(
'('
+
query
+
')'
,
'ig'
),
function
(
$1
,
match
)
{
return
'<strong>'
+
match
+
'</strong>'
})
}
,
render
:
function
(
items
)
{
var
that
=
this
items
=
$
(
items
).
map
(
function
(
i
,
item
)
{
i
=
$
(
that
.
options
.
item
).
attr
(
'data-value'
,
item
)
i
.
find
(
'a'
).
html
(
that
.
highlighter
(
item
))
return
i
[
0
]
})
items
.
first
().
addClass
(
'active'
)
this
.
$menu
.
html
(
items
)
return
this
}
,
next
:
function
(
event
)
{
var
active
=
this
.
$menu
.
find
(
'.active'
).
removeClass
(
'active'
)
,
next
=
active
.
next
()
if
(
!
next
.
length
)
{
next
=
$
(
this
.
$menu
.
find
(
'li'
)[
0
])
}
next
.
addClass
(
'active'
)
}
,
prev
:
function
(
event
)
{
var
active
=
this
.
$menu
.
find
(
'.active'
).
removeClass
(
'active'
)
,
prev
=
active
.
prev
()
if
(
!
prev
.
length
)
{
prev
=
this
.
$menu
.
find
(
'li'
).
last
()
}
prev
.
addClass
(
'active'
)
}
,
listen
:
function
()
{
this
.
$element
.
on
(
'focus'
,
$
.
proxy
(
this
.
focus
,
this
))
.
on
(
'blur'
,
$
.
proxy
(
this
.
blur
,
this
))
.
on
(
'keypress'
,
$
.
proxy
(
this
.
keypress
,
this
))
.
on
(
'keyup'
,
$
.
proxy
(
this
.
keyup
,
this
))
if
(
this
.
eventSupported
(
'keydown'
))
{
this
.
$element
.
on
(
'keydown'
,
$
.
proxy
(
this
.
keydown
,
this
))
}
this
.
$menu
.
on
(
'click'
,
$
.
proxy
(
this
.
click
,
this
))
.
on
(
'mouseenter'
,
'li'
,
$
.
proxy
(
this
.
mouseenter
,
this
))
.
on
(
'mouseleave'
,
'li'
,
$
.
proxy
(
this
.
mouseleave
,
this
))
}
,
eventSupported
:
function
(
eventName
)
{
var
isSupported
=
eventName
in
this
.
$element
if
(
!
isSupported
)
{
this
.
$element
.
setAttribute
(
eventName
,
'return;'
)
isSupported
=
typeof
this
.
$element
[
eventName
]
===
'function'
}
return
isSupported
}
,
move
:
function
(
e
)
{
if
(
!
this
.
shown
)
return
switch
(
e
.
keyCode
)
{
case
9
:
// tab
case
13
:
// enter
case
27
:
// escape
e
.
preventDefault
()
break
case
38
:
// up arrow
e
.
preventDefault
()
this
.
prev
()
break
case
40
:
// down arrow
e
.
preventDefault
()
this
.
next
()
break
}
e
.
stopPropagation
()
}
,
keydown
:
function
(
e
)
{
this
.
suppressKeyPressRepeat
=
~
$
.
inArray
(
e
.
keyCode
,
[
40
,
38
,
9
,
13
,
27
])
this
.
move
(
e
)
}
,
keypress
:
function
(
e
)
{
if
(
this
.
suppressKeyPressRepeat
)
return
this
.
move
(
e
)
}
,
keyup
:
function
(
e
)
{
switch
(
e
.
keyCode
)
{
case
40
:
// down arrow
case
38
:
// up arrow
case
16
:
// shift
case
17
:
// ctrl
case
18
:
// alt
break
case
9
:
// tab
case
13
:
// enter
if
(
!
this
.
shown
)
return
this
.
select
()
break
case
27
:
// escape
if
(
!
this
.
shown
)
return
this
.
hide
()
break
default
:
this
.
lookup
()
}
e
.
stopPropagation
()
e
.
preventDefault
()
}
,
focus
:
function
(
e
)
{
this
.
focused
=
true
}
,
blur
:
function
(
e
)
{
this
.
focused
=
false
if
(
!
this
.
mousedover
&&
this
.
shown
)
this
.
hide
()
}
,
click
:
function
(
e
)
{
e
.
stopPropagation
()
e
.
preventDefault
()
this
.
select
()
this
.
$element
.
focus
()
}
,
mouseenter
:
function
(
e
)
{
this
.
mousedover
=
true
this
.
$menu
.
find
(
'.active'
).
removeClass
(
'active'
)
$
(
e
.
currentTarget
).
addClass
(
'active'
)
}
,
mouseleave
:
function
(
e
)
{
this
.
mousedover
=
false
if
(
!
this
.
focused
&&
this
.
shown
)
this
.
hide
()
}
}
/* TYPEAHEAD PLUGIN DEFINITION
* =========================== */
var
old
=
$
.
fn
.
typeahead
$
.
fn
.
typeahead
=
function
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
,
data
=
$this
.
data
(
'typeahead'
)
,
options
=
typeof
option
==
'object'
&&
option
if
(
!
data
)
$this
.
data
(
'typeahead'
,
(
data
=
new
Typeahead
(
this
,
options
)))
if
(
typeof
option
==
'string'
)
data
[
option
]()
})
}
$
.
fn
.
typeahead
.
defaults
=
{
source
:
[]
,
items
:
8
,
menu
:
'<ul class="typeahead dropdown-menu"></ul>'
,
item
:
'<li><a href="#"></a></li>'
,
minLength
:
1
}
$
.
fn
.
typeahead
.
Constructor
=
Typeahead
/* TYPEAHEAD NO CONFLICT
* =================== */
$
.
fn
.
typeahead
.
noConflict
=
function
()
{
$
.
fn
.
typeahead
=
old
return
this
}
/* TYPEAHEAD DATA-API
* ================== */
$
(
document
).
on
(
'focus.typeahead.data-api'
,
'[data-provide="typeahead"]'
,
function
(
e
)
{
var
$this
=
$
(
this
)
if
(
$this
.
data
(
'typeahead'
))
return
$this
.
typeahead
(
$this
.
data
())
})
}(
window
.
jQuery
);
/* ==========================================================
* bootstrap-affix.js v2.3.2
* http://twitter.github.com/bootstrap/javascript.html#affix
* ==========================================================
* Copyright 2012 Twitter, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ========================================================== */
!
function
(
$
)
{
"use strict"
;
// jshint ;_;
/* AFFIX CLASS DEFINITION
* ====================== */
var
Affix
=
function
(
element
,
options
)
{
this
.
options
=
$
.
extend
({},
$
.
fn
.
affix
.
defaults
,
options
)
this
.
$window
=
$
(
window
)
.
on
(
'scroll.affix.data-api'
,
$
.
proxy
(
this
.
checkPosition
,
this
))
.
on
(
'click.affix.data-api'
,
$
.
proxy
(
function
()
{
setTimeout
(
$
.
proxy
(
this
.
checkPosition
,
this
),
1
)
},
this
))
this
.
$element
=
$
(
element
)
this
.
checkPosition
()
}
Affix
.
prototype
.
checkPosition
=
function
()
{
if
(
!
this
.
$element
.
is
(
':visible'
))
return
var
scrollHeight
=
$
(
document
).
height
()
,
scrollTop
=
this
.
$window
.
scrollTop
()
,
position
=
this
.
$element
.
offset
()
,
offset
=
this
.
options
.
offset
,
offsetBottom
=
offset
.
bottom
,
offsetTop
=
offset
.
top
,
reset
=
'affix affix-top affix-bottom'
,
affix
if
(
typeof
offset
!=
'object'
)
offsetBottom
=
offsetTop
=
offset
if
(
typeof
offsetTop
==
'function'
)
offsetTop
=
offset
.
top
()
if
(
typeof
offsetBottom
==
'function'
)
offsetBottom
=
offset
.
bottom
()
affix
=
this
.
unpin
!=
null
&&
(
scrollTop
+
this
.
unpin
<=
position
.
top
)
?
false
:
offsetBottom
!=
null
&&
(
position
.
top
+
this
.
$element
.
height
()
>=
scrollHeight
-
offsetBottom
)
?
'bottom'
:
offsetTop
!=
null
&&
scrollTop
<=
offsetTop
?
'top'
:
false
if
(
this
.
affixed
===
affix
)
return
this
.
affixed
=
affix
this
.
unpin
=
affix
==
'bottom'
?
position
.
top
-
scrollTop
:
null
this
.
$element
.
removeClass
(
reset
).
addClass
(
'affix'
+
(
affix
?
'-'
+
affix
:
''
))
}
/* AFFIX PLUGIN DEFINITION
* ======================= */
var
old
=
$
.
fn
.
affix
$
.
fn
.
affix
=
function
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
)
,
data
=
$this
.
data
(
'affix'
)
,
options
=
typeof
option
==
'object'
&&
option
if
(
!
data
)
$this
.
data
(
'affix'
,
(
data
=
new
Affix
(
this
,
options
)))
if
(
typeof
option
==
'string'
)
data
[
option
]()
})
}
$
.
fn
.
affix
.
Constructor
=
Affix
$
.
fn
.
affix
.
defaults
=
{
offset
:
0
}
/* 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
)
,
data
=
$spy
.
data
()
data
.
offset
=
data
.
offset
||
{}
data
.
offsetBottom
&&
(
data
.
offset
.
bottom
=
data
.
offsetBottom
)
data
.
offsetTop
&&
(
data
.
offset
.
top
=
data
.
offsetTop
)
$spy
.
affix
(
data
)
})
})
}(
window
.
jQuery
);
\ No newline at end of file
yii/bootstrap/assets/js/bootstrap.min.js
deleted
100644 → 0
View file @
0763684e
/*!
* Bootstrap.js by @fat & @mdo
* Copyright 2012 Twitter, Inc.
* http://www.apache.org/licenses/LICENSE-2.0.txt
*/
!
function
(
e
){
"use strict"
;
e
(
function
(){
e
.
support
.
transition
=
function
(){
var
e
=
function
(){
var
e
=
document
.
createElement
(
"bootstrap"
),
t
=
{
WebkitTransition
:
"webkitTransitionEnd"
,
MozTransition
:
"transitionend"
,
OTransition
:
"oTransitionEnd otransitionend"
,
transition
:
"transitionend"
},
n
;
for
(
n
in
t
)
if
(
e
.
style
[
n
]
!==
undefined
)
return
t
[
n
]}();
return
e
&&
{
end
:
e
}}()})}(
window
.
jQuery
),
!
function
(
e
){
"use strict"
;
var
t
=
'[data-dismiss="alert"]'
,
n
=
function
(
n
){
e
(
n
).
on
(
"click"
,
t
,
this
.
close
)};
n
.
prototype
.
close
=
function
(
t
){
function
s
(){
i
.
trigger
(
"closed"
).
remove
()}
var
n
=
e
(
this
),
r
=
n
.
attr
(
"data-target"
),
i
;
r
||
(
r
=
n
.
attr
(
"href"
),
r
=
r
&&
r
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
""
)),
i
=
e
(
r
),
t
&&
t
.
preventDefault
(),
i
.
length
||
(
i
=
n
.
hasClass
(
"alert"
)?
n
:
n
.
parent
()),
i
.
trigger
(
t
=
e
.
Event
(
"close"
));
if
(
t
.
isDefaultPrevented
())
return
;
i
.
removeClass
(
"in"
),
e
.
support
.
transition
&&
i
.
hasClass
(
"fade"
)?
i
.
on
(
e
.
support
.
transition
.
end
,
s
):
s
()};
var
r
=
e
.
fn
.
alert
;
e
.
fn
.
alert
=
function
(
t
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"alert"
);
i
||
r
.
data
(
"alert"
,
i
=
new
n
(
this
)),
typeof
t
==
"string"
&&
i
[
t
].
call
(
r
)})},
e
.
fn
.
alert
.
Constructor
=
n
,
e
.
fn
.
alert
.
noConflict
=
function
(){
return
e
.
fn
.
alert
=
r
,
this
},
e
(
document
).
on
(
"click.alert.data-api"
,
t
,
n
.
prototype
.
close
)}(
window
.
jQuery
),
!
function
(
e
){
"use strict"
;
var
t
=
function
(
t
,
n
){
this
.
$element
=
e
(
t
),
this
.
options
=
e
.
extend
({},
e
.
fn
.
button
.
defaults
,
n
)};
t
.
prototype
.
setState
=
function
(
e
){
var
t
=
"disabled"
,
n
=
this
.
$element
,
r
=
n
.
data
(),
i
=
n
.
is
(
"input"
)?
"val"
:
"html"
;
e
+=
"Text"
,
r
.
resetText
||
n
.
data
(
"resetText"
,
n
[
i
]()),
n
[
i
](
r
[
e
]
||
this
.
options
[
e
]),
setTimeout
(
function
(){
e
==
"loadingText"
?
n
.
addClass
(
t
).
attr
(
t
,
t
):
n
.
removeClass
(
t
).
removeAttr
(
t
)},
0
)},
t
.
prototype
.
toggle
=
function
(){
var
e
=
this
.
$element
.
closest
(
'[data-toggle="buttons-radio"]'
);
e
&&
e
.
find
(
".active"
).
removeClass
(
"active"
),
this
.
$element
.
toggleClass
(
"active"
)};
var
n
=
e
.
fn
.
button
;
e
.
fn
.
button
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"button"
),
s
=
typeof
n
==
"object"
&&
n
;
i
||
r
.
data
(
"button"
,
i
=
new
t
(
this
,
s
)),
n
==
"toggle"
?
i
.
toggle
():
n
&&
i
.
setState
(
n
)})},
e
.
fn
.
button
.
defaults
=
{
loadingText
:
"loading..."
},
e
.
fn
.
button
.
Constructor
=
t
,
e
.
fn
.
button
.
noConflict
=
function
(){
return
e
.
fn
.
button
=
n
,
this
},
e
(
document
).
on
(
"click.button.data-api"
,
"[data-toggle^=button]"
,
function
(
t
){
var
n
=
e
(
t
.
target
);
n
.
hasClass
(
"btn"
)
||
(
n
=
n
.
closest
(
".btn"
)),
n
.
button
(
"toggle"
)})}(
window
.
jQuery
),
!
function
(
e
){
"use strict"
;
var
t
=
function
(
t
,
n
){
this
.
$element
=
e
(
t
),
this
.
$indicators
=
this
.
$element
.
find
(
".carousel-indicators"
),
this
.
options
=
n
,
this
.
options
.
pause
==
"hover"
&&
this
.
$element
.
on
(
"mouseenter"
,
e
.
proxy
(
this
.
pause
,
this
)).
on
(
"mouseleave"
,
e
.
proxy
(
this
.
cycle
,
this
))};
t
.
prototype
=
{
cycle
:
function
(
t
){
return
t
||
(
this
.
paused
=!
1
),
this
.
interval
&&
clearInterval
(
this
.
interval
),
this
.
options
.
interval
&&!
this
.
paused
&&
(
this
.
interval
=
setInterval
(
e
.
proxy
(
this
.
next
,
this
),
this
.
options
.
interval
)),
this
},
getActiveIndex
:
function
(){
return
this
.
$active
=
this
.
$element
.
find
(
".item.active"
),
this
.
$items
=
this
.
$active
.
parent
().
children
(),
this
.
$items
.
index
(
this
.
$active
)},
to
:
function
(
t
){
var
n
=
this
.
getActiveIndex
(),
r
=
this
;
if
(
t
>
this
.
$items
.
length
-
1
||
t
<
0
)
return
;
return
this
.
sliding
?
this
.
$element
.
one
(
"slid"
,
function
(){
r
.
to
(
t
)}):
n
==
t
?
this
.
pause
().
cycle
():
this
.
slide
(
t
>
n
?
"next"
:
"prev"
,
e
(
this
.
$items
[
t
]))},
pause
:
function
(
t
){
return
t
||
(
this
.
paused
=!
0
),
this
.
$element
.
find
(
".next, .prev"
).
length
&&
e
.
support
.
transition
.
end
&&
(
this
.
$element
.
trigger
(
e
.
support
.
transition
.
end
),
this
.
cycle
(
!
0
)),
clearInterval
(
this
.
interval
),
this
.
interval
=
null
,
this
},
next
:
function
(){
if
(
this
.
sliding
)
return
;
return
this
.
slide
(
"next"
)},
prev
:
function
(){
if
(
this
.
sliding
)
return
;
return
this
.
slide
(
"prev"
)},
slide
:
function
(
t
,
n
){
var
r
=
this
.
$element
.
find
(
".item.active"
),
i
=
n
||
r
[
t
](),
s
=
this
.
interval
,
o
=
t
==
"next"
?
"left"
:
"right"
,
u
=
t
==
"next"
?
"first"
:
"last"
,
a
=
this
,
f
;
this
.
sliding
=!
0
,
s
&&
this
.
pause
(),
i
=
i
.
length
?
i
:
this
.
$element
.
find
(
".item"
)[
u
](),
f
=
e
.
Event
(
"slide"
,{
relatedTarget
:
i
[
0
],
direction
:
o
});
if
(
i
.
hasClass
(
"active"
))
return
;
this
.
$indicators
.
length
&&
(
this
.
$indicators
.
find
(
".active"
).
removeClass
(
"active"
),
this
.
$element
.
one
(
"slid"
,
function
(){
var
t
=
e
(
a
.
$indicators
.
children
()[
a
.
getActiveIndex
()]);
t
&&
t
.
addClass
(
"active"
)}));
if
(
e
.
support
.
transition
&&
this
.
$element
.
hasClass
(
"slide"
)){
this
.
$element
.
trigger
(
f
);
if
(
f
.
isDefaultPrevented
())
return
;
i
.
addClass
(
t
),
i
[
0
].
offsetWidth
,
r
.
addClass
(
o
),
i
.
addClass
(
o
),
this
.
$element
.
one
(
e
.
support
.
transition
.
end
,
function
(){
i
.
removeClass
([
t
,
o
].
join
(
" "
)).
addClass
(
"active"
),
r
.
removeClass
([
"active"
,
o
].
join
(
" "
)),
a
.
sliding
=!
1
,
setTimeout
(
function
(){
a
.
$element
.
trigger
(
"slid"
)},
0
)})}
else
{
this
.
$element
.
trigger
(
f
);
if
(
f
.
isDefaultPrevented
())
return
;
r
.
removeClass
(
"active"
),
i
.
addClass
(
"active"
),
this
.
sliding
=!
1
,
this
.
$element
.
trigger
(
"slid"
)}
return
s
&&
this
.
cycle
(),
this
}};
var
n
=
e
.
fn
.
carousel
;
e
.
fn
.
carousel
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"carousel"
),
s
=
e
.
extend
({},
e
.
fn
.
carousel
.
defaults
,
typeof
n
==
"object"
&&
n
),
o
=
typeof
n
==
"string"
?
n
:
s
.
slide
;
i
||
r
.
data
(
"carousel"
,
i
=
new
t
(
this
,
s
)),
typeof
n
==
"number"
?
i
.
to
(
n
):
o
?
i
[
o
]():
s
.
interval
&&
i
.
pause
().
cycle
()})},
e
.
fn
.
carousel
.
defaults
=
{
interval
:
5
e3
,
pause
:
"hover"
},
e
.
fn
.
carousel
.
Constructor
=
t
,
e
.
fn
.
carousel
.
noConflict
=
function
(){
return
e
.
fn
.
carousel
=
n
,
this
},
e
(
document
).
on
(
"click.carousel.data-api"
,
"[data-slide], [data-slide-to]"
,
function
(
t
){
var
n
=
e
(
this
),
r
,
i
=
e
(
n
.
attr
(
"data-target"
)
||
(
r
=
n
.
attr
(
"href"
))
&&
r
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
""
)),
s
=
e
.
extend
({},
i
.
data
(),
n
.
data
()),
o
;
i
.
carousel
(
s
),(
o
=
n
.
attr
(
"data-slide-to"
))
&&
i
.
data
(
"carousel"
).
pause
().
to
(
o
).
cycle
(),
t
.
preventDefault
()})}(
window
.
jQuery
),
!
function
(
e
){
"use strict"
;
var
t
=
function
(
t
,
n
){
this
.
$element
=
e
(
t
),
this
.
options
=
e
.
extend
({},
e
.
fn
.
collapse
.
defaults
,
n
),
this
.
options
.
parent
&&
(
this
.
$parent
=
e
(
this
.
options
.
parent
)),
this
.
options
.
toggle
&&
this
.
toggle
()};
t
.
prototype
=
{
constructor
:
t
,
dimension
:
function
(){
var
e
=
this
.
$element
.
hasClass
(
"width"
);
return
e
?
"width"
:
"height"
},
show
:
function
(){
var
t
,
n
,
r
,
i
;
if
(
this
.
transitioning
||
this
.
$element
.
hasClass
(
"in"
))
return
;
t
=
this
.
dimension
(),
n
=
e
.
camelCase
([
"scroll"
,
t
].
join
(
"-"
)),
r
=
this
.
$parent
&&
this
.
$parent
.
find
(
"> .accordion-group > .in"
);
if
(
r
&&
r
.
length
){
i
=
r
.
data
(
"collapse"
);
if
(
i
&&
i
.
transitioning
)
return
;
r
.
collapse
(
"hide"
),
i
||
r
.
data
(
"collapse"
,
null
)}
this
.
$element
[
t
](
0
),
this
.
transition
(
"addClass"
,
e
.
Event
(
"show"
),
"shown"
),
e
.
support
.
transition
&&
this
.
$element
[
t
](
this
.
$element
[
0
][
n
])},
hide
:
function
(){
var
t
;
if
(
this
.
transitioning
||!
this
.
$element
.
hasClass
(
"in"
))
return
;
t
=
this
.
dimension
(),
this
.
reset
(
this
.
$element
[
t
]()),
this
.
transition
(
"removeClass"
,
e
.
Event
(
"hide"
),
"hidden"
),
this
.
$element
[
t
](
0
)},
reset
:
function
(
e
){
var
t
=
this
.
dimension
();
return
this
.
$element
.
removeClass
(
"collapse"
)[
t
](
e
||
"auto"
)[
0
].
offsetWidth
,
this
.
$element
[
e
!==
null
?
"addClass"
:
"removeClass"
](
"collapse"
),
this
},
transition
:
function
(
t
,
n
,
r
){
var
i
=
this
,
s
=
function
(){
n
.
type
==
"show"
&&
i
.
reset
(),
i
.
transitioning
=
0
,
i
.
$element
.
trigger
(
r
)};
this
.
$element
.
trigger
(
n
);
if
(
n
.
isDefaultPrevented
())
return
;
this
.
transitioning
=
1
,
this
.
$element
[
t
](
"in"
),
e
.
support
.
transition
&&
this
.
$element
.
hasClass
(
"collapse"
)?
this
.
$element
.
one
(
e
.
support
.
transition
.
end
,
s
):
s
()},
toggle
:
function
(){
this
[
this
.
$element
.
hasClass
(
"in"
)?
"hide"
:
"show"
]()}};
var
n
=
e
.
fn
.
collapse
;
e
.
fn
.
collapse
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"collapse"
),
s
=
e
.
extend
({},
e
.
fn
.
collapse
.
defaults
,
r
.
data
(),
typeof
n
==
"object"
&&
n
);
i
||
r
.
data
(
"collapse"
,
i
=
new
t
(
this
,
s
)),
typeof
n
==
"string"
&&
i
[
n
]()})},
e
.
fn
.
collapse
.
defaults
=
{
toggle
:
!
0
},
e
.
fn
.
collapse
.
Constructor
=
t
,
e
.
fn
.
collapse
.
noConflict
=
function
(){
return
e
.
fn
.
collapse
=
n
,
this
},
e
(
document
).
on
(
"click.collapse.data-api"
,
"[data-toggle=collapse]"
,
function
(
t
){
var
n
=
e
(
this
),
r
,
i
=
n
.
attr
(
"data-target"
)
||
t
.
preventDefault
()
||
(
r
=
n
.
attr
(
"href"
))
&&
r
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
""
),
s
=
e
(
i
).
data
(
"collapse"
)?
"toggle"
:
n
.
data
();
n
[
e
(
i
).
hasClass
(
"in"
)?
"addClass"
:
"removeClass"
](
"collapsed"
),
e
(
i
).
collapse
(
s
)})}(
window
.
jQuery
),
!
function
(
e
){
"use strict"
;
function
r
(){
e
(
".dropdown-backdrop"
).
remove
(),
e
(
t
).
each
(
function
(){
i
(
e
(
this
)).
removeClass
(
"open"
)})}
function
i
(
t
){
var
n
=
t
.
attr
(
"data-target"
),
r
;
n
||
(
n
=
t
.
attr
(
"href"
),
n
=
n
&&
/#/
.
test
(
n
)
&&
n
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
""
)),
r
=
n
&&
e
(
n
);
if
(
!
r
||!
r
.
length
)
r
=
t
.
parent
();
return
r
}
var
t
=
"[data-toggle=dropdown]"
,
n
=
function
(
t
){
var
n
=
e
(
t
).
on
(
"click.dropdown.data-api"
,
this
.
toggle
);
e
(
"html"
).
on
(
"click.dropdown.data-api"
,
function
(){
n
.
parent
().
removeClass
(
"open"
)})};
n
.
prototype
=
{
constructor
:
n
,
toggle
:
function
(
t
){
var
n
=
e
(
this
),
s
,
o
;
if
(
n
.
is
(
".disabled, :disabled"
))
return
;
return
s
=
i
(
n
),
o
=
s
.
hasClass
(
"open"
),
r
(),
o
||
(
"ontouchstart"
in
document
.
documentElement
&&
e
(
'<div class="dropdown-backdrop"/>'
).
insertBefore
(
e
(
this
)).
on
(
"click"
,
r
),
s
.
toggleClass
(
"open"
)),
n
.
focus
(),
!
1
},
keydown
:
function
(
n
){
var
r
,
s
,
o
,
u
,
a
,
f
;
if
(
!
/
(
38|40|27
)
/
.
test
(
n
.
keyCode
))
return
;
r
=
e
(
this
),
n
.
preventDefault
(),
n
.
stopPropagation
();
if
(
r
.
is
(
".disabled, :disabled"
))
return
;
u
=
i
(
r
),
a
=
u
.
hasClass
(
"open"
);
if
(
!
a
||
a
&&
n
.
keyCode
==
27
)
return
n
.
which
==
27
&&
u
.
find
(
t
).
focus
(),
r
.
click
();
s
=
e
(
"[role=menu] li:not(.divider):visible a"
,
u
);
if
(
!
s
.
length
)
return
;
f
=
s
.
index
(
s
.
filter
(
":focus"
)),
n
.
keyCode
==
38
&&
f
>
0
&&
f
--
,
n
.
keyCode
==
40
&&
f
<
s
.
length
-
1
&&
f
++
,
~
f
||
(
f
=
0
),
s
.
eq
(
f
).
focus
()}};
var
s
=
e
.
fn
.
dropdown
;
e
.
fn
.
dropdown
=
function
(
t
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"dropdown"
);
i
||
r
.
data
(
"dropdown"
,
i
=
new
n
(
this
)),
typeof
t
==
"string"
&&
i
[
t
].
call
(
r
)})},
e
.
fn
.
dropdown
.
Constructor
=
n
,
e
.
fn
.
dropdown
.
noConflict
=
function
(){
return
e
.
fn
.
dropdown
=
s
,
this
},
e
(
document
).
on
(
"click.dropdown.data-api"
,
r
).
on
(
"click.dropdown.data-api"
,
".dropdown form"
,
function
(
e
){
e
.
stopPropagation
()}).
on
(
"click.dropdown.data-api"
,
t
,
n
.
prototype
.
toggle
).
on
(
"keydown.dropdown.data-api"
,
t
+
", [role=menu]"
,
n
.
prototype
.
keydown
)}(
window
.
jQuery
),
!
function
(
e
){
"use strict"
;
var
t
=
function
(
t
,
n
){
this
.
options
=
n
,
this
.
$element
=
e
(
t
).
delegate
(
'[data-dismiss="modal"]'
,
"click.dismiss.modal"
,
e
.
proxy
(
this
.
hide
,
this
)),
this
.
options
.
remote
&&
this
.
$element
.
find
(
".modal-body"
).
load
(
this
.
options
.
remote
)};
t
.
prototype
=
{
constructor
:
t
,
toggle
:
function
(){
return
this
[
this
.
isShown
?
"hide"
:
"show"
]()},
show
:
function
(){
var
t
=
this
,
n
=
e
.
Event
(
"show"
);
this
.
$element
.
trigger
(
n
);
if
(
this
.
isShown
||
n
.
isDefaultPrevented
())
return
;
this
.
isShown
=!
0
,
this
.
escape
(),
this
.
backdrop
(
function
(){
var
n
=
e
.
support
.
transition
&&
t
.
$element
.
hasClass
(
"fade"
);
t
.
$element
.
parent
().
length
||
t
.
$element
.
appendTo
(
document
.
body
),
t
.
$element
.
show
(),
n
&&
t
.
$element
[
0
].
offsetWidth
,
t
.
$element
.
addClass
(
"in"
).
attr
(
"aria-hidden"
,
!
1
),
t
.
enforceFocus
(),
n
?
t
.
$element
.
one
(
e
.
support
.
transition
.
end
,
function
(){
t
.
$element
.
focus
().
trigger
(
"shown"
)}):
t
.
$element
.
focus
().
trigger
(
"shown"
)})},
hide
:
function
(
t
){
t
&&
t
.
preventDefault
();
var
n
=
this
;
t
=
e
.
Event
(
"hide"
),
this
.
$element
.
trigger
(
t
);
if
(
!
this
.
isShown
||
t
.
isDefaultPrevented
())
return
;
this
.
isShown
=!
1
,
this
.
escape
(),
e
(
document
).
off
(
"focusin.modal"
),
this
.
$element
.
removeClass
(
"in"
).
attr
(
"aria-hidden"
,
!
0
),
e
.
support
.
transition
&&
this
.
$element
.
hasClass
(
"fade"
)?
this
.
hideWithTransition
():
this
.
hideModal
()},
enforceFocus
:
function
(){
var
t
=
this
;
e
(
document
).
on
(
"focusin.modal"
,
function
(
e
){
t
.
$element
[
0
]
!==
e
.
target
&&!
t
.
$element
.
has
(
e
.
target
).
length
&&
t
.
$element
.
focus
()})},
escape
:
function
(){
var
e
=
this
;
this
.
isShown
&&
this
.
options
.
keyboard
?
this
.
$element
.
on
(
"keyup.dismiss.modal"
,
function
(
t
){
t
.
which
==
27
&&
e
.
hide
()}):
this
.
isShown
||
this
.
$element
.
off
(
"keyup.dismiss.modal"
)},
hideWithTransition
:
function
(){
var
t
=
this
,
n
=
setTimeout
(
function
(){
t
.
$element
.
off
(
e
.
support
.
transition
.
end
),
t
.
hideModal
()},
500
);
this
.
$element
.
one
(
e
.
support
.
transition
.
end
,
function
(){
clearTimeout
(
n
),
t
.
hideModal
()})},
hideModal
:
function
(){
var
e
=
this
;
this
.
$element
.
hide
(),
this
.
backdrop
(
function
(){
e
.
removeBackdrop
(),
e
.
$element
.
trigger
(
"hidden"
)})},
removeBackdrop
:
function
(){
this
.
$backdrop
&&
this
.
$backdrop
.
remove
(),
this
.
$backdrop
=
null
},
backdrop
:
function
(
t
){
var
n
=
this
,
r
=
this
.
$element
.
hasClass
(
"fade"
)?
"fade"
:
""
;
if
(
this
.
isShown
&&
this
.
options
.
backdrop
){
var
i
=
e
.
support
.
transition
&&
r
;
this
.
$backdrop
=
e
(
'<div class="modal-backdrop '
+
r
+
'" />'
).
appendTo
(
document
.
body
),
this
.
$backdrop
.
click
(
this
.
options
.
backdrop
==
"static"
?
e
.
proxy
(
this
.
$element
[
0
].
focus
,
this
.
$element
[
0
]):
e
.
proxy
(
this
.
hide
,
this
)),
i
&&
this
.
$backdrop
[
0
].
offsetWidth
,
this
.
$backdrop
.
addClass
(
"in"
);
if
(
!
t
)
return
;
i
?
this
.
$backdrop
.
one
(
e
.
support
.
transition
.
end
,
t
):
t
()}
else
!
this
.
isShown
&&
this
.
$backdrop
?(
this
.
$backdrop
.
removeClass
(
"in"
),
e
.
support
.
transition
&&
this
.
$element
.
hasClass
(
"fade"
)?
this
.
$backdrop
.
one
(
e
.
support
.
transition
.
end
,
t
):
t
()):
t
&&
t
()}};
var
n
=
e
.
fn
.
modal
;
e
.
fn
.
modal
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"modal"
),
s
=
e
.
extend
({},
e
.
fn
.
modal
.
defaults
,
r
.
data
(),
typeof
n
==
"object"
&&
n
);
i
||
r
.
data
(
"modal"
,
i
=
new
t
(
this
,
s
)),
typeof
n
==
"string"
?
i
[
n
]():
s
.
show
&&
i
.
show
()})},
e
.
fn
.
modal
.
defaults
=
{
backdrop
:
!
0
,
keyboard
:
!
0
,
show
:
!
0
},
e
.
fn
.
modal
.
Constructor
=
t
,
e
.
fn
.
modal
.
noConflict
=
function
(){
return
e
.
fn
.
modal
=
n
,
this
},
e
(
document
).
on
(
"click.modal.data-api"
,
'[data-toggle="modal"]'
,
function
(
t
){
var
n
=
e
(
this
),
r
=
n
.
attr
(
"href"
),
i
=
e
(
n
.
attr
(
"data-target"
)
||
r
&&
r
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
""
)),
s
=
i
.
data
(
"modal"
)?
"toggle"
:
e
.
extend
({
remote
:
!
/#/
.
test
(
r
)
&&
r
},
i
.
data
(),
n
.
data
());
t
.
preventDefault
(),
i
.
modal
(
s
).
one
(
"hide"
,
function
(){
n
.
focus
()})})}(
window
.
jQuery
),
!
function
(
e
){
"use strict"
;
var
t
=
function
(
e
,
t
){
this
.
init
(
"tooltip"
,
e
,
t
)};
t
.
prototype
=
{
constructor
:
t
,
init
:
function
(
t
,
n
,
r
){
var
i
,
s
,
o
,
u
,
a
;
this
.
type
=
t
,
this
.
$element
=
e
(
n
),
this
.
options
=
this
.
getOptions
(
r
),
this
.
enabled
=!
0
,
o
=
this
.
options
.
trigger
.
split
(
" "
);
for
(
a
=
o
.
length
;
a
--
;)
u
=
o
[
a
],
u
==
"click"
?
this
.
$element
.
on
(
"click."
+
this
.
type
,
this
.
options
.
selector
,
e
.
proxy
(
this
.
toggle
,
this
)):
u
!=
"manual"
&&
(
i
=
u
==
"hover"
?
"mouseenter"
:
"focus"
,
s
=
u
==
"hover"
?
"mouseleave"
:
"blur"
,
this
.
$element
.
on
(
i
+
"."
+
this
.
type
,
this
.
options
.
selector
,
e
.
proxy
(
this
.
enter
,
this
)),
this
.
$element
.
on
(
s
+
"."
+
this
.
type
,
this
.
options
.
selector
,
e
.
proxy
(
this
.
leave
,
this
)));
this
.
options
.
selector
?
this
.
_options
=
e
.
extend
({},
this
.
options
,{
trigger
:
"manual"
,
selector
:
""
}):
this
.
fixTitle
()},
getOptions
:
function
(
t
){
return
t
=
e
.
extend
({},
e
.
fn
[
this
.
type
].
defaults
,
this
.
$element
.
data
(),
t
),
t
.
delay
&&
typeof
t
.
delay
==
"number"
&&
(
t
.
delay
=
{
show
:
t
.
delay
,
hide
:
t
.
delay
}),
t
},
enter
:
function
(
t
){
var
n
=
e
.
fn
[
this
.
type
].
defaults
,
r
=
{},
i
;
this
.
_options
&&
e
.
each
(
this
.
_options
,
function
(
e
,
t
){
n
[
e
]
!=
t
&&
(
r
[
e
]
=
t
)},
this
),
i
=
e
(
t
.
currentTarget
)[
this
.
type
](
r
).
data
(
this
.
type
);
if
(
!
i
.
options
.
delay
||!
i
.
options
.
delay
.
show
)
return
i
.
show
();
clearTimeout
(
this
.
timeout
),
i
.
hoverState
=
"in"
,
this
.
timeout
=
setTimeout
(
function
(){
i
.
hoverState
==
"in"
&&
i
.
show
()},
i
.
options
.
delay
.
show
)},
leave
:
function
(
t
){
var
n
=
e
(
t
.
currentTarget
)[
this
.
type
](
this
.
_options
).
data
(
this
.
type
);
this
.
timeout
&&
clearTimeout
(
this
.
timeout
);
if
(
!
n
.
options
.
delay
||!
n
.
options
.
delay
.
hide
)
return
n
.
hide
();
n
.
hoverState
=
"out"
,
this
.
timeout
=
setTimeout
(
function
(){
n
.
hoverState
==
"out"
&&
n
.
hide
()},
n
.
options
.
delay
.
hide
)},
show
:
function
(){
var
t
,
n
,
r
,
i
,
s
,
o
,
u
=
e
.
Event
(
"show"
);
if
(
this
.
hasContent
()
&&
this
.
enabled
){
this
.
$element
.
trigger
(
u
);
if
(
u
.
isDefaultPrevented
())
return
;
t
=
this
.
tip
(),
this
.
setContent
(),
this
.
options
.
animation
&&
t
.
addClass
(
"fade"
),
s
=
typeof
this
.
options
.
placement
==
"function"
?
this
.
options
.
placement
.
call
(
this
,
t
[
0
],
this
.
$element
[
0
]):
this
.
options
.
placement
,
t
.
detach
().
css
({
top
:
0
,
left
:
0
,
display
:
"block"
}),
this
.
options
.
container
?
t
.
appendTo
(
this
.
options
.
container
):
t
.
insertAfter
(
this
.
$element
),
n
=
this
.
getPosition
(),
r
=
t
[
0
].
offsetWidth
,
i
=
t
[
0
].
offsetHeight
;
switch
(
s
){
case
"bottom"
:
o
=
{
top
:
n
.
top
+
n
.
height
,
left
:
n
.
left
+
n
.
width
/
2
-
r
/
2
};
break
;
case
"top"
:
o
=
{
top
:
n
.
top
-
i
,
left
:
n
.
left
+
n
.
width
/
2
-
r
/
2
};
break
;
case
"left"
:
o
=
{
top
:
n
.
top
+
n
.
height
/
2
-
i
/
2
,
left
:
n
.
left
-
r
};
break
;
case
"right"
:
o
=
{
top
:
n
.
top
+
n
.
height
/
2
-
i
/
2
,
left
:
n
.
left
+
n
.
width
}}
this
.
applyPlacement
(
o
,
s
),
this
.
$element
.
trigger
(
"shown"
)}},
applyPlacement
:
function
(
e
,
t
){
var
n
=
this
.
tip
(),
r
=
n
[
0
].
offsetWidth
,
i
=
n
[
0
].
offsetHeight
,
s
,
o
,
u
,
a
;
n
.
offset
(
e
).
addClass
(
t
).
addClass
(
"in"
),
s
=
n
[
0
].
offsetWidth
,
o
=
n
[
0
].
offsetHeight
,
t
==
"top"
&&
o
!=
i
&&
(
e
.
top
=
e
.
top
+
i
-
o
,
a
=!
0
),
t
==
"bottom"
||
t
==
"top"
?(
u
=
0
,
e
.
left
<
0
&&
(
u
=
e
.
left
*-
2
,
e
.
left
=
0
,
n
.
offset
(
e
),
s
=
n
[
0
].
offsetWidth
,
o
=
n
[
0
].
offsetHeight
),
this
.
replaceArrow
(
u
-
r
+
s
,
s
,
"left"
)):
this
.
replaceArrow
(
o
-
i
,
o
,
"top"
),
a
&&
n
.
offset
(
e
)},
replaceArrow
:
function
(
e
,
t
,
n
){
this
.
arrow
().
css
(
n
,
e
?
50
*
(
1
-
e
/
t
)
+
"%"
:
""
)},
setContent
:
function
(){
var
e
=
this
.
tip
(),
t
=
this
.
getTitle
();
e
.
find
(
".tooltip-inner"
)[
this
.
options
.
html
?
"html"
:
"text"
](
t
),
e
.
removeClass
(
"fade in top bottom left right"
)},
hide
:
function
(){
function
i
(){
var
t
=
setTimeout
(
function
(){
n
.
off
(
e
.
support
.
transition
.
end
).
detach
()},
500
);
n
.
one
(
e
.
support
.
transition
.
end
,
function
(){
clearTimeout
(
t
),
n
.
detach
()})}
var
t
=
this
,
n
=
this
.
tip
(),
r
=
e
.
Event
(
"hide"
);
this
.
$element
.
trigger
(
r
);
if
(
r
.
isDefaultPrevented
())
return
;
return
n
.
removeClass
(
"in"
),
e
.
support
.
transition
&&
this
.
$tip
.
hasClass
(
"fade"
)?
i
():
n
.
detach
(),
this
.
$element
.
trigger
(
"hidden"
),
this
},
fixTitle
:
function
(){
var
e
=
this
.
$element
;(
e
.
attr
(
"title"
)
||
typeof
e
.
attr
(
"data-original-title"
)
!=
"string"
)
&&
e
.
attr
(
"data-original-title"
,
e
.
attr
(
"title"
)
||
""
).
attr
(
"title"
,
""
)},
hasContent
:
function
(){
return
this
.
getTitle
()},
getPosition
:
function
(){
var
t
=
this
.
$element
[
0
];
return
e
.
extend
({},
typeof
t
.
getBoundingClientRect
==
"function"
?
t
.
getBoundingClientRect
():{
width
:
t
.
offsetWidth
,
height
:
t
.
offsetHeight
},
this
.
$element
.
offset
())},
getTitle
:
function
(){
var
e
,
t
=
this
.
$element
,
n
=
this
.
options
;
return
e
=
t
.
attr
(
"data-original-title"
)
||
(
typeof
n
.
title
==
"function"
?
n
.
title
.
call
(
t
[
0
]):
n
.
title
),
e
},
tip
:
function
(){
return
this
.
$tip
=
this
.
$tip
||
e
(
this
.
options
.
template
)},
arrow
:
function
(){
return
this
.
$arrow
=
this
.
$arrow
||
this
.
tip
().
find
(
".tooltip-arrow"
)},
validate
:
function
(){
this
.
$element
[
0
].
parentNode
||
(
this
.
hide
(),
this
.
$element
=
null
,
this
.
options
=
null
)},
enable
:
function
(){
this
.
enabled
=!
0
},
disable
:
function
(){
this
.
enabled
=!
1
},
toggleEnabled
:
function
(){
this
.
enabled
=!
this
.
enabled
},
toggle
:
function
(
t
){
var
n
=
t
?
e
(
t
.
currentTarget
)[
this
.
type
](
this
.
_options
).
data
(
this
.
type
):
this
;
n
.
tip
().
hasClass
(
"in"
)?
n
.
hide
():
n
.
show
()},
destroy
:
function
(){
this
.
hide
().
$element
.
off
(
"."
+
this
.
type
).
removeData
(
this
.
type
)}};
var
n
=
e
.
fn
.
tooltip
;
e
.
fn
.
tooltip
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"tooltip"
),
s
=
typeof
n
==
"object"
&&
n
;
i
||
r
.
data
(
"tooltip"
,
i
=
new
t
(
this
,
s
)),
typeof
n
==
"string"
&&
i
[
n
]()})},
e
.
fn
.
tooltip
.
Constructor
=
t
,
e
.
fn
.
tooltip
.
defaults
=
{
animation
:
!
0
,
placement
:
"top"
,
selector
:
!
1
,
template
:
'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
,
trigger
:
"hover focus"
,
title
:
""
,
delay
:
0
,
html
:
!
1
,
container
:
!
1
},
e
.
fn
.
tooltip
.
noConflict
=
function
(){
return
e
.
fn
.
tooltip
=
n
,
this
}}(
window
.
jQuery
),
!
function
(
e
){
"use strict"
;
var
t
=
function
(
e
,
t
){
this
.
init
(
"popover"
,
e
,
t
)};
t
.
prototype
=
e
.
extend
({},
e
.
fn
.
tooltip
.
Constructor
.
prototype
,{
constructor
:
t
,
setContent
:
function
(){
var
e
=
this
.
tip
(),
t
=
this
.
getTitle
(),
n
=
this
.
getContent
();
e
.
find
(
".popover-title"
)[
this
.
options
.
html
?
"html"
:
"text"
](
t
),
e
.
find
(
".popover-content"
)[
this
.
options
.
html
?
"html"
:
"text"
](
n
),
e
.
removeClass
(
"fade top bottom left right in"
)},
hasContent
:
function
(){
return
this
.
getTitle
()
||
this
.
getContent
()},
getContent
:
function
(){
var
e
,
t
=
this
.
$element
,
n
=
this
.
options
;
return
e
=
(
typeof
n
.
content
==
"function"
?
n
.
content
.
call
(
t
[
0
]):
n
.
content
)
||
t
.
attr
(
"data-content"
),
e
},
tip
:
function
(){
return
this
.
$tip
||
(
this
.
$tip
=
e
(
this
.
options
.
template
)),
this
.
$tip
},
destroy
:
function
(){
this
.
hide
().
$element
.
off
(
"."
+
this
.
type
).
removeData
(
this
.
type
)}});
var
n
=
e
.
fn
.
popover
;
e
.
fn
.
popover
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"popover"
),
s
=
typeof
n
==
"object"
&&
n
;
i
||
r
.
data
(
"popover"
,
i
=
new
t
(
this
,
s
)),
typeof
n
==
"string"
&&
i
[
n
]()})},
e
.
fn
.
popover
.
Constructor
=
t
,
e
.
fn
.
popover
.
defaults
=
e
.
extend
({},
e
.
fn
.
tooltip
.
defaults
,{
placement
:
"right"
,
trigger
:
"click"
,
content
:
""
,
template
:
'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
}),
e
.
fn
.
popover
.
noConflict
=
function
(){
return
e
.
fn
.
popover
=
n
,
this
}}(
window
.
jQuery
),
!
function
(
e
){
"use strict"
;
function
t
(
t
,
n
){
var
r
=
e
.
proxy
(
this
.
process
,
this
),
i
=
e
(
t
).
is
(
"body"
)?
e
(
window
):
e
(
t
),
s
;
this
.
options
=
e
.
extend
({},
e
.
fn
.
scrollspy
.
defaults
,
n
),
this
.
$scrollElement
=
i
.
on
(
"scroll.scroll-spy.data-api"
,
r
),
this
.
selector
=
(
this
.
options
.
target
||
(
s
=
e
(
t
).
attr
(
"href"
))
&&
s
.
replace
(
/.*
(?=
#
[^\s]
+$
)
/
,
""
)
||
""
)
+
" .nav li > a"
,
this
.
$body
=
e
(
"body"
),
this
.
refresh
(),
this
.
process
()}
t
.
prototype
=
{
constructor
:
t
,
refresh
:
function
(){
var
t
=
this
,
n
;
this
.
offsets
=
e
([]),
this
.
targets
=
e
([]),
n
=
this
.
$body
.
find
(
this
.
selector
).
map
(
function
(){
var
n
=
e
(
this
),
r
=
n
.
data
(
"target"
)
||
n
.
attr
(
"href"
),
i
=
/^#
\w
/
.
test
(
r
)
&&
e
(
r
);
return
i
&&
i
.
length
&&
[[
i
.
position
().
top
+
(
!
e
.
isWindow
(
t
.
$scrollElement
.
get
(
0
))
&&
t
.
$scrollElement
.
scrollTop
()),
r
]]
||
null
}).
sort
(
function
(
e
,
t
){
return
e
[
0
]
-
t
[
0
]}).
each
(
function
(){
t
.
offsets
.
push
(
this
[
0
]),
t
.
targets
.
push
(
this
[
1
])})},
process
:
function
(){
var
e
=
this
.
$scrollElement
.
scrollTop
()
+
this
.
options
.
offset
,
t
=
this
.
$scrollElement
[
0
].
scrollHeight
||
this
.
$body
[
0
].
scrollHeight
,
n
=
t
-
this
.
$scrollElement
.
height
(),
r
=
this
.
offsets
,
i
=
this
.
targets
,
s
=
this
.
activeTarget
,
o
;
if
(
e
>=
n
)
return
s
!=
(
o
=
i
.
last
()[
0
])
&&
this
.
activate
(
o
);
for
(
o
=
r
.
length
;
o
--
;)
s
!=
i
[
o
]
&&
e
>=
r
[
o
]
&&
(
!
r
[
o
+
1
]
||
e
<=
r
[
o
+
1
])
&&
this
.
activate
(
i
[
o
])},
activate
:
function
(
t
){
var
n
,
r
;
this
.
activeTarget
=
t
,
e
(
this
.
selector
).
parent
(
".active"
).
removeClass
(
"active"
),
r
=
this
.
selector
+
'[data-target="'
+
t
+
'"],'
+
this
.
selector
+
'[href="'
+
t
+
'"]'
,
n
=
e
(
r
).
parent
(
"li"
).
addClass
(
"active"
),
n
.
parent
(
".dropdown-menu"
).
length
&&
(
n
=
n
.
closest
(
"li.dropdown"
).
addClass
(
"active"
)),
n
.
trigger
(
"activate"
)}};
var
n
=
e
.
fn
.
scrollspy
;
e
.
fn
.
scrollspy
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"scrollspy"
),
s
=
typeof
n
==
"object"
&&
n
;
i
||
r
.
data
(
"scrollspy"
,
i
=
new
t
(
this
,
s
)),
typeof
n
==
"string"
&&
i
[
n
]()})},
e
.
fn
.
scrollspy
.
Constructor
=
t
,
e
.
fn
.
scrollspy
.
defaults
=
{
offset
:
10
},
e
.
fn
.
scrollspy
.
noConflict
=
function
(){
return
e
.
fn
.
scrollspy
=
n
,
this
},
e
(
window
).
on
(
"load"
,
function
(){
e
(
'[data-spy="scroll"]'
).
each
(
function
(){
var
t
=
e
(
this
);
t
.
scrollspy
(
t
.
data
())})})}(
window
.
jQuery
),
!
function
(
e
){
"use strict"
;
var
t
=
function
(
t
){
this
.
element
=
e
(
t
)};
t
.
prototype
=
{
constructor
:
t
,
show
:
function
(){
var
t
=
this
.
element
,
n
=
t
.
closest
(
"ul:not(.dropdown-menu)"
),
r
=
t
.
attr
(
"data-target"
),
i
,
s
,
o
;
r
||
(
r
=
t
.
attr
(
"href"
),
r
=
r
&&
r
.
replace
(
/.*
(?=
#
[^\s]
*$
)
/
,
""
));
if
(
t
.
parent
(
"li"
).
hasClass
(
"active"
))
return
;
i
=
n
.
find
(
".active:last a"
)[
0
],
o
=
e
.
Event
(
"show"
,{
relatedTarget
:
i
}),
t
.
trigger
(
o
);
if
(
o
.
isDefaultPrevented
())
return
;
s
=
e
(
r
),
this
.
activate
(
t
.
parent
(
"li"
),
n
),
this
.
activate
(
s
,
s
.
parent
(),
function
(){
t
.
trigger
({
type
:
"shown"
,
relatedTarget
:
i
})})},
activate
:
function
(
t
,
n
,
r
){
function
o
(){
i
.
removeClass
(
"active"
).
find
(
"> .dropdown-menu > .active"
).
removeClass
(
"active"
),
t
.
addClass
(
"active"
),
s
?(
t
[
0
].
offsetWidth
,
t
.
addClass
(
"in"
)):
t
.
removeClass
(
"fade"
),
t
.
parent
(
".dropdown-menu"
)
&&
t
.
closest
(
"li.dropdown"
).
addClass
(
"active"
),
r
&&
r
()}
var
i
=
n
.
find
(
"> .active"
),
s
=
r
&&
e
.
support
.
transition
&&
i
.
hasClass
(
"fade"
);
s
?
i
.
one
(
e
.
support
.
transition
.
end
,
o
):
o
(),
i
.
removeClass
(
"in"
)}};
var
n
=
e
.
fn
.
tab
;
e
.
fn
.
tab
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"tab"
);
i
||
r
.
data
(
"tab"
,
i
=
new
t
(
this
)),
typeof
n
==
"string"
&&
i
[
n
]()})},
e
.
fn
.
tab
.
Constructor
=
t
,
e
.
fn
.
tab
.
noConflict
=
function
(){
return
e
.
fn
.
tab
=
n
,
this
},
e
(
document
).
on
(
"click.tab.data-api"
,
'[data-toggle="tab"], [data-toggle="pill"]'
,
function
(
t
){
t
.
preventDefault
(),
e
(
this
).
tab
(
"show"
)})}(
window
.
jQuery
),
!
function
(
e
){
"use strict"
;
var
t
=
function
(
t
,
n
){
this
.
$element
=
e
(
t
),
this
.
options
=
e
.
extend
({},
e
.
fn
.
typeahead
.
defaults
,
n
),
this
.
matcher
=
this
.
options
.
matcher
||
this
.
matcher
,
this
.
sorter
=
this
.
options
.
sorter
||
this
.
sorter
,
this
.
highlighter
=
this
.
options
.
highlighter
||
this
.
highlighter
,
this
.
updater
=
this
.
options
.
updater
||
this
.
updater
,
this
.
source
=
this
.
options
.
source
,
this
.
$menu
=
e
(
this
.
options
.
menu
),
this
.
shown
=!
1
,
this
.
listen
()};
t
.
prototype
=
{
constructor
:
t
,
select
:
function
(){
var
e
=
this
.
$menu
.
find
(
".active"
).
attr
(
"data-value"
);
return
this
.
$element
.
val
(
this
.
updater
(
e
)).
change
(),
this
.
hide
()},
updater
:
function
(
e
){
return
e
},
show
:
function
(){
var
t
=
e
.
extend
({},
this
.
$element
.
position
(),{
height
:
this
.
$element
[
0
].
offsetHeight
});
return
this
.
$menu
.
insertAfter
(
this
.
$element
).
css
({
top
:
t
.
top
+
t
.
height
,
left
:
t
.
left
}).
show
(),
this
.
shown
=!
0
,
this
},
hide
:
function
(){
return
this
.
$menu
.
hide
(),
this
.
shown
=!
1
,
this
},
lookup
:
function
(
t
){
var
n
;
return
this
.
query
=
this
.
$element
.
val
(),
!
this
.
query
||
this
.
query
.
length
<
this
.
options
.
minLength
?
this
.
shown
?
this
.
hide
():
this
:(
n
=
e
.
isFunction
(
this
.
source
)?
this
.
source
(
this
.
query
,
e
.
proxy
(
this
.
process
,
this
)):
this
.
source
,
n
?
this
.
process
(
n
):
this
)},
process
:
function
(
t
){
var
n
=
this
;
return
t
=
e
.
grep
(
t
,
function
(
e
){
return
n
.
matcher
(
e
)}),
t
=
this
.
sorter
(
t
),
t
.
length
?
this
.
render
(
t
.
slice
(
0
,
this
.
options
.
items
)).
show
():
this
.
shown
?
this
.
hide
():
this
},
matcher
:
function
(
e
){
return
~
e
.
toLowerCase
().
indexOf
(
this
.
query
.
toLowerCase
())},
sorter
:
function
(
e
){
var
t
=
[],
n
=
[],
r
=
[],
i
;
while
(
i
=
e
.
shift
())
i
.
toLowerCase
().
indexOf
(
this
.
query
.
toLowerCase
())?
~
i
.
indexOf
(
this
.
query
)?
n
.
push
(
i
):
r
.
push
(
i
):
t
.
push
(
i
);
return
t
.
concat
(
n
,
r
)},
highlighter
:
function
(
e
){
var
t
=
this
.
query
.
replace
(
/
[\-\[\]
{}()*+?.,
\\\^
$|#
\s]
/g
,
"
\\
$&"
);
return
e
.
replace
(
new
RegExp
(
"("
+
t
+
")"
,
"ig"
),
function
(
e
,
t
){
return
"<strong>"
+
t
+
"</strong>"
})},
render
:
function
(
t
){
var
n
=
this
;
return
t
=
e
(
t
).
map
(
function
(
t
,
r
){
return
t
=
e
(
n
.
options
.
item
).
attr
(
"data-value"
,
r
),
t
.
find
(
"a"
).
html
(
n
.
highlighter
(
r
)),
t
[
0
]}),
t
.
first
().
addClass
(
"active"
),
this
.
$menu
.
html
(
t
),
this
},
next
:
function
(
t
){
var
n
=
this
.
$menu
.
find
(
".active"
).
removeClass
(
"active"
),
r
=
n
.
next
();
r
.
length
||
(
r
=
e
(
this
.
$menu
.
find
(
"li"
)[
0
])),
r
.
addClass
(
"active"
)},
prev
:
function
(
e
){
var
t
=
this
.
$menu
.
find
(
".active"
).
removeClass
(
"active"
),
n
=
t
.
prev
();
n
.
length
||
(
n
=
this
.
$menu
.
find
(
"li"
).
last
()),
n
.
addClass
(
"active"
)},
listen
:
function
(){
this
.
$element
.
on
(
"focus"
,
e
.
proxy
(
this
.
focus
,
this
)).
on
(
"blur"
,
e
.
proxy
(
this
.
blur
,
this
)).
on
(
"keypress"
,
e
.
proxy
(
this
.
keypress
,
this
)).
on
(
"keyup"
,
e
.
proxy
(
this
.
keyup
,
this
)),
this
.
eventSupported
(
"keydown"
)
&&
this
.
$element
.
on
(
"keydown"
,
e
.
proxy
(
this
.
keydown
,
this
)),
this
.
$menu
.
on
(
"click"
,
e
.
proxy
(
this
.
click
,
this
)).
on
(
"mouseenter"
,
"li"
,
e
.
proxy
(
this
.
mouseenter
,
this
)).
on
(
"mouseleave"
,
"li"
,
e
.
proxy
(
this
.
mouseleave
,
this
))},
eventSupported
:
function
(
e
){
var
t
=
e
in
this
.
$element
;
return
t
||
(
this
.
$element
.
setAttribute
(
e
,
"return;"
),
t
=
typeof
this
.
$element
[
e
]
==
"function"
),
t
},
move
:
function
(
e
){
if
(
!
this
.
shown
)
return
;
switch
(
e
.
keyCode
){
case
9
:
case
13
:
case
27
:
e
.
preventDefault
();
break
;
case
38
:
e
.
preventDefault
(),
this
.
prev
();
break
;
case
40
:
e
.
preventDefault
(),
this
.
next
()}
e
.
stopPropagation
()},
keydown
:
function
(
t
){
this
.
suppressKeyPressRepeat
=~
e
.
inArray
(
t
.
keyCode
,[
40
,
38
,
9
,
13
,
27
]),
this
.
move
(
t
)},
keypress
:
function
(
e
){
if
(
this
.
suppressKeyPressRepeat
)
return
;
this
.
move
(
e
)},
keyup
:
function
(
e
){
switch
(
e
.
keyCode
){
case
40
:
case
38
:
case
16
:
case
17
:
case
18
:
break
;
case
9
:
case
13
:
if
(
!
this
.
shown
)
return
;
this
.
select
();
break
;
case
27
:
if
(
!
this
.
shown
)
return
;
this
.
hide
();
break
;
default
:
this
.
lookup
()}
e
.
stopPropagation
(),
e
.
preventDefault
()},
focus
:
function
(
e
){
this
.
focused
=!
0
},
blur
:
function
(
e
){
this
.
focused
=!
1
,
!
this
.
mousedover
&&
this
.
shown
&&
this
.
hide
()},
click
:
function
(
e
){
e
.
stopPropagation
(),
e
.
preventDefault
(),
this
.
select
(),
this
.
$element
.
focus
()},
mouseenter
:
function
(
t
){
this
.
mousedover
=!
0
,
this
.
$menu
.
find
(
".active"
).
removeClass
(
"active"
),
e
(
t
.
currentTarget
).
addClass
(
"active"
)},
mouseleave
:
function
(
e
){
this
.
mousedover
=!
1
,
!
this
.
focused
&&
this
.
shown
&&
this
.
hide
()}};
var
n
=
e
.
fn
.
typeahead
;
e
.
fn
.
typeahead
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"typeahead"
),
s
=
typeof
n
==
"object"
&&
n
;
i
||
r
.
data
(
"typeahead"
,
i
=
new
t
(
this
,
s
)),
typeof
n
==
"string"
&&
i
[
n
]()})},
e
.
fn
.
typeahead
.
defaults
=
{
source
:[],
items
:
8
,
menu
:
'<ul class="typeahead dropdown-menu"></ul>'
,
item
:
'<li><a href="#"></a></li>'
,
minLength
:
1
},
e
.
fn
.
typeahead
.
Constructor
=
t
,
e
.
fn
.
typeahead
.
noConflict
=
function
(){
return
e
.
fn
.
typeahead
=
n
,
this
},
e
(
document
).
on
(
"focus.typeahead.data-api"
,
'[data-provide="typeahead"]'
,
function
(
t
){
var
n
=
e
(
this
);
if
(
n
.
data
(
"typeahead"
))
return
;
n
.
typeahead
(
n
.
data
())})}(
window
.
jQuery
),
!
function
(
e
){
"use strict"
;
var
t
=
function
(
t
,
n
){
this
.
options
=
e
.
extend
({},
e
.
fn
.
affix
.
defaults
,
n
),
this
.
$window
=
e
(
window
).
on
(
"scroll.affix.data-api"
,
e
.
proxy
(
this
.
checkPosition
,
this
)).
on
(
"click.affix.data-api"
,
e
.
proxy
(
function
(){
setTimeout
(
e
.
proxy
(
this
.
checkPosition
,
this
),
1
)},
this
)),
this
.
$element
=
e
(
t
),
this
.
checkPosition
()};
t
.
prototype
.
checkPosition
=
function
(){
if
(
!
this
.
$element
.
is
(
":visible"
))
return
;
var
t
=
e
(
document
).
height
(),
n
=
this
.
$window
.
scrollTop
(),
r
=
this
.
$element
.
offset
(),
i
=
this
.
options
.
offset
,
s
=
i
.
bottom
,
o
=
i
.
top
,
u
=
"affix affix-top affix-bottom"
,
a
;
typeof
i
!=
"object"
&&
(
s
=
o
=
i
),
typeof
o
==
"function"
&&
(
o
=
i
.
top
()),
typeof
s
==
"function"
&&
(
s
=
i
.
bottom
()),
a
=
this
.
unpin
!=
null
&&
n
+
this
.
unpin
<=
r
.
top
?
!
1
:
s
!=
null
&&
r
.
top
+
this
.
$element
.
height
()
>=
t
-
s
?
"bottom"
:
o
!=
null
&&
n
<=
o
?
"top"
:
!
1
;
if
(
this
.
affixed
===
a
)
return
;
this
.
affixed
=
a
,
this
.
unpin
=
a
==
"bottom"
?
r
.
top
-
n
:
null
,
this
.
$element
.
removeClass
(
u
).
addClass
(
"affix"
+
(
a
?
"-"
+
a
:
""
))};
var
n
=
e
.
fn
.
affix
;
e
.
fn
.
affix
=
function
(
n
){
return
this
.
each
(
function
(){
var
r
=
e
(
this
),
i
=
r
.
data
(
"affix"
),
s
=
typeof
n
==
"object"
&&
n
;
i
||
r
.
data
(
"affix"
,
i
=
new
t
(
this
,
s
)),
typeof
n
==
"string"
&&
i
[
n
]()})},
e
.
fn
.
affix
.
Constructor
=
t
,
e
.
fn
.
affix
.
defaults
=
{
offset
:
0
},
e
.
fn
.
affix
.
noConflict
=
function
(){
return
e
.
fn
.
affix
=
n
,
this
},
e
(
window
).
on
(
"load"
,
function
(){
e
(
'[data-spy="affix"]'
).
each
(
function
(){
var
t
=
e
(
this
),
n
=
t
.
data
();
n
.
offset
=
n
.
offset
||
{},
n
.
offsetBottom
&&
(
n
.
offset
.
bottom
=
n
.
offsetBottom
),
n
.
offsetTop
&&
(
n
.
offset
.
top
=
n
.
offsetTop
),
t
.
affix
(
n
)})})}(
window
.
jQuery
);
\ No newline at end of file
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