From 4a46c892fd732654bf70ec2089dbd63fe68c72f6 Mon Sep 17 00:00:00 2001 From: Michael Kapelko Date: Thu, 6 Jul 2017 21:57:36 +0700 Subject: [PATCH] Add theme --- pelican/pelicanconf.py | 2 +- pelican/theme/License.txt | 13 + pelican/theme/README.md | 13 + pelican/theme/Screenshot.png | Bin 0 -> 117549 bytes pelican/theme/static/css/foundation.min.css | 1 + pelican/theme/static/css/normalize.css | 402 + pelican/theme/static/css/pygments.css | 70 + pelican/theme/static/css/style.css | 107 + .../theme/static/images/icons/delicious.png | Bin 0 -> 958 bytes .../theme/static/images/icons/facebook.png | Bin 0 -> 202 bytes pelican/theme/static/images/icons/github.png | Bin 0 -> 346 bytes .../theme/static/images/icons/gitorious.png | Bin 0 -> 227 bytes pelican/theme/static/images/icons/gittip.png | Bin 0 -> 487 bytes .../theme/static/images/icons/google-plus.png | Bin 0 -> 527 bytes pelican/theme/static/images/icons/lastfm.png | Bin 0 -> 975 bytes .../theme/static/images/icons/linkedin.png | Bin 0 -> 896 bytes pelican/theme/static/images/icons/rss.png | Bin 0 -> 879 bytes pelican/theme/static/images/icons/twitter.png | Bin 0 -> 830 bytes pelican/theme/static/js/custom.modernizr.js | 4 + pelican/theme/static/js/foundation.min.js | 15 + pelican/theme/static/js/jquery.js | 9597 +++++++++++++++++ pelican/theme/static/js/zepto.js | 1884 ++++ pelican/theme/templates/analytics.html | 12 + pelican/theme/templates/archives.html | 17 + pelican/theme/templates/article.html | 20 + pelican/theme/templates/article_infos.html | 7 + .../theme/templates/article_infos_bottom.html | 16 + pelican/theme/templates/author.html | 2 + pelican/theme/templates/authors.html | 0 pelican/theme/templates/base.html | 144 + pelican/theme/templates/categories.html | 8 + pelican/theme/templates/category.html | 2 + pelican/theme/templates/comments.html | 1 + pelican/theme/templates/disqus_script.html | 15 + pelican/theme/templates/github.html | 9 + pelican/theme/templates/index.html | 49 + pelican/theme/templates/page.html | 9 + pelican/theme/templates/pagination.html | 19 + pelican/theme/templates/piwik.html | 16 + pelican/theme/templates/tag.html | 2 + pelican/theme/templates/tags.html | 15 + pelican/theme/templates/translations.html | 7 + pelican/theme/templates/twitter.html | 3 + 43 files changed, 12480 insertions(+), 1 deletion(-) create mode 100644 pelican/theme/License.txt create mode 100644 pelican/theme/README.md create mode 100644 pelican/theme/Screenshot.png create mode 100644 pelican/theme/static/css/foundation.min.css create mode 100644 pelican/theme/static/css/normalize.css create mode 100644 pelican/theme/static/css/pygments.css create mode 100644 pelican/theme/static/css/style.css create mode 100644 pelican/theme/static/images/icons/delicious.png create mode 100644 pelican/theme/static/images/icons/facebook.png create mode 100644 pelican/theme/static/images/icons/github.png create mode 100644 pelican/theme/static/images/icons/gitorious.png create mode 100644 pelican/theme/static/images/icons/gittip.png create mode 100644 pelican/theme/static/images/icons/google-plus.png create mode 100644 pelican/theme/static/images/icons/lastfm.png create mode 100644 pelican/theme/static/images/icons/linkedin.png create mode 100644 pelican/theme/static/images/icons/rss.png create mode 100644 pelican/theme/static/images/icons/twitter.png create mode 100644 pelican/theme/static/js/custom.modernizr.js create mode 100644 pelican/theme/static/js/foundation.min.js create mode 100644 pelican/theme/static/js/jquery.js create mode 100644 pelican/theme/static/js/zepto.js create mode 100644 pelican/theme/templates/analytics.html create mode 100644 pelican/theme/templates/archives.html create mode 100644 pelican/theme/templates/article.html create mode 100644 pelican/theme/templates/article_infos.html create mode 100644 pelican/theme/templates/article_infos_bottom.html create mode 100644 pelican/theme/templates/author.html create mode 100644 pelican/theme/templates/authors.html create mode 100644 pelican/theme/templates/base.html create mode 100644 pelican/theme/templates/categories.html create mode 100644 pelican/theme/templates/category.html create mode 100644 pelican/theme/templates/comments.html create mode 100644 pelican/theme/templates/disqus_script.html create mode 100644 pelican/theme/templates/github.html create mode 100644 pelican/theme/templates/index.html create mode 100644 pelican/theme/templates/page.html create mode 100644 pelican/theme/templates/pagination.html create mode 100644 pelican/theme/templates/piwik.html create mode 100644 pelican/theme/templates/tag.html create mode 100644 pelican/theme/templates/tags.html create mode 100644 pelican/theme/templates/translations.html create mode 100644 pelican/theme/templates/twitter.html diff --git a/pelican/pelicanconf.py b/pelican/pelicanconf.py index 51523cc..a8a721c 100644 --- a/pelican/pelicanconf.py +++ b/pelican/pelicanconf.py @@ -48,7 +48,7 @@ DEFAULT_PAGINATION = 10 ARTICLE_PATHS = ['articles'] # Custom TuxLite ZF based theme. -THEME="/home/kornerr/p/ogstudio-pelican-theme" +THEME="theme" SHARE_BUTTONS = ['twitter'] diff --git a/pelican/theme/License.txt b/pelican/theme/License.txt new file mode 100644 index 0000000..53b1645 --- /dev/null +++ b/pelican/theme/License.txt @@ -0,0 +1,13 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. \ No newline at end of file diff --git a/pelican/theme/README.md b/pelican/theme/README.md new file mode 100644 index 0000000..a260ba8 --- /dev/null +++ b/pelican/theme/README.md @@ -0,0 +1,13 @@ +TuxLite ZF Theme +================ + +A mobile first theme that leverages the Zurb Foundation v4 framework. Minimalist two column, +right sidebar design. Sidebar goes below main content when viewed on mobile devices. + +Customization is all done and documented in style.css. + +Menu items and pages can be added to the top navigation bar via pelican settings file. + +Screenshot below. + +![Screenshot](Screenshot.png) diff --git a/pelican/theme/Screenshot.png b/pelican/theme/Screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..c7107eeb080b78c64cf4d42f6851b69ba1644b94 GIT binary patch literal 117549 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 Lp`3o&?C$>ot*^Yr literal 0 HcmV?d00001 diff --git a/pelican/theme/static/css/foundation.min.css b/pelican/theme/static/css/foundation.min.css new file mode 100644 index 0000000..0bedfea --- /dev/null +++ b/pelican/theme/static/css/foundation.min.css @@ -0,0 +1 @@ +*,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}html,body{font-size:100%}body{background:#fff;color:#222;padding:0;margin:0;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;font-weight:normal;font-style:normal;line-height:1;position:relative}a:focus{outline:none}img,object,embed{max-width:100%;height:auto}object,embed{height:100%}img{-ms-interpolation-mode:bicubic}#map_canvas img,#map_canvas embed,#map_canvas object,.map_canvas img,.map_canvas embed,.map_canvas object{max-width:none !important}.left{float:left !important}.right{float:right !important}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}.text-justify{text-align:justify !important}.hide{display:none}.antialiased{-webkit-font-smoothing:antialiased}img{display:inline-block;vertical-align:middle}textarea{height:auto;min-height:50px}select{width:100%}.row{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.row.collapse .column,.row.collapse .columns{position:relative;padding-left:0;padding-right:0;float:left}.row .row{width:auto;margin-left:-0.9375em;margin-right:-0.9375em;margin-top:0;margin-bottom:0;max-width:none;*zoom:1}.row .row:before,.row .row:after{content:" ";display:table}.row .row:after{clear:both}.row .row.collapse{width:auto;margin:0;max-width:none;*zoom:1}.row .row.collapse:before,.row .row.collapse:after{content:" ";display:table}.row .row.collapse:after{clear:both}.column,.columns{position:relative;padding-left:0.9375em;padding-right:0.9375em;width:100%;float:left}@media only screen{.column,.columns{position:relative;padding-left:0.9375em;padding-right:0.9375em;float:left}.small-1{position:relative;width:8.33333%}.small-2{position:relative;width:16.66667%}.small-3{position:relative;width:25%}.small-4{position:relative;width:33.33333%}.small-5{position:relative;width:41.66667%}.small-6{position:relative;width:50%}.small-7{position:relative;width:58.33333%}.small-8{position:relative;width:66.66667%}.small-9{position:relative;width:75%}.small-10{position:relative;width:83.33333%}.small-11{position:relative;width:91.66667%}.small-12{position:relative;width:100%}.small-offset-1{position:relative;margin-left:8.33333%}.small-offset-2{position:relative;margin-left:16.66667%}.small-offset-3{position:relative;margin-left:25%}.small-offset-4{position:relative;margin-left:33.33333%}.small-offset-5{position:relative;margin-left:41.66667%}.small-offset-6{position:relative;margin-left:50%}.small-offset-7{position:relative;margin-left:58.33333%}.small-offset-8{position:relative;margin-left:66.66667%}.small-offset-9{position:relative;margin-left:75%}.small-offset-10{position:relative;margin-left:83.33333%}[class*="column"]+[class*="column"]:last-child{float:right}[class*="column"]+[class*="column"].end{float:left}.column.small-centered,.columns.small-centered{position:relative;margin-left:auto;margin-right:auto;float:none !important}}@media only screen and (min-width: 48em){.large-1{position:relative;width:8.33333%}.large-2{position:relative;width:16.66667%}.large-3{position:relative;width:25%}.large-4{position:relative;width:33.33333%}.large-5{position:relative;width:41.66667%}.large-6{position:relative;width:50%}.large-7{position:relative;width:58.33333%}.large-8{position:relative;width:66.66667%}.large-9{position:relative;width:75%}.large-10{position:relative;width:83.33333%}.large-11{position:relative;width:91.66667%}.large-12{position:relative;width:100%}.row .large-offset-1{position:relative;margin-left:8.33333%}.row .large-offset-2{position:relative;margin-left:16.66667%}.row .large-offset-3{position:relative;margin-left:25%}.row .large-offset-4{position:relative;margin-left:33.33333%}.row .large-offset-5{position:relative;margin-left:41.66667%}.row .large-offset-6{position:relative;margin-left:50%}.row .large-offset-7{position:relative;margin-left:58.33333%}.row .large-offset-8{position:relative;margin-left:66.66667%}.row .large-offset-9{position:relative;margin-left:75%}.row .large-offset-10{position:relative;margin-left:83.33333%}.row .large-offset-11{position:relative;margin-left:91.66667%}.push-1{position:relative;left:8.33333%;right:auto}.pull-1{position:relative;right:8.33333%;left:auto}.push-2{position:relative;left:16.66667%;right:auto}.pull-2{position:relative;right:16.66667%;left:auto}.push-3{position:relative;left:25%;right:auto}.pull-3{position:relative;right:25%;left:auto}.push-4{position:relative;left:33.33333%;right:auto}.pull-4{position:relative;right:33.33333%;left:auto}.push-5{position:relative;left:41.66667%;right:auto}.pull-5{position:relative;right:41.66667%;left:auto}.push-6{position:relative;left:50%;right:auto}.pull-6{position:relative;right:50%;left:auto}.push-7{position:relative;left:58.33333%;right:auto}.pull-7{position:relative;right:58.33333%;left:auto}.push-8{position:relative;left:66.66667%;right:auto}.pull-8{position:relative;right:66.66667%;left:auto}.push-9{position:relative;left:75%;right:auto}.pull-9{position:relative;right:75%;left:auto}.push-10{position:relative;left:83.33333%;right:auto}.pull-10{position:relative;right:83.33333%;left:auto}.push-11{position:relative;left:91.66667%;right:auto}.pull-11{position:relative;right:91.66667%;left:auto}.small-push-1{left:inherit}.small-pull-1{right:inherit}.small-push-2{left:inherit}.small-pull-2{right:inherit}.small-push-3{left:inherit}.small-pull-3{right:inherit}.small-push-4{left:inherit}.small-pull-4{right:inherit}.small-push-5{left:inherit}.small-pull-5{right:inherit}.small-push-6{left:inherit}.small-pull-6{right:inherit}.small-push-7{left:inherit}.small-pull-7{right:inherit}.small-push-8{left:inherit}.small-pull-8{right:inherit}.small-push-9{left:inherit}.small-pull-9{right:inherit}.small-push-10{left:inherit}.small-pull-10{right:inherit}.small-push-11{left:inherit}.small-pull-11{right:inherit}.column.large-centered,.columns.large-centered{position:relative;margin-left:auto;margin-right:auto;float:none !important}.column.large-uncentered,.columns.large-uncentered{margin-left:0;margin-right:0;float:none}}.show-for-small,.show-for-medium-down,.show-for-large-down{display:inherit !important}.show-for-medium,.show-for-medium-up,.show-for-large,.show-for-large-up,.show-for-xlarge{display:none !important}.hide-for-medium,.hide-for-medium-up,.hide-for-large,.hide-for-large-up,.hide-for-xlarge{display:inherit !important}.hide-for-small,.hide-for-medium-down,.hide-for-large-down{display:none !important}table.show-for-small,table.show-for-medium-down,table.show-for-large-down,table.hide-for-medium,table.hide-for-medium-up,table.hide-for-large,table.hide-for-large-up,table.hide-for-xlarge{display:table}thead.show-for-small,thead.show-for-medium-down,thead.show-for-large-down,thead.hide-for-medium,thead.hide-for-medium-up,thead.hide-for-large,thead.hide-for-large-up,thead.hide-for-xlarge{display:table-header-group !important}tbody.show-for-small,tbody.show-for-medium-down,tbody.show-for-large-down,tbody.hide-for-medium,tbody.hide-for-medium-up,tbody.hide-for-large,tbody.hide-for-large-up,tbody.hide-for-xlarge{display:table-row-group !important}tr.show-for-small,tr.show-for-medium-down,tr.show-for-large-down,tr.hide-for-medium,tr.hide-for-medium-up,tr.hide-for-large,tr.hide-for-large-up,tr.hide-for-xlarge{display:table-row !important}td.show-for-small,td.show-for-medium-down,td.show-for-large-down,td.hide-for-medium,td.hide-for-medium-up,td.hide-for-large,td.hide-for-large-up,td.hide-for-xlarge,th.show-for-small,th.show-for-medium-down,th.show-for-large-down,th.hide-for-medium,th.hide-for-medium-up,th.hide-for-large,th.hide-for-large-up,th.hide-for-xlarge{display:table-cell !important}@media only screen and (min-width: 48em){.show-for-medium,.show-for-medium-up{display:inherit !important}.show-for-small{display:none !important}.hide-for-small{display:inherit !important}.hide-for-medium,.hide-for-medium-up{display:none !important}table.show-for-medium,table.show-for-medium-up,table.hide-for-small{display:table}thead.show-for-medium,thead.show-for-medium-up,thead.hide-for-small{display:table-header-group !important}tbody.show-for-medium,tbody.show-for-medium-up,tbody.hide-for-small{display:table-row-group !important}tr.show-for-medium,tr.show-for-medium-up,tr.hide-for-small{display:table-row !important}td.show-for-medium,td.show-for-medium-up,td.hide-for-small,th.show-for-medium,th.show-for-medium-up,th.hide-for-small{display:table-cell !important}}@media only screen and (min-width: 80em){.show-for-large,.show-for-large-up{display:inherit !important}.show-for-medium,.show-for-medium-down{display:none !important}.hide-for-medium,.hide-for-medium-down{display:inherit !important}.hide-for-large,.hide-for-large-up{display:none !important}table.show-for-large,table.show-for-large-up,table.hide-for-medium,table.hide-for-medium-down{display:table}thead.show-for-large,thead.show-for-large-up,thead.hide-for-medium,thead.hide-for-medium-down{display:table-header-group !important}tbody.show-for-large,tbody.show-for-large-up,tbody.hide-for-medium,tbody.hide-for-medium-down{display:table-row-group !important}tr.show-for-large,tr.show-for-large-up,tr.hide-for-medium,tr.hide-for-medium-down{display:table-row !important}td.show-for-large,td.show-for-large-up,td.hide-for-medium,td.hide-for-medium-down,th.show-for-large,th.show-for-large-up,th.hide-for-medium,th.hide-for-medium-down{display:table-cell !important}}@media only screen and (min-width: 90em){.show-for-xlarge{display:inherit !important}.show-for-large,.show-for-large-down{display:none !important}.hide-for-large,.hide-for-large-down{display:inherit !important}.hide-for-xlarge{display:none !important}table.show-for-xlarge,table.hide-for-large,table.hide-for-large-down{display:table}thead.show-for-xlarge,thead.hide-for-large,thead.hide-for-large-down{display:table-header-group !important}tbody.show-for-xlarge,tbody.hide-for-large,tbody.hide-for-large-down{display:table-row-group !important}tr.show-for-xlarge,tr.hide-for-large,tr.hide-for-large-down{display:table-row !important}td.show-for-xlarge,td.hide-for-large,td.hide-for-large-down,th.show-for-xlarge,th.hide-for-large,th.hide-for-large-down{display:table-cell !important}}.show-for-landscape,.hide-for-portrait{display:inherit !important}.hide-for-landscape,.show-for-portrait{display:none !important}table.hide-for-landscape,table.show-for-portrait{display:table}thead.hide-for-landscape,thead.show-for-portrait{display:table-header-group !important}tbody.hide-for-landscape,tbody.show-for-portrait{display:table-row-group !important}tr.hide-for-landscape,tr.show-for-portrait{display:table-row !important}td.hide-for-landscape,td.show-for-portrait,th.hide-for-landscape,th.show-for-portrait{display:table-cell !important}@media only screen and (orientation: landscape){.show-for-landscape,.hide-for-portrait{display:inherit !important}.hide-for-landscape,.show-for-portrait{display:none !important}table.show-for-landscape,table.hide-for-portrait{display:table}thead.show-for-landscape,thead.hide-for-portrait{display:table-header-group !important}tbody.show-for-landscape,tbody.hide-for-portrait{display:table-row-group !important}tr.show-for-landscape,tr.hide-for-portrait{display:table-row !important}td.show-for-landscape,td.hide-for-portrait,th.show-for-landscape,th.hide-for-portrait{display:table-cell !important}}@media only screen and (orientation: portrait){.show-for-portrait,.hide-for-landscape{display:inherit !important}.hide-for-portrait,.show-for-landscape{display:none !important}table.show-for-portrait,table.hide-for-landscape{display:table}thead.show-for-portrait,thead.hide-for-landscape{display:table-header-group !important}tbody.show-for-portrait,tbody.hide-for-landscape{display:table-row-group !important}tr.show-for-portrait,tr.hide-for-landscape{display:table-row !important}td.show-for-portrait,td.hide-for-landscape,th.show-for-portrait,th.hide-for-landscape{display:table-cell !important}}.show-for-touch{display:none !important}.hide-for-touch{display:inherit !important}.touch .show-for-touch{display:inherit !important}.touch .hide-for-touch{display:none !important}table.hide-for-touch{display:table}.touch table.show-for-touch{display:table}thead.hide-for-touch{display:table-header-group !important}.touch thead.show-for-touch{display:table-header-group !important}tbody.hide-for-touch{display:table-row-group !important}.touch tbody.show-for-touch{display:table-row-group !important}tr.hide-for-touch{display:table-row !important}.touch tr.show-for-touch{display:table-row !important}td.hide-for-touch{display:table-cell !important}.touch td.show-for-touch{display:table-cell !important}th.hide-for-touch{display:table-cell !important}.touch th.show-for-touch{display:table-cell !important}@media only screen{[class*="block-grid-"]{display:block;padding:0;margin:0 -10px;*zoom:1}[class*="block-grid-"]:before,[class*="block-grid-"]:after{content:" ";display:table}[class*="block-grid-"]:after{clear:both}[class*="block-grid-"]>li{display:inline;height:auto;float:left;padding:0 10px 10px}.small-block-grid-1>li{width:100%;padding:0 10px 10px}.small-block-grid-1>li:nth-of-type(n){clear:none}.small-block-grid-1>li:nth-of-type(1n+1){clear:both}.small-block-grid-2>li{width:50%;padding:0 10px 10px}.small-block-grid-2>li:nth-of-type(n){clear:none}.small-block-grid-2>li:nth-of-type(2n+1){clear:both}.small-block-grid-3>li{width:33.33333%;padding:0 10px 10px}.small-block-grid-3>li:nth-of-type(n){clear:none}.small-block-grid-3>li:nth-of-type(3n+1){clear:both}.small-block-grid-4>li{width:25%;padding:0 10px 10px}.small-block-grid-4>li:nth-of-type(n){clear:none}.small-block-grid-4>li:nth-of-type(4n+1){clear:both}.small-block-grid-5>li{width:20%;padding:0 10px 10px}.small-block-grid-5>li:nth-of-type(n){clear:none}.small-block-grid-5>li:nth-of-type(5n+1){clear:both}.small-block-grid-6>li{width:16.66667%;padding:0 10px 10px}.small-block-grid-6>li:nth-of-type(n){clear:none}.small-block-grid-6>li:nth-of-type(6n+1){clear:both}.small-block-grid-7>li{width:14.28571%;padding:0 10px 10px}.small-block-grid-7>li:nth-of-type(n){clear:none}.small-block-grid-7>li:nth-of-type(7n+1){clear:both}.small-block-grid-8>li{width:12.5%;padding:0 10px 10px}.small-block-grid-8>li:nth-of-type(n){clear:none}.small-block-grid-8>li:nth-of-type(8n+1){clear:both}.small-block-grid-9>li{width:11.11111%;padding:0 10px 10px}.small-block-grid-9>li:nth-of-type(n){clear:none}.small-block-grid-9>li:nth-of-type(9n+1){clear:both}.small-block-grid-10>li{width:10%;padding:0 10px 10px}.small-block-grid-10>li:nth-of-type(n){clear:none}.small-block-grid-10>li:nth-of-type(10n+1){clear:both}.small-block-grid-11>li{width:9.09091%;padding:0 10px 10px}.small-block-grid-11>li:nth-of-type(n){clear:none}.small-block-grid-11>li:nth-of-type(11n+1){clear:both}.small-block-grid-12>li{width:8.33333%;padding:0 10px 10px}.small-block-grid-12>li:nth-of-type(n){clear:none}.small-block-grid-12>li:nth-of-type(12n+1){clear:both}}@media only screen and (min-width: 48em){.small-block-grid-1>li:nth-of-type(1n+1){clear:none}.small-block-grid-2>li:nth-of-type(2n+1){clear:none}.small-block-grid-3>li:nth-of-type(3n+1){clear:none}.small-block-grid-4>li:nth-of-type(4n+1){clear:none}.small-block-grid-5>li:nth-of-type(5n+1){clear:none}.small-block-grid-6>li:nth-of-type(6n+1){clear:none}.small-block-grid-7>li:nth-of-type(7n+1){clear:none}.small-block-grid-8>li:nth-of-type(8n+1){clear:none}.small-block-grid-9>li:nth-of-type(9n+1){clear:none}.small-block-grid-10>li:nth-of-type(10n+1){clear:none}.small-block-grid-11>li:nth-of-type(11n+1){clear:none}.small-block-grid-12>li:nth-of-type(12n+1){clear:none}.large-block-grid-1>li{width:100%;padding:0 10px 10px}.large-block-grid-1>li:nth-of-type(n){clear:none}.large-block-grid-1>li:nth-of-type(1n+1){clear:both}.large-block-grid-2>li{width:50%;padding:0 10px 10px}.large-block-grid-2>li:nth-of-type(n){clear:none}.large-block-grid-2>li:nth-of-type(2n+1){clear:both}.large-block-grid-3>li{width:33.33333%;padding:0 10px 10px}.large-block-grid-3>li:nth-of-type(n){clear:none}.large-block-grid-3>li:nth-of-type(3n+1){clear:both}.large-block-grid-4>li{width:25%;padding:0 10px 10px}.large-block-grid-4>li:nth-of-type(n){clear:none}.large-block-grid-4>li:nth-of-type(4n+1){clear:both}.large-block-grid-5>li{width:20%;padding:0 10px 10px}.large-block-grid-5>li:nth-of-type(n){clear:none}.large-block-grid-5>li:nth-of-type(5n+1){clear:both}.large-block-grid-6>li{width:16.66667%;padding:0 10px 10px}.large-block-grid-6>li:nth-of-type(n){clear:none}.large-block-grid-6>li:nth-of-type(6n+1){clear:both}.large-block-grid-7>li{width:14.28571%;padding:0 10px 10px}.large-block-grid-7>li:nth-of-type(n){clear:none}.large-block-grid-7>li:nth-of-type(7n+1){clear:both}.large-block-grid-8>li{width:12.5%;padding:0 10px 10px}.large-block-grid-8>li:nth-of-type(n){clear:none}.large-block-grid-8>li:nth-of-type(8n+1){clear:both}.large-block-grid-9>li{width:11.11111%;padding:0 10px 10px}.large-block-grid-9>li:nth-of-type(n){clear:none}.large-block-grid-9>li:nth-of-type(9n+1){clear:both}.large-block-grid-10>li{width:10%;padding:0 10px 10px}.large-block-grid-10>li:nth-of-type(n){clear:none}.large-block-grid-10>li:nth-of-type(10n+1){clear:both}.large-block-grid-11>li{width:9.09091%;padding:0 10px 10px}.large-block-grid-11>li:nth-of-type(n){clear:none}.large-block-grid-11>li:nth-of-type(11n+1){clear:both}.large-block-grid-12>li{width:8.33333%;padding:0 10px 10px}.large-block-grid-12>li:nth-of-type(n){clear:none}.large-block-grid-12>li:nth-of-type(12n+1){clear:both}}p.lead{font-size:1.21875em;line-height:1.6}.subheader{line-height:1.4;color:#6f6f6f;font-weight:300;margin-top:0.2em;margin-bottom:0.5em}div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}a{color:#2ba6cb;text-decoration:none;line-height:inherit}a:hover,a:focus{color:#2795b6}a img{border:none}p{font-family:inherit;font-weight:normal;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}p aside{font-size:0.875em;line-height:1.35;font-style:italic}h1,h2,h3,h4,h5,h6{font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;font-weight:bold;font-style:normal;color:#222;text-rendering:optimizeLegibility;margin-top:0.2em;margin-bottom:0.5em;line-height:1.2125em}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-size:60%;color:#6f6f6f;line-height:0}h1{font-size:2.125em}h2{font-size:1.6875em}h3{font-size:1.375em}h4{font-size:1.125em}h5{font-size:1.125em}h6{font-size:1em}hr{border:solid #ddd;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}em,i{font-style:italic;line-height:inherit}strong,b{font-weight:bold;line-height:inherit}small{font-size:60%;line-height:inherit}code{font-family:Consolas,"Liberation Mono",Courier,monospace;font-weight:bold;color:#7f0a0c}ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}ul.square{list-style-type:square}ul.circle{list-style-type:circle}ul.disc{list-style-type:disc}ul.no-bullet{list-style:none}ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}dl dt{margin-bottom:0.3em;font-weight:bold}dl dd{margin-bottom:0.75em}abbr,acronym{text-transform:uppercase;font-size:90%;color:#222;border-bottom:1px dotted #ddd;cursor:help}abbr{text-transform:none}blockquote{margin:0 0 1.25em;padding:0.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}blockquote cite{display:block;font-size:0.8125em;color:#555}blockquote cite:before{content:"\2014 \0020"}blockquote cite a,blockquote cite a:visited{color:#555}blockquote,blockquote p{line-height:1.6;color:#6f6f6f}.vcard{display:inline-block;margin:0 0 1.25em 0;border:1px solid #ddd;padding:0.625em 0.75em}.vcard li{margin:0;display:block}.vcard .fn{font-weight:bold;font-size:0.9375em}.vevent .summary{font-weight:bold}.vevent abbr{cursor:default;text-decoration:none;font-weight:bold;border:none;padding:0 0.0625em}@media only screen and (min-width: 48em){h1,h2,h3,h4,h5,h6{line-height:1.4}h1{font-size:2.75em}h2{font-size:2.3125em}h3{font-size:1.6875em}h4{font-size:1.4375em}}.print-only{display:none !important}@media print{*{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.hide-on-print{display:none !important}.print-only{display:block !important}.hide-for-print{display:none !important}.show-for-print{display:inherit !important}}button,.button{border-style:solid;border-width:1px;cursor:pointer;font-family:inherit;font-weight:bold;line-height:1;margin:0 0 1.25em;position:relative;text-decoration:none;text-align:center;display:inline-block;padding-top:0.75em;padding-right:1.5em;padding-bottom:0.8125em;padding-left:1.5em;font-size:1em;background-color:#2ba6cb;border-color:#2284a1;color:#fff}button:hover,button:focus,.button:hover,.button:focus{background-color:#2284a1}button:hover,button:focus,.button:hover,.button:focus{color:#fff}button.secondary,.button.secondary{background-color:#e9e9e9;border-color:#d0d0d0;color:#333}button.secondary:hover,button.secondary:focus,.button.secondary:hover,.button.secondary:focus{background-color:#d0d0d0}button.secondary:hover,button.secondary:focus,.button.secondary:hover,.button.secondary:focus{color:#333}button.success,.button.success{background-color:#5da423;border-color:#457a1a;color:#fff}button.success:hover,button.success:focus,.button.success:hover,.button.success:focus{background-color:#457a1a}button.success:hover,button.success:focus,.button.success:hover,.button.success:focus{color:#fff}button.alert,.button.alert{background-color:#c60f13;border-color:#970b0e;color:#fff}button.alert:hover,button.alert:focus,.button.alert:hover,.button.alert:focus{background-color:#970b0e}button.alert:hover,button.alert:focus,.button.alert:hover,.button.alert:focus{color:#fff}button.large,.button.large{padding-top:1em;padding-right:2em;padding-bottom:1.0625em;padding-left:2em;font-size:1.25em}button.small,.button.small{padding-top:0.5625em;padding-right:1.125em;padding-bottom:0.625em;padding-left:1.125em;font-size:0.8125em}button.tiny,.button.tiny{padding-top:0.4375em;padding-right:0.875em;padding-bottom:0.5em;padding-left:0.875em;font-size:0.6875em}button.expand,.button.expand{padding-right:0px;padding-left:0px;width:100%}button.left-align,.button.left-align{text-align:left;text-indent:0.75em}button.right-align,.button.right-align{text-align:right;padding-right:0.75em}button.disabled,button[disabled],.button.disabled,.button[disabled]{background-color:#2ba6cb;border-color:#2284a1;color:#fff;cursor:default;opacity:0.6;-webkit-box-shadow:none;box-shadow:none}button.disabled:hover,button.disabled:focus,button[disabled]:hover,button[disabled]:focus,.button.disabled:hover,.button.disabled:focus,.button[disabled]:hover,.button[disabled]:focus{background-color:#2284a1}button.disabled:hover,button.disabled:focus,button[disabled]:hover,button[disabled]:focus,.button.disabled:hover,.button.disabled:focus,.button[disabled]:hover,.button[disabled]:focus{color:#fff}button.disabled:hover,button.disabled:focus,button[disabled]:hover,button[disabled]:focus,.button.disabled:hover,.button.disabled:focus,.button[disabled]:hover,.button[disabled]:focus{background-color:#2ba6cb}button.disabled.secondary,button[disabled].secondary,.button.disabled.secondary,.button[disabled].secondary{background-color:#e9e9e9;border-color:#d0d0d0;color:#333;cursor:default;opacity:0.6;-webkit-box-shadow:none;box-shadow:none}button.disabled.secondary:hover,button.disabled.secondary:focus,button[disabled].secondary:hover,button[disabled].secondary:focus,.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary:hover,.button[disabled].secondary:focus{background-color:#d0d0d0}button.disabled.secondary:hover,button.disabled.secondary:focus,button[disabled].secondary:hover,button[disabled].secondary:focus,.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary:hover,.button[disabled].secondary:focus{color:#333}button.disabled.secondary:hover,button.disabled.secondary:focus,button[disabled].secondary:hover,button[disabled].secondary:focus,.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary:hover,.button[disabled].secondary:focus{background-color:#e9e9e9}button.disabled.success,button[disabled].success,.button.disabled.success,.button[disabled].success{background-color:#5da423;border-color:#457a1a;color:#fff;cursor:default;opacity:0.6;-webkit-box-shadow:none;box-shadow:none}button.disabled.success:hover,button.disabled.success:focus,button[disabled].success:hover,button[disabled].success:focus,.button.disabled.success:hover,.button.disabled.success:focus,.button[disabled].success:hover,.button[disabled].success:focus{background-color:#457a1a}button.disabled.success:hover,button.disabled.success:focus,button[disabled].success:hover,button[disabled].success:focus,.button.disabled.success:hover,.button.disabled.success:focus,.button[disabled].success:hover,.button[disabled].success:focus{color:#fff}button.disabled.success:hover,button.disabled.success:focus,button[disabled].success:hover,button[disabled].success:focus,.button.disabled.success:hover,.button.disabled.success:focus,.button[disabled].success:hover,.button[disabled].success:focus{background-color:#5da423}button.disabled.alert,button[disabled].alert,.button.disabled.alert,.button[disabled].alert{background-color:#c60f13;border-color:#970b0e;color:#fff;cursor:default;opacity:0.6;-webkit-box-shadow:none;box-shadow:none}button.disabled.alert:hover,button.disabled.alert:focus,button[disabled].alert:hover,button[disabled].alert:focus,.button.disabled.alert:hover,.button.disabled.alert:focus,.button[disabled].alert:hover,.button[disabled].alert:focus{background-color:#970b0e}button.disabled.alert:hover,button.disabled.alert:focus,button[disabled].alert:hover,button[disabled].alert:focus,.button.disabled.alert:hover,.button.disabled.alert:focus,.button[disabled].alert:hover,.button[disabled].alert:focus{color:#fff}button.disabled.alert:hover,button.disabled.alert:focus,button[disabled].alert:hover,button[disabled].alert:focus,.button.disabled.alert:hover,.button.disabled.alert:focus,.button[disabled].alert:hover,.button[disabled].alert:focus{background-color:#c60f13}button,.button{padding-top:0.8125em;padding-bottom:0.75em}button.tiny,.button.tiny{padding-top:0.5em;padding-bottom:0.4375em}button.small,.button.small{padding-top:0.625em;padding-bottom:0.5625em}button.large,.button.large{padding-top:1.03125em;padding-bottom:1.03125em}@media only screen{button,.button{-webkit-box-shadow:0 1px 0 rgba(255,255,255,0.5) inset;box-shadow:0 1px 0 rgba(255,255,255,0.5) inset;-webkit-transition:background-color 300ms ease-out;-moz-transition:background-color 300ms ease-out;transition:background-color 300ms ease-out}button:active,.button:active{-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.2) inset;box-shadow:0 1px 0 rgba(0,0,0,0.2) inset}button.radius,.button.radius{-webkit-border-radius:3px;border-radius:3px}button.round,.button.round{-webkit-border-radius:1000px;border-radius:1000px}}@media only screen and (min-width: 48em){button,.button{display:inline-block}}form{margin:0 0 1em}form .row .row{margin:0 -0.5em}form .row .row .column,form .row .row .columns{padding:0 0.5em}form .row .row.collapse{margin:0}form .row .row.collapse .column,form .row .row.collapse .columns{padding:0}form .row input.column,form .row input.columns,form .row textarea.column,form .row textarea.columns{padding-left:0.5em}label{font-size:0.875em;color:#4d4d4d;cursor:pointer;display:block;font-weight:500;margin-bottom:0.1875em}label.right{float:none;text-align:right}label.inline{margin:0 0 1em 0;padding:0.625em 0}.prefix,.postfix{display:block;position:relative;z-index:2;text-align:center;width:100%;padding-top:0;padding-bottom:0;border-style:solid;border-width:1px;overflow:hidden;font-size:0.875em;height:2.3125em;line-height:2.3125em}.postfix.button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;text-align:center;line-height:2.125em}.prefix.button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;text-align:center;line-height:2.125em}.prefix.button.radius{-webkit-border-radius:0;border-radius:0;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}.postfix.button.radius{-webkit-border-radius:0;border-radius:0;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px;-webkit-border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px}.prefix.button.round{-webkit-border-radius:0;border-radius:0;-moz-border-radius-bottomleft:1000px;-moz-border-radius-topleft:1000px;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}.postfix.button.round{-webkit-border-radius:0;border-radius:0;-moz-border-radius-topright:1000px;-moz-border-radius-bottomright:1000px;-webkit-border-top-right-radius:1000px;-webkit-border-bottom-right-radius:1000px;border-top-right-radius:1000px;border-bottom-right-radius:1000px}span.prefix{background:#f2f2f2;border-color:#d9d9d9;border-right:none;color:#333}span.prefix.radius{-webkit-border-radius:0;border-radius:0;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}span.postfix{background:#f2f2f2;border-color:#ccc;border-left:none;color:#333}span.postfix.radius{-webkit-border-radius:0;border-radius:0;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px;-webkit-border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px}.input-group.radius>*:first-child,.input-group.radius>*:first-child *{-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}.input-group.radius>*:last-child,.input-group.radius>*:last-child *{-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px;-webkit-border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px}.input-group.round>*:first-child,.input-group.round>*:first-child *{-moz-border-radius-bottomleft:1000px;-moz-border-radius-topleft:1000px;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}.input-group.round>*:last-child,.input-group.round>*:last-child *{-moz-border-radius-topright:1000px;-moz-border-radius-bottomright:1000px;-webkit-border-top-right-radius:1000px;-webkit-border-bottom-right-radius:1000px;border-top-right-radius:1000px;border-bottom-right-radius:1000px}input[type="text"],input[type="password"],input[type="date"],input[type="datetime"],input[type="datetime-local"],input[type="month"],input[type="week"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="time"],input[type="url"],textarea{background-color:#fff;font-family:inherit;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);color:rgba(0,0,0,0.75);display:block;font-size:0.875em;margin:0 0 1em 0;padding:0.5em;height:2.3125em;width:100%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:-webkit-box-shadow 0.45s,border-color 0.45s ease-in-out;-moz-transition:-moz-box-shadow 0.45s,border-color 0.45s ease-in-out;transition:box-shadow 0.45s,border-color 0.45s ease-in-out}input[type="text"]:focus,input[type="password"]:focus,input[type="date"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="month"]:focus,input[type="week"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="time"]:focus,input[type="url"]:focus,textarea:focus{-webkit-box-shadow:0 0 5px #999;-moz-box-shadow:0 0 5px #999;box-shadow:0 0 5px #999;border-color:#999}input[type="text"]:focus,input[type="password"]:focus,input[type="date"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="month"]:focus,input[type="week"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="time"]:focus,input[type="url"]:focus,textarea:focus{background:#fafafa;border-color:#999;outline:none}input[type="text"][disabled],input[type="password"][disabled],input[type="date"][disabled],input[type="datetime"][disabled],input[type="datetime-local"][disabled],input[type="month"][disabled],input[type="week"][disabled],input[type="email"][disabled],input[type="number"][disabled],input[type="search"][disabled],input[type="tel"][disabled],input[type="time"][disabled],input[type="url"][disabled],textarea[disabled]{background-color:#ddd}input[type="file"],input[type="checkbox"],input[type="radio"],select{margin:0 0 1em 0}input[type="file"]{width:100%}fieldset{border:solid 1px #ddd;padding:1.25em;margin:1.125em 0}fieldset legend{font-weight:bold;background:#fff;padding:0 0.1875em;margin:0;margin-left:-0.1875em}.error input,input.error,.error textarea,textarea.error{border-color:#c60f13;background-color:rgba(198,15,19,0.1)}.error input:focus,input.error:focus,.error textarea:focus,textarea.error:focus{background:#fafafa;border-color:#999}.error label,label.error{color:#c60f13}.error small,small.error{display:block;padding:0.375em 0.25em;margin-top:-1.3125em;margin-bottom:1em;font-size:0.75em;font-weight:bold;background:#c60f13;color:#fff}form.custom .hidden-field{margin-left:-99999px;position:absolute;visibility:hidden}form.custom .custom{display:inline-block;width:16px;height:16px;position:relative;vertical-align:middle;border:solid 1px #ccc;background:#fff}form.custom .custom.checkbox{-webkit-border-radius:0px;border-radius:0px;padding:-3px}form.custom .custom.radio{-webkit-border-radius:1000px;border-radius:1000px;padding:3px}form.custom .custom.checkbox:before{content:"";display:block;font-size:20px;color:#fff}form.custom .custom.radio.checked:before{content:"";display:block;width:8px;height:8px;-webkit-border-radius:1000px;border-radius:1000px;background:#222;position:relative}form.custom .custom.checkbox.checked:before{content:"\2A2F";color:#222;margin-top:-8px;margin-left:2px}form.custom .custom.dropdown{display:block;position:relative;top:0;height:2.3125em;margin-bottom:1.25em;margin-top:0px;padding:0px;width:100%;background:#fff;background:-moz-linear-gradient(top, #fff 0%, #f3f3f3 100%);background:-webkit-linear-gradient(top, #fff 0%, #f3f3f3 100%);background:linear-gradient(to bottom, #fff 0%, #f3f3f3 100%);-webkit-box-shadow:none;box-shadow:none;font-size:0.875em;vertical-align:top}form.custom .custom.dropdown ul{overflow-y:auto;max-height:200px}form.custom .custom.dropdown .current{cursor:default;white-space:nowrap;line-height:2.25em;color:rgba(0,0,0,0.75);text-decoration:none;overflow:hidden;display:block;margin-left:0.5em;margin-right:2.3125em}form.custom .custom.dropdown .selector{cursor:default;position:absolute;width:2.5em;height:2.3125em;display:block;right:0;top:0}form.custom .custom.dropdown .selector:after{content:"";display:block;content:"";display:block;width:0;height:0;border:inset 5px;border-color:#aaa transparent transparent transparent;border-top-style:solid;position:absolute;left:0.9375em;top:50%;margin-top:-3px}form.custom .custom.dropdown:hover a.selector:after,form.custom .custom.dropdown.open a.selector:after{content:"";display:block;width:0;height:0;border:inset 5px;border-color:#222 transparent transparent transparent;border-top-style:solid}form.custom .custom.dropdown .disabled{color:#888}form.custom .custom.dropdown .disabled:hover{background:transparent;color:#888}form.custom .custom.dropdown .disabled:hover:after{display:none}form.custom .custom.dropdown.open ul{display:block;z-index:10;min-width:100%;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}form.custom .custom.dropdown.small{max-width:134px}form.custom .custom.dropdown.medium{max-width:254px}form.custom .custom.dropdown.large{max-width:434px}form.custom .custom.dropdown.expand{width:100% !important}form.custom .custom.dropdown.open.small ul{min-width:134px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}form.custom .custom.dropdown.open.medium ul{min-width:254px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}form.custom .custom.dropdown.open.large ul{min-width:434px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}form.custom .custom.dropdown ul{position:absolute;width:auto;display:none;margin:0;left:-1px;top:auto;-webkit-box-shadow:0 2px 2px 0px rgba(0,0,0,0.1);box-shadow:0 2px 2px 0px rgba(0,0,0,0.1);margin:0;padding:0;background:#fff;border:solid 1px #ccc;font-size:16px}form.custom .custom.dropdown ul li{color:#555;font-size:0.875em;cursor:default;padding-top:0.25em;padding-bottom:0.25em;padding-left:0.375em;padding-right:2.375em;min-height:1.5em;line-height:1.5em;margin:0;white-space:nowrap;list-style:none}form.custom .custom.dropdown ul li.selected{background:#eee;color:#000}form.custom .custom.dropdown ul li:hover{background-color:#e4e4e4;color:#000}form.custom .custom.dropdown ul li.selected:hover{background:#eee;cursor:default;color:#000}form.custom .custom.dropdown ul.show{display:block}form.custom .custom.disabled{background:#ddd}.button-group{list-style:none;margin:0;*zoom:1}.button-group:before,.button-group:after{content:" ";display:table}.button-group:after{clear:both}.button-group>*{margin:0 0 0 -1px;float:left}.button-group>*:first-child{margin-left:0}.button-group.radius>*:first-child,.button-group.radius>*:first-child>a,.button-group.radius>*:first-child>button,.button-group.radius>*:first-child>.button{-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}.button-group.radius>*:last-child,.button-group.radius>*:last-child>a,.button-group.radius>*:last-child>button,.button-group.radius>*:last-child>.button{-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px;-webkit-border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px}.button-group.round>*:first-child,.button-group.round>*:first-child>a,.button-group.round>*:first-child>button,.button-group.round>*:first-child>.button{-moz-border-radius-bottomleft:1000px;-moz-border-radius-topleft:1000px;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}.button-group.round>*:last-child,.button-group.round>*:last-child>a,.button-group.round>*:last-child>button,.button-group.round>*:last-child>.button{-moz-border-radius-topright:1000px;-moz-border-radius-bottomright:1000px;-webkit-border-top-right-radius:1000px;-webkit-border-bottom-right-radius:1000px;border-top-right-radius:1000px;border-bottom-right-radius:1000px}.button-group.even-2 li{width:50%}.button-group.even-2 li button,.button-group.even-2 li .button{width:100%}.button-group.even-3 li{width:33.33333%}.button-group.even-3 li button,.button-group.even-3 li .button{width:100%}.button-group.even-4 li{width:25%}.button-group.even-4 li button,.button-group.even-4 li .button{width:100%}.button-group.even-5 li{width:20%}.button-group.even-5 li button,.button-group.even-5 li .button{width:100%}.button-group.even-6 li{width:16.66667%}.button-group.even-6 li button,.button-group.even-6 li .button{width:100%}.button-group.even-7 li{width:14.28571%}.button-group.even-7 li button,.button-group.even-7 li .button{width:100%}.button-group.even-8 li{width:12.5%}.button-group.even-8 li button,.button-group.even-8 li .button{width:100%}.button-bar{*zoom:1}.button-bar:before,.button-bar:after{content:" ";display:table}.button-bar:after{clear:both}.button-bar .button-group{float:left;margin-right:0.625em}.button-bar .button-group div{overflow:hidden}.dropdown.button{position:relative;padding-right:3.1875em}.dropdown.button:before{position:absolute;content:"";width:0;height:0;display:block;border-style:solid;border-color:#fff transparent transparent transparent;top:50%}.dropdown.button:before{border-width:0.5625em;right:1.5em;margin-top:-0.25em}.dropdown.button:before{border-color:#fff transparent transparent transparent}.dropdown.button.tiny{padding-right:2.1875em}.dropdown.button.tiny:before{border-width:0.4375em;right:0.875em;margin-top:-0.15625em}.dropdown.button.tiny:before{border-color:#fff transparent transparent transparent}.dropdown.button.small{padding-right:2.8125em}.dropdown.button.small:before{border-width:0.5625em;right:1.125em;margin-top:-0.21875em}.dropdown.button.small:before{border-color:#fff transparent transparent transparent}.dropdown.button.large{padding-right:4em}.dropdown.button.large:before{border-width:0.625em;right:1.75em;margin-top:-0.3125em}.dropdown.button.large:before{border-color:#fff transparent transparent transparent}.dropdown.button.secondary:before{border-color:#333 transparent transparent transparent}.split.button{position:relative;padding-right:4.8em}.split.button span{display:block;height:100%;position:absolute;right:0;top:0;border-left:solid 1px}.split.button span:before{position:absolute;content:"";width:0;height:0;display:block;border-style:inset;left:50%}.split.button span:active{background-color:rgba(0,0,0,0.1)}.split.button span{border-left-color:#1e728c}.split.button span{width:3em}.split.button span:before{border-top-style:solid;border-width:0.5625em;top:1.125em;margin-left:-0.5625em}.split.button span:before{border-color:#fff transparent transparent transparent}.split.button.secondary span{border-left-color:#c3c3c3}.split.button.secondary span:before{border-color:#fff transparent transparent transparent}.split.button.alert span{border-left-color:#7f0a0c}.split.button.success span{border-left-color:#396516}.split.button.tiny{padding-right:3.9375em}.split.button.tiny span{width:2.84375em}.split.button.tiny span:before{border-top-style:solid;border-width:0.4375em;top:0.875em;margin-left:-0.3125em}.split.button.small{padding-right:3.9375em}.split.button.small span{width:2.8125em}.split.button.small span:before{border-top-style:solid;border-width:0.5625em;top:0.84375em;margin-left:-0.5625em}.split.button.large{padding-right:6em}.split.button.large span{width:3.75em}.split.button.large span:before{border-top-style:solid;border-width:0.625em;top:1.3125em;margin-left:-0.5625em}.split.button.expand{padding-left:2em}.split.button.secondary span:before{border-color:#333 transparent transparent transparent}.split.button.radius span{-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px;-webkit-border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px}.split.button.round span{-moz-border-radius-topright:1000px;-moz-border-radius-bottomright:1000px;-webkit-border-top-right-radius:1000px;-webkit-border-bottom-right-radius:1000px;border-top-right-radius:1000px;border-bottom-right-radius:1000px}.flex-video{position:relative;padding-top:1.5625em;padding-bottom:67.5%;height:0;margin-bottom:1em;overflow:hidden}.flex-video.widescreen{padding-bottom:57.25%}.flex-video.vimeo{padding-top:0}.flex-video iframe,.flex-video object,.flex-video embed,.flex-video video{position:absolute;top:0;left:0;width:100%;height:100%}.section-container,.section-container.auto{width:100%;display:block;margin-bottom:1.25em;border:1px solid #ccc;border-top:none}.section-container>section,.section-container>.section,.section-container.auto>section,.section-container.auto>.section{position:relative}.section-container>section>.title,.section-container>.section>.title,.section-container.auto>section>.title,.section-container.auto>.section>.title{background-color:#efefef;cursor:pointer;margin-bottom:0}.section-container>section>.title a,.section-container>.section>.title a,.section-container.auto>section>.title a,.section-container.auto>.section>.title a{padding:0.9375em;display:inline-block;color:#333;font-size:0.875em;white-space:nowrap}.section-container>section>.title:hover,.section-container>.section>.title:hover,.section-container.auto>section>.title:hover,.section-container.auto>.section>.title:hover{background-color:#e2e2e2}.section-container>section .content,.section-container>.section .content,.section-container.auto>section .content,.section-container.auto>.section .content{display:none;padding:0.9375em;background-color:#fff}.section-container>section .content>*:last-child,.section-container>.section .content>*:last-child,.section-container.auto>section .content>*:last-child,.section-container.auto>.section .content>*:last-child{margin-bottom:0}.section-container>section .content>*:first-child,.section-container>.section .content>*:first-child,.section-container.auto>section .content>*:first-child,.section-container.auto>.section .content>*:first-child{padding-top:0}.section-container>section .content>*:last-child,.section-container>.section .content>*:last-child,.section-container.auto>section .content>*:last-child,.section-container.auto>.section .content>*:last-child{padding-bottom:0}.section-container>section.active>.content,.section-container>.section.active>.content,.section-container.auto>section.active>.content,.section-container.auto>.section.active>.content{display:block}.section-container>section.active>.title,.section-container>.section.active>.title,.section-container.auto>section.active>.title,.section-container.auto>.section.active>.title{background:#d5d5d5}.section-container>section.active>.title a,.section-container>.section.active>.title a,.section-container.auto>section.active>.title a,.section-container.auto>.section.active>.title a{color:#333}.section-container>section>.title,.section-container>.section>.title,.section-container.auto>section>.title,.section-container.auto>.section>.title{top:0;width:100%;margin:0;border-top:solid 1px #ccc}.section-container>section>.title a,.section-container>.section>.title a,.section-container.auto>section>.title a,.section-container.auto>.section>.title a{width:100%}.section-container.tabs{border:0;position:relative}.section-container.tabs>section,.section-container.tabs>.section{border:0;position:static}.section-container.tabs>section>.title,.section-container.tabs>.section>.title{background-color:#efefef;cursor:pointer;margin-bottom:0}.section-container.tabs>section>.title a,.section-container.tabs>.section>.title a{padding:0.9375em;display:inline-block;color:#333;font-size:0.875em;white-space:nowrap}.section-container.tabs>section>.title:hover,.section-container.tabs>.section>.title:hover{background-color:#e2e2e2}.section-container.tabs>section .content,.section-container.tabs>.section .content{display:none;padding:0.9375em;background-color:#fff}.section-container.tabs>section .content>*:last-child,.section-container.tabs>.section .content>*:last-child{margin-bottom:0}.section-container.tabs>section .content>*:first-child,.section-container.tabs>.section .content>*:first-child{padding-top:0}.section-container.tabs>section .content>*:last-child,.section-container.tabs>.section .content>*:last-child{padding-bottom:0}.section-container.tabs>section.active>.content,.section-container.tabs>.section.active>.content{display:block}.section-container.tabs>section.active>.title,.section-container.tabs>.section.active>.title{background:#fff}.section-container.tabs>section.active>.title a,.section-container.tabs>.section.active>.title a{color:#333}.section-container.tabs>section>.title,.section-container.tabs>.section>.title{width:auto;border:solid 1px #ccc;border-right:0;border-bottom:0;position:absolute;top:0;z-index:1}.section-container.tabs>section>.title a,.section-container.tabs>.section>.title a{width:100%}.section-container.tabs>section:last-child .title,.section-container.tabs>.section:last-child .title{border-right:solid 1px #ccc}.section-container.tabs>section .content,.section-container.tabs>.section .content{border:solid 1px #ccc;position:absolute;z-index:10;display:none;top:-1px}.section-container.tabs>section.active>.title,.section-container.tabs>.section.active>.title{z-index:11;border-bottom:0;background-color:#fff}.section-container.tabs>section.active>.content,.section-container.tabs>.section.active>.content{position:relative}@media only screen and (min-width: 48em){.section-container.auto{border:0;position:relative}.section-container.auto>section,.section-container.auto>.section{border:0;position:static}.section-container.auto>section>.title,.section-container.auto>.section>.title{background-color:#efefef;cursor:pointer;margin-bottom:0}.section-container.auto>section>.title a,.section-container.auto>.section>.title a{padding:0.9375em;display:inline-block;color:#333;font-size:0.875em;white-space:nowrap}.section-container.auto>section>.title:hover,.section-container.auto>.section>.title:hover{background-color:#e2e2e2}.section-container.auto>section .content,.section-container.auto>.section .content{display:none;padding:0.9375em;background-color:#fff}.section-container.auto>section .content>*:last-child,.section-container.auto>.section .content>*:last-child{margin-bottom:0}.section-container.auto>section .content>*:first-child,.section-container.auto>.section .content>*:first-child{padding-top:0}.section-container.auto>section .content>*:last-child,.section-container.auto>.section .content>*:last-child{padding-bottom:0}.section-container.auto>section.active>.content,.section-container.auto>.section.active>.content{display:block}.section-container.auto>section.active>.title,.section-container.auto>.section.active>.title{background:#fff}.section-container.auto>section.active>.title a,.section-container.auto>.section.active>.title a{color:#333}.section-container.auto>section>.title,.section-container.auto>.section>.title{width:auto;border:solid 1px #ccc;border-right:0;border-bottom:0;position:absolute;top:0;z-index:1}.section-container.auto>section>.title a,.section-container.auto>.section>.title a{width:100%}.section-container.auto>section:last-child .title,.section-container.auto>.section:last-child .title{border-right:solid 1px #ccc}.section-container.auto>section .content,.section-container.auto>.section .content{border:solid 1px #ccc;position:absolute;z-index:10;display:none;top:-1px}.section-container.auto>section.active>.title,.section-container.auto>.section.active>.title{z-index:11;border-bottom:0;background-color:#fff}.section-container.auto>section.active>.content,.section-container.auto>.section.active>.content{position:relative}.section-container.accordion .section{padding-top:0 !important}.section-container.vertical-tabs{border:1px solid #ccc;position:relative}.section-container.vertical-tabs section,.section-container.vertical-tabs .section{padding-top:0 !important;border:0;position:static}.section-container.vertical-tabs section>.title,.section-container.vertical-tabs .section>.title{background-color:#efefef;cursor:pointer;margin-bottom:0}.section-container.vertical-tabs section>.title a,.section-container.vertical-tabs .section>.title a{padding:0.9375em;display:inline-block;color:#333;font-size:0.875em;white-space:nowrap}.section-container.vertical-tabs section>.title:hover,.section-container.vertical-tabs .section>.title:hover{background-color:#e2e2e2}.section-container.vertical-tabs section .content,.section-container.vertical-tabs .section .content{display:none;padding:0.9375em;background-color:#fff}.section-container.vertical-tabs section .content>*:last-child,.section-container.vertical-tabs .section .content>*:last-child{margin-bottom:0}.section-container.vertical-tabs section .content>*:first-child,.section-container.vertical-tabs .section .content>*:first-child{padding-top:0}.section-container.vertical-tabs section .content>*:last-child,.section-container.vertical-tabs .section .content>*:last-child{padding-bottom:0}.section-container.vertical-tabs section.active>.content,.section-container.vertical-tabs .section.active>.content{display:block}.section-container.vertical-tabs section.active>.title,.section-container.vertical-tabs .section.active>.title{background:#d5d5d5}.section-container.vertical-tabs section.active>.title a,.section-container.vertical-tabs .section.active>.title a{color:#333}.section-container.vertical-tabs section>.title,.section-container.vertical-tabs .section>.title{position:absolute;border-top:solid 1px #ccc;width:12.5em}.section-container.vertical-tabs section:first-child .title,.section-container.vertical-tabs .section:first-child .title{border-top:0}.section-container.vertical-tabs section .content,.section-container.vertical-tabs .section .content{display:block;position:relative;left:12.5em;border-left:solid 1px #ccc;z-index:10}.section-container.vertical-tabs section.active>.title,.section-container.vertical-tabs .section.active>.title{background-color:#d5d5d5;width:12.5625em;border-right:solid 0 transparent;z-index:11}.section-container.vertical-tabs section.active:last-child .title,.section-container.vertical-tabs .section.active:last-child .title{border-bottom:0}.section-container.vertical-nav{border:0;position:relative}.section-container.vertical-nav>section,.section-container.vertical-nav>.section{padding-top:0 !important;position:relative}.section-container.vertical-nav>section>.title,.section-container.vertical-nav>.section>.title{background-color:#efefef;cursor:pointer;margin-bottom:0}.section-container.vertical-nav>section>.title a,.section-container.vertical-nav>.section>.title a{padding:0.9375em;display:inline-block;color:#333;font-size:0.875em;white-space:nowrap}.section-container.vertical-nav>section>.title:hover,.section-container.vertical-nav>.section>.title:hover{background-color:#e2e2e2}.section-container.vertical-nav>section .content,.section-container.vertical-nav>.section .content{display:none;padding:0.9375em;background-color:#fff}.section-container.vertical-nav>section .content>*:last-child,.section-container.vertical-nav>.section .content>*:last-child{margin-bottom:0}.section-container.vertical-nav>section .content>*:first-child,.section-container.vertical-nav>.section .content>*:first-child{padding-top:0}.section-container.vertical-nav>section .content>*:last-child,.section-container.vertical-nav>.section .content>*:last-child{padding-bottom:0}.section-container.vertical-nav>section.active>.content,.section-container.vertical-nav>.section.active>.content{display:block}.section-container.vertical-nav>section.active>.title,.section-container.vertical-nav>.section.active>.title{background:#d5d5d5}.section-container.vertical-nav>section.active>.title a,.section-container.vertical-nav>.section.active>.title a{color:#333}.section-container.vertical-nav>section>.title,.section-container.vertical-nav>.section>.title{border-top:none;border:solid 1px #ccc}.section-container.vertical-nav>section>.title a,.section-container.vertical-nav>.section>.title a{display:block;width:100%}.section-container.vertical-nav>section .content,.section-container.vertical-nav>.section .content{display:none}.section-container.vertical-nav>section:first-child .title,.section-container.vertical-nav>.section:first-child .title{border-bottom:none}.section-container.vertical-nav>section.active>.content,.section-container.vertical-nav>.section.active>.content{display:block;position:absolute;left:100%;top:0px;z-index:999;min-width:12.5em;border:solid 1px #ccc}.section-container.horizontal-nav{position:relative;background:#efefef;border:1px solid #ccc}.section-container.horizontal-nav>section,.section-container.horizontal-nav>.section{padding-top:0;border:0;position:static}.section-container.horizontal-nav>section>.title,.section-container.horizontal-nav>.section>.title{background-color:#efefef;cursor:pointer;margin-bottom:0}.section-container.horizontal-nav>section>.title a,.section-container.horizontal-nav>.section>.title a{padding:0.9375em;display:inline-block;color:#333;font-size:0.875em;white-space:nowrap}.section-container.horizontal-nav>section>.title:hover,.section-container.horizontal-nav>.section>.title:hover{background-color:#e2e2e2}.section-container.horizontal-nav>section .content,.section-container.horizontal-nav>.section .content{display:none;padding:0.9375em;background-color:#fff}.section-container.horizontal-nav>section .content>*:last-child,.section-container.horizontal-nav>.section .content>*:last-child{margin-bottom:0}.section-container.horizontal-nav>section .content>*:first-child,.section-container.horizontal-nav>.section .content>*:first-child{padding-top:0}.section-container.horizontal-nav>section .content>*:last-child,.section-container.horizontal-nav>.section .content>*:last-child{padding-bottom:0}.section-container.horizontal-nav>section.active>.content,.section-container.horizontal-nav>.section.active>.content{display:block}.section-container.horizontal-nav>section.active>.title,.section-container.horizontal-nav>.section.active>.title{background:#d5d5d5}.section-container.horizontal-nav>section.active>.title a,.section-container.horizontal-nav>.section.active>.title a{color:#333}.section-container.horizontal-nav>section>.title,.section-container.horizontal-nav>.section>.title{width:auto;border:solid 1px #ccc;border-left:0;top:-1px;position:absolute;z-index:1}.section-container.horizontal-nav>section>.title a,.section-container.horizontal-nav>.section>.title a{width:100%}.section-container.horizontal-nav>section .content,.section-container.horizontal-nav>.section .content{display:none}.section-container.horizontal-nav>section.active>.content,.section-container.horizontal-nav>.section.active>.content{display:block;position:absolute;z-index:999;left:0;top:-2px;min-width:12.5em;border:solid 1px #ccc}}.contain-to-grid{width:100%;background:#111}.fixed{width:100%;left:0;position:fixed;top:0;z-index:99}.top-bar{overflow:hidden;height:45px;line-height:45px;position:relative;background:#111;margin-bottom:1.875em}.top-bar ul{margin-bottom:0;list-style:none}.top-bar .row{max-width:none}.top-bar form,.top-bar input{margin-bottom:0}.top-bar input{height:2.45em}.top-bar .button{padding-top:.5em;padding-bottom:.5em;margin-bottom:0}.top-bar .title-area{position:relative}.top-bar .name{height:45px;margin:0;font-size:16px}.top-bar .name h1{line-height:45px;font-size:1.0625em;margin:0}.top-bar .name h1 a{font-weight:bold;color:#fff;width:50%;display:block;padding:0 15px}.top-bar .toggle-topbar{position:absolute;right:0;top:0}.top-bar .toggle-topbar a{color:#fff;text-transform:uppercase;font-size:0.8125em;font-weight:bold;position:relative;display:block;padding:0 15px;height:45px;line-height:45px}.top-bar .toggle-topbar.menu-icon{right:15px;top:50%;margin-top:-16px;padding-left:40px}.top-bar .toggle-topbar.menu-icon a{text-indent:-48px;width:34px;height:34px;line-height:33px;padding:0;color:#fff}.top-bar .toggle-topbar.menu-icon a span{position:absolute;right:0;display:block;width:16px;height:0;-webkit-box-shadow:0 10px 0 1px #fff,0 16px 0 1px #fff,0 22px 0 1px #fff;box-shadow:0 10px 0 1px #fff,0 16px 0 1px #fff,0 22px 0 1px #fff}.top-bar.expanded{height:auto;background:transparent}.top-bar.expanded .title-area{background:#111}.top-bar.expanded .toggle-topbar a{color:#888}.top-bar.expanded .toggle-topbar a span{-webkit-box-shadow:0 10px 0 1px #888,0 16px 0 1px #888,0 22px 0 1px #888;box-shadow:0 10px 0 1px #888,0 16px 0 1px #888,0 22px 0 1px #888}.top-bar-section{left:0;position:relative;width:auto;-webkit-transition:left 300ms ease-out;-moz-transition:left 300ms ease-out;transition:left 300ms ease-out}.top-bar-section ul{width:100%;height:auto;display:block;background:#333;font-size:16px;margin:0}.top-bar-section .divider,.top-bar-section [role="separator"]{border-bottom:solid 1px #4d4d4d;border-top:solid 1px #1a1a1a;clear:both;height:1px;width:100%}.top-bar-section ul li>a{display:block;width:100%;color:#fff;padding:12px 0 12px 0;padding-left:15px;font-size:0.8125em;font-weight:bold;background:#333}.top-bar-section ul li>a:hover{background:#2b2b2b}.top-bar-section ul li>a.button{background:#2ba6cb;font-size:0.8125em}.top-bar-section ul li>a.button:hover{background:#2284a1}.top-bar-section ul li>a.button.secondary{background:#e9e9e9}.top-bar-section ul li>a.button.secondary:hover{background:#d0d0d0}.top-bar-section ul li>a.button.success{background:#5da423}.top-bar-section ul li>a.button.success:hover{background:#457a1a}.top-bar-section ul li>a.button.alert{background:#c60f13}.top-bar-section ul li>a.button.alert:hover{background:#970b0e}.top-bar-section ul li.active>a{background:#2b2b2b}.top-bar-section .has-form{padding:15px}.top-bar-section .has-dropdown{position:relative}.top-bar-section .has-dropdown>a:after{content:"";display:block;width:0;height:0;border:inset 5px;border-color:transparent transparent transparent rgba(255,255,255,0.5);border-left-style:solid;margin-right:15px;margin-top:-4.5px;position:absolute;top:22px;right:0}.top-bar-section .has-dropdown.moved{position:static}.top-bar-section .has-dropdown.moved>.dropdown{visibility:visible}.top-bar-section .dropdown{position:absolute;left:100%;top:0;visibility:hidden;z-index:99}.top-bar-section .dropdown li{width:100%}.top-bar-section .dropdown li a{font-weight:normal;padding:8px 15px}.top-bar-section .dropdown li.title h5{margin-bottom:0}.top-bar-section .dropdown li.title h5 a{color:#fff;line-height:22.5px;display:block}.top-bar-section .dropdown label{padding:8px 15px 2px;margin-bottom:0;text-transform:uppercase;color:#555;font-weight:bold;font-size:0.625em}.top-bar-js-breakpoint{width:58.75em !important;visibility:hidden}.js-generated{display:block}@media only screen and (min-width: 58.75em){.top-bar{background:#111;*zoom:1;overflow:visible}.top-bar:before,.top-bar:after{content:" ";display:table}.top-bar:after{clear:both}.top-bar .toggle-topbar{display:none}.top-bar .title-area{float:left}.top-bar .name h1 a{width:auto}.top-bar input,.top-bar .button{line-height:2em;font-size:0.875em;height:2em;padding:0 10px;position:relative;top:8px}.top-bar.expanded{background:#111}.contain-to-grid .top-bar{max-width:62.5em;margin:0 auto;margin-bottom:1.875em}.top-bar-section{-webkit-transition:none 0 0;-moz-transition:none 0 0;transition:none 0 0;left:0 !important}.top-bar-section ul{width:auto;height:auto !important;display:inline}.top-bar-section ul li{float:left}.top-bar-section ul li .js-generated{display:none}.top-bar-section li a:not(.button){padding:0 15px;line-height:45px;background:#111}.top-bar-section li a:not(.button):hover{background:#000}.top-bar-section .has-dropdown>a{padding-right:35px !important}.top-bar-section .has-dropdown>a:after{content:"";display:block;width:0;height:0;border:inset 5px;border-color:rgba(255,255,255,0.5) transparent transparent transparent;border-top-style:solid;margin-top:-2.5px;top:22.5px}.top-bar-section .has-dropdown.moved{position:relative}.top-bar-section .has-dropdown.moved>.dropdown{visibility:hidden}.top-bar-section .has-dropdown:hover>.dropdown,.top-bar-section .has-dropdown:active>.dropdown{visibility:visible}.top-bar-section .has-dropdown .dropdown li.has-dropdown>a:after{border:none;content:"\00bb";margin-top:-15px;right:5px}.top-bar-section .dropdown{left:0;top:auto;background:transparent;min-width:100%}.top-bar-section .dropdown li a{color:#fff;line-height:1;white-space:nowrap;padding:7px 15px;background:#1e1e1e}.top-bar-section .dropdown li label{white-space:nowrap;background:#1e1e1e}.top-bar-section .dropdown li .dropdown{left:100%;top:0}.top-bar-section>ul>.divider,.top-bar-section>ul>[role="separator"]{border-bottom:none;border-top:none;border-right:solid 1px #2b2b2b;border-left:solid 1px #000;clear:none;height:45px;width:0px}.top-bar-section .has-form{background:#111;padding:0 15px;height:45px}.top-bar-section ul.right li .dropdown{left:auto;right:0}.top-bar-section ul.right li .dropdown li .dropdown{right:100%}}.orbit-container{overflow:hidden;width:100%;position:relative;background:#f5f5f5}.orbit-container .orbit-slides-container{list-style:none;margin:0;padding:0;position:relative}.orbit-container .orbit-slides-container img{display:block}.orbit-container .orbit-slides-container>*{position:relative;float:left;height:100%}.orbit-container .orbit-slides-container>* .orbit-caption{position:absolute;bottom:0;background-color:#000;background-color:rgba(0,0,0,0.6);color:#fff;width:100%;padding:10px 14px;font-size:0.875em}.orbit-container .orbit-slides-container>* .orbit-caption *{color:#fff}.orbit-container .orbit-slide-number{position:absolute;top:10px;left:10px;font-size:12px;color:#fff;background:rgba(0,0,0,0)}.orbit-container .orbit-slide-number span{font-weight:700;padding:0.3125em}.orbit-container .orbit-timer{position:absolute;top:10px;right:10px;height:6px;width:100px}.orbit-container .orbit-timer .orbit-progress{height:100%;background-color:#000;background-color:rgba(0,0,0,0.6);display:block;width:0%}.orbit-container .orbit-timer>span{display:none;position:absolute;top:10px;right:0px;width:11px;height:14px;border:solid 4px #000;border-top:none;border-bottom:none}.orbit-container .orbit-timer.paused>span{right:-6px;top:9px;width:11px;height:14px;border:inset 8px;border-right-style:solid;border-color:transparent transparent transparent #000}.orbit-container:hover .orbit-timer>span{display:block}.orbit-container .orbit-prev,.orbit-container .orbit-next{position:absolute;top:50%;margin-top:-25px;background-color:#000;background-color:rgba(0,0,0,0.6);width:50px;height:60px;line-height:50px;color:white;text-indent:-9999px !important}.orbit-container .orbit-prev>span,.orbit-container .orbit-next>span{position:absolute;top:50%;margin-top:-16px;display:block;width:0;height:0;border:inset 16px}.orbit-container .orbit-prev{left:0}.orbit-container .orbit-prev>span{border-right-style:solid;border-color:transparent;border-right-color:#fff}.orbit-container .orbit-prev:hover>span{border-right-color:#ccc}.orbit-container .orbit-next{right:0}.orbit-container .orbit-next>span{border-color:transparent;border-left-style:solid;border-left-color:#fff;left:50%;margin-left:-8px}.orbit-container .orbit-next:hover>span{border-left-color:#ccc}.orbit-bullets{margin:0 auto 30px auto;overflow:hidden;position:relative;top:10px}.orbit-bullets li{display:block;width:18px;height:18px;background:#999;float:left;margin-right:6px;border:solid 2px #222;-webkit-border-radius:1000px;border-radius:1000px}.orbit-bullets li.active{background:#222}.orbit-bullets li:last-child{margin-right:0}.touch .orbit-container .orbit-prev,.touch .orbit-container .orbit-next{display:none}.touch .orbit-bullets{display:none}@media only screen and (min-width: 48em){.touch .orbit-container .orbit-prev,.touch .orbit-container .orbit-next{display:inherit}.touch .orbit-bullets{display:block}}.reveal-modal-bg{position:fixed;height:100%;width:100%;background:#000;background:rgba(0,0,0,0.45);z-index:98;display:none;top:0;left:0}.reveal-modal{visibility:hidden;display:none;position:absolute;left:50%;z-index:99;height:auto;background-color:#fff;margin-left:-40%;width:80%;background-color:#fff;padding:1.25em;border:solid 1px #666;-webkit-box-shadow:0 0 10px rgba(0,0,0,0.4);box-shadow:0 0 10px rgba(0,0,0,0.4);top:50px}.reveal-modal .column,.reveal-modal .columns{min-width:0}.reveal-modal>:first-child{margin-top:0}.reveal-modal>:last-child{margin-bottom:0}.reveal-modal .close-reveal-modal{font-size:1.375em;line-height:1;position:absolute;top:0.5em;right:0.6875em;color:#aaa;font-weight:bold;cursor:pointer}@media only screen and (min-width: 48em){.reveal-modal{padding:1.875em;top:6.25em}.reveal-modal.tiny{margin-left:-15%;width:30%}.reveal-modal.small{margin-left:-20%;width:40%}.reveal-modal.medium{margin-left:-30%;width:60%}.reveal-modal.large{margin-left:-35%;width:70%}.reveal-modal.xlarge{margin-left:-47.5%;width:95%}}@media print{.reveal-modal{background:#fff !important}}.joyride-list{display:none}.joyride-tip-guide{display:none;position:absolute;background:#000;color:#fff;z-index:101;top:0;left:2.5%;font-family:inherit;font-weight:normal;width:95%}.lt-ie9 .joyride-tip-guide{max-width:800px;left:50%;margin-left:-400px}.joyride-content-wrapper{width:100%;padding:1.125em 1.25em 1.5em}.joyride-content-wrapper .button{margin-bottom:0 !important}.joyride-tip-guide .joyride-nub{display:block;position:absolute;left:22px;width:0;height:0;border:inset 14px}.joyride-tip-guide .joyride-nub.top{border-top-style:solid;border-color:#000;border-top-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;top:-28px}.joyride-tip-guide .joyride-nub.bottom{border-bottom-style:solid;border-color:#000 !important;border-bottom-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;bottom:-28px}.joyride-tip-guide .joyride-nub.right{right:-28px}.joyride-tip-guide .joyride-nub.left{left:-28px}.joyride-tip-guide h1,.joyride-tip-guide h2,.joyride-tip-guide h3,.joyride-tip-guide h4,.joyride-tip-guide h5,.joyride-tip-guide h6{line-height:1.25;margin:0;font-weight:bold;color:#fff}.joyride-tip-guide p{margin:0 0 1.125em 0;font-size:0.875em;line-height:1.3}.joyride-timer-indicator-wrap{width:50px;height:3px;border:solid 1px #555;position:absolute;right:1.0625em;bottom:1em}.joyride-timer-indicator{display:block;width:0;height:inherit;background:#666}.joyride-close-tip{position:absolute;right:12px;top:10px;color:#777 !important;text-decoration:none;font-size:30px;font-weight:normal;line-height:0.5 !important}.joyride-close-tip:hover,.joyride-close-tip:focus{color:#eee !important}.joyride-modal-bg{position:fixed;height:100%;width:100%;background:transparent;background:rgba(0,0,0,0.5);z-index:100;display:none;top:0;left:0;cursor:pointer}.joyride-expose-wrapper{background-color:#ffffff;position:absolute;border-radius:3px;z-index:102;-moz-box-shadow:0px 0px 30px #fff;-webkit-box-shadow:0px 0px 15px #fff;box-shadow:0px 0px 15px #fff}.joyride-expose-cover{background:transparent;border-radius:3px;position:absolute;z-index:9999;top:0px;left:0px}@media only screen and (min-width: 48em){.joyride-tip-guide{width:300px;left:inherit}.joyride-tip-guide .joyride-nub.bottom{border-color:#000 !important;border-bottom-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;bottom:-28px}.joyride-tip-guide .joyride-nub.right{border-color:#000 !important;border-top-color:transparent !important;border-right-color:transparent !important;border-bottom-color:transparent !important;top:22px;left:auto;right:-28px}.joyride-tip-guide .joyride-nub.left{border-color:#000 !important;border-top-color:transparent !important;border-left-color:transparent !important;border-bottom-color:transparent !important;top:22px;left:-28px;right:auto}}[data-clearing]{*zoom:1;margin-bottom:0;list-style:none}[data-clearing]:before,[data-clearing]:after{content:" ";display:table}[data-clearing]:after{clear:both}[data-clearing] li{float:left;margin-right:10px}.clearing-blackout{background:#111;position:fixed;width:100%;height:100%;top:0;left:0;z-index:998}.clearing-blackout .clearing-close{display:block}.clearing-container{position:relative;z-index:998;height:100%;overflow:hidden;margin:0}.visible-img{height:95%;position:relative}.visible-img img{position:absolute;left:50%;top:50%;margin-left:-50%;max-height:100%;max-width:100%}.clearing-caption{color:#fff;line-height:1.3;margin-bottom:0;text-align:center;bottom:0;background:#111;width:100%;padding:10px 30px;position:absolute;left:0}.clearing-close{z-index:999;padding-left:20px;padding-top:10px;font-size:40px;line-height:1;color:#fff;display:none}.clearing-close:hover,.clearing-close:focus{color:#ccc}.clearing-assembled .clearing-container{height:100%}.clearing-assembled .clearing-container .carousel>ul{display:none}@media only screen and (min-width: 48em){.clearing-main-prev,.clearing-main-next{position:absolute;height:100%;width:40px;top:0}.clearing-main-prev>span,.clearing-main-next>span{position:absolute;top:50%;display:block;width:0;height:0;border:solid 16px}.clearing-main-prev{left:0}.clearing-main-prev>span{left:5px;border-color:transparent;border-right-color:#fff}.clearing-main-next{right:0}.clearing-main-next>span{border-color:transparent;border-left-color:#fff}.clearing-main-prev.disabled,.clearing-main-next.disabled{opacity:0.5}.clearing-feature ~ li{display:none}.clearing-assembled .clearing-container .carousel{background:#111;height:150px;margin-top:5px}.clearing-assembled .clearing-container .carousel>ul{display:block;z-index:999;width:200%;height:100%;margin-left:0;position:relative;left:0}.clearing-assembled .clearing-container .carousel>ul li{display:block;width:175px;height:inherit;padding:0;float:left;overflow:hidden;margin-right:1px;position:relative;cursor:pointer;opacity:0.4}.clearing-assembled .clearing-container .carousel>ul li.fix-height img{min-height:100%;height:100%;max-width:none}.clearing-assembled .clearing-container .carousel>ul li a.th{border:none;-webkit-box-shadow:none;box-shadow:none;display:block}.clearing-assembled .clearing-container .carousel>ul li img{cursor:pointer !important;min-width:100% !important}.clearing-assembled .clearing-container .carousel>ul li.visible{opacity:1}.clearing-assembled .clearing-container .visible-img{background:#111;overflow:hidden;height:75%}.clearing-close{position:absolute;top:10px;right:20px;padding-left:0;padding-top:0}}.alert-box{border-style:solid;border-width:1px;display:block;font-weight:bold;margin-bottom:1.25em;position:relative;padding:0.6875em 1.3125em 0.75em 0.6875em;font-size:0.875em;background-color:#2ba6cb;border-color:#2284a1;color:#fff}.alert-box .close{font-size:1.375em;padding:5px 4px 4px;line-height:0;position:absolute;top:0.4375em;right:0.3125em;color:#333;opacity:0.3}.alert-box .close:hover,.alert-box .close:focus{opacity:0.5}.alert-box.radius{-webkit-border-radius:3px;border-radius:3px}.alert-box.round{-webkit-border-radius:1000px;border-radius:1000px}.alert-box.success{background-color:#5da423;border-color:#457a1a;color:#fff}.alert-box.alert{background-color:#c60f13;border-color:#970b0e;color:#fff}.alert-box.secondary{background-color:#e9e9e9;border-color:#d0d0d0;color:#505050}.breadcrumbs{display:block;padding:0.5625em 0.875em 0.5625em;overflow:hidden;margin-left:0;list-style:none;border-style:solid;border-width:1px;background-color:#f6f6f6;border-color:#dcdcdc;-webkit-border-radius:3px;border-radius:3px}.breadcrumbs>*{margin:0;float:left;font-size:0.6875em;text-transform:uppercase;color:#2ba6cb}.breadcrumbs>*:hover a,.breadcrumbs>*:focus a{text-decoration:underline}.breadcrumbs>* a,.breadcrumbs>* span{text-transform:uppercase;color:#2ba6cb}.breadcrumbs>*.current{cursor:default;color:#333}.breadcrumbs>*.current a{cursor:default;color:#333}.breadcrumbs>*.current:hover,.breadcrumbs>*.current:hover a,.breadcrumbs>*.current:focus,.breadcrumbs>*.current:focus a{text-decoration:none}.breadcrumbs>*.unavailable{color:#999}.breadcrumbs>*.unavailable a{color:#999}.breadcrumbs>*.unavailable:hover,.breadcrumbs>*.unavailable:hover a,.breadcrumbs>*.unavailable:focus,.breadcrumbs>*.unavailable a:focus{text-decoration:none;color:#999;cursor:default}.breadcrumbs>*:before{content:"/";color:#aaa;margin:0 0.75em;position:relative;top:1px}.breadcrumbs>*:first-child:before{content:" ";margin:0}.keystroke,kbd{background-color:#ededed;border-color:#dbdbdb;color:#222;border-style:solid;border-width:1px;margin:0;font-family:"Consolas","Menlo","Courier",monospace;font-size:0.9375em;padding:0.125em 0.25em 0em;-webkit-border-radius:3px;border-radius:3px}.label{font-weight:bold;text-align:center;text-decoration:none;line-height:1;white-space:nowrap;display:inline-block;position:relative;padding:0.1875em 0.625em 0.25em;font-size:0.875em;background-color:#2ba6cb;color:#fff}.label.radius{-webkit-border-radius:3px;border-radius:3px}.label.round{-webkit-border-radius:1000px;border-radius:1000px}.label.alert{background-color:#c60f13;color:#fff}.label.success{background-color:#5da423;color:#fff}.label.secondary{background-color:#e9e9e9;color:#333}.inline-list{margin:0 auto 1.0625em auto;margin-left:-1.375em;margin-right:0;padding:0;list-style:none;overflow:hidden}.inline-list>li{list-style:none;float:left;margin-left:1.375em;display:block}.inline-list>li>*{display:block}.pagination{display:block;height:1.5em;margin-left:-0.3125em}.pagination li{display:block;float:left;height:1.5em;color:#222;font-size:0.875em;margin-left:0.3125em}.pagination li a{display:block;padding:0.0625em 0.4375em 0.0625em;color:#999}.pagination li:hover a,.pagination li a:focus{background:#e6e6e6}.pagination li.unavailable a{cursor:default;color:#999}.pagination li.unavailable:hover a,.pagination li.unavailable a:focus{background:transparent}.pagination li.current a{background:#2ba6cb;color:#fff;font-weight:bold;cursor:default}.pagination li.current a:hover,.pagination li.current a:focus{background:#2ba6cb}.pagination-centered{text-align:center}.pagination-centered ul>li{float:none;display:inline-block}.panel{border-style:solid;border-width:1px;border-color:#d9d9d9;margin-bottom:1.25em;padding:1.25em;background:#f2f2f2}.panel h1,.panel h2,.panel h3,.panel h4,.panel h5,.panel h6,.panel p{color:#333}.panel>:first-child{margin-top:0}.panel>:last-child{margin-bottom:0}.panel h1,.panel h2,.panel h3,.panel h4,.panel h5,.panel h6{line-height:1;margin-bottom:0.625em}.panel h1.subheader,.panel h2.subheader,.panel h3.subheader,.panel h4.subheader,.panel h5.subheader,.panel h6.subheader{line-height:1.4}.panel.callout{border-style:solid;border-width:1px;border-color:#2284a1;margin-bottom:1.25em;padding:1.25em;background:#2ba6cb;-webkit-box-shadow:0 1px 0 rgba(255,255,255,0.5) inset;box-shadow:0 1px 0 rgba(255,255,255,0.5) inset}.panel.callout h1,.panel.callout h2,.panel.callout h3,.panel.callout h4,.panel.callout h5,.panel.callout h6,.panel.callout p{color:#fff}.panel.callout>:first-child{margin-top:0}.panel.callout>:last-child{margin-bottom:0}.panel.callout h1,.panel.callout h2,.panel.callout h3,.panel.callout h4,.panel.callout h5,.panel.callout h6{line-height:1;margin-bottom:0.625em}.panel.callout h1.subheader,.panel.callout h2.subheader,.panel.callout h3.subheader,.panel.callout h4.subheader,.panel.callout h5.subheader,.panel.callout h6.subheader{line-height:1.4}.panel.radius{-webkit-border-radius:3px;border-radius:3px}.pricing-table{border:solid 1px #ddd;margin-left:0;margin-bottom:1.25em}.pricing-table *{list-style:none;line-height:1}.pricing-table .title{background-color:#ddd;padding:0.9375em 1.25em;text-align:center;color:#333;font-weight:bold;font-size:1em}.pricing-table .price{background-color:#eee;padding:0.9375em 1.25em;text-align:center;color:#333;font-weight:normal;font-size:1.25em}.pricing-table .description{background-color:#fff;padding:0.9375em;text-align:center;color:#777;font-size:0.75em;font-weight:normal;line-height:1.4;border-bottom:dotted 1px #ddd}.pricing-table .bullet-item{background-color:#fff;padding:0.9375em;text-align:center;color:#333;font-size:0.875em;font-weight:normal;border-bottom:dotted 1px #ddd}.pricing-table .cta-button{background-color:#f5f5f5;text-align:center;padding:1.25em 1.25em 0}.progress{background-color:transparent;height:1.5625em;border:1px solid #ccc;padding:0.125em;margin-bottom:0.625em}.progress .meter{background:#2ba6cb;height:100%;display:block}.progress.secondary .meter{background:#e9e9e9;height:100%;display:block}.progress.success .meter{background:#5da423;height:100%;display:block}.progress.alert .meter{background:#c60f13;height:100%;display:block}.progress.radius{-webkit-border-radius:3px;border-radius:3px}.progress.radius .meter{-webkit-border-radius:2px;border-radius:2px}.progress.round{-webkit-border-radius:1000px;border-radius:1000px}.progress.round .meter{-webkit-border-radius:999px;border-radius:999px}.side-nav{display:block;margin:0;padding:0.875em 0;list-style-type:none;list-style-position:inside}.side-nav li{margin:0 0 0.4375em 0;font-size:0.875em}.side-nav li a{display:block;color:#2ba6cb}.side-nav li.active>a:first-child{color:#4d4d4d;font-weight:bold}.side-nav li.divider{border-top:1px solid;height:0;padding:0;list-style:none;border-top-color:#e6e6e6}.sub-nav{display:block;width:auto;overflow:hidden;margin:-0.25em 0 1.125em;padding-top:0.25em;margin-right:0;margin-left:-0.5625em}.sub-nav dt,.sub-nav dd{float:left;display:inline;margin-left:0.5625em;margin-bottom:0.625em;font-weight:normal;font-size:0.875em}.sub-nav dt a,.sub-nav dd a{color:#999;text-decoration:none}.sub-nav dt.active a,.sub-nav dd.active a{-webkit-border-radius:1000px;border-radius:1000px;font-weight:bold;background:#2ba6cb;padding:0.1875em 0.5625em;cursor:default;color:#fff}@media only screen{div.switch{position:relative;width:100%;padding:0;display:block;overflow:hidden;border-style:solid;border-width:1px;margin-bottom:1.25em;-webkit-animation:webkitSiblingBugfix infinite 1s;height:36px;background:#fff;border-color:#ccc}div.switch label{position:relative;left:0;z-index:2;float:left;width:50%;height:100%;margin:0;font-weight:bold;text-align:left;-webkit-transition:all 0.1s ease-out;-moz-transition:all 0.1s ease-out;transition:all 0.1s ease-out}div.switch input{position:absolute;z-index:3;opacity:0;width:100%;height:100%;-moz-appearance:none}div.switch input:hover,div.switch input:focus{cursor:pointer}div.switch>span{position:absolute;top:-1px;left:-1px;z-index:1;display:block;padding:0;border-width:1px;border-style:solid;-webkit-transition:all 0.1s ease-out;-moz-transition:all 0.1s ease-out;transition:all 0.1s ease-out}div.switch input:not(:checked)+label{opacity:0}div.switch input:checked{display:none !important}div.switch input{left:0;display:block !important}div.switch input:first-of-type+label,div.switch input:first-of-type+span+label{left:-50%}div.switch input:first-of-type:checked+label,div.switch input:first-of-type:checked+span+label{left:0%}div.switch input:last-of-type+label,div.switch input:last-of-type+span+label{right:-50%;left:auto;text-align:right}div.switch input:last-of-type:checked+label,div.switch input:last-of-type:checked+span+label{right:0%;left:auto}div.switch span.custom{display:none !important}div.switch label{padding:0 0.375em;line-height:2.3em;font-size:0.875em}div.switch input:first-of-type:checked ~ span{left:100%;margin-left:-2.1875em}div.switch>span{width:2.25em;height:2.25em}div.switch>span{border-color:#b3b3b3;background:#fff;background:-moz-linear-gradient(top, #fff 0%, #f2f2f2 100%);background:-webkit-linear-gradient(top, #fff 0%, #f2f2f2 100%);background:linear-gradient(to bottom, #fff 0%, #f2f2f2 100%);-webkit-box-shadow:2px 0 10px 0 rgba(0,0,0,0.07),1000px 0 0 1000px #e1f5d1,-2px 0 10px 0 rgba(0,0,0,0.07),-1000px 0 0 1000px #f5f5f5;box-shadow:2px 0 10px 0 rgba(0,0,0,0.07),1000px 0 0 980px #e1f5d1,-2px 0 10px 0 rgba(0,0,0,0.07),-1000px 0 0 1000px #f5f5f5}div.switch:hover>span,div.switch:focus>span{background:#fff;background:-moz-linear-gradient(top, #fff 0%, #e6e6e6 100%);background:-webkit-linear-gradient(top, #fff 0%, #e6e6e6 100%);background:linear-gradient(to bottom, #fff 0%, #e6e6e6 100%)}div.switch:active{background:transparent}div.switch.large{height:44px}div.switch.large label{padding:0 0.375em;line-height:2.3em;font-size:1.0625em}div.switch.large input:first-of-type:checked ~ span{left:100%;margin-left:-2.6875em}div.switch.large>span{width:2.75em;height:2.75em}div.switch.small{height:28px}div.switch.small label{padding:0 0.375em;line-height:2.1em;font-size:0.75em}div.switch.small input:first-of-type:checked ~ span{left:100%;margin-left:-1.6875em}div.switch.small>span{width:1.75em;height:1.75em}div.switch.tiny{height:22px}div.switch.tiny label{padding:0 0.375em;line-height:1.9em;font-size:0.6875em}div.switch.tiny input:first-of-type:checked ~ span{left:100%;margin-left:-1.3125em}div.switch.tiny>span{width:1.375em;height:1.375em}div.switch.radius{-webkit-border-radius:4px;border-radius:4px}div.switch.radius>span{-webkit-border-radius:3px;border-radius:3px}div.switch.round{-webkit-border-radius:1000px;border-radius:1000px}div.switch.round>span{-webkit-border-radius:999px;border-radius:999px}div.switch.round label{padding:0 0.5625em}@-webkit-keyframes webkitSiblingBugfix{from{position:relative}to{position:relative}}}[data-magellan-expedition]{background:#fff;z-index:50;min-width:100%;padding:10px}[data-magellan-expedition] .sub-nav{margin-bottom:0}[data-magellan-expedition] .sub-nav dd{margin-bottom:0}table{background:#fff;margin-bottom:1.25em;border:solid 1px #ddd}table thead,table tfoot{background:#f5f5f5;font-weight:bold}table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:0.5em 0.625em 0.625em;font-size:0.875em;color:#222;text-align:left}table tr th,table tr td{padding:0.5625em 0.625em;font-size:0.875em;color:#222}table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f9f9f9}table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.125em}.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,0.2);box-shadow:0 0 0 1px rgba(0,0,0,0.2);-webkit-transition:all 200ms ease-out;-moz-transition:all 200ms ease-out;transition:all 200ms ease-out}.th:hover,.th:focus{-webkit-box-shadow:0 0 6px 1px rgba(43,166,203,0.5);box-shadow:0 0 6px 1px rgba(43,166,203,0.5)}.th.radius{-webkit-border-radius:3px;border-radius:3px}a.th{display:block}.has-tip{border-bottom:dotted 1px #ccc;cursor:help;font-weight:bold;color:#333}.has-tip:hover,.has-tip:focus{border-bottom:dotted 1px #196177;color:#2ba6cb}.has-tip.tip-left,.has-tip.tip-right{float:none !important}.tooltip{display:none;position:absolute;z-index:999;font-weight:bold;font-size:0.9375em;line-height:1.3;padding:0.5em;max-width:85%;left:50%;width:100%;color:#fff;background:#000;-webkit-border-radius:3px;border-radius:3px}.tooltip>.nub{display:block;left:5px;position:absolute;width:0;height:0;border:solid 5px;border-color:transparent transparent #000 transparent;top:-10px}.tooltip.opened{color:#2ba6cb !important;border-bottom:dotted 1px #196177 !important}.tap-to-close{display:block;font-size:0.625em;color:#888;font-weight:normal}@media only screen and (min-width: 48em){.tooltip>.nub{border-color:transparent transparent #000 transparent;top:-10px}.tooltip.tip-top>.nub{border-color:#000 transparent transparent transparent;top:auto;bottom:-10px}.tooltip.tip-left,.tooltip.tip-right{float:none !important}.tooltip.tip-left>.nub{border-color:transparent transparent transparent #000;right:-10px;left:auto;top:50%;margin-top:-5px}.tooltip.tip-right>.nub{border-color:transparent #000 transparent transparent;right:auto;left:-10px;top:50%;margin-top:-5px}}@media only screen and (max-width: 767px){.f-dropdown{max-width:100%;left:0}}.f-dropdown{position:absolute;top:-9999px;list-style:none;padding:1.25em;width:100%;height:auto;max-height:none;background:#fff;border:solid 1px #ccc;font-size:16px;z-index:99;margin-top:2px;max-width:200px}.f-dropdown *:first-child{margin-top:0}.f-dropdown *:last-child{margin-bottom:0}.f-dropdown:before{content:"";display:block;width:0;height:0;border:inset 6px;border-color:transparent transparent #fff transparent;border-bottom-style:solid;position:absolute;top:-12px;left:10px;z-index:99}.f-dropdown:after{content:"";display:block;width:0;height:0;border:inset 7px;border-color:transparent transparent #ccc transparent;border-bottom-style:solid;position:absolute;top:-14px;left:9px;z-index:98}.f-dropdown.right:before{left:auto;right:10px}.f-dropdown.right:after{left:auto;right:9px}.f-dropdown li{font-size:0.875em;cursor:pointer;line-height:1.125em;margin:0}.f-dropdown li:hover,.f-dropdown li:focus{background:#eee}.f-dropdown li a{display:block;padding:0.3125em 0.625em;color:#555}.f-dropdown.content{position:absolute;top:-9999px;list-style:none;padding:1.25em;width:100%;height:auto;max-height:none;background:#fff;border:solid 1px #ccc;font-size:16px;z-index:99;max-width:200px}.f-dropdown.content *:first-child{margin-top:0}.f-dropdown.content *:last-child{margin-bottom:0}.f-dropdown.tiny{max-width:200px}.f-dropdown.small{max-width:300px}.f-dropdown.medium{max-width:500px}.f-dropdown.large{max-width:800px} diff --git a/pelican/theme/static/css/normalize.css b/pelican/theme/static/css/normalize.css new file mode 100644 index 0000000..6d24a38 --- /dev/null +++ b/pelican/theme/static/css/normalize.css @@ -0,0 +1,402 @@ +/*! normalize.css v2.1.1 | MIT License | git.io/normalize */ + +/* ========================================================================== + HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined in IE 8/9. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} + +/** + * Correct `inline-block` display not defined in IE 8/9. + */ + +audio, +canvas, +video { + display: inline-block; +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address styling not present in IE 8/9. + */ + +[hidden] { + display: none; +} + +/* ========================================================================== + Base + ========================================================================== */ + +/** + * 1. Prevent system color scheme's background color being used in Firefox, IE, + * and Opera. + * 2. Prevent system color scheme's text color being used in Firefox, IE, and + * Opera. + * 3. Set default font family to sans-serif. + * 4. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + background: #fff; /* 1 */ + color: #000; /* 2 */ + font-family: sans-serif; /* 3 */ + -ms-text-size-adjust: 100%; /* 4 */ + -webkit-text-size-adjust: 100%; /* 4 */ +} + +/** + * Remove default margin. + */ + +body { + margin: 0; +} + +/* ========================================================================== + Links + ========================================================================== */ + +/** + * Address `outline` inconsistency between Chrome and other browsers. + */ + +a:focus { + outline: thin dotted; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* ========================================================================== + Typography + ========================================================================== */ + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari 5, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Address styling not present in IE 8/9, Safari 5, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari 5 and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Correct font family set oddly in Safari 5 and Chrome. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 1em; +} + +/** + * Improve readability of pre-formatted text in all browsers. + */ + +pre { + white-space: pre-wrap; +} + +/** + * Set consistent quote types. + */ + +q { + quotes: "\201C" "\201D" "\2018" "\2019"; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* ========================================================================== + Embedded content + ========================================================================== */ + +/** + * Remove border when inside `a` element in IE 8/9. + */ + +img { + border: 0; +} + +/** + * Correct overflow displayed oddly in IE 9. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* ========================================================================== + Figures + ========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari 5. + */ + +figure { + margin: 0; +} + +/* ========================================================================== + Forms + ========================================================================== */ + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * 1. Correct font family not being inherited in all browsers. + * 2. Correct font size not being inherited in all browsers. + * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. + */ + +button, +input, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 2 */ + margin: 0; /* 3 */ +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +button, +input { + line-height: normal; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+. + * Correct `select` style inheritance in Firefox 4+ and Opera. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * 1. Address box sizing set to `content-box` in IE 8/9. + * 2. Remove excess padding in IE 8/9. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari 5 and Chrome + * on OS X. + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * 1. Remove default vertical scrollbar in IE 8/9. + * 2. Improve readability and alignment in all browsers. + */ + +textarea { + overflow: auto; /* 1 */ + vertical-align: top; /* 2 */ +} + +/* ========================================================================== + Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} diff --git a/pelican/theme/static/css/pygments.css b/pelican/theme/static/css/pygments.css new file mode 100644 index 0000000..295bc62 --- /dev/null +++ b/pelican/theme/static/css/pygments.css @@ -0,0 +1,70 @@ +.highlight .hll { background-color: #ffffcc } +.highlight { background: #002b36; color: #839496 } +.highlight .c { color: #586e75; font-style: italic } /* Comment */ +.highlight .err { color: #dc322f } /* Error */ +.highlight .g { color: #839496 } /* Generic */ +.highlight .k { color: #859900 } /* Keyword */ +.highlight .l { color: #839496 } /* Literal */ +.highlight .n { color: #93a1a1 } /* Name */ +.highlight .o { color: #839496 } /* Operator */ +.highlight .x { color: #839496 } /* Other */ +.highlight .p { color: #839496 } /* Punctuation */ +.highlight .cm { color: #586e75; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #586e75; font-style: italic } /* Comment.Preproc */ +.highlight .c1 { color: #586e75; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #586e75; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #839496 } /* Generic.Deleted */ +.highlight .ge { color: #839496 } /* Generic.Emph */ +.highlight .gr { color: #839496 } /* Generic.Error */ +.highlight .gh { color: #839496 } /* Generic.Heading */ +.highlight .gi { color: #839496 } /* Generic.Inserted */ +.highlight .go { color: #839496 } /* Generic.Output */ +.highlight .gp { color: #839496 } /* Generic.Prompt */ +.highlight .gs { color: #839496 } /* Generic.Strong */ +.highlight .gu { color: #839496 } /* Generic.Subheading */ +.highlight .gt { color: #839496 } /* Generic.Traceback */ +.highlight .kc { color: #859900 } /* Keyword.Constant */ +.highlight .kd { color: #859900 } /* Keyword.Declaration */ +.highlight .kn { color: #cb4b16 } /* Keyword.Namespace */ +.highlight .kp { color: #cb4b16 } /* Keyword.Pseudo */ +.highlight .kr { color: #859900 } /* Keyword.Reserved */ +.highlight .kt { color: #859900 } /* Keyword.Type */ +.highlight .ld { color: #839496 } /* Literal.Date */ +.highlight .m { color: #2aa198 } /* Literal.Number */ +.highlight .s { color: #2aa198 } /* Literal.String */ +.highlight .na { color: #839496 } /* Name.Attribute */ +.highlight .nb { color: #268bd2 } /* Name.Builtin */ +.highlight .nc { color: #268bd2 } /* Name.Class */ +.highlight .no { color: #b58900 } /* Name.Constant */ +.highlight .nd { color: #cb4b16 } /* Name.Decorator */ +.highlight .ni { color: #cb4b16 } /* Name.Entity */ +.highlight .ne { color: #cb4b16 } /* Name.Exception */ +.highlight .nf { color: #268bd2 } /* Name.Function */ +.highlight .nl { color: #839496 } /* Name.Label */ +.highlight .nn { color: #b58900 } /* Name.Namespace */ +.highlight .nx { color: #839496 } /* Name.Other */ +.highlight .py { color: #268bd2 } /* Name.Property */ +.highlight .nt { color: #859900 } /* Name.Tag */ +.highlight .nv { color: #cd4b16 } /* Name.Variable */ +.highlight .ow { color: #859900 } /* Operator.Word */ +.highlight .w { color: #002b36 } /* Text.Whitespace */ +.highlight .mf { color: #2aa198 } /* Literal.Number.Float */ +.highlight .mh { color: #2aa198 } /* Literal.Number.Hex */ +.highlight .mi { color: #2aa198 } /* Literal.Number.Integer */ +.highlight .mo { color: #2aa198 } /* Literal.Number.Oct */ +.highlight .sb { color: #2aa198 } /* Literal.String.Backtick */ +.highlight .sc { color: #2aa198 } /* Literal.String.Char */ +.highlight .sd { color: #2aa198 } /* Literal.String.Doc */ +.highlight .s2 { color: #2aa198 } /* Literal.String.Double */ +.highlight .se { color: #cb4b16 } /* Literal.String.Escape */ +.highlight .sh { color: #2aa198 } /* Literal.String.Heredoc */ +.highlight .si { color: #cb4b16 } /* Literal.String.Interpol */ +.highlight .sx { color: #2aa198 } /* Literal.String.Other */ +.highlight .sr { color: #2aa198 } /* Literal.String.Regex */ +.highlight .s1 { color: #2aa198 } /* Literal.String.Single */ +.highlight .ss { color: #2aa198 } /* Literal.String.Symbol */ +.highlight .bp { color: #268bd2; font-weight: bold } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #268bd2 } /* Name.Variable.Class */ +.highlight .vg { color: #268bd2 } /* Name.Variable.Global */ +.highlight .vi { color: #268bd2 } /* Name.Variable.Instance */ +.highlight .il { color: #2aa198 } /* Literal.Number.Integer.Long */ diff --git a/pelican/theme/static/css/style.css b/pelican/theme/static/css/style.css new file mode 100644 index 0000000..a475812 --- /dev/null +++ b/pelican/theme/static/css/style.css @@ -0,0 +1,107 @@ +/* Misc */ +body { +word-wrap:break-word; +background: #f1f1f1; +} + +ol li ul, ol li ol { +margin-bottom: 1.25em; +} + +article { +padding-left:1em; +color: #444; +} + + +/* Base.html - top navigation */ +.top-bar { +background: #f1f1f1; /* Header color */ +margin-bottom: 3em; +margin-left: 1em; +text-align: right; +} + +.top-menu { +background: #2BA6E3; /* Menu color */ +padding-top: 1em; +padding-bottom: 1em; +} + +.menu-button { +color: white; +margin-left: 1em; +margin-right: 1em; +text-transform: uppercase; +} +.menu-button:hover { +color: #95d3f1; +} + +nav { +margin-bottom: 2em; +} + +.top-bar a { color: #2BA6E3 } /* Sitename color */ + +.translation-button { +margin-left: 1em; +} + + +/* Base.html sidebar */ +h5.sidebar-title { +border-bottom: 0.1em solid #eeeeee; +margin-top: 1em; +font-weight: bold; +text-transform: uppercase; +} + +.side-nav li a { color: #222} +.side-nav { padding: 0.5em 0; } + + +/* Index.html - posts */ +h3.article-title { +margin-bottom: 0em; +color: #3A91CB; +} + + +/* Article infos | infos_bottom.html */ +.subheader { color: #aaa; margin-bottom: 1.2em; } +a.article-info { color: #aaa; } + + +/* Archives.html */ +.table-archive { border: none; } + + +/* Index.html - line separator for posts */ +hr.gradient { + border: 0; + height: 1px; + margin-top: 3em; + margin-bottom: 3em; + background-image: -webkit-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,0.75), rgba(0,0,0,0)); + background-image: -moz-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,0.75), rgba(0,0,0,0)); + background-image: -ms-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,0.75), rgba(0,0,0,0)); + background-image: -o-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,0.75), rgba(0,0,0,0)); +} + +/* Syntax Highlighting */ +.highlight > pre { +word-wrap: normal; +white-space: pre; +margin-top: 1em; +margin-bottom: 1em; +border: 1px solid #ccc; +background: #073642; +padding: 1em; +overflow: auto; +} + +ol { +margin-left: 2em; +} + diff --git a/pelican/theme/static/images/icons/delicious.png b/pelican/theme/static/images/icons/delicious.png new file mode 100644 index 0000000000000000000000000000000000000000..3dccdd848ec99fba9950e8195d4e73867ada2738 GIT binary patch literal 958 zcmV;v13~6?8>dbVG7wVRUJ4ZXi@?ZDjy5FfTVRFgbe517iRH0~bj| zK~y*q1;M><8+9DO;m`f<=Zk&uOYFLC>!dcMNlRiXOAJIPLZ}-N2r=?6l!XNe7Ld9z z6a-9cEObDHN_0a4!Gc7jsFEAnrb(blQ`d>p#Bb+&^WA-U9s{6QELO(jaU+wlmuj`y zOSM|Pw6u7>?C5v1c7C;edel2@_h-|CVA`%`PmXKp)XB`5jeDpcel^zC-n+HDy!3vp ze$j3;8sxHR%H=c6&oA=Vefai!sFa}BgS}_Mz552E)|xJtFMV+H<`)V8 z0000&I&H=CwkC7|1+Ht5N=8hoX|`Vs_~ouY)RRea08$5l2_gU{hT&pq6FW7 z_P)m??qXUg(&k9=<<+O!vJ60ggg6!eOcNj>n-Mylh$t3LyAecfGI@`Qt8oVzqjIjW zs7s|O7Zgbn0tSWw5CbKQWRLbk7iAT&b4RGW3$c(&DZC)X=0EBkozJI+07|6+0002! z96pEP9Emb;Mn1?1gf?J9LHxOMyT9w>A|jE9 z1R@fPNF*X6Uw!$hG@H#gbvAe5wL~g-eup^rQ51ogp);b<%&}090TY-2A(DWhOb(AU zt=5*KY8U5!ilTtw@DL53MyKF(LtA0!3c*Cpe=q09vQf z+Cmu?U@++SOV_V|XzTs`Ct)sEAP7&e6nI{jI35E>5T)?~0l@biEX!gz^cXoVei)W7 zR4cQ(UcdZcW8)ct>tJdR43DWPg=J>YsWP8^{+%q$SDl^R1C=DY=lj9GdwUzhVljPq zs{nN~l=<`rQ{G z*EMNgZp)TeGt$L@YM4rb{DK+IJaKeh4CFB;dAqwXbg;^L06Clm9+AaB8pQTsa66f8 z2V~fKx;Tb#Tu)ADV02S85J*U9G7veylX_i&!&z12Q~+;~Q|gK~r==k=&T|S@G#cDE lb^5gT;nTtbJUf;eFfcqx6@IYm*CsGUh074yEL{XMZ7cf&`*=*r72Z+j+2B5y<+hzU#(AFv z+!m8y#^HcNtmEqdUmXGsPJ&&BYk)<>PJbac!3$@wEwC5mE`k2GKxqL+9X1|{k^fkb zPG1EuO5&~{J{6@4w%#7&G9!Ay3~z07*qoM6N<$f=VTic>n+a literal 0 HcmV?d00001 diff --git a/pelican/theme/static/images/icons/gitorious.png b/pelican/theme/static/images/icons/gitorious.png new file mode 100644 index 0000000000000000000000000000000000000000..3eeb3ecec36a73ff505e04ecdecbcc4792ef6786 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!O@L2`D?^o)dRwqYcev@q#DMvQ z*(*AHH`kW0om8=NO8&uVRmbKn*uQ@5(H+Zf?%R0x*ww37FTJ_{>eZ{eAD{pK|9`68 zWgnn9NuDl_ArhBs&l(CfDDW^GWLD*36#n?Xe(OZZj60uZDW6tS-s!tZ;qA;Vf>oNe zoO+M!7w(Q%nqK|iN%H(B6U8~-_(gR#lieQ**`4zb(6ROF5mHl4iMd b=se=)bK`s~y3?}Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyq( z0|^AkZL;YA00C!7L_t(I%VS`Gf&_0HFrDaQqmtllJp)MJ0^(m#dOmnQe`Ts~~BcM&z2u(nCq_gq= z7&lY6AuyMK{funGm2)TmfBF3B|J(^}V8h})E&un_7XJV6?(P5kw{QH<2ysPrkqQGe zaQ=a8*|2Qhe-QZh?;n_+)zkF9r6dC`2Exbo?ff4HG!&|51_Ly-!Oq;YV!?kH04e_c z`xn?|n1LYr#DU#F11w-JxWxdCCa^$xYWRObptr6V*$cl=42W?z`+xTMA)r;58bP){ zesK4Hl#4Nj0k@C?G1=e#|F54v;Lb)4le}mj^k}^W4@6{%>dY9FfCGV^+9H&wMGiz2 zjKtz?1=auqi>CG<2OMfNq9-I62F3rB_Uiwu=1l{q2lUhkPe>?9*&EFzURJO;$Dfob d%1o4IX8>>N|HqM7x0V0^002ovPDHLkV1m@;(I5Z- literal 0 HcmV?d00001 diff --git a/pelican/theme/static/images/icons/google-plus.png b/pelican/theme/static/images/icons/google-plus.png new file mode 100644 index 0000000000000000000000000000000000000000..3c6b74324031611f20c0a3810131aa74fd0a5a9f GIT binary patch literal 527 zcmV+q0`UEbP)ZK z>upIAVz}dFal_O6CT?`r$qOAn;FBaOK-k!D!Jidayc;Y>7GYGxnGBxue+IChM|)V`ar=`j`~3M zC07%M|NqZF^fS8TVssIRJYwIy1j>GXU1E8{UJs6dLU1-v!-3nb2Irih=+?6PKKJ@8lF5#&^v9fcghZg&b90USur#Ch_yBx0YzYJ9ftpZ|9@Mbb;3sH7#Llc zapC{3OLv2zTp&7Rr3KUgB!TRsHrfndzX7?Q-YzOS8|-?va>A!K_nuYT9<U;^giL<|Q^RJR%`Z!y$8yYa>Upa1{=xci{g2`qvgF`RFk`e^@wXB(G2 zShMW$$p`;HLHGV;SLhaf#f_+F1DIs^y0_<$oBBFk`Sl>Ab*Ovm_g^4AcawG2Lj|D- zqK4swiTo;US!A@iaP1FZz%33(6Ney%eY$dMwPn_zpvZ?`|G(*ST!StSLI9gPlb*yp RBR2p5002ovPDHLkV1g3B{|5j7 literal 0 HcmV?d00001 diff --git a/pelican/theme/static/images/icons/lastfm.png b/pelican/theme/static/images/icons/lastfm.png new file mode 100644 index 0000000000000000000000000000000000000000..3a6c6262b644dadbcf6cce5dfe4fed9740a9ec1f GIT binary patch literal 975 zcmV;=12FuFP)6?8>dbVG7wVRUJ4ZXi@?ZDjy5FfTVRFgbe517iRH11L#E zK~y*q1;I~j6jdC+@$Y-{cJ_af?v|Cd&=58%RRW19jgdqNQ4(W7BPZ0vgC6ith#oz2 zwmQaM~wsz^Z-QCXa%DC5DyB?4oI zHSqw7c|gHN7dAskEJO*20zV5*!N7txD5W7|ke~#<+t+u*fj>r ztH?8TXslr8?-TWV6(gOX%;6VdsD%CI2XwQA8l*5f0`DG!`c7!JVEYK^^e^` zcD=D}N`gz%A|jG3Hzk<+OHvW}@9ocI<-{ifWL)N6Op zl_6x*$4|GSoI{~dSr4lfE@RM%BU`HwdyYXEVvL7at4)4lw9&i$@PL;@=v)?SEfh1D zasgHF@wCQe1o1p1(b(1+x;KE@R@B7!CDScsKTn?9J!|Sao$80mhEYbMc$-A=FpjF~ xhgEG<4rh((w99I&de5(oe5r7A)lWa1`5&mym2=&ymqP#m002ovPDHLkV1nRSx}g97 literal 0 HcmV?d00001 diff --git a/pelican/theme/static/images/icons/linkedin.png b/pelican/theme/static/images/icons/linkedin.png new file mode 100644 index 0000000000000000000000000000000000000000..d29c1201bcb0c278d49f573f9ef95ebfe932fb5b GIT binary patch literal 896 zcmV-`1AqL9P)O?w*+yx0CTqhbhrm|xBzvz1a!FqcDf06xd(T; z33s;)cDV|7y9#-^3VFK@c)AREx(#`{5P7-@d%OyJybgN24|=>3db|^QyApf54}859 zd%O~SycB-F6oS7Mg1{Mpz#M|W8-~Ilg~A_(!XJpjA&SHzio+v{!z7EtC5yx+i^M05 z#Vn4-Esn-Ak;gHT$1;-0GLy(NlgLGp$T^kDI+e;fmdQGn$vT$GJeSHnm&-hv%0ZaR zL72=xnae?$%tn~XLYmA%o6JO<%t)NhPo2(7pw3U9&{Ck$Q=!sTqR>>M(N?3RCuhwv{ z*>JGebFkNQvDtL7*>thmasnF-F(C4es=&jS~wAARd)#bKVFwb$yn*z3L7 z?7rLWzuWJ^-|oob@6YA&(B<*a=JM9)^VjM0*y{D#>-FC4_2%;U|Ns9Oj;1#N0004W zQchCpR786}b)xDJsVI4<46?8>dbVG7wVRUJ4ZXi@?ZDjy5FfTVRFgbe517iRH0?0{3 zK~y*q1;I;*Rb>DG;O{@@%$+f3oY85tfwDo(q6wk`giZ?x7RltmpuHqGE2Ov7S;O>W=fV^3Ed_|@k1wcyde_(#VU$5hJ){~SMM3vE z`3mV6d6!6h_{5>K{^g_nAzb{##4h4Atz`x+@?|HbY`2^q;2h6QShC{*2hvJjfj zNk-Xd(Y{3MG9@ZB0^>WVP_!vG5J*O7R18<ow5~Ea&x6M(ayp9?tF$h&c7>5K z>WU;q03evmbXTSntIWQ`uA?F#fQoNl=Fcyg9w7z*62w8B*nHn@<2%JaJ`lfonhURq zw=ar_Ql9;S2M)3^Bp^gWR2P)>#BvgiT$A6V8ZiBc(EeWde4lt`PTaT(96Za+Zi+q; zA*lPr#_VFEx7t*!3sdtvev(6%g(JTUw-+U69u>2XEnzC(V_9^w`BzdLGqpGA|C0Rn+wz0^j?cy_E@k(x(WUQW7?tE3Zi_R5k zBQ;EBj2p9AqRn)QGiEcNEFEUOzK+@qNX}oQZ9LjYXYiQ|zvZ2|*AlVi;?O z>etgdlS{`I>%1>i)A}(L@>OH~L>+3$+*Z|kU%u8eI?)iaRKKkJyErh|edyx=<#)&5 zPOhE&aPSXGvdN%`K^<$I9%YX#r5d4(P)6?8>dbVG7wVRUJ4ZXi@?ZDjy5FfTVRFgbe517iRH0+&fd zK~y*q1;I;eT~!#z;orN~+WXwn#6*y$w(*h*ilq*eIv-e)>{rfz2>o|YjIakM#%UhMb+@bNp@nA+}SPdDo7O9oA zGH1DQ=3VCA#gT5=SO4a&tyI0gXBT8cdC;FG`L+ZpV~z_2(k zy27+~*2T$!9(dBjs?l*Gs@^i^ycrPqX$n7{!nGav4CBKp&|ow~joLoVsusArMnnq)x&OT0jOD0^FU!r)xMV z@T`Lg@WUazJu+?=Xo^@Bc7w?~m$5A3q=>T&2}l_pF5!6#!NjS=iGu;#28{!#P2-AU z0h%HbP#g*{cet?yAML`kY`i-ZA56r3H`W4*h|+12)Ju^?5tk}wyNb*^F%HHT7vW$4 z0AT#-;$9CI5)714(INy>lS^h8jI9{BG64bGL3}rZ+e`R_3xqi;MG7(3u z(Kz(IvnufS+IiH% z|H$#?(3yDKFI$%htO#ZKU{k0-ZZa!IYoMLFnl`;oUNO7#KQyI_l_SgjkN^Mx07*qo IM6N<$g7S@P4*&oF literal 0 HcmV?d00001 diff --git a/pelican/theme/static/js/custom.modernizr.js b/pelican/theme/static/js/custom.modernizr.js new file mode 100644 index 0000000..e5afa6c --- /dev/null +++ b/pelican/theme/static/js/custom.modernizr.js @@ -0,0 +1,4 @@ +/* Modernizr 2.6.2 (Custom Build) | MIT & BSD + * Build: http://modernizr.com/download/#-inlinesvg-svg-svgclippaths-touch-shiv-mq-cssclasses-teststyles-prefixes-ie8compat-load + */ +;window.Modernizr=function(a,b,c){function y(a){j.cssText=a}function z(a,b){return y(m.join(a+";")+(b||""))}function A(a,b){return typeof a===b}function B(a,b){return!!~(""+a).indexOf(b)}function C(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:A(f,"function")?f.bind(d||b):f}return!1}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n={svg:"http://www.w3.org/2000/svg"},o={},p={},q={},r=[],s=r.slice,t,u=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["­",'"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},v=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return u("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},w={}.hasOwnProperty,x;!A(w,"undefined")&&!A(w.call,"undefined")?x=function(a,b){return w.call(a,b)}:x=function(a,b){return b in a&&A(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=s.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(s.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(s.call(arguments)))};return e}),o.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:u(["@media (",m.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},o.svg=function(){return!!b.createElementNS&&!!b.createElementNS(n.svg,"svg").createSVGRect},o.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="",(a.firstChild&&a.firstChild.namespaceURI)==n.svg},o.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(l.call(b.createElementNS(n.svg,"clipPath")))};for(var D in o)x(o,D)&&(t=D.toLowerCase(),e[t]=o[D](),r.push((e[t]?"":"no-")+t));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)x(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},y(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=m,e.mq=v,e.testStyles=u,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+r.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f>>0;if(typeof e!="function")return;var r=[],i=arguments[1];for(var s=0;s>>0;if(n===0)return-1;var r=0;arguments.length>1&&(r=Number(arguments[1]),r!=r?r=0:r!=0&&r!=Infinity&&r!=-Infinity&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i0)for(var l=u.length-1;l>=0;l--)f.push(this.init_lib(u[l],a))}else for(var c in this.libs)f.push(this.init_lib(c,a));return typeof n=="function"&&a.unshift(n),this.response_obj(f,a)},response_obj:function(e,t){for(var n=0,r=t.length;n=0;r--)this.lib_methods.hasOwnProperty(n[r])&&(this.libs[e.name][n[r]]=this.lib_methods[n[r]])},random_str:function(e){var t="0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz".split("");e||(e=Math.floor(Math.random()*t.length));var n="";for(var r=0;r=0;r--)i=s[r].split(":"),/true/i.test(i[1])&&(i[1]=!0),/false/i.test(i[1])&&(i[1]=!1),u(i[1])&&(i[1]=parseInt(i[1],10)),i.length===2&&i[0].length>0&&(n[a(i[0])]=a(i[1]));return n},delay:function(e,t){return setTimeout(e,t)},scrollTo:function(n,r,i){if(i<0)return;var s=r-e(t).scrollTop(),o=s/i*10;this.scrollToTimerCache=setTimeout(function(){isNaN(parseInt(o,10))||(t.scrollTo(0,e(t).scrollTop()+o),this.scrollTo(n,r,i-10))}.bind(this),10)},scrollLeft:function(e){if(!e.length)return;return"scrollLeft"in e[0]?e[0].scrollLeft:e[0].pageXOffset},empty:function(e){if(e.length&&e.length>0)return!1;if(e.length&&e.length===0)return!0;for(var t in e)if(hasOwnProperty.call(e,t))return!1;return!0}},fix_outer:function(e){e.outerHeight=function(e,t){return typeof Zepto=="function"?e.height():typeof t!="undefined"?e.outerHeight(t):e.outerHeight()},e.outerWidth=function(e){return typeof Zepto=="function"?e.width():typeof bool!="undefined"?e.outerWidth(bool):e.outerWidth()}},error:function(e){return e.name+" "+e.message+"; "+e.more},off:function(){return e(this.scope).off(".fndtn"),e(t).off(".fndtn"),!0},zj:function(){try{return Zepto}catch(e){return jQuery}}()},e.fn.foundation=function(){var e=Array.prototype.slice.call(arguments,0);return this.each(function(){return Foundation.init.apply(Foundation,[this].concat(e)),this})}})(libFuncName,this,this.document),function(e,t,n,r){"use strict";Foundation.libs.alerts={name:"alerts",version:"4.0.0",settings:{speed:300,callback:function(){}},init:function(t,n,r){return this.scope=t||this.scope,typeof n=="object"&&e.extend(!0,this.settings,n),typeof n!="string"?(this.settings.init||this.events(),this.settings.init):this[n].call(this,r)},events:function(){var t=this;e(this.scope).on("click.fndtn.alerts","[data-alert] a.close",function(n){n.preventDefault(),e(this).closest("[data-alert]").fadeOut(t.speed,function(){e(this).remove(),t.settings.callback()})}),this.settings.init=!0},off:function(){e(this.scope).off(".fndtn.alerts")}}}(Foundation.zj,this,this.document),function(e,t,n,r){"use strict";Foundation.libs.clearing={name:"clearing",version:"4.1.3",settings:{templates:{viewing:'×'},close_selectors:".clearing-close",init:!1,locked:!1},init:function(t,n,r){var i=this;return Foundation.inherit(this,"set_data get_data remove_data throttle data_options"),typeof n=="object"&&(r=e.extend(!0,this.settings,n)),typeof n!="string"?(e(this.scope).find("ul[data-clearing]").each(function(){var t=e(this),n=n||{},r=t.find("li"),s=i.get_data(t);!s&&r.length>0&&(n.$parent=t.parent(),i.set_data(t,e.extend({},i.settings,n,i.data_options(t))),i.assemble(t.find("li")),i.settings.init||i.events().swipe_events())}),this.settings.init):this[n].call(this,r)},events:function(){var n=this;return e(this.scope).on("click.fndtn.clearing","ul[data-clearing] li",function(t,r,i){var r=r||e(this),i=i||r,s=r.next("li"),o=n.get_data(r.parent()),u=e(t.target);t.preventDefault(),o||n.init(),i.hasClass("visible")&&r[0]===i[0]&&s.length>0&&n.is_open(r)&&(i=s,u=i.find("img")),n.open(u,r,i),n.update_paddles(i)}).on("click.fndtn.clearing",".clearing-main-next",function(e){this.nav(e,"next")}.bind(this)).on("click.fndtn.clearing",".clearing-main-prev",function(e){this.nav(e,"prev")}.bind(this)).on("click.fndtn.clearing",this.settings.close_selectors,function(e){Foundation.libs.clearing.close(e,this)}).on("keydown.fndtn.clearing",function(e){this.keydown(e)}.bind(this)),e(t).on("resize.fndtn.clearing",function(){this.resize()}.bind(this)),this.settings.init=!0,this},swipe_events:function(){var t=this;e(this.scope).on("touchstart.fndtn.clearing",".visible-img",function(t){t.touches||(t=t.originalEvent);var n={start_page_x:t.touches[0].pageX,start_page_y:t.touches[0].pageY,start_time:(new Date).getTime(),delta_x:0,is_scrolling:r};e(this).data("swipe-transition",n),t.stopPropagation()}).on("touchmove.fndtn.clearing",".visible-img",function(n){n.touches||(n=n.originalEvent);if(n.touches.length>1||n.scale&&n.scale!==1)return;var r=e(this).data("swipe-transition");typeof r=="undefined"&&(r={}),r.delta_x=n.touches[0].pageX-r.start_page_x,typeof r.is_scrolling=="undefined"&&(r.is_scrolling=!!(r.is_scrolling||Math.abs(r.delta_x)');var r=e("#foundationClearingHolder"),i=this.get_data(n),s=n.detach(),o={grid:'",viewing:i.templates.viewing},u='
'+o.viewing+o.grid+"
";return r.after(u).remove()},open:function(e,t,n){var r=n.closest(".clearing-assembled"),i=r.find("div").first(),s=i.find(".visible-img"),o=s.find("img").not(e);this.locked()||(o.attr("src",this.load(e)).css("visibility","hidden"),this.loaded(o,function(){o.css("visibility","visible"),r.addClass("clearing-blackout"),i.addClass("clearing-container"),s.show(),this.fix_height(n).caption(s.find(".clearing-caption"),e).center(o).shift(t,n,function(){n.siblings().removeClass("visible"),n.addClass("visible")})}.bind(this)))},close:function(t,n){t.preventDefault();var r=function(e){return/blackout/.test(e.selector)?e:e.closest(".clearing-blackout")}(e(n)),i,s;return n===t.target&&r&&(i=r.find("div").first(),s=i.find(".visible-img"),this.settings.prev_index=0,r.find("ul[data-clearing]").attr("style","").closest(".clearing-blackout").removeClass("clearing-blackout"),i.removeClass("clearing-container"),s.hide()),!1},is_open:function(e){return e.parent().attr("style").length>0},keydown:function(t){var n=e(".clearing-blackout").find("ul[data-clearing]");t.which===39&&this.go(n,"next"),t.which===37&&this.go(n,"prev"),t.which===27&&e("a.clearing-close").trigger("click")},nav:function(t,n){var r=e(".clearing-blackout").find("ul[data-clearing]");t.preventDefault(),this.go(r,n)},resize:function(){var t=e(".clearing-blackout .visible-img").find("img");t.length&&this.center(t)},fix_height:function(t){var n=t.parent().children(),r=this;return n.each(function(){var t=e(this),n=t.find("img");t.height()>r.outerHeight(n)&&t.addClass("fix-height")}).closest("ul").width(n.length*100+"%"),this},update_paddles:function(e){var t=e.closest(".carousel").siblings(".visible-img");e.next().length>0?t.find(".clearing-main-next").removeClass("disabled"):t.find(".clearing-main-next").addClass("disabled"),e.prev().length>0?t.find(".clearing-main-prev").removeClass("disabled"):t.find(".clearing-main-prev").addClass("disabled")},center:function(e){return this.rtl?e.css({marginRight:-(this.outerWidth(e)/2),marginTop:-(this.outerHeight(e)/2)}):e.css({marginLeft:-(this.outerWidth(e)/2),marginTop:-(this.outerHeight(e)/2)}),this},load:function(e){if(e[0].nodeName==="A")var t=e.attr("href");else var t=e.parent().attr("href");return this.preload(e),t?t:e.attr("src")},preload:function(e){this.img(e.closest("li").next()).img(e.closest("li").prev())},loaded:function(e,t){function n(){t()}function r(){this.one("load",n);if(/MSIE (\d+\.\d+);/.test(navigator.userAgent)){var e=this.attr("src"),t=e.match(/\?/)?"&":"?";t+="random="+(new Date).getTime(),this.attr("src",e+t)}}if(!e.attr("src")){n();return}e[0].complete||e[0].readyState===4?n():r.call(e)},img:function(e){if(e.length){var t=new Image,n=e.find("a");n.length?t.src=n.attr("href"):t.src=e.find("img").attr("src")}return this},caption:function(e,t){var n=t.data("caption");return n?e.text(n).show():e.text("").hide(),this},go:function(e,t){var n=e.find(".visible"),r=n[t]();r.length&&r.find("img").trigger("click",[n,r])},shift:function(e,t,n){var r=t.parent(),i=this.settings.prev_index||t.index(),s=this.direction(r,e,t),o=parseInt(r.css("left"),10),u=this.outerWidth(t),a;t.index()!==i&&!/skip/.test(s)?/left/.test(s)?(this.lock(),r.animate({left:o+u},300,this.unlock())):/right/.test(s)&&(this.lock(),r.animate({left:o-u},300,this.unlock())):/skip/.test(s)&&(a=t.index()-this.settings.up_count,this.lock(),a>0?r.animate({left:-(a*u)},300,this.unlock()):r.animate({left:0},300,this.unlock())),n()},direction:function(t,n,r){var i=t.find("li"),s=this.outerWidth(i)+this.outerWidth(i)/4,o=Math.floor(this.outerWidth(e(".clearing-container"))/s)-1,u=i.index(r),a;return this.settings.up_count=o,this.adjacent(this.settings.prev_index,u)?u>o&&u>this.settings.prev_index?a="right":u>o-1&&u<=this.settings.prev_index?a="left":a=!1:a="skip",this.settings.prev_index=u,a},adjacent:function(e,t){for(var n=t+1;n>=t-1;n--)if(n===e)return!0;return!1},lock:function(){this.settings.locked=!0},unlock:function(){this.settings.locked=!1},locked:function(){return this.settings.locked},outerHTML:function(e){return e.outerHTML||(new XMLSerializer).serializeToString(e)},off:function(){e(this.scope).off(".fndtn.clearing"),e(t).off(".fndtn.clearing"),this.remove_data(),this.settings.init=!1},reflow:function(){this.init()}}}(Foundation.zj,this,this.document),function(e,t,n){function i(e){return e}function s(e){return decodeURIComponent(e.replace(r," "))}var r=/\+/g,o=e.cookie=function(r,u,a){if(u!==n){a=e.extend({},o.defaults,a),u===null&&(a.expires=-1);if(typeof a.expires=="number"){var f=a.expires,l=a.expires=new Date;l.setDate(l.getDate()+f)}return u=o.json?JSON.stringify(u):String(u),t.cookie=[encodeURIComponent(r),"=",o.raw?u:encodeURIComponent(u),a.expires?"; expires="+a.expires.toUTCString():"",a.path?"; path="+a.path:"",a.domain?"; domain="+a.domain:"",a.secure?"; secure":""].join("")}var c=o.raw?i:s,h=t.cookie.split("; ");for(var p=0,d=h.length;p0&&(e(t.target).is("[data-dropdown-content]")||e.contains(r.first()[0],t.target))){t.stopPropagation();return}n.close.call(n,e("[data-dropdown-content]"))}),e(t).on("resize.fndtn.dropdown",n.throttle(function(){n.resize.call(n)},50)).trigger("resize"),this.settings.init=!0},close:function(t){var n=this;t.each(function(){e(this).hasClass(n.settings.activeClass)&&(e(this).css(Foundation.rtl?"right":"left","-99999px").removeClass(n.settings.activeClass),e(this).trigger("closed"))})},open:function(e,t){this.css(e.addClass(this.settings.activeClass),t),e.trigger("opened")},toggle:function(t){var n=e("#"+t.data("dropdown"));this.close.call(this,e("[data-dropdown-content]").not(n)),n.hasClass(this.settings.activeClass)?this.close.call(this,n):this.open.call(this,n,t)},resize:function(){var t=e("[data-dropdown-content].open"),n=e("[data-dropdown='"+t.attr("id")+"']");t.length&&n.length&&this.css(t,n)},css:function(n,r){if(/body/i.test(n.offsetParent()[0].nodeName)){var i=r.offset();i.top-=n.offsetParent().offset().top,i.left-=n.offsetParent().offset().left}else var i=r.position();if(this.small())n.css({position:"absolute",width:"95%",left:"2.5%","max-width":"none",top:i.top+this.outerHeight(r)});else{if(!Foundation.rtl&&e(t).width()>this.outerWidth(n)+r.offset().left)var s=i.left;else{n.hasClass("right")||n.addClass("right");var s=i.left-(this.outerWidth(n)-this.outerWidth(r))}n.attr("style","").css({position:"absolute",top:i.top+this.outerHeight(r),left:s})}return n},small:function(){return e(t).width()<768||e("html").hasClass("lt-ie9")},off:function(){e(this.scope).off(".fndtn.dropdown"),e("html, body").off(".fndtn.dropdown"),e(t).off(".fndtn.dropdown"),e("[data-dropdown-content]").off(".fndtn.dropdown"),this.settings.init=!1}}}(Foundation.zj,this,this.document),function(e,t,n,r){"use strict";Foundation.libs.forms={name:"forms",version:"4.1.6",cache:{},settings:{disable_class:"no-custom",last_combo:null},init:function(t,n,r){return typeof n=="object"&&e.extend(!0,this.settings,n),typeof n!="string"?(this.settings.init||this.events(),this.assemble(),this.settings.init):this[n].call(this,r)},assemble:function(){e('form.custom input[type="radio"]',e(this.scope)).not('[data-customforms="disabled"]').each(this.append_custom_markup),e('form.custom input[type="checkbox"]',e(this.scope)).not('[data-customforms="disabled"]').each(this.append_custom_markup),e("form.custom select",e(this.scope)).not('[data-customforms="disabled"]').not("[multiple=multiple]").each(this.append_custom_select)},events:function(){var r=this;e(this.scope).on("click.fndtn.forms","form.custom span.custom.checkbox",function(t){t.preventDefault(),t.stopPropagation(),r.toggle_checkbox(e(this))}).on("click.fndtn.forms","form.custom span.custom.radio",function(t){t.preventDefault(),t.stopPropagation(),r.toggle_radio(e(this))}).on("change.fndtn.forms",'form.custom select:not([data-customforms="disabled"])',function(t,n){r.refresh_custom_select(e(this),n)}).on("click.fndtn.forms","form.custom label",function(t){if(e(t.target).is("label")){var n=e("#"+r.escape(e(this).attr("for"))+':not([data-customforms="disabled"])'),i,s;n.length!==0&&(n.attr("type")==="checkbox"?(t.preventDefault(),i=e(this).find("span.custom.checkbox"),i.length==0&&(i=n.add(this).siblings("span.custom.checkbox").first()),r.toggle_checkbox(i)):n.attr("type")==="radio"&&(t.preventDefault(),s=e(this).find("span.custom.radio"),s.length==0&&(s=n.add(this).siblings("span.custom.radio").first()),r.toggle_radio(s)))}}).on("click.fndtn.forms","form.custom div.custom.dropdown a.current, form.custom div.custom.dropdown a.selector",function(t){var n=e(this),s=n.closest("div.custom.dropdown"),o=i(s,"select");s.hasClass("open")||e(r.scope).trigger("click"),t.preventDefault();if(!1===o.is(":disabled"))return s.toggleClass("open"),s.hasClass("open")?e(r.scope).on("click.fndtn.forms.customdropdown",function(){s.removeClass("open"),e(r.scope).off(".fndtn.forms.customdropdown")}):e(r.scope).on(".fndtn.forms.customdropdown"),!1}).on("click.fndtn.forms touchend.fndtn.forms","form.custom div.custom.dropdown li",function(t){var n=e(this),r=n.closest("div.custom.dropdown"),s=i(r,"select"),o=0;t.preventDefault(),t.stopPropagation();if(!e(this).hasClass("disabled")){e("div.dropdown").not(r).removeClass("open");var u=n.closest("ul").find("li.selected");u.removeClass("selected"),n.addClass("selected"),r.removeClass("open").find("a.current").text(n.text()),n.closest("ul").find("li").each(function(e){n[0]==this&&(o=e)}),s[0].selectedIndex=o,s.data("prevalue",u.html()),s.trigger("change")}}),e(t).on("keydown",function(t){var r=n.activeElement,i=Foundation.libs.forms,s=e(".custom.dropdown.open");if(s.length>0){t.preventDefault(),t.which===13&&s.find("li.selected").trigger("click"),t.which===27&&s.removeClass("open");if(t.which>=65&&t.which<=90){var o=i.go_to(s,t.which),u=s.find("li.selected");o&&(u.removeClass("selected"),i.scrollTo(o.addClass("selected"),300))}if(t.which===38){var u=s.find("li.selected"),a=u.prev(":not(.disabled)");a.length>0&&(a.parent()[0].scrollTop=a.parent().scrollTop()-i.outerHeight(a),u.removeClass("selected"),a.addClass("selected"))}else if(t.which===40){var u=s.find("li.selected"),o=u.next(":not(.disabled)");o.length>0&&(o.parent()[0].scrollTop=o.parent().scrollTop()+i.outerHeight(o),u.removeClass("selected"),o.addClass("selected"))}}}),this.settings.init=!0},go_to:function(e,t){var n=e.find("li"),r=n.length;if(r>0)for(var i=0;i').insertAfter(r)),s.toggleClass("checked",r.is(":checked")),s.toggleClass("disabled",r.is(":disabled"))},append_custom_select:function(t,n){var r=Foundation.libs.forms,i=e(n),s=i.next("div.custom.dropdown"),o=s.find("ul"),u=s.find(".current"),a=s.find(".selector"),f=i.find("option"),l=f.filter(":selected"),c=i.attr("class")?i.attr("class").split(" "):[],h=0,p="",d,v=!1;if(i.hasClass(r.settings.disable_class))return;if(s.length===0){var m=i.hasClass("small")?"small":i.hasClass("medium")?"medium":i.hasClass("large")?"large":i.hasClass("expand")?"expand":"";s=e('
    '),a=s.find(".selector"),o=s.find("ul"),p=f.map(function(){return"
  • "+e(this).html()+"
  • "}).get().join(""),o.append(p),v=s.prepend(''+l.html()+"").find(".current"),i.after(s).addClass("hidden-field")}else p=f.map(function(){return"
  • "+e(this).html()+"
  • "}).get().join(""),o.html("").append(p);r.assign_id(i,s),s.toggleClass("disabled",i.is(":disabled")),d=o.find("li"),r.cache[s.data("id")]=d.length,f.each(function(t){this.selected&&(d.eq(t).addClass("selected"),v&&v.html(e(this).html())),e(this).is(":disabled")&&d.eq(t).addClass("disabled")});if(!s.is(".small, .medium, .large, .expand")){s.addClass("open");var r=Foundation.libs.forms;r.hidden_fix.adjust(o),h=r.outerWidth(d)>h?r.outerWidth(d):h,Foundation.libs.forms.hidden_fix.reset(),s.removeClass("open")}},assign_id:function(e,t){var n=[+(new Date),Foundation.random_str(5)].join("-");e.attr("data-id",n),t.attr("data-id",n)},refresh_custom_select:function(t,n){var r=this,i=0,s=t.next(),o=t.find("option"),u=s.find("li");if(u.length!=this.cache[s.data("id")]||n)s.find("ul").html(""),o.each(function(){var t=e("
  • "+e(this).html()+"
  • ");s.find("ul").append(t)}),o.each(function(t){this.selected&&(s.find("li").eq(t).addClass("selected"),s.find(".current").html(e(this).html())),e(this).is(":disabled")&&s.find("li").eq(t).addClass("disabled")}),s.removeAttr("style").find("ul").removeAttr("style"),s.find("li").each(function(){s.addClass("open"),r.outerWidth(e(this))>i&&(i=r.outerWidth(e(this))),s.removeClass("open")}),u=s.find("li"),this.cache[s.data("id")]=u.length},toggle_checkbox:function(e){var t=e.prev(),n=t[0];!1===t.is(":disabled")&&(n.checked=n.checked?!1:!0,e.toggleClass("checked"),t.trigger("change"))},toggle_radio:function(e){var t=e.prev(),n=t.closest("form.custom"),r=t[0];!1===t.is(":disabled")&&(n.find('input[type="radio"][name="'+this.escape(t.attr("name"))+'"]').next().not(e).removeClass("checked"),e.hasClass("checked")||e.toggleClass("checked"),r.checked=e.hasClass("checked"),t.trigger("change"))},escape:function(e){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},hidden_fix:{tmp:[],hidden:null,adjust:function(t){var n=this;n.hidden=t.parents().andSelf().filter(":hidden"),n.hidden.each(function(){var t=e(this);n.tmp.push(t.attr("style")),t.css({visibility:"hidden",display:"block"})})},reset:function(){var t=this;t.hidden.each(function(n){var i=e(this),s=t.tmp[n];s===r?i.removeAttr("style"):i.attr("style",s)}),t.tmp=[],t.hidden=null}},off:function(){e(this.scope).off(".fndtn.forms")}};var i=function(t,n){var t=t.prev();while(t.length){if(t.is(n))return t;t=t.prev()}return e()}}(Foundation.zj,this,this.document),function(e,t,n,r){"use strict";Foundation.libs.joyride={name:"joyride",version:"4.1.2",defaults:{expose:!1,modal:!1,tipLocation:"bottom",nubPosition:"auto",scrollSpeed:300,timer:0,startTimerOnClick:!0,startOffset:0,nextButton:!0,tipAnimation:"fade",pauseAfter:[],exposed:[],tipAnimationFadeSpeed:300,cookieMonster:!1,cookieName:"joyride",cookieDomain:!1,cookieExpires:365,tipContainer:"body",postRideCallback:function(){},postStepCallback:function(){},preStepCallback:function(){},preRideCallback:function(){},postExposeCallback:function(){},template:{link:'×',timer:'
    ',tip:'
    ',wrapper:'
    ',button:'',modal:'
    ',expose:'
    ',exposeCover:'
    '}},settings:{},init:function(t,n,r){return this.scope=t||this.scope,Foundation.inherit(this,"throttle data_options scrollTo scrollLeft delay"),typeof n=="object"?e.extend(!0,this.settings,this.defaults,n):e.extend(!0,this.settings,this.defaults,r),typeof n!="string"?(this.settings.init||this.events(),this.settings.init):this[n].call(this,r)},events:function(){var n=this;e(this.scope).on("click.joyride",".joyride-next-tip, .joyride-modal-bg",function(e){e.preventDefault(),this.settings.$li.next().length<1?this.end():this.settings.timer>0?(clearTimeout(this.settings.automate),this.hide(),this.show(),this.startTimer()):(this.hide(),this.show())}.bind(this)).on("click.joyride",".joyride-close-tip",function(e){e.preventDefault(),this.end()}.bind(this)),e(t).on("resize.fndtn.joyride",n.throttle(function(){if(e("[data-joyride]").length>0&&n.settings.$next_tip){if(n.settings.exposed.length>0){var t=e(n.settings.exposed);t.each(function(){var t=e(this);n.un_expose(t),n.expose(t)})}n.is_phone()?n.pos_phone():n.pos_default(!1,!0)}},100)),this.settings.init=!0},start:function(){var t=this,n=e(this.scope).find("[data-joyride]"),r=["timer","scrollSpeed","startOffset","tipAnimationFadeSpeed","cookieExpires"],i=r.length;this.settings.init||this.init(),this.settings.$content_el=n,this.settings.$body=e(this.settings.tipContainer),this.settings.body_offset=e(this.settings.tipContainer).position(),this.settings.$tip_content=this.settings.$content_el.find("> li"),this.settings.paused=!1,this.settings.attempts=0,this.settings.tipLocationPatterns={top:["bottom"],bottom:[],left:["right","top","bottom"],right:["left","top","bottom"]},typeof e.cookie!="function"&&(this.settings.cookieMonster=!1);if(!this.settings.cookieMonster||this.settings.cookieMonster&&e.cookie(this.settings.cookieName)===null)this.settings.$tip_content.each(function(n){var s=e(this);e.extend(!0,t.settings,t.data_options(s));for(var o=i-1;o>=0;o--)t.settings[r[o]]=parseInt(t.settings[r[o]],10);t.create({$li:s,index:n})}),!this.settings.startTimerOnClick&&this.settings.timer>0?(this.show("init"),this.startTimer()):this.show("init")},resume:function(){this.set_li(),this.show()},tip_template:function(t){var n,r;return t.tip_class=t.tip_class||"",n=e(this.settings.template.tip).addClass(t.tip_class),r=e.trim(e(t.li).html())+this.button_text(t.button_text)+this.settings.template.link+this.timer_instance(t.index),n.append(e(this.settings.template.wrapper)),n.first().attr("data-index",t.index),e(".joyride-content-wrapper",n).append(r),n[0]},timer_instance:function(t){var n;return t===0&&this.settings.startTimerOnClick&&this.settings.timer>0||this.settings.timer===0?n="":n=this.outerHTML(e(this.settings.template.timer)[0]),n},button_text:function(t){return this.settings.nextButton?(t=e.trim(t)||"Next",t=this.outerHTML(e(this.settings.template.button).append(t)[0])):t="",t},create:function(t){var n=t.$li.attr("data-button")||t.$li.attr("data-text"),r=t.$li.attr("class"),i=e(this.tip_template({tip_class:r,index:t.index,button_text:n,li:t.$li}));e(this.settings.tipContainer).append(i)},show:function(t){var n=null;this.settings.$li===r||e.inArray(this.settings.$li.index(),this.settings.pauseAfter)===-1?(this.settings.paused?this.settings.paused=!1:this.set_li(t),this.settings.attempts=0,this.settings.$li.length&&this.settings.$target.length>0?(t&&(this.settings.preRideCallback(this.settings.$li.index(),this.settings.$next_tip),this.settings.modal&&this.show_modal()),this.settings.preStepCallback(this.settings.$li.index(),this.settings.$next_tip),this.settings.modal&&this.settings.expose&&this.expose(),this.settings.tipSettings=e.extend(this.settings,this.data_options(this.settings.$li)),this.settings.timer=parseInt(this.settings.timer,10),this.settings.tipSettings.tipLocationPattern=this.settings.tipLocationPatterns[this.settings.tipSettings.tipLocation],/body/i.test(this.settings.$target.selector)||this.scroll_to(),this.is_phone()?this.pos_phone(!0):this.pos_default(!0),n=this.settings.$next_tip.find(".joyride-timer-indicator"),/pop/i.test(this.settings.tipAnimation)?(n.width(0),this.settings.timer>0?(this.settings.$next_tip.show(),this.delay(function(){n.animate({width:n.parent().width()},this.settings.timer,"linear")}.bind(this),this.settings.tipAnimationFadeSpeed)):this.settings.$next_tip.show()):/fade/i.test(this.settings.tipAnimation)&&(n.width(0),this.settings.timer>0?(this.settings.$next_tip.fadeIn(this.settings.tipAnimationFadeSpeed).show(),this.delay(function(){n.animate({width:n.parent().width()},this.settings.timer,"linear")}.bind(this),this.settings.tipAnimationFadeSpeed)):this.settings.$next_tip.fadeIn(this.settings.tipAnimationFadeSpeed)),this.settings.$current_tip=this.settings.$next_tip):this.settings.$li&&this.settings.$target.length<1?this.show():this.end()):this.settings.paused=!0},is_phone:function(){return Modernizr?Modernizr.mq("only screen and (max-width: 767px)")||e(".lt-ie9").length>0:this.settings.$window.width()<767},hide:function(){this.settings.modal&&this.settings.expose&&this.un_expose(),this.settings.modal||e(".joyride-modal-bg").hide(),this.settings.$current_tip.hide(),this.settings.postStepCallback(this.settings.$li.index(),this.settings.$current_tip)},set_li:function(e){e?(this.settings.$li=this.settings.$tip_content.eq(this.settings.startOffset),this.set_next_tip(),this.settings.$current_tip=this.settings.$next_tip):(this.settings.$li=this.settings.$li.next(),this.set_next_tip()),this.set_target()},set_next_tip:function(){this.settings.$next_tip=e(".joyride-tip-guide[data-index='"+this.settings.$li.index()+"']"),this.settings.$next_tip.data("closed","")},set_target:function(){var t=this.settings.$li.attr("data-class"),r=this.settings.$li.attr("data-id"),i=function(){return r?e(n.getElementById(r)):t?e("."+t).first():e("body")};this.settings.$target=i()},scroll_to:function(){var n,r;n=e(t).height()/2,r=Math.ceil(this.settings.$target.offset().top-n+this.outerHeight(this.settings.$next_tip)),r>0&&this.scrollTo(e("html, body"),r,this.settings.scrollSpeed)},paused:function(){return e.inArray(this.settings.$li.index()+1,this.settings.pauseAfter)===-1},restart:function(){this.hide(),this.settings.$li=r,this.show("init")},pos_default:function(n,r){var i=Math.ceil(e(t).height()/2),s=this.settings.$next_tip.offset(),o=this.settings.$next_tip.find(".joyride-nub"),u=Math.ceil(this.outerWidth(o)/2),a=Math.ceil(this.outerHeight(o)/2),f=n||!1;f&&(this.settings.$next_tip.css("visibility","hidden"),this.settings.$next_tip.show()),typeof r=="undefined"&&(r=!1);if(!/body/i.test(this.settings.$target.selector)){if(this.bottom()){var l=this.settings.$target.offset().left;Foundation.rtl&&(l=this.settings.$target.offset().width-this.settings.$next_tip.width()+l),this.settings.$next_tip.css({top:this.settings.$target.offset().top+a+this.outerHeight(this.settings.$target),left:l}),this.nub_position(o,this.settings.tipSettings.nubPosition,"top")}else if(this.top()){var l=this.settings.$target.offset().left;Foundation.rtl&&(l=this.settings.$target.offset().width-this.settings.$next_tip.width()+l),this.settings.$next_tip.css({top:this.settings.$target.offset +().top-this.outerHeight(this.settings.$next_tip)-a,left:l}),this.nub_position(o,this.settings.tipSettings.nubPosition,"bottom")}else this.right()?(this.settings.$next_tip.css({top:this.settings.$target.offset().top,left:this.outerWidth(this.settings.$target)+this.settings.$target.offset().left+u}),this.nub_position(o,this.settings.tipSettings.nubPosition,"left")):this.left()&&(this.settings.$next_tip.css({top:this.settings.$target.offset().top,left:this.settings.$target.offset().left-this.outerWidth(this.settings.$next_tip)-u}),this.nub_position(o,this.settings.tipSettings.nubPosition,"right"));!this.visible(this.corners(this.settings.$next_tip))&&this.settings.attempts0&&arguments[0]instanceof e)i=arguments[0];else{if(!this.settings.$target||!!/body/i.test(this.settings.$target.selector))return!1;i=this.settings.$target}if(i.length<1)return t.console&&console.error("element not valid",i),!1;n=e(this.settings.template.expose),this.settings.$body.append(n),n.css({top:i.offset().top,left:i.offset().left,width:this.outerWidth(i,!0),height:this.outerHeight(i,!0)}),r=e(this.settings.template.exposeCover),s={zIndex:i.css("z-index"),position:i.css("position")},i.css("z-index",parseInt(n.css("z-index"))+1),s.position=="static"&&i.css("position","relative"),i.data("expose-css",s),r.css({top:i.offset().top,left:i.offset().left,width:this.outerWidth(i,!0),height:this.outerHeight(i,!0)}),this.settings.$body.append(r),n.addClass(o),r.addClass(o),i.data("expose",o),this.settings.postExposeCallback(this.settings.$li.index(),this.settings.$next_tip,i),this.add_exposed(i)},un_expose:function(){var n,r,i,s,o=!1;if(arguments.length>0&&arguments[0]instanceof e)r=arguments[0];else{if(!this.settings.$target||!!/body/i.test(this.settings.$target.selector))return!1;r=this.settings.$target}if(r.length<1)return t.console&&console.error("element not valid",r),!1;n=r.data("expose"),i=e("."+n),arguments.length>1&&(o=arguments[1]),o===!0?e(".joyride-expose-wrapper,.joyride-expose-cover").remove():i.remove(),s=r.data("expose-css"),s.zIndex=="auto"?r.css("z-index",""):r.css("z-index",s.zIndex),s.position!=r.css("position")&&(s.position=="static"?r.css("position",""):r.css("position",s.position)),r.removeData("expose"),r.removeData("expose-z-index"),this.remove_exposed(r)},add_exposed:function(t){this.settings.exposed=this.settings.exposed||[],t instanceof e||typeof t=="object"?this.settings.exposed.push(t[0]):typeof t=="string"&&this.settings.exposed.push(t)},remove_exposed:function(t){var n,r;t instanceof e?n=t[0]:typeof t=="string"&&(n=t),this.settings.exposed=this.settings.exposed||[],r=this.settings.exposed.length;for(var i=0;ia&&(a=u),[n.offset().topn.offset().left]},visible:function(e){var t=e.length;while(t--)if(e[t])return!1;return!0},nub_position:function(e,t,n){t==="auto"?e.addClass(n):e.addClass(t)},startTimer:function(){this.settings.$li.length?this.settings.automate=setTimeout(function(){this.hide(),this.show(),this.startTimer()}.bind(this),this.settings.timer):clearTimeout(this.settings.automate)},end:function(){this.settings.cookieMonster&&e.cookie(this.settings.cookieName,"ridden",{expires:this.settings.cookieExpires,domain:this.settings.cookieDomain}),this.settings.timer>0&&clearTimeout(this.settings.automate),this.settings.modal&&this.settings.expose&&this.un_expose(),this.settings.$next_tip.data("closed",!0),e(".joyride-modal-bg").hide(),this.settings.$current_tip.hide(),this.settings.postStepCallback(this.settings.$li.index(),this.settings.$current_tip),this.settings.postRideCallback(this.settings.$li.index(),this.settings.$current_tip),e(".joyride-tip-guide").remove()},outerHTML:function(e){return e.outerHTML||(new XMLSerializer).serializeToString(e)},off:function(){e(this.scope).off(".joyride"),e(t).off(".joyride"),e(".joyride-close-tip, .joyride-next-tip, .joyride-modal-bg").off(".joyride"),e(".joyride-tip-guide, .joyride-modal-bg").remove(),clearTimeout(this.settings.automate),this.settings={}}}}(Foundation.zj,this,this.document),function(e,t,n,r){"use strict";Foundation.libs.magellan={name:"magellan",version:"4.0.0",settings:{activeClass:"active"},init:function(t,n,r){return this.scope=t||this.scope,Foundation.inherit(this,"data_options"),typeof n=="object"&&e.extend(!0,this.settings,n),typeof n!="string"?(this.settings.init||(this.fixed_magellan=e("[data-magellan-expedition]"),this.set_threshold(),this.last_destination=e("[data-magellan-destination]").last(),this.events()),this.settings.init):this[n].call(this,r)},events:function(){var n=this;e(this.scope).on("arrival.fndtn.magellan","[data-magellan-arrival]",function(t){var r=e(this),i=r.closest("[data-magellan-expedition]"),s=i.attr("data-magellan-active-class")||n.settings.activeClass;r.closest("[data-magellan-expedition]").find("[data-magellan-arrival]").not(r).removeClass(s),r.addClass(s)}),this.fixed_magellan.on("update-position.fndtn.magellan",function(){var t=e(this)}).trigger("update-position"),e(t).on("resize.fndtn.magellan",function(){this.fixed_magellan.trigger("update-position")}.bind(this)).on("scroll.fndtn.magellan",function(){var r=e(t).scrollTop();n.fixed_magellan.each(function(){var t=e(this);typeof t.data("magellan-top-offset")=="undefined"&&t.data("magellan-top-offset",t.offset().top),typeof t.data("magellan-fixed-position")=="undefined"&&t.data("magellan-fixed-position",!1);var i=r+n.settings.threshold>t.data("magellan-top-offset"),s=t.attr("data-magellan-top-offset");t.data("magellan-fixed-position")!=i&&(t.data("magellan-fixed-position",i),i?t.css({position:"fixed",top:0}):t.css({position:"",top:""}),i&&typeof s!="undefined"&&s!=0&&t.css({position:"fixed",top:s+"px"}))})}),this.last_destination.length>0&&e(t).on("scroll.fndtn.magellan",function(r){var i=e(t).scrollTop(),s=i+e(t).height(),o=Math.ceil(n.last_destination.offset().top);e("[data-magellan-destination]").each(function(){var t=e(this),r=t.attr("data-magellan-destination"),u=t.offset().top-i;u<=n.settings.threshold&&e("[data-magellan-arrival='"+r+"']").trigger("arrival"),s>=e(n.scope).height()&&o>i&&o0?this.outerHeight(this.fixed_magellan,!0):0)},off:function(){e(this.scope).off(".fndtn.magellan")}}}(Foundation.zj,this,this.document),function(e,t,n,r){"use strict";Foundation.libs=Foundation.libs||{},Foundation.libs.orbit={name:"orbit",version:"4.1.0",settings:{timer_speed:1e4,animation_speed:500,bullets:!0,stack_on_small:!0,navigation_arrows:!0,slide_number:!0,container_class:"orbit-container",stack_on_small_class:"orbit-stack-on-small",next_class:"orbit-next",prev_class:"orbit-prev",timer_container_class:"orbit-timer",timer_paused_class:"paused",timer_progress_class:"orbit-progress",slides_container_class:"orbit-slides-container",bullets_container_class:"orbit-bullets",bullets_active_class:"active",slide_number_class:"orbit-slide-number",caption_class:"orbit-caption",active_slide_class:"active",orbit_transition_class:"orbit-transitioning"},init:function(t,n,r){var i=this;Foundation.inherit(i,"data_options"),typeof n=="object"&&e.extend(!0,i.settings,n),e("[data-orbit]",t).each(function(t,n){var r=e.extend(!0,{},i);r._init(t,n)})},_container_html:function(){var e=this;return'
    '},_bullets_container_html:function(t){var n=this,r=e('
      ');return t.each(function(t,i){var s=e('
    1. ');t===0&&s.addClass(n.settings.bullets_active_class),r.append(s)}),r},_slide_number_html:function(t,n){var r=this,i=e('
      ');return i.append(""+t+" of "+n+""),i},_timer_html:function(){var e=this;return typeof e.settings.timer_speed=="number"&&e.settings.timer_speed>0?'
      ':""},_next_html:function(){var e=this;return'Next '},_prev_html:function(){var e=this;return'Prev '},_init:function(t,n){var r=this,i=e(n),s=i.wrap(r._container_html()).parent(),o=i.children();e.extend(!0,r.settings,r.data_options(i)),r.settings.navigation_arrows&&(s.append(r._prev_html()),s.append(r._next_html())),i.addClass(r.settings.slides_container_class),r.settings.stack_on_small&&s.addClass(r.settings.stack_on_small_class),r.settings.slide_number&&s.append(r._slide_number_html(1,o.length)),s.append(r._timer_html()),r.settings.bullets&&s.after(r._bullets_container_html(o)),i.append(o.first().clone().attr("data-orbit-slide","")),i.prepend(o.last().clone().attr("data-orbit-slide","")),i.css("marginLeft","-100%"),o.first().addClass(r.settings.active_slide_class),r._init_events(i),r._init_dimensions(i),r._start_timer(i)},_init_events:function(i){var s=this,o=i.parent();e(t).on("load.fndtn.orbit",function(){i.height(""),i.height(i.height(o.height())),i.trigger("orbit:ready")}).on("resize.fndtn.orbit",function(){i.height(""),i.height(i.height(o.height()))}),e(n).on("click.fndtn.orbit","[data-orbit-link]",function(t){t.preventDefault();var n=e(t.currentTarget).attr("data-orbit-link"),r=i.find("[data-orbit-slide="+n+"]").first();r.length===1&&(s._reset_timer(i,!0),s._goto(i,r.index(),function(){}))}),o.siblings("."+s.settings.bullets_container_class).on("click.fndtn.orbit","[data-orbit-slide-number]",function(t){t.preventDefault(),s._reset_timer(i,!0),s._goto(i,e(t.currentTarget).data("orbit-slide-number"),function(){})}),o.on("orbit:after-slide-change.fndtn.orbit",function(e,t){var n=o.find("."+s.settings.slide_number_class);n.length===1&&n.replaceWith(s._slide_number_html(t.slide_number,t.total_slides))}).on("orbit:next-slide.fndtn.orbit click.fndtn.orbit","."+s.settings.next_class,function(e){e.preventDefault(),s._reset_timer(i,!0),s._goto(i,"next",function(){})}).on("orbit:prev-slide.fndtn.orbit click.fndtn.orbit","."+s.settings.prev_class,function(e){e.preventDefault(),s._reset_timer(i,!0),s._goto(i,"prev",function(){})}).on("orbit:toggle-play-pause.fndtn.orbit click.fndtn.orbit touchstart.fndtn.orbit","."+s.settings.timer_container_class,function(t){t.preventDefault();var n=e(t.currentTarget).toggleClass(s.settings.timer_paused_class),r=n.closest("."+s.settings.container_class).find("."+s.settings.slides_container_class);n.hasClass(s.settings.timer_paused_class)?s._stop_timer(r):s._start_timer(r)}).on("touchstart.fndtn.orbit",function(e){e.touches||(e=e.originalEvent);var t={start_page_x:e.touches[0].pageX,start_page_y:e.touches[0].pageY,start_time:(new Date).getTime(),delta_x:0,is_scrolling:r};o.data("swipe-transition",t),e.stopPropagation()}).on("touchmove.fndtn.orbit",function(e){e.touches||(e=e.originalEvent);if(e.touches.length>1||e.scale&&e.scale!==1)return;var t=o.data("swipe-transition");typeof t=="undefined"&&(t={}),t.delta_x=e.touches[0].pageX-t.start_page_x,typeof t.is_scrolling=="undefined"&&(t.is_scrolling=!!(t.is_scrolling||Math.abs(t.delta_x)").attr(n.extend(f(this),{type:"text"}))}e.removeAttr("name").data({"placeholder-password":!0,"placeholder-id":s}).bind("focus.placeholder",l),r.data({"placeholder-textinput":e,"placeholder-id":s}).before(e)}r=r.removeAttr("id").hide().prev().attr("id",s).show()}r.addClass("placeholder"),r[0].value=r.attr("placeholder")}else r.removeClass("placeholder")}var r="placeholder"in t.createElement("input"),i="placeholder"in t.createElement("textarea"),s=n.fn,o=n.valHooks,u,a;r&&i?(a=s.placeholder=function(){return this},a.input=a.textarea=!0):(a=s.placeholder=function(){var e=this;return e.filter((r?"textarea":":input")+"[placeholder]").not(".placeholder").bind({"focus.placeholder":l,"blur.placeholder":c}).data("placeholder-enabled",!0).trigger("blur.placeholder"),e},a.input=r,a.textarea=i,u={get:function(e){var t=n(e);return t.data("placeholder-enabled")&&t.hasClass("placeholder")?"":e.value},set:function(e,r){var i=n(e);return i.data("placeholder-enabled")?(r==""?(e.value=r,e!=t.activeElement&&c.call(e)):i.hasClass("placeholder")?l.call(e,!0,r)||(e.value=r):e.value=r,i):e.value=r}},r||(o.input=u),i||(o.textarea=u),n(function(){n(t).delegate("form","submit.placeholder",function(){var e=n(".placeholder",this).each(l);setTimeout(function(){e.each(c)},10)})}),n(e).bind("beforeunload.placeholder",function(){n(".placeholder").each(function(){this.value=""})}))}(this,document,Foundation.zj),function(e,t,n,r){"use strict";Foundation.libs.reveal={name:"reveal",version:"4.1.3",locked:!1,settings:{animation:"fadeAndPop",animationSpeed:250,closeOnBackgroundClick:!0,dismissModalClass:"close-reveal-modal",bgClass:"reveal-modal-bg",open:function(){},opened:function(){},close:function(){},closed:function(){},bg:e(".reveal-modal-bg"),css:{open:{opacity:0,visibility:"visible",display:"block"},close:{opacity:1,visibility:"hidden",display:"none"}}},init:function(t,n,r){return this.scope=t||this.scope,Foundation.inherit(this,"data_options delay"),typeof n=="object"?e.extend(!0,this.settings,n):typeof r!="undefined"&&e.extend(!0,this.settings,r),typeof n!="string"?(this.events(),this.settings.init):this[n].call(this,r)},events:function(){var t=this;return e(this.scope).off(".fndtn.reveal").on("click.fndtn.reveal","[data-reveal-id]",function(n){n.preventDefault(),t.locked||(t.locked=!0,t.open.call(t,e(this)))}).on("click.fndtn.reveal touchend.click.fndtn.reveal",this.close_targets(),function(n){n.preventDefault();if(!t.locked){var r=e.extend({},t.settings,t.data_options(e(".reveal-modal.open")));if(e(n.target)[0]===e("."+r.bgClass)[0]&&!r.closeOnBackgroundClick)return;t.locked=!0,t.close.call(t,e(this).closest(".reveal-modal"))}}).on("open.fndtn.reveal",".reveal-modal",this.settings.open).on("opened.fndtn.reveal",".reveal-modal",this.settings.opened).on("opened.fndtn.reveal",".reveal-modal",this.open_video).on("close.fndtn.reveal",".reveal-modal",this.settings.close).on("closed.fndtn.reveal",".reveal-modal",this.settings.closed).on("closed.fndtn.reveal",".reveal-modal",this.close_video),!0},open:function(t){if(t)var n=e("#"+t.data("reveal-id"));else var n=e(this.scope);if(!n.hasClass("open")){var r=e(".reveal-modal.open");typeof n.data("css-top")=="undefined"&&n.data("css-top",parseInt(n.css("top"),10)).data("offset",this.cache_offset(n)),n.trigger("open"),r.length<1&&this.toggle_bg(n),this.hide(r,this.settings.css.close),this.show(n,this.settings.css.open)}},close:function(t){var t=t||e(this.scope),n=e(".reveal-modal.open");n.length>0&&(this.locked=!0,t.trigger("close"),this.toggle_bg(t),this.hide(n,this.settings.css.close))},close_targets:function(){var e="."+this.settings.dismissModalClass;return this.settings.closeOnBackgroundClick?e+", ."+this.settings.bgClass:e},toggle_bg:function(t){e(".reveal-modal-bg").length===0&&(this.settings.bg=e("
      ",{"class":this.settings.bgClass}).appendTo("body")),this.settings.bg.filter(":visible").length>0?this.hide(this.settings.bg):this.show(this.settings.bg)},show:function(n,r){if(r){if(/pop/i.test(this.settings.animation)){r.top=e(t).scrollTop()-n.data("offset")+"px";var i={top:e(t).scrollTop()+n.data("css-top")+"px",opacity:1};return this.delay(function(){return n.css(r).animate(i,this.settings.animationSpeed,"linear",function(){this.locked=!1,n.trigger("opened")}.bind(this)).addClass("open")}.bind(this),this.settings.animationSpeed/2)}if(/fade/i.test(this.settings.animation)){var i={opacity:1};return this.delay(function(){return n.css(r).animate(i,this.settings.animationSpeed,"linear",function(){this.locked=!1,n.trigger("opened")}.bind(this)).addClass("open")}.bind(this),this.settings.animationSpeed/2)}return n.css(r).show().css({opacity:1}).addClass("open").trigger("opened")}return/fade/i.test(this.settings.animation)?n.fadeIn(this.settings.animationSpeed/2):n.show()},hide:function(n,r){if(r){if(/pop/i.test(this.settings.animation)){var i={top:-e(t).scrollTop()-n.data("offset")+"px",opacity:0};return this.delay(function(){return n.animate(i,this.settings.animationSpeed,"linear",function(){this.locked=!1,n.css(r).trigger("closed")}.bind(this)).removeClass("open")}.bind(this),this.settings.animationSpeed/2)}if(/fade/i.test(this.settings.animation)){var i={opacity:0};return this.delay(function(){return n.animate(i,this.settings.animationSpeed,"linear",function(){this.locked=!1,n.css(r).trigger("closed")}.bind(this)).removeClass("open")}.bind(this),this.settings.animationSpeed/2)}return n.hide().css(r).removeClass("open").trigger("closed")}return/fade/i.test(this.settings.animation)?n.fadeOut(this.settings.animationSpeed/2):n.hide()},close_video:function(t){var n=e(this).find(".flex-video"),r=n.find("iframe");r.length>0&&(r.attr("data-src",r[0].src),r.attr("src","about:blank"),n.fadeOut(100).hide())},open_video:function(t){var n=e(this).find(".flex-video"),r=n.find("iframe");if(r.length>0){var i=r.attr("data-src");typeof i=="string"&&(r[0].src=r.attr("data-src")),n.show().fadeIn(100)}},cache_offset:function(e){var t=e.show().height()+parseInt(e.css("top"),10);return e.hide(),t},off:function(){e(this.scope).off(".fndtn.reveal")}}}(Foundation.zj,this,this.document),function(e,t,n,r){"use strict";Foundation.libs.section={name:"section",version:"4.1.3",settings:{deep_linking:!1,one_up:!0,section_selector:"[data-section]",region_selector:"section, .section, [data-section-region]",title_selector:".title, [data-section-title]",active_region_selector:"section.active, .section.active, .active[data-section-region]",content_selector:".content, [data-section-content]",nav_selector:'[data-section="vertical-nav"], [data-section="horizontal-nav"]',callback:function(){}},init:function(t,n,r){var i=this;return Foundation.inherit(this,"throttle data_options position_right offset_right"),typeof n=="object"&&e.extend(!0,i.settings,n),typeof n!="string"?(this.set_active_from_hash(),this.events(),!0):this[n].call(this,r)},events:function(){var r=this;e(this.scope).on("click.fndtn.section","[data-section] .title, [data-section] [data-section-title]",function(t){var n=e(this),i=n.closest(r.settings.section_selector);r.toggle_active.call(this,t,r),r.reflow()}),e(t).on("resize.fndtn.section",r.throttle(function(){r.resize.call(this)},30)).on("hashchange",function(){r.settings.toggled||(r.set_active_from_hash(),e(this).trigger("resize"))}).trigger("resize"),e(n).on("click.fndtn.section",function(t){e(t.target).closest(r.settings.title_selector).length<1&&e(r.settings.nav_selector).children(r.settings.region_selector).removeClass("active").attr("style","")})},toggle_active:function(t,n){var r=e(this),n=Foundation.libs.section,i=r.closest(n.settings.region_selector),s=r.siblings(n.settings.content_selector),o=i.parent(),u=e.extend({},n.settings,n.data_options(o)),a=o.children(n.settings.active_region_selector);n.settings.toggled=!0,!u.deep_linking&&s.length>0&&t.preventDefault();if(i.hasClass("active"))(n.small(o)||n.is_vertical_nav(o)||n.is_horizontal_nav(o)||n.is_accordion(o))&&(a[0]!==i[0]||a[0]===i[0]&&!u.one_up)&&i.removeClass("active").attr("style","");else{var a=o.children(n.settings.active_region_selector),f=n.outerHeight(i.children(n.settings.title_selector));if(n.small(o)||u.one_up)n.small(o)?a.attr("style",""):a.attr("style","visibility: hidden; padding-top: "+f+"px;");n.small(o)?i.attr("style",""):i.css("padding-top",f),i.addClass("active"),a.length>0&&a.removeClass("active").attr("style",""),n.is_vertical_tabs(o)&&(s.css("display","block"),a!==null&&a.children(n.settings.content_selector).css("display","none"))}setTimeout(function(){n.settings.toggled=!1},300),u.callback()},resize:function(){var t=Foundation.libs.section,n=e(t.settings.section_selector);n.each(function(){var n=e(this),r=n.children(t.settings.active_region_selector),i=e.extend({},t.settings,t.data_options(n));if(r.length>1)r.not(":first").removeClass("active").attr("style","");else if(r.length<1&&!t.is_vertical_nav(n)&&!t.is_horizontal_nav(n)&&!t.is_accordion(n)){var s=n.children(t.settings.region_selector).first();(i.one_up||!t.small(n))&&s.addClass("active"),t.small(n)?s.attr("style",""):s.css("padding-top",t.outerHeight(s.children(t.settings.title_selector)))}t.small(n)?r.attr("style",""):r.css("padding-top",t.outerHeight(r.children(t.settings.title_selector))),t.position_titles(n),t.is_horizontal_nav(n)&&!t.small(n)||t.is_vertical_tabs(n)?t.position_content(n):t.position_content(n,!1)})},is_vertical_nav:function(e){return/vertical-nav/i.test(e.data("section"))},is_horizontal_nav:function(e){return/horizontal-nav/i.test(e.data("section"))},is_accordion:function(e){return/accordion/i.test(e.data("section"))},is_horizontal_tabs:function(e){return/^tabs$/i.test(e.data("section"))},is_vertical_tabs:function(e){return/vertical-tabs/i.test(e.data("section"))},set_active_from_hash:function(){var n=t.location.hash.substring(1),r=e("[data-section]"),i=this;r.each(function(){var t=e(this),r=e.extend({},i.settings,i.data_options(t));if(n.length>0&&r.deep_linking){var s=t.children(i.settings.region_selector).attr("style","").removeClass("active");s.map(function(){return e(this).children('.content[data-slug="'+n+'"], [data-section-content][data-slug="'+n+'"]')}).parent().addClass("active")}})},position_titles:function(t,n){var r=this,i=t.children(this.settings.region_selector).map(function(){return e(this).children(r.settings.title_selector)}),s=0,o=0,r=this;typeof n=="boolean"?i.attr("style",""):i.each(function(){r.is_vertical_tabs(t)?(e(this).css("top",o),o+=r.outerHeight(e(this))):(r.rtl?e(this).css("right",s):e(this).css("left",s),s+=r.outerWidth(e(this)))})},position_content:function(t,n){var r=this,i=t.children(r.settings.region_selector),s=i.map(function(){return e(this).children(r.settings.title_selector)}),o=i.map(function(){return e(this).children(r.settings.content_selector)});if(typeof n=="boolean")o.attr("style",""),t.attr("style","");else if(r.is_vertical_tabs(t)&&!r.small(t)){var u=0,a=Number.MAX_VALUE,f=null;i.each(function(){var n=e(this),i=n.children(r.settings.title_selector),s=n.children(r.settings.content_selector),o=0;f=r.outerWidth(i),o=r.outerWidth(t)-f,o'+t+''}},cache:{},init:function(t,n,r){var i=this;this.scope=t||this.scope,typeof n=="object"&&e.extend(!0,this.settings,n);if(typeof n=="string")return this[n].call(this,r);Modernizr.touch?e(this.scope).on("click.fndtn.tooltip touchstart.fndtn.tooltip touchend.fndtn.tooltip","[data-tooltip]",function(t){t.preventDefault(),e(i.settings.tooltipClass).hide(),i.showOrCreateTip(e(this))}).on("click.fndtn.tooltip touchstart.fndtn.tooltip touchend.fndtn.tooltip",this.settings.tooltipClass,function(t){t.preventDefault(),e(this).fadeOut(150)}):e(this.scope).on("mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip","[data-tooltip]",function(t){var n=e(this);t.type==="mouseover"||t.type==="mouseenter"?i.showOrCreateTip(n):(t.type==="mouseout"||t.type==="mouseleave")&&i.hide(n)})},showOrCreateTip:function(e){var t=this.getTip(e);return t&&t.length>0?this.show(e):this.create(e)},getTip:function(t){var n=this.selector(t),r=null;return n&&(r=e("span[data-selector="+n+"]"+this.settings.tooltipClass)),typeof r=="object"?r:!1},selector:function(e){var t=e.attr("id"),n=e.attr("data-tooltip")||e.attr("data-selector");return(t&&t.length<1||!t)&&typeof n!="string"&&(n="tooltip"+Math.random().toString(36).substring(7),e.attr("data-selector",n)),t&&t.length>0?t:n},create:function(t){var n=e(this.settings.tipTemplate(this.selector(t),e("
      ").html(t.attr("title")).html())),r=this.inheritable_classes(t);n.addClass(r).appendTo(this.settings.appendTo),Modernizr.touch&&n.append('tap to close '),t.removeAttr("title").attr("title",""),this.show(t)},reposition:function(n,r,i){var s,o,u,a,f,l;r.css("visibility","hidden").show(),s=n.data("width"),o=r.children(".nub"),u=this.outerHeight(o),a=this.outerHeight(o),l=function(e,t,n,r,i,s){return e.css({top:t?t:"auto",bottom:r?r:"auto",left:i?i:"auto",right:n?n:"auto",width:s?s:"auto"}).end()},l(r,n.offset().top+this.outerHeight(n)+10,"auto","auto",n.offset().left,s);if(e(t).width()<767)l(r,n.offset().top+this.outerHeight(n)+10,"auto","auto",12.5,e(this.scope).width()),r.addClass("tip-override"),l(o,-u,"auto","auto",n.offset().left);else{var c=n.offset().left;Foundation.rtl&&(c=n.offset().left+n.offset().width-this.outerWidth(r)),l(r,n.offset().top+this.outerHeight(n)+10,"auto","auto",c,s),r.removeClass("tip-override"),i&&i.indexOf("tip-top")>-1?l(r,n.offset().top-this.outerHeight(r),"auto","auto",c,s).removeClass("tip-override"):i&&i.indexOf("tip-left")>-1?l(r,n.offset().top+this.outerHeight(n)/2-u*2.5,"auto","auto",n.offset().left-this.outerWidth(r)-u,s).removeClass("tip-override"):i&&i.indexOf("tip-right")>-1&&l(r,n.offset().top+this.outerHeight(n)/2-u*2.5,"auto","auto",n.offset +().left+this.outerWidth(n)+u,s).removeClass("tip-override")}r.css("visibility","visible").hide()},inheritable_classes:function(t){var n=["tip-top","tip-left","tip-bottom","tip-right","noradius"].concat(this.settings.additionalInheritableClasses),r=t.attr("class"),i=r?e.map(r.split(" "),function(t,r){if(e.inArray(t,n)!==-1)return t}).join(" "):"";return e.trim(i)},show:function(e){var t=this.getTip(e);this.reposition(e,t,e.attr("class")),t.fadeIn(150)},hide:function(e){var t=this.getTip(e);t.fadeOut(150)},reload:function(){var t=e(this);return t.data("fndtn-tooltips")?t.foundationTooltips("destroy").foundationTooltips("init"):t.foundationTooltips("init")},off:function(){e(this.scope).off(".fndtn.tooltip"),e(this.settings.tooltipClass).each(function(t){e("[data-tooltip]").get(t).attr("title",e(this).text())}).remove()}}}(Foundation.zj,this,this.document),function(e,t,n,r){"use strict";Foundation.libs.topbar={name:"topbar",version:"4.1.2",settings:{index:0,stickyClass:"sticky",custom_back_text:!0,back_text:"Back",init:!1},init:function(n,r,i){var s=this;return typeof r=="object"&&e.extend(!0,this.settings,r),typeof r!="string"?(e(".top-bar").each(function(){s.settings.$w=e(t),s.settings.$topbar=e(this),s.settings.$section=s.settings.$topbar.find("section"),s.settings.$titlebar=s.settings.$topbar.children("ul").first(),s.settings.$topbar.data("index",0);var n=e("
      ").insertAfter(s.settings.$topbar);s.settings.breakPoint=n.width(),n.remove(),s.assemble(),s.settings.$topbar.parent().hasClass("fixed")&&e("body").css("padding-top",s.outerHeight(s.settings.$topbar))}),s.settings.init||this.events(),this.settings.init):this[r].call(this,i)},events:function(){var n=this,r=this.outerHeight(e(".top-bar"));e(this.scope).on("click.fndtn.topbar",".top-bar .toggle-topbar",function(i){var s=e(this).closest(".top-bar"),o=s.find("section, .section"),u=s.children("ul").first();s.data("height")||n.largestUL(),i.preventDefault(),n.breakpoint()&&s.toggleClass("expanded").css("min-height",""),s.hasClass("expanded")?s.parent().hasClass("fixed")&&(s.parent().removeClass("fixed"),s.addClass("fixed"),e("body").css("padding-top","0"),t.scrollTo(0,0)):(n.rtl?(o.css({right:"0%"}),o.find(">.name").css({right:"100%"})):(o.css({left:"0%"}),o.find(">.name").css({left:"100%"})),o.find("li.moved").removeClass("moved"),s.data("index",0),s.hasClass("fixed")&&(s.parent().addClass("fixed"),s.removeClass("fixed"),e("body").css("padding-top",r)))}).on("click.fndtn.topbar",".top-bar .has-dropdown>a",function(t){var r=e(this).closest(".top-bar"),i=r.find("section, .section"),s=r.children("ul").first(),o=e(this).next(".dropdown").outerHeight();(Modernizr.touch||n.breakpoint())&&t.preventDefault();if(n.breakpoint()){var u=e(this),a=u.closest("li");r.data("index",r.data("index")+1),a.addClass("moved"),n.rtl?(i.css({right:-(100*r.data("index"))+"%"}),i.find(">.name").css({right:100*r.data("index")+"%"})):(i.css({left:-(100*r.data("index"))+"%"}),i.find(">.name").css({left:100*r.data("index")+"%"})),e(".top-bar").css("min-height",o),u.siblings("ul").height(r.data("height")+n.outerHeight(s,!0)),r.css("min-height",r.data("height")+n.outerHeight(s,!0)*2)}}),e(t).on("resize.fndtn.topbar",function(){n.breakpoint()||e(".top-bar").css("min-height","").removeClass("expanded")}.bind(this)),e(this.scope).on("click.fndtn",".top-bar .has-dropdown .back",function(t){t.preventDefault();var r=e(this),i=r.closest(".top-bar"),s=i.find("section, .section"),o=r.closest("li.moved"),u=o.parent();i.data("index",i.data("index")-1),n.rtl?(s.css({right:-(100*i.data("index"))+"%"}),s.find(">.name").css({right:100*i.data("index")+"%"})):(s.css({left:-(100*i.data("index"))+"%"}),s.find(">.name").css({left:100*i.data("index")+"%"})),i.data("index")===0&&i.css("min-height",0),setTimeout(function(){o.removeClass("moved")},300)})},breakpoint:function(){return e(t).width()<=this.settings.breakPoint||e("html").hasClass("lt-ie9")},assemble:function(){var t=this;this.settings.$section.detach(),this.settings.$section.find(".has-dropdown>a").each(function(){var n=e(this),r=n.siblings(".dropdown"),i=e('
    2. ');t.settings.custom_back_text==1?i.find("h5>a").html("« "+t.settings.back_text):i.find("h5>a").html("« "+n.html()),r.prepend(i)}),this.settings.$section.appendTo(this.settings.$topbar),this.sticky()},largestUL:function(){var t=this.settings.$topbar.find("section ul ul"),n=t.first(),r=0,i=this;t.each(function(){e(this).children("li").length>n.children("li").length&&(n=e(this))}),n.children("li").each(function(){r+=i.outerHeight(e(this),!0)}),this.settings.$topbar.data("height",r)},sticky:function(){var n="."+this.settings.stickyClass;if(e(n).length>0){var r=e(n).length?e(n).offset().top:0,i=e(t),s=this.outerHeight(e(".top-bar"));i.scroll(function(){i.scrollTop()>=r?(e(n).addClass("fixed"),e("body").css("padding-top",s)):i.scrollTop() type pairs + class2type = {}, + + // List of deleted data cache ids, so we can reuse them + core_deletedIds = [], + + core_version = "1.9.1", + + // Save a reference to some core methods + core_concat = core_deletedIds.concat, + core_push = core_deletedIds.push, + core_slice = core_deletedIds.slice, + core_indexOf = core_deletedIds.indexOf, + core_toString = class2type.toString, + core_hasOwn = class2type.hasOwnProperty, + core_trim = core_version.trim, + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Used for matching numbers + core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, + + // Used for splitting on whitespace + core_rnotwhite = /\S+/g, + + // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE) + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, + rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }, + + // The ready event handler + completed = function( event ) { + + // readyState === "complete" is good enough for us to call the dom ready in oldIE + if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { + detach(); + jQuery.ready(); + } + }, + // Clean-up method for dom ready events + detach = function() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + + } else { + document.detachEvent( "onreadystatechange", completed ); + window.detachEvent( "onload", completed ); + } + }; + +jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: core_version, + + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + + // scripts is true for back-compat + jQuery.merge( this, jQuery.parseHTML( + match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return core_slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; + }, + + slice: function() { + return this.pushStack( core_slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: core_push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var src, copyIsArray, copy, name, options, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger("ready").off("ready"); + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + isWindow: function( obj ) { + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + if ( obj == null ) { + return String( obj ); + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[ core_toString.call(obj) ] || "object" : + typeof obj; + }, + + isPlainObject: function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !core_hasOwn.call(obj, "constructor") && + !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || core_hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + // data: string of html + // context (optional): If specified, the fragment will be created in this context, defaults to document + // keepScripts (optional): If true, will include scripts passed in the html string + parseHTML: function( data, context, keepScripts ) { + if ( !data || typeof data !== "string" ) { + return null; + } + if ( typeof context === "boolean" ) { + keepScripts = context; + context = false; + } + context = context || document; + + var parsed = rsingleTag.exec( data ), + scripts = !keepScripts && []; + + // Single tag + if ( parsed ) { + return [ context.createElement( parsed[1] ) ]; + } + + parsed = jQuery.buildFragment( [ data ], context, scripts ); + if ( scripts ) { + jQuery( scripts ).remove(); + } + return jQuery.merge( [], parsed.childNodes ); + }, + + parseJSON: function( data ) { + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + if ( data === null ) { + return data; + } + + if ( typeof data === "string" ) { + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + if ( data ) { + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + } + } + } + + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + if ( !data || typeof data !== "string" ) { + return null; + } + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && jQuery.trim( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var value, + i = 0, + length = obj.length, + isArray = isArraylike( obj ); + + if ( args ) { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } + } + + return obj; + }, + + // Use native String.trim function wherever possible + trim: core_trim && !core_trim.call("\uFEFF\xA0") ? + function( text ) { + return text == null ? + "" : + core_trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArraylike( Object(arr) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + core_push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( core_indexOf ) { + return core_indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var l = second.length, + i = first.length, + j = 0; + + if ( typeof l === "number" ) { + for ( ; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var retVal, + ret = [], + i = 0, + length = elems.length; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, + i = 0, + length = elems.length, + isArray = isArraylike( elems ), + ret = []; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return core_concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var args, proxy, tmp; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = core_slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + // Multifunctional method to get and set values of a collection + // The value/s can optionally be executed if it's a function + access: function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; + }, + + now: function() { + return ( new Date() ).getTime(); + } +}); + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + + // If IE event model is used + } else { + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", completed ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", completed ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch(e) {} + + if ( top && top.doScroll ) { + (function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch(e) { + return setTimeout( doScrollCheck, 50 ); + } + + // detach all dom ready events + detach(); + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + return readyList.promise( obj ); +}; + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { + var length = obj.length, + type = jQuery.type( obj ); + + if ( jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || type !== "function" && + ( length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj ); +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // First callback to fire (used internally by add and fireWith) + firingStart, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + }, + // Remove all callbacks from the list + empty: function() { + list = []; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( list && ( !fired || stack ) ) { + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var action = tuple[ 0 ], + fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ](function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); + } + }); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[0] ] = function() { + deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = core_slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; + if( values === progressValues ) { + deferred.notifyWith( contexts, values ); + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); +jQuery.support = (function() { + + var support, all, a, + input, select, fragment, + opt, eventName, isSupported, i, + div = document.createElement("div"); + + // Setup + div.setAttribute( "className", "t" ); + div.innerHTML = "
      a"; + + // Support tests won't run in some limited or non-browser environments + all = div.getElementsByTagName("*"); + a = div.getElementsByTagName("a")[ 0 ]; + if ( !all || !a || !all.length ) { + return {}; + } + + // First batch of tests + select = document.createElement("select"); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName("input")[ 0 ]; + + a.style.cssText = "top:1px;float:left;opacity:.5"; + support = { + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: div.firstChild.nodeType === 3, + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName("tbody").length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName("link").length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: a.getAttribute("href") === "/a", + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.5/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere) + checkOn: !!input.value, + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: opt.selected, + + // Tests for enctype support on a form (#6743) + enctype: !!document.createElement("form").enctype, + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", + + // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode + boxModel: document.compatMode === "CSS1Compat", + + // Will be defined later + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true, + boxSizingReliable: true, + pixelPosition: false + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Support: IE<9 + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + // Check if we can trust getAttribute("value") + input = document.createElement("input"); + input.setAttribute( "value", "" ); + support.input = input.getAttribute( "value" ) === ""; + + // Check if an input maintains its value after becoming a radio + input.value = "t"; + input.setAttribute( "type", "radio" ); + support.radioValue = input.value === "t"; + + // #11217 - WebKit loses check when the name is after the checked attribute + input.setAttribute( "checked", "t" ); + input.setAttribute( "name", "t" ); + + fragment = document.createDocumentFragment(); + fragment.appendChild( input ); + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<9 + // Opera does not clone events (and typeof div.attachEvent === undefined). + // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() + if ( div.attachEvent ) { + div.attachEvent( "onclick", function() { + support.noCloneEvent = false; + }); + + div.cloneNode( true ).click(); + } + + // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event) + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP), test/csp.php + for ( i in { submit: true, change: true, focusin: true }) { + div.setAttribute( eventName = "on" + i, "t" ); + + support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false; + } + + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, marginDiv, tds, + divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;", + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + container = document.createElement("div"); + container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px"; + + body.appendChild( container ).appendChild( div ); + + // Support: IE8 + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + div.innerHTML = "
      t
      "; + tds = div.getElementsByTagName("td"); + tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none"; + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Support: IE8 + // Check if empty table cells still have offsetWidth/Height + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Check box-sizing and margin behavior + div.innerHTML = ""; + div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"; + support.boxSizing = ( div.offsetWidth === 4 ); + support.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 ); + + // Use window.getComputedStyle because jsdom on node.js will break without it. + if ( window.getComputedStyle ) { + support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; + support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. (#3333) + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + marginDiv = div.appendChild( document.createElement("div") ); + marginDiv.style.cssText = div.style.cssText = divReset; + marginDiv.style.marginRight = marginDiv.style.width = "0"; + div.style.width = "1px"; + + support.reliableMarginRight = + !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); + } + + if ( typeof div.style.zoom !== core_strundefined ) { + // Support: IE<8 + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + div.innerHTML = ""; + div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1"; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 ); + + // Support: IE6 + // Check if elements with layout shrink-wrap their children + div.style.display = "block"; + div.innerHTML = "
      "; + div.firstChild.style.width = "5px"; + support.shrinkWrapBlocks = ( div.offsetWidth !== 3 ); + + if ( support.inlineBlockNeedsLayout ) { + // Prevent IE 6 from affecting layout for positioned elements #11048 + // Prevent IE from shrinking the body in IE 7 mode #12869 + // Support: IE<8 + body.style.zoom = 1; + } + } + + body.removeChild( container ); + + // Null elements to avoid leaks in IE + container = div = tds = marginDiv = null; + }); + + // Null elements to avoid leaks in IE + all = select = fragment = opt = a = input = null; + + return support; +})(); + +var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, + rmultiDash = /([A-Z])/g; + +function internalData( elem, name, data, pvt /* Internal Use Only */ ){ + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, ret, + internalKey = jQuery.expando, + getByName = typeof name === "string", + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ internalKey ] = id = core_deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // Avoids exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( getByName ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; +} + +function internalRemoveData( elem, name, pvt ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var i, l, thisCache, + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } else { + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = name.concat( jQuery.map( name, jQuery.camelCase ) ); + } + + for ( i = 0, l = name.length; i < l; i++ ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + } else if ( jQuery.support.deleteExpando || cache != cache.window ) { + delete cache[ id ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } +} + +jQuery.extend({ + cache: {}, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data ) { + return internalData( elem, name, data ); + }, + + removeData: function( elem, name ) { + return internalRemoveData( elem, name ); + }, + + // For internal use only. + _data: function( elem, name, data ) { + return internalData( elem, name, data, true ); + }, + + _removeData: function( elem, name ) { + return internalRemoveData( elem, name, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + // Do not set data on non-element because it will not be cleared (#8335). + if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) { + return false; + } + + var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ]; + + // nodes accept data unless otherwise specified; rejection can be conditional + return !noData || noData !== true && elem.getAttribute("classid") === noData; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var attrs, name, + elem = this[0], + i = 0, + data = null; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + attrs = elem.attributes; + for ( ; i < attrs.length; i++ ) { + name = attrs[i].name; + + if ( !name.indexOf( "data-" ) ) { + name = jQuery.camelCase( name.slice(5) ); + + dataAttr( elem, name, data[ name ] ); + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + return jQuery.access( this, function( value ) { + + if ( value === undefined ) { + // Try to fetch any internally stored data first + return elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null; + } + + this.each(function() { + jQuery.data( this, key, value ); + }); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + hooks.cur = fn; + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, key ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var nodeHook, boolHook, + rclass = /[\t\r\n]/g, + rreturn = /\r/g, + rfocusable = /^(?:input|select|textarea|button|object)$/i, + rclickable = /^(?:a|area)$/i, + rboolean = /^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i, + ruseDefault = /^(?:checked|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + getSetInput = jQuery.support.input; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call( this, j, this.className ) ); + }); + } + + if ( proceed ) { + // The disjunction here is for better compressibility (see removeClass) + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + " " + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + elem.className = jQuery.trim( cur ); + + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = arguments.length === 0 || typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call( this, j, this.className ) ); + }); + } + if ( proceed ) { + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + "" + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + elem.className = value ? jQuery.trim( cur ) : ""; + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.match( core_rnotwhite ) || []; + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space separated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + // Toggle whole class name + } else if ( type === core_strundefined || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // If the element has a class name or if we're passed "false", + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var ret, hooks, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var val, + self = jQuery(this); + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, option, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one" || index < 0, + values = one ? null : [], + max = one ? index + 1 : options.length, + i = index < 0 ? + max : + one ? index : 0; + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // oldIE doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + // Don't return options that are disabled or in a disabled optgroup + ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) && + ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attr: function( elem, name, value ) { + var hooks, notxml, ret, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === core_strundefined ) { + return jQuery.prop( elem, name, value ); + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( notxml ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + + } else if ( hooks && notxml && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, value + "" ); + return value; + } + + } else if ( hooks && notxml && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + // In IE9+, Flash objects don't have .getAttribute (#12945) + // Support: IE9+ + if ( typeof elem.getAttribute !== core_strundefined ) { + ret = elem.getAttribute( name ); + } + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var name, propName, + i = 0, + attrNames = value && value.match( core_rnotwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( (name = attrNames[i++]) ) { + propName = jQuery.propFix[ name ] || name; + + // Boolean attributes get special treatment (#10870) + if ( rboolean.test( name ) ) { + // Set corresponding property to false for boolean attributes + // Also clear defaultChecked/defaultSelected (if appropriate) for IE<8 + if ( !getSetAttribute && ruseDefault.test( name ) ) { + elem[ jQuery.camelCase( "default-" + name ) ] = + elem[ propName ] = false; + } else { + elem[ propName ] = false; + } + + // See #9699 for explanation of this approach (setting first, then removal) + } else { + jQuery.attr( elem, name, "" ); + } + + elem.removeAttribute( getSetAttribute ? name : propName ); + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to default in case type is set after value during creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return ( elem[ name ] = value ); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + var + // Use .prop to determine if this attribute is understood as boolean + prop = jQuery.prop( elem, name ), + + // Fetch it accordingly + attr = typeof prop === "boolean" && elem.getAttribute( name ), + detail = typeof prop === "boolean" ? + + getSetInput && getSetAttribute ? + attr != null : + // oldIE fabricates an empty string for missing boolean attributes + // and conflates checked/selected into attroperties + ruseDefault.test( name ) ? + elem[ jQuery.camelCase( "default-" + name ) ] : + !!attr : + + // fetch an attribute node for properties not recognized as boolean + elem.getAttributeNode( name ); + + return detail && detail.value !== false ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { + // IE<8 needs the *property* name + elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name ); + + // Use defaultChecked and defaultSelected for oldIE + } else { + elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true; + } + + return name; + } +}; + +// fix oldIE value attroperty +if ( !getSetInput || !getSetAttribute ) { + jQuery.attrHooks.value = { + get: function( elem, name ) { + var ret = elem.getAttributeNode( name ); + return jQuery.nodeName( elem, "input" ) ? + + // Ignore the value *property* by using defaultValue + elem.defaultValue : + + ret && ret.specified ? ret.value : undefined; + }, + set: function( elem, value, name ) { + if ( jQuery.nodeName( elem, "input" ) ) { + // Does not return so that setAttribute is also used + elem.defaultValue = value; + } else { + // Use nodeHook if defined (#1954); otherwise setAttribute is fine + return nodeHook && nodeHook.set( elem, value, name ); + } + } + }; +} + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret = elem.getAttributeNode( name ); + return ret && ( name === "id" || name === "name" || name === "coords" ? ret.value !== "" : ret.specified ) ? + ret.value : + undefined; + }, + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + elem.setAttributeNode( + (ret = elem.ownerDocument.createAttribute( name )) + ); + } + + ret.value = value += ""; + + // Break association with cloned elements by also using setAttribute (#9646) + return name === "value" || value === elem.getAttribute( name ) ? + value : + undefined; + } + }; + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + get: nodeHook.get, + set: function( elem, value, name ) { + nodeHook.set( elem, value === "" ? false : value, name ); + } + }; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); +} + + +// Some attributes require a special call on IE +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret == null ? undefined : ret; + } + }); + }); + + // href/src property should get the full normalized URL (#10299/#12915) + jQuery.each([ "href", "src" ], function( i, name ) { + jQuery.propHooks[ name ] = { + get: function( elem ) { + return elem.getAttribute( name, 4 ); + } + }; + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Note: IE uppercases css property names, but if we were to .toLowerCase() + // .cssText, that would destroy case senstitivity in URL's, like in "background" + return elem.style.cssText || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = value + "" ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }); +} + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }); +}); +var rformElems = /^(?:input|select|textarea)$/i, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + var tmp, events, t, handleObjIn, + special, eventHandle, handleObj, + handlers, type, namespaces, origType, + elemData = jQuery._data( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !(events = elemData.events) ) { + events = elemData.events = {}; + } + if ( !(eventHandle = elemData.handle) ) { + eventHandle = elemData.handle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !(handlers = events[ type ]) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + var j, handleObj, tmp, + origCount, t, events, + special, handlers, type, + namespaces, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + var handle, ontype, cur, + bubbleType, special, tmp, i, + eventPath = [ elem || document ], + type = core_hasOwn.call( event, "type" ) ? event.type : event, + namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + event.isTrigger = true; + event.namespace = namespaces.join("."); + event.namespace_re = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === (elem.ownerDocument || document) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + try { + elem[ type ](); + } catch ( e ) { + // IE<9 dies on focus/blur to hidden element (#1486,#12518) + // only reproducible on winXP IE8 native, not IE9 in IE8 mode + } + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, ret, handleObj, matched, j, + handlerQueue = [], + args = core_slice.call( arguments ), + handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( (event.result = ret) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var sel, handleObj, matches, i, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + + for ( ; cur != this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, handlers: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + } + + return handlerQueue; + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: IE<9 + // Fix target property (#1925) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Support: Chrome 23+, Safari? + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Support: IE<9 + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) + event.metaKey = !!event.metaKey; + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var body, eventDoc, doc, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { + this.click(); + return false; + } + } + }, + focus: { + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== document.activeElement && this.focus ) { + try { + this.focus(); + return false; + } catch ( e ) { + // Support: IE<9 + // If we error on focus to hidden element (#1486, #12518), + // let .trigger() run the handlers + } + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === document.activeElement && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + + beforeunload: { + postDispatch: function( event ) { + + // Even when returnValue equals to undefined Firefox will still show alert + if ( event.result !== undefined ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, to properly expose it to GC + if ( typeof elem[ name ] === core_strundefined ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + if ( !e ) { + return; + } + + // If preventDefault exists, run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // Support: IE + // Otherwise set the returnValue property of the original event to false + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + if ( !e ) { + return; + } + // If stopPropagation exists, run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + + // Support: IE + // Set the cancelBubble property of the original event to true + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !jQuery._data( form, "submitBubbles" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "submitBubbles", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + jQuery._data( elem, "changeBubbles", true ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var type, origFn; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + delegate: function( selector, types, data, fn ) { + return this.on( types, selector, data, fn ); + }, + undelegate: function( selector, types, fn ) { + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + var elem = this[0]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2012 jQuery Foundation and other contributors + * Released under the MIT license + * http://sizzlejs.com/ + */ +(function( window, undefined ) { + +var i, + cachedruns, + Expr, + getText, + isXML, + compile, + hasDuplicate, + outermostContext, + + // Local document vars + setDocument, + document, + docElem, + documentIsXML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + sortOrder, + + // Instance-specific data + expando = "sizzle" + -(new Date()), + preferredDoc = window.document, + support = {}, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + + // General-purpose constants + strundefined = typeof undefined, + MAX_NEGATIVE = 1 << 31, + + // Array methods + arr = [], + pop = arr.pop, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf if we can't use a native one + indexOf = arr.indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + + // Regular expressions + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors + operators = "([*^$|!~]?=)", + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + + "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", + + // Prefer arguments quoted, + // then not containing pseudos/brackets, + // then attribute selectors/non-parenthetical expressions, + // then anything else + // These preferences are here to reduce the number of selectors + // needing tokenize in the PSEUDO preFilter + pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ), + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rsibling = /[\x20\t\r\n\f]*[+~]/, + + rnative = /^[^{]+\{\s*\[native code/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rescape = /'|\\/g, + rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = /\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g, + funescape = function( _, escaped ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + return high !== high ? + escaped : + // BMP codepoint + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }; + +// Use a stripped-down slice if we can't use a native one +try { + slice.call( preferredDoc.documentElement.childNodes, 0 )[0].nodeType; +} catch ( e ) { + slice = function( i ) { + var elem, + results = []; + while ( (elem = this[i++]) ) { + results.push( elem ); + } + return results; + }; +} + +/** + * For feature detection + * @param {Function} fn The function to test for native support + */ +function isNative( fn ) { + return rnative.test( fn + "" ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var cache, + keys = []; + + return (cache = function( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key += " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key ] = value); + }); +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return fn( div ); + } catch (e) { + return false; + } finally { + // release memory in IE + div = null; + } +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + // QSA vars + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + + context = context || document; + results = results || []; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { + return []; + } + + if ( !documentIsXML && !seed ) { + + // Shortcuts + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, slice.call(context.getElementsByTagName( selector ), 0) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && support.getByClassName && context.getElementsByClassName ) { + push.apply( results, slice.call(context.getElementsByClassName( m ), 0) ); + return results; + } + } + + // QSA path + if ( support.qsa && !rbuggyQSA.test(selector) ) { + old = true; + nid = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && context.parentNode || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, slice.call( newContext.querySelectorAll( + newSelector + ), 0 ) ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Detect xml + * @param {Element|Object} elem An element or a document + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var doc = node ? node.ownerDocument || node : preferredDoc; + + // If no document and documentElement is available, return + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Set our document + document = doc; + docElem = doc.documentElement; + + // Support tests + documentIsXML = isXML( doc ); + + // Check if getElementsByTagName("*") returns only elements + support.tagNameNoComments = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Check if attributes should be retrieved by attribute nodes + support.attributes = assert(function( div ) { + div.innerHTML = ""; + var type = typeof div.lastChild.getAttribute("multiple"); + // IE8 returns a string for some attributes even when not present + return type !== "boolean" && type !== "string"; + }); + + // Check if getElementsByClassName can be trusted + support.getByClassName = assert(function( div ) { + // Opera can't find a second classname (in 9.6) + div.innerHTML = ""; + if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) { + return false; + } + + // Safari 3.2 caches class attributes and doesn't catch changes + div.lastChild.className = "e"; + return div.getElementsByClassName("e").length === 2; + }); + + // Check if getElementById returns elements by name + // Check if getElementsByName privileges form controls or returns elements by ID + support.getByName = assert(function( div ) { + // Inject content + div.id = expando + 0; + div.innerHTML = "
      "; + docElem.insertBefore( div, docElem.firstChild ); + + // Test + var pass = doc.getElementsByName && + // buggy browsers will return fewer than the correct 2 + doc.getElementsByName( expando ).length === 2 + + // buggy browsers will return more than the correct 0 + doc.getElementsByName( expando + 0 ).length; + support.getIdNotName = !doc.getElementById( expando ); + + // Cleanup + docElem.removeChild( div ); + + return pass; + }); + + // IE6/7 return modified attributes + Expr.attrHandle = assert(function( div ) { + div.innerHTML = ""; + return div.firstChild && typeof div.firstChild.getAttribute !== strundefined && + div.firstChild.getAttribute("href") === "#"; + }) ? + {} : + { + "href": function( elem ) { + return elem.getAttribute( "href", 2 ); + }, + "type": function( elem ) { + return elem.getAttribute("type"); + } + }; + + // ID find and filter + if ( support.getIdNotName ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && !documentIsXML ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && !documentIsXML ) { + var m = context.getElementById( id ); + + return m ? + m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ? + [m] : + undefined : + []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.tagNameNoComments ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var elem, + tmp = [], + i = 0, + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Name + Expr.find["NAME"] = support.getByName && function( tag, context ) { + if ( typeof context.getElementsByName !== strundefined ) { + return context.getElementsByName( name ); + } + }; + + // Class + Expr.find["CLASS"] = support.getByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== strundefined && !documentIsXML ) { + return context.getElementsByClassName( className ); + } + }; + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21), + // no need to also add to buggyMatches since matches checks buggyQSA + // A support test would require too much code (would include document ready) + rbuggyQSA = [ ":focus" ]; + + if ( (support.qsa = isNative(doc.querySelectorAll)) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explictly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; + + // IE8 - Some boolean attributes are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + + // Opera 10-12/IE8 - ^= $= *= and empty values + // Should not select anything + div.innerHTML = ""; + if ( div.querySelectorAll("[i^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = isNative( (matches = docElem.matchesSelector || + docElem.mozMatchesSelector || + docElem.webkitMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = new RegExp( rbuggyMatches.join("|") ); + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = isNative(docElem.contains) || docElem.compareDocumentPosition ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + // Document order sorting + sortOrder = docElem.compareDocumentPosition ? + function( a, b ) { + var compare; + + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + if ( (compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b )) ) { + if ( compare & 1 || a.parentNode && a.parentNode.nodeType === 11 ) { + if ( a === doc || contains( preferredDoc, a ) ) { + return -1; + } + if ( b === doc || contains( preferredDoc, b ) ) { + return 1; + } + return 0; + } + return compare & 4 ? -1 : 1; + } + + return a.compareDocumentPosition ? -1 : 1; + } : + function( a, b ) { + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Parentless nodes are either documents or disconnected + } else if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + // Always assume the presence of duplicates if sort doesn't + // pass them to our comparison function (as in Google Chrome). + hasDuplicate = false; + [0, 0].sort( sortOrder ); + support.detectDuplicates = hasDuplicate; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + // rbuggyQSA always contains :focus, so no need for an existence check + if ( support.matchesSelector && !documentIsXML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && !rbuggyQSA.test(expr) ) { + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, document, null, [elem] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + var val; + + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + if ( !documentIsXML ) { + name = name.toLowerCase(); + } + if ( (val = Expr.attrHandle[ name ]) ) { + return val( elem ); + } + if ( documentIsXML || support.attributes ) { + return elem.getAttribute( name ); + } + return ( (val = elem.getAttributeNode( name )) || elem.getAttribute( name ) ) && elem[ name ] === true ? + name : + val && val.specified ? val.value : null; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +// Document sorting and removing duplicates +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + i = 1, + j = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( ; (elem = results[i]); i++ ) { + if ( elem === results[ i - 1 ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + return results; +}; + +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && ( ~b.sourceIndex || MAX_NEGATIVE ) - ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +// Returns a function to use in pseudos for input types +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +// Returns a function to use in pseudos for buttons +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +// Returns a function to use in pseudos for positionals +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + for ( ; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (see #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[5] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[4] ) { + match[2] = match[4]; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeName ) { + if ( nodeName === "*" ) { + return function() { return true; }; + } + + nodeName = nodeName.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + // Use previously-cached element index if available + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) + } else { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + // Cache the index of each encountered element + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifider + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsXML ? + elem.getAttribute("xml:lang") || elem.getAttribute("lang") : + elem.lang) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), + // not comment, processing instructions, or others + // Thanks to Diego Perini for the nodeName shortcut + // Greater than "@" means alpha characters (specifically not starting with "#" or "?") + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +function tokenize( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( tokens = [] ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push( { + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + } ); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push( { + value: matched, + type: type, + matches: match + } ); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +} + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var data, cache, outerCache, + dirkey = dirruns + " " + doneName; + + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) { + if ( (data = cache[1]) === true || data === cachedruns ) { + return data === true; + } + } else { + cache = outerCache[ dir ] = [ dirkey ]; + cache[1] = matcher( elem, context, xml ) || cachedruns; + if ( cache[1] === true ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( tokens.slice( 0, i - 1 ) ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + // A counter to specify which element is currently being matched + var matcherCachedRuns = 0, + bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, expandContext ) { + var elem, j, matcher, + setMatched = [], + matchedCount = 0, + i = "0", + unmatched = seed && [], + outermost = expandContext != null, + contextBackup = outermostContext, + // We must always have either seed elements or context + elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1); + + if ( outermost ) { + outermostContext = context !== document && context; + cachedruns = matcherCachedRuns; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + for ( ; (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + cachedruns = ++matcherCachedRuns; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !group ) { + group = tokenize( selector ); + } + i = group.length; + while ( i-- ) { + cached = matcherFromTokens( group[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + } + return cached; +}; + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function select( selector, context, results, seed ) { + var i, tokens, token, type, find, + match = tokenize( selector ); + + if ( !seed ) { + // Try to minimize operations if there is only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && !documentIsXML && + Expr.relative[ tokens[1].type ] ) { + + context = Expr.find["ID"]( token.matches[0].replace( runescape, funescape ), context )[0]; + if ( !context ) { + return results; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && context.parentNode || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, slice.call( seed, 0 ) ); + return results; + } + + break; + } + } + } + } + } + + // Compile and execute a filtering function + // Provide `match` to avoid retokenization if we modified the selector above + compile( selector, match )( + seed, + context, + documentIsXML, + results, + rsibling.test( selector ) + ); + return results; +} + +// Deprecated +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Easy API for creating new setFilters +function setFilters() {} +Expr.filters = setFilters.prototype = Expr.pseudos; +Expr.setFilters = new setFilters(); + +// Initialize with the default document +setDocument(); + +// Override sizzle attribute retrieval +Sizzle.attr = jQuery.attr; +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})( window ); +var runtil = /Until$/, + rparentsprev = /^(?:parents|prev(?:Until|All))/, + isSimple = /^.[^:#\[\.,]*$/, + rneedsContext = jQuery.expr.match.needsContext, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var i, ret, self, + len = this.length; + + if ( typeof selector !== "string" ) { + self = this; + return this.pushStack( jQuery( selector ).filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }) ); + } + + ret = []; + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, this[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = ( this.selector ? this.selector + " " : "" ) + selector; + return ret; + }, + + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false) ); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true) ); + }, + + is: function( selector ) { + return !!selector && ( + typeof selector === "string" ? + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + rneedsContext.test( selector ) ? + jQuery( selector, this.context ).index( this[0] ) >= 0 : + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + ret = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + cur = this[i]; + + while ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + } + cur = cur.parentNode; + } + } + + return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( jQuery.unique(all) ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +jQuery.fn.andSelf = jQuery.fn.addBack; + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && cur.nodeType !== 1 ); + + return cur; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( this.length > 1 && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem ) { + return ( elem === qualifier ) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; + }); +} +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
      ", "
      " ], + area: [ 1, "", "" ], + param: [ 1, "", "" ], + thead: [ 1, "", "
      " ], + tr: [ 2, "", "
      " ], + col: [ 2, "", "
      " ], + td: [ 3, "", "
      " ], + + // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters in front of it. + _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
      ", "
      " ] + }, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement("div") ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +jQuery.fn.extend({ + text: function( value ) { + return jQuery.access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + wrapAll: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapAll( html.call(this, i) ); + }); + } + + if ( this[0] ) { + // The elements to wrap the target around + var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); + + if ( this[0].parentNode ) { + wrap.insertBefore( this[0] ); + } + + wrap.map(function() { + var elem = this; + + while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { + elem = elem.firstChild; + } + + return elem; + }).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapInner( html.call(this, i) ); + }); + } + + return this.each(function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + }); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each(function(i) { + jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); + }); + }, + + unwrap: function() { + return this.parent().each(function() { + if ( !jQuery.nodeName( this, "body" ) ) { + jQuery( this ).replaceWith( this.childNodes ); + } + }).end(); + }, + + append: function() { + return this.domManip(arguments, true, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip(arguments, true, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.insertBefore( elem, this.firstChild ); + } + }); + }, + + before: function() { + return this.domManip( arguments, false, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + }); + }, + + after: function() { + return this.domManip( arguments, false, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + }); + }, + + // keepData is for internal use only--do not document + remove: function( selector, keepData ) { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + if ( !selector || jQuery.filter( selector, [ elem ] ).length > 0 ) { + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem ) ); + } + + if ( elem.parentNode ) { + if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { + setGlobalEval( getAll( elem, "script" ) ); + } + elem.parentNode.removeChild( elem ); + } + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + + // If this is a select, ensure that it displays empty (#12336) + // Support: IE<9 + if ( elem.options && jQuery.nodeName( elem, "select" ) ) { + elem.options.length = 0; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function () { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return jQuery.access( this, function( value ) { + var elem = this[0] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch(e) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function( value ) { + var isFunc = jQuery.isFunction( value ); + + // Make sure that the elements are removed from the DOM before they are inserted + // this can help fix replacing a parent with child elements + if ( !isFunc && typeof value !== "string" ) { + value = jQuery( value ).not( this ).detach(); + } + + return this.domManip( [ value ], true, function( elem ) { + var next = this.nextSibling, + parent = this.parentNode; + + if ( parent ) { + jQuery( this ).remove(); + parent.insertBefore( elem, next ); + } + }); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, table, callback ) { + + // Flatten any nested arrays + args = core_concat.apply( [], args ); + + var first, node, hasScripts, + scripts, doc, fragment, + i = 0, + l = this.length, + set = this, + iNoClone = l - 1, + value = args[0], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) { + return this.each(function( index ) { + var self = set.eq( index ); + if ( isFunction ) { + args[0] = value.call( this, index, table ? self.html() : undefined ); + } + self.domManip( args, table, callback ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + table = table && jQuery.nodeName( first, "tr" ); + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( + table && jQuery.nodeName( this[i], "table" ) ? + findOrAppend( this[i], "tbody" ) : + this[i], + node, + i + ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Hope ajax is available... + jQuery.ajax({ + url: node.src, + type: "GET", + dataType: "script", + async: false, + global: false, + "throws": true + }); + } else { + jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + } + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + } + } + + return this; + } +}); + +function findOrAppend( elem, tag ) { + return elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) ); +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + var attr = elem.getAttributeNode("type"); + elem.type = ( attr && attr.specified ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + if ( match ) { + elem.type = match[1]; + } else { + elem.removeAttribute("type"); + } + return elem; +} + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var elem, + i = 0; + for ( ; (elem = elems[i]) != null; i++ ) { + jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); + } +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function fixCloneNodeIssues( src, dest ) { + var nodeName, e, data; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + nodeName = dest.nodeName.toLowerCase(); + + // IE6-8 copies events bound via attachEvent when using cloneNode. + if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) { + data = jQuery._data( dest ); + + for ( e in data.events ) { + jQuery.removeEvent( dest, e, data.handle ); + } + + // Event data gets referenced instead of copied if the expando gets copied too + dest.removeAttribute( jQuery.expando ); + } + + // IE blanks contents when cloning scripts, and tries to evaluate newly-set text + if ( nodeName === "script" && dest.text !== src.text ) { + disableScript( dest ).text = src.text; + restoreScript( dest ); + + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + } else if ( nodeName === "object" ) { + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.defaultSelected = dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone(true); + jQuery( insert[i] )[ original ]( elems ); + + // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() + core_push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + +function getAll( context, tag ) { + var elems, elem, + i = 0, + found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) : + undefined; + + if ( !found ) { + for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { + if ( !tag || jQuery.nodeName( elem, tag ) ) { + found.push( elem ); + } else { + jQuery.merge( found, getAll( elem, tag ) ); + } + } + } + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], found ) : + found; +} + +// Used in buildFragment, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( manipulation_rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var destElements, node, clone, i, srcElements, + inPage = jQuery.contains( elem.ownerDocument, elem ); + + if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + // Fix all IE cloning issues + for ( i = 0; (node = srcElements[i]) != null; ++i ) { + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + fixCloneNodeIssues( node, destElements[i] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0; (node = srcElements[i]) != null; i++ ) { + cloneCopyEvent( node, destElements[i] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + destElements = srcElements = node = null; + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var j, elem, contains, + tmp, tag, tbody, wrap, + l = elems.length, + + // Ensure a safe fragment + safe = createSafeFragment( context ), + + nodes = [], + i = 0; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || safe.appendChild( context.createElement("div") ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + + tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; + + // Descend through wrappers to the right content + j = wrap[0]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Manually add leading whitespace removed by IE + if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); + } + + // Remove IE's autoinserted from table fragments + if ( !jQuery.support.tbody ) { + + // String was a , *may* have spurious + elem = tag === "table" && !rtbody.test( elem ) ? + tmp.firstChild : + + // String was a bare or + wrap[1] === "
      " && !rtbody.test( elem ) ? + tmp : + 0; + + j = elem && elem.childNodes.length; + while ( j-- ) { + if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { + elem.removeChild( tbody ); + } + } + } + + jQuery.merge( nodes, tmp.childNodes ); + + // Fix #12392 for WebKit and IE > 9 + tmp.textContent = ""; + + // Fix #12392 for oldIE + while ( tmp.firstChild ) { + tmp.removeChild( tmp.firstChild ); + } + + // Remember the top-level container for proper cleanup + tmp = safe.lastChild; + } + } + } + + // Fix #11356: Clear elements from fragment + if ( tmp ) { + safe.removeChild( tmp ); + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !jQuery.support.appendChecked ) { + jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); + } + + i = 0; + while ( (elem = nodes[ i++ ]) ) { + + // #4087 - If origin and destination elements are the same, and this is + // that element, do not do anything + if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( safe.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( (elem = tmp[ j++ ]) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + tmp = null; + + return safe; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var elem, type, id, data, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = jQuery.support.deleteExpando, + special = jQuery.event.special; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( deleteExpando ) { + delete elem[ internalKey ]; + + } else if ( typeof elem.removeAttribute !== core_strundefined ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + core_deletedIds.push( id ); + } + } + } + } + } +}); +var iframe, getStyles, curCSS, + ralpha = /alpha\([^)]*\)/i, + ropacity = /opacity\s*=\s*([^)]*)/, + rposition = /^(top|right|bottom|left)$/, + // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" + // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rmargin = /^margin/, + rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), + rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), + rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ), + elemdisplay = { BODY: "block" }, + + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: 0, + fontWeight: 400 + }, + + cssExpand = [ "Top", "Right", "Bottom", "Left" ], + cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; + +// return a css property mapped to a potentially vendor prefixed property +function vendorPropName( style, name ) { + + // shortcut for names that are not vendor prefixed + if ( name in style ) { + return name; + } + + // check for vendor prefixed names + var capName = name.charAt(0).toUpperCase() + name.slice(1), + origName = name, + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in style ) { + return name; + } + } + + return origName; +} + +function isHidden( elem, el ) { + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); +} + +function showHide( elements, show ) { + var display, elem, hidden, + values = [], + index = 0, + length = elements.length; + + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + values[ index ] = jQuery._data( elem, "olddisplay" ); + display = elem.style.display; + if ( show ) { + // Reset the inline display of this element to learn if it is + // being hidden by cascaded rules or not + if ( !values[ index ] && display === "none" ) { + elem.style.display = ""; + } + + // Set elements which have been overridden with display: none + // in a stylesheet to whatever the default browser style is + // for such an element + if ( elem.style.display === "" && isHidden( elem ) ) { + values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); + } + } else { + + if ( !values[ index ] ) { + hidden = isHidden( elem ); + + if ( display && display !== "none" || !hidden ) { + jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) ); + } + } + } + } + + // Set the display of most of the elements in a second loop + // to avoid the constant reflow + for ( index = 0; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + if ( !show || elem.style.display === "none" || elem.style.display === "" ) { + elem.style.display = show ? values[ index ] || "" : "none"; + } + } + + return elements; +} + +jQuery.fn.extend({ + css: function( name, value ) { + return jQuery.access( this, function( elem, name, value ) { + var len, styles, + map = {}, + i = 0; + + if ( jQuery.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + }, + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + var bool = typeof state === "boolean"; + + return this.each(function() { + if ( bool ? state : isHidden( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + }); + } +}); + +jQuery.extend({ + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Exclude the following css properties to add px + cssNumber: { + "columnCount": true, + "fillOpacity": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + // normalize float css property + "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + style = elem.style; + + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // convert relative number strings (+= or -=) to relative numbers. #7345 + if ( type === "string" && (ret = rrelNum.exec( value )) ) { + value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); + // Fixes bug #9237 + type = "number"; + } + + // Make sure that NaN and null values aren't set. See: #7116 + if ( value == null || type === "number" && isNaN( value ) ) { + return; + } + + // If a number was passed in, add 'px' to the (except for certain CSS properties) + if ( type === "number" && !jQuery.cssNumber[ origName ] ) { + value += "px"; + } + + // Fixes #8908, it can be done more correctly by specifing setters in cssHooks, + // but it would mean to define eight (for every problematic property) identical functions + if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { + + // Wrapped to prevent IE from throwing errors when 'invalid' values are provided + // Fixes bug #5509 + try { + style[ name ] = value; + } catch(e) {} + } + + } else { + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var num, val, hooks, + origName = jQuery.camelCase( name ); + + // Make sure that we're working with the right name + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + //convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Return, converting to number if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; + } + return val; + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations + swap: function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; + } +}); + +// NOTE: we've included the "window" in window.getComputedStyle +// because jsdom on node.js will break without it. +if ( window.getComputedStyle ) { + getStyles = function( elem ) { + return window.getComputedStyle( elem, null ); + }; + + curCSS = function( elem, name, _computed ) { + var width, minWidth, maxWidth, + computed = _computed || getStyles( elem ), + + // getPropertyValue is only needed for .css('filter') in IE9, see #12537 + ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined, + style = elem.style; + + if ( computed ) { + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right + // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels + // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values + if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret; + }; +} else if ( document.documentElement.currentStyle ) { + getStyles = function( elem ) { + return elem.currentStyle; + }; + + curCSS = function( elem, name, _computed ) { + var left, rs, rsLeft, + computed = _computed || getStyles( elem ), + ret = computed ? computed[ name ] : undefined, + style = elem.style; + + // Avoid setting ret to empty string here + // so we don't default to auto + if ( ret == null && style && style[ name ] ) { + ret = style[ name ]; + } + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + // but not position css attributes, as those are proportional to the parent element instead + // and we can't measure the parent instead because it might trigger a "stacking dolls" problem + if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { + + // Remember the original values + left = style.left; + rs = elem.runtimeStyle; + rsLeft = rs && rs.left; + + // Put in the new values to get a computed value out + if ( rsLeft ) { + rs.left = elem.currentStyle.left; + } + style.left = name === "fontSize" ? "1em" : ret; + ret = style.pixelLeft + "px"; + + // Revert the changed values + style.left = left; + if ( rsLeft ) { + rs.left = rsLeft; + } + } + + return ret === "" ? "auto" : ret; + }; +} + +function setPositiveNumber( elem, value, subtract ) { + var matches = rnumsplit.exec( value ); + return matches ? + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i = extra === ( isBorderBox ? "border" : "content" ) ? + // If we already have the right measurement, avoid augmentation + 4 : + // Otherwise initialize for horizontal or vertical properties + name === "width" ? 1 : 0, + + val = 0; + + for ( ; i < 4; i += 2 ) { + // both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // at this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + // at this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // at this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with offset property, which is equivalent to the border-box value + var valueIsBorderBox = true, + val = name === "width" ? elem.offsetWidth : elem.offsetHeight, + styles = getStyles( elem ), + isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // some non-html elements return undefined for offsetWidth, so check for null/undefined + // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 + // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 + if ( val <= 0 || val == null ) { + // Fall back to computed then uncomputed css if necessary + val = curCSS( elem, name, styles ); + if ( val < 0 || val == null ) { + val = elem.style[ name ]; + } + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test(val) ) { + return val; + } + + // we need the check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] ); + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + } + + // use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +// Try to determine the default display value of an element +function css_defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + // Use the already-created iframe if possible + iframe = ( iframe || + jQuery("