diff options
29 files changed, 19945 insertions, 799 deletions
diff --git a/include/comanche.php b/include/comanche.php index dfe907f4d..826948fa6 100644 --- a/include/comanche.php +++ b/include/comanche.php @@ -170,17 +170,12 @@ function comanche_block($s, $class = '') { if($r) { $o .= (($var['wrap'] == 'none') ? '' : '<div class="' . $class . '">'); - if($r[0]['title'] && trim($r[0]['title']) != '$content') { + if($r[0]['title'] && trim($r[0]['body']) != '$content') { $o .= '<h3>' . $r[0]['title'] . '</h3>'; } - if($r[0]['title'] && trim($r[0]['title']) === '$content' && get_app()->data['webpage'][0]['title']) { - $o .= '<h3>' . get_app()->data['webpage'][0]['title'] . '</h3>'; - } - - if(trim($r[0]['body']) === '$content') { - $o .= prepare_text(get_app()->data['webpage'][0]['body'], get_app()->data['webpage'][0]['mimetype']); + $o .= get_app()->page['content']; } else { $o .= prepare_text($r[0]['body'], $r[0]['mimetype']); @@ -202,9 +197,17 @@ function comanche_js($s) { case 'bootstrap': $path = 'library/bootstrap/js/bootstrap.min.js'; break; + case 'foundation': + $path = 'library/foundation/js/foundation.min.js'; + $init = "\r\n" . '<script>$(document).ready(function() { $(document).foundation(); });</script>'; + break; } - return '<script src="' . z_root() . '/' . $path . '" ></script>'; + $ret = '<script src="' . z_root() . '/' . $path . '" ></script>'; + if($init) + $ret .= $init; + + return $ret; } @@ -214,9 +217,14 @@ function comanche_css($s) { case 'bootstrap': $path = 'library/bootstrap/css/bootstrap.min.css'; break; + case 'foundation': + $path = 'library/foundation/css/foundation.min.css'; + break; } - return '<link rel="stylesheet" href="' . z_root() . '/' . $path . '" type="text/css" media="screen">'; + $ret = '<link rel="stylesheet" href="' . z_root() . '/' . $path . '" type="text/css" media="screen">'; + + return $ret; } diff --git a/include/dir_fns.php b/include/dir_fns.php index eaa2db84b..902a0c1a3 100644 --- a/include/dir_fns.php +++ b/include/dir_fns.php @@ -425,10 +425,13 @@ function local_dir_update($uid, $force) { ); } + $arr = array('channel_id' => $uid, 'hash' => $hash, 'profile' => $profile); + call_hooks('local_dir_update', $arr); + $address = $p[0]['channel_address'] . '@' . get_app()->get_hostname(); if (perm_is_allowed($uid, '', 'view_profile')) { - import_directory_profile($hash, $profile, $address, 0); + import_directory_profile($hash, $arr['profile'], $address, 0); } else { // they may have made it private $r = q("delete from xprof where xprof_hash = '%s'", diff --git a/include/items.php b/include/items.php index 828f43621..cc777788c 100755 --- a/include/items.php +++ b/include/items.php @@ -954,7 +954,7 @@ function import_author_diaspora($x) { ); if($r) { logger('in_cache: ' . $x['address'], LOGGER_DATA); - return $r[0]['chan_hash']; + return $r[0]['xchan_hash']; } if(discover_by_webbie($x['address'])) { @@ -4349,8 +4349,6 @@ function zot_feed($uid,$observer_hash,$arr) { $mindate = null; $message_id = null; - require_once('include/security.php'); - if(array_key_exists('mindate',$arr)) { $mindate = datetime_convert('UTC','UTC',$arr['mindate']); } @@ -4364,7 +4362,7 @@ function zot_feed($uid,$observer_hash,$arr) { $mindate = dbesc($mindate); - logger('zot_feed: requested for uid ' . $uid . ' from observer ' . $observer_xchan, LOGGER_DEBUG); + logger('zot_feed: requested for uid ' . $uid . ' from observer ' . $observer_hash, LOGGER_DEBUG); if($message_id) logger('message_id: ' . $message_id,LOGGER_DEBUG); diff --git a/include/oauth.php b/include/oauth.php index ec754db95..a9509c68e 100644 --- a/include/oauth.php +++ b/include/oauth.php @@ -75,12 +75,12 @@ class FKOAuthDataStore extends OAuthDataStore { $k = $consumer; } - $r = q("INSERT INTO tokens (id, secret, client_id, scope, expires) VALUES ('%s','%s','%s','%s', UNIX_TIMESTAMP()+%d)", + $r = q("INSERT INTO tokens (id, secret, client_id, scope, expires) VALUES ('%s','%s','%s','%s', %d)", dbesc($key), dbesc($sec), dbesc($k), 'request', - intval(REQUEST_TOKEN_DURATION)); + time()+intval(REQUEST_TOKEN_DURATION)); if (!$r) return null; return new OAuthToken($key,$sec); @@ -104,12 +104,12 @@ class FKOAuthDataStore extends OAuthDataStore { $key = $this->gen_token(); $sec = $this->gen_token(); - $r = q("INSERT INTO tokens (id, secret, client_id, scope, expires, uid) VALUES ('%s','%s','%s','%s', UNIX_TIMESTAMP()+%d, %d)", + $r = q("INSERT INTO tokens (id, secret, client_id, scope, expires, uid) VALUES ('%s','%s','%s','%s', %d, %d)", dbesc($key), dbesc($sec), dbesc($consumer->key), 'access', - intval(ACCESS_TOKEN_DURATION), + time()+intval(ACCESS_TOKEN_DURATION), intval($uverifier)); if ($r) @@ -1,47 +1,42 @@ -<?php /** @file */ - +<?php /** + * @file index.php * - * Hubzilla + * @brief The main entry point to the application. * + * Bootstrap the application, load configuration, load modules, load theme, etc. */ -/** - * +/* * bootstrap the application - * */ - require_once('boot.php'); - +// our global App object $a = new App; -/** - * +/* * Load the configuration file which contains our DB credentials. - * Ignore errors. If the file doesn't exist or is empty, we are running in installation mode.' - * + * Ignore errors. If the file doesn't exist or is empty, we are running in + * installation mode. */ $a->install = ((file_exists('.htconfig.php') && filesize('.htconfig.php')) ? false : true); -@include(".htconfig.php"); +@include('.htconfig.php'); $a->timezone = ((x($default_timezone)) ? $default_timezone : 'UTC'); date_default_timezone_set($a->timezone); -/** - * +/* * Try to open the database; - * */ -require_once("include/dba/dba_driver.php"); +require_once('include/dba/dba_driver.php'); if(! $a->install) { $db = dba_factory($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type, $a->install); - unset($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type); + unset($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type); /** * Load configs from db. Overwrite configs from .htconfig.php @@ -51,10 +46,10 @@ if(! $a->install) { load_config('system'); load_config('feature'); - require_once("include/session.php"); + require_once('include/session.php'); load_hooks(); call_hooks('init_1'); - + $a->language = get_best_language(); load_translation_table($a->language); // Force the cookie to be secure (https only) if this site is SSL enabled. Must be done before session_start(). @@ -82,7 +77,7 @@ else { * * The order of these may be important so use caution if you think they're all * intertwingled with no logical order and decide to sort it out. Some of the - * dependencies have changed, but at least at one time in the recent past - the + * dependencies have changed, but at least at one time in the recent past - the * order was critical to everything working properly * */ @@ -100,7 +95,7 @@ if(array_key_exists('system_language',$_POST)) { else unset($_SESSION['language']); } -if((x($_SESSION,'language')) && ($_SESSION['language'] !== $lang)) { +if((x($_SESSION, 'language')) && ($_SESSION['language'] !== $lang)) { $a->language = $_SESSION['language']; load_translation_table($a->language); } @@ -113,20 +108,19 @@ if((x($_GET,'zid')) && (! $a->install)) { } } -if((x($_SESSION,'authenticated')) || (x($_POST,'auth-params')) || ($a->module === 'login')) - require("include/auth.php"); +if((x($_SESSION, 'authenticated')) || (x($_POST, 'auth-params')) || ($a->module === 'login')) + require('include/auth.php'); - -if(! x($_SESSION,'sysmsg')) +if(! x($_SESSION, 'sysmsg')) $_SESSION['sysmsg'] = array(); -if(! x($_SESSION,'sysmsg_info')) +if(! x($_SESSION, 'sysmsg_info')) $_SESSION['sysmsg_info'] = array(); /* - * check_config() is responsible for running update scripts. These automatically + * check_config() is responsible for running update scripts. These automatically * update the DB schema whenever we push a new one out. It also checks to see if - * any plugins have been added or removed and reacts accordingly. + * any plugins have been added or removed and reacts accordingly. */ @@ -154,23 +148,22 @@ $a->set_apps($arr['app_menu']); * and use it for handling our URL request. * The module file contains a few functions that we call in various circumstances * and in the following order: - * + * * "module"_init * "module"_post (only called if there are $_POST variables) * "module"_aside * $theme_$module_aside (and $extends_$module_aside) are run first if either exist * if either of these return false, module_aside is not called - * This allows a theme to over-ride the sidebar layout completely. + * This allows a theme to over-ride the sidebar layout completely. * "module"_content - the string return of this function contains our page body * - * Modules which emit other serialisations besides HTML (XML,JSON, etc.) should do + * Modules which emit other serialisations besides HTML (XML,JSON, etc.) should do * so within the module init and/or post functions and then invoke killme() to terminate * further processing. */ if(strlen($a->module)) { - /** * * We will always have a module name. @@ -184,7 +177,6 @@ if(strlen($a->module)) { $a->module_loaded = true; } - if((strpos($a->module,'admin') === 0) && (! is_site_admin())) { $a->module_loaded = false; notice( t('Permission denied.') . EOL); @@ -197,7 +189,6 @@ if(strlen($a->module)) { */ if(! $a->module_loaded) { - if(file_exists("mod/site/{$a->module}.php")) { include_once("mod/site/{$a->module}.php"); $a->module_loaded = true; @@ -210,37 +201,36 @@ if(strlen($a->module)) { /** - * * The URL provided does not resolve to a valid module. * - * On Dreamhost sites, quite often things go wrong for no apparent reason and they send us to '/internal_error.html'. - * We don't like doing this, but as it occasionally accounts for 10-20% or more of all site traffic - + * On Dreamhost sites, quite often things go wrong for no apparent reason and they send us to '/internal_error.html'. + * We don't like doing this, but as it occasionally accounts for 10-20% or more of all site traffic - * we are going to trap this and redirect back to the requested page. As long as you don't have a critical error on your page * this will often succeed and eventually do the right thing. * * Otherwise we are going to emit a 404 not found. - * */ if(! $a->module_loaded) { // Stupid browser tried to pre-fetch our Javascript img template. Don't log the event or return anything - just quietly exit. - if((x($_SERVER,'QUERY_STRING')) && preg_match('/{[0-9]}/',$_SERVER['QUERY_STRING']) !== 0) { + if((x($_SERVER, 'QUERY_STRING')) && preg_match('/{[0-9]}/', $_SERVER['QUERY_STRING']) !== 0) { killme(); } - if((x($_SERVER,'QUERY_STRING')) && ($_SERVER['QUERY_STRING'] === 'q=internal_error.html') && isset($dreamhost_error_hack)) { + if((x($_SERVER, 'QUERY_STRING')) && ($_SERVER['QUERY_STRING'] === 'q=internal_error.html') && isset($dreamhost_error_hack)) { logger('index.php: dreamhost_error_hack invoked. Original URI =' . $_SERVER['REQUEST_URI']); goaway($a->get_baseurl() . $_SERVER['REQUEST_URI']); } logger('index.php: page not found: ' . $_SERVER['REQUEST_URI'] . ' ADDRESS: ' . $_SERVER['REMOTE_ADDR'] . ' QUERY: ' . $_SERVER['QUERY_STRING'], LOGGER_DEBUG); - header($_SERVER["SERVER_PROTOCOL"] . ' 404 ' . t('Not Found')); - $tpl = get_markup_template("404.tpl"); + header($_SERVER['SERVER_PROTOCOL'] . ' 404 ' . t('Not Found')); + $tpl = get_markup_template('404.tpl'); $a->page['content'] = replace_macros($tpl, array( - '$message' => t('Page not found.' ) + '$message' => t('Page not found.') )); - // pretend this is a module so it will initialise the theme. + + // pretend this is a module so it will initialise the theme $a->module = '404'; $a->module_loaded = true; } @@ -249,11 +239,10 @@ if(strlen($a->module)) { /* initialise content region */ -if(! x($a->page,'content')) +if(! x($a->page, 'content')) $a->page['content'] = ''; - if(! ($a->module === 'setup')) { /* set JS cookie */ if($_COOKIE['jsAvailable'] != 1) { @@ -263,9 +252,9 @@ if(! ($a->module === 'setup')) { $_COOKIE['jsAvailable'] = 1; } } - call_hooks('page_content_top',$a->page['content']); -} + call_hooks('page_content_top', $a->page['content']); +} @@ -282,7 +271,7 @@ if($a->module_loaded) { * For this reason, please restrict the use of templates to those which * do not provide any presentation details - as themes will not be able * to over-ride them. - */ + */ if(function_exists($a->module . '_init')) { call_hooks($a->module . '_mod_init', $placeholder); @@ -310,32 +299,31 @@ if($a->module_loaded) { * load current theme info */ - $theme_info_file = "view/theme/".current_theme()."/php/theme.php"; + $theme_info_file = 'view/theme/' . current_theme() . '/php/theme.php'; if (file_exists($theme_info_file)){ require_once($theme_info_file); } - if(function_exists(str_replace('-','_',current_theme()) . '_init')) { - $func = str_replace('-','_',current_theme()) . '_init'; + if(function_exists(str_replace('-', '_', current_theme()) . '_init')) { + $func = str_replace('-', '_', current_theme()) . '_init'; $func($a); } - elseif (x($a->theme_info,"extends") && file_exists("view/theme/".$a->theme_info["extends"]."/php/theme.php")) { - require_once("view/theme/".$a->theme_info["extends"]."/php/theme.php"); - if(function_exists(str_replace('-','_',$a->theme_info["extends"]) . '_init')) { - $func = str_replace('-','_',$a->theme_info["extends"]) . '_init'; + elseif (x($a->theme_info, 'extends') && file_exists('view/theme/' . $a->theme_info['extends'] . '/php/theme.php')) { + require_once('view/theme/' . $a->theme_info['extends'] . '/php/theme.php'); + if(function_exists(str_replace('-', '_', $a->theme_info['extends']) . '_init')) { + $func = str_replace('-', '_', $a->theme_info['extends']) . '_init'; $func($a); } } if(($_SERVER['REQUEST_METHOD'] === 'POST') && (! $a->error) && (function_exists($a->module . '_post')) - && (! x($_POST,'auth-params'))) { + && (! x($_POST, 'auth-params'))) { call_hooks($a->module . '_mod_post', $_POST); $func = $a->module . '_post'; $func($a); } - if(! $a->error) { // If a theme has defined an _aside() function, run that first // @@ -353,9 +341,9 @@ if($a->module_loaded) { $func = str_replace('-','_',current_theme()) . '_' . $a->module . '_aside'; $aside_default = $func($a); } - elseif($aside_default && x($a->theme_info,"extends") - && (function_exists(str_replace('-','_',$a->theme_info["extends"]) . '_' . $a->module . '_aside'))) { - $func = str_replace('-','_',$a->theme_info["extends"]) . '_' . $a->module . '_aside'; + elseif($aside_default && x($a->theme_info, "extends") + && (function_exists(str_replace('-', '_',$a->theme_info["extends"]) . '_' . $a->module . '_aside'))) { + $func = str_replace('-', '_', $a->theme_info["extends"]) . '_' . $a->module . '_aside'; $aside_default = $func($a); } if($aside_default && function_exists($a->module . '_aside')) { @@ -373,24 +361,25 @@ if($a->module_loaded) { call_hooks($a->module . '_mod_aftercontent', $arr); $a->page['content'] .= $arr['content']; } - } // If you're just visiting, let javascript take you home -if(x($_SESSION,'visitor_home')) +if(x($_SESSION, 'visitor_home')) { $homebase = $_SESSION['visitor_home']; -elseif(local_channel()) +} elseif(local_channel()) { $homebase = $a->get_baseurl() . '/channel/' . $a->channel['channel_address']; +} -if(isset($homebase)) - $a->page['content'] .= '<script>var homebase="' . $homebase . '" ; </script>'; +if(isset($homebase)) { + $a->page['content'] .= '<script>var homebase = "' . $homebase . '";</script>'; +} // now that we've been through the module content, see if the page reported // a permission problem and if so, a 403 response would seem to be in order. -if(stristr( implode("",$_SESSION['sysmsg']), t('Permission denied'))) { - header($_SERVER["SERVER_PROTOCOL"] . ' 403 ' . t('Permission denied.')); +if(stristr(implode("", $_SESSION['sysmsg']), t('Permission denied'))) { + header($_SERVER['SERVER_PROTOCOL'] . ' 403 ' . t('Permission denied.')); } diff --git a/library/foundation/css/foundation.css b/library/foundation/css/foundation.css new file mode 100644 index 000000000..83a0f3d05 --- /dev/null +++ b/library/foundation/css/foundation.css @@ -0,0 +1,6324 @@ +meta.foundation-version { + font-family: "/5.5.2/"; } + +meta.foundation-mq-small { + font-family: "/only screen/"; + width: 0; } + +meta.foundation-mq-small-only { + font-family: "/only screen and (max-width: 40em)/"; + width: 0; } + +meta.foundation-mq-medium { + font-family: "/only screen and (min-width:40.0625em)/"; + width: 40.0625em; } + +meta.foundation-mq-medium-only { + font-family: "/only screen and (min-width:40.0625em) and (max-width:64em)/"; + width: 40.0625em; } + +meta.foundation-mq-large { + font-family: "/only screen and (min-width:64.0625em)/"; + width: 64.0625em; } + +meta.foundation-mq-large-only { + font-family: "/only screen and (min-width:64.0625em) and (max-width:90em)/"; + width: 64.0625em; } + +meta.foundation-mq-xlarge { + font-family: "/only screen and (min-width:90.0625em)/"; + width: 90.0625em; } + +meta.foundation-mq-xlarge-only { + font-family: "/only screen and (min-width:90.0625em) and (max-width:120em)/"; + width: 90.0625em; } + +meta.foundation-mq-xxlarge { + font-family: "/only screen and (min-width:120.0625em)/"; + width: 120.0625em; } + +meta.foundation-data-attribute-namespace { + font-family: false; } + +html, body { + height: 100%; } + +html { + box-sizing: border-box; } + +*, +*:before, +*:after { + -webkit-box-sizing: inherit; + -moz-box-sizing: inherit; + box-sizing: inherit; } + +html, +body { + font-size: 100%; } + +body { + background: #fff; + color: #222; + cursor: auto; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-style: normal; + font-weight: normal; + line-height: 1.5; + margin: 0; + padding: 0; + position: relative; } + +a:hover { + cursor: pointer; } + +img { + max-width: 100%; + height: auto; } + +img { + -ms-interpolation-mode: bicubic; } + +#map_canvas img, +#map_canvas embed, +#map_canvas object, +.map_canvas img, +.map_canvas embed, +.map_canvas object, +.mqa-display img, +.mqa-display embed, +.mqa-display object { + max-width: none !important; } + +.left { + float: left !important; } + +.right { + float: right !important; } + +.clearfix:before, .clearfix:after { + content: " "; + display: table; } +.clearfix:after { + clear: both; } + +.hide { + display: none; } + +.invisible { + visibility: hidden; } + +.antialiased { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } + +img { + display: inline-block; + vertical-align: middle; } + +textarea { + height: auto; + min-height: 50px; } + +select { + width: 100%; } + +.row { + margin: 0 auto; + max-width: 62.5rem; + width: 100%; } + .row:before, .row:after { + content: " "; + display: table; } + .row:after { + clear: both; } + .row.collapse > .column, + .row.collapse > .columns { + padding-left: 0; + padding-right: 0; } + .row.collapse .row { + margin-left: 0; + margin-right: 0; } + .row .row { + margin: 0 -0.9375rem; + max-width: none; + width: auto; } + .row .row:before, .row .row:after { + content: " "; + display: table; } + .row .row:after { + clear: both; } + .row .row.collapse { + margin: 0; + max-width: none; + width: auto; } + .row .row.collapse:before, .row .row.collapse:after { + content: " "; + display: table; } + .row .row.collapse:after { + clear: both; } + +.column, +.columns { + padding-left: 0.9375rem; + padding-right: 0.9375rem; + width: 100%; + float: left; } + +.column + .column:last-child, +.columns + .column:last-child, .column + +.columns:last-child, +.columns + +.columns:last-child { + float: right; } +.column + .column.end, +.columns + .column.end, .column + +.columns.end, +.columns + +.columns.end { + float: left; } + +@media only screen { + .small-push-0 { + position: relative; + left: 0; + right: auto; } + + .small-pull-0 { + position: relative; + right: 0; + left: auto; } + + .small-push-1 { + position: relative; + left: 8.33333%; + right: auto; } + + .small-pull-1 { + position: relative; + right: 8.33333%; + left: auto; } + + .small-push-2 { + position: relative; + left: 16.66667%; + right: auto; } + + .small-pull-2 { + position: relative; + right: 16.66667%; + left: auto; } + + .small-push-3 { + position: relative; + left: 25%; + right: auto; } + + .small-pull-3 { + position: relative; + right: 25%; + left: auto; } + + .small-push-4 { + position: relative; + left: 33.33333%; + right: auto; } + + .small-pull-4 { + position: relative; + right: 33.33333%; + left: auto; } + + .small-push-5 { + position: relative; + left: 41.66667%; + right: auto; } + + .small-pull-5 { + position: relative; + right: 41.66667%; + left: auto; } + + .small-push-6 { + position: relative; + left: 50%; + right: auto; } + + .small-pull-6 { + position: relative; + right: 50%; + left: auto; } + + .small-push-7 { + position: relative; + left: 58.33333%; + right: auto; } + + .small-pull-7 { + position: relative; + right: 58.33333%; + left: auto; } + + .small-push-8 { + position: relative; + left: 66.66667%; + right: auto; } + + .small-pull-8 { + position: relative; + right: 66.66667%; + left: auto; } + + .small-push-9 { + position: relative; + left: 75%; + right: auto; } + + .small-pull-9 { + position: relative; + right: 75%; + left: auto; } + + .small-push-10 { + position: relative; + left: 83.33333%; + right: auto; } + + .small-pull-10 { + position: relative; + right: 83.33333%; + left: auto; } + + .small-push-11 { + position: relative; + left: 91.66667%; + right: auto; } + + .small-pull-11 { + position: relative; + right: 91.66667%; + left: auto; } + + .column, + .columns { + position: relative; + padding-left: 0.9375rem; + padding-right: 0.9375rem; + float: left; } + + .small-1 { + width: 8.33333%; } + + .small-2 { + width: 16.66667%; } + + .small-3 { + width: 25%; } + + .small-4 { + width: 33.33333%; } + + .small-5 { + width: 41.66667%; } + + .small-6 { + width: 50%; } + + .small-7 { + width: 58.33333%; } + + .small-8 { + width: 66.66667%; } + + .small-9 { + width: 75%; } + + .small-10 { + width: 83.33333%; } + + .small-11 { + width: 91.66667%; } + + .small-12 { + width: 100%; } + + .small-offset-0 { + margin-left: 0 !important; } + + .small-offset-1 { + margin-left: 8.33333% !important; } + + .small-offset-2 { + margin-left: 16.66667% !important; } + + .small-offset-3 { + margin-left: 25% !important; } + + .small-offset-4 { + margin-left: 33.33333% !important; } + + .small-offset-5 { + margin-left: 41.66667% !important; } + + .small-offset-6 { + margin-left: 50% !important; } + + .small-offset-7 { + margin-left: 58.33333% !important; } + + .small-offset-8 { + margin-left: 66.66667% !important; } + + .small-offset-9 { + margin-left: 75% !important; } + + .small-offset-10 { + margin-left: 83.33333% !important; } + + .small-offset-11 { + margin-left: 91.66667% !important; } + + .small-reset-order { + float: left; + left: auto; + margin-left: 0; + margin-right: 0; + right: auto; } + + .column.small-centered, + .columns.small-centered { + margin-left: auto; + margin-right: auto; + float: none; } + + .column.small-uncentered, + .columns.small-uncentered { + float: left; + margin-left: 0; + margin-right: 0; } + + .column.small-centered:last-child, + .columns.small-centered:last-child { + float: none; } + + .column.small-uncentered:last-child, + .columns.small-uncentered:last-child { + float: left; } + + .column.small-uncentered.opposite, + .columns.small-uncentered.opposite { + float: right; } + + .row.small-collapse > .column, + .row.small-collapse > .columns { + padding-left: 0; + padding-right: 0; } + .row.small-collapse .row { + margin-left: 0; + margin-right: 0; } + .row.small-uncollapse > .column, + .row.small-uncollapse > .columns { + padding-left: 0.9375rem; + padding-right: 0.9375rem; + float: left; } } +@media only screen and (min-width: 40.0625em) { + .medium-push-0 { + position: relative; + left: 0; + right: auto; } + + .medium-pull-0 { + position: relative; + right: 0; + left: auto; } + + .medium-push-1 { + position: relative; + left: 8.33333%; + right: auto; } + + .medium-pull-1 { + position: relative; + right: 8.33333%; + left: auto; } + + .medium-push-2 { + position: relative; + left: 16.66667%; + right: auto; } + + .medium-pull-2 { + position: relative; + right: 16.66667%; + left: auto; } + + .medium-push-3 { + position: relative; + left: 25%; + right: auto; } + + .medium-pull-3 { + position: relative; + right: 25%; + left: auto; } + + .medium-push-4 { + position: relative; + left: 33.33333%; + right: auto; } + + .medium-pull-4 { + position: relative; + right: 33.33333%; + left: auto; } + + .medium-push-5 { + position: relative; + left: 41.66667%; + right: auto; } + + .medium-pull-5 { + position: relative; + right: 41.66667%; + left: auto; } + + .medium-push-6 { + position: relative; + left: 50%; + right: auto; } + + .medium-pull-6 { + position: relative; + right: 50%; + left: auto; } + + .medium-push-7 { + position: relative; + left: 58.33333%; + right: auto; } + + .medium-pull-7 { + position: relative; + right: 58.33333%; + left: auto; } + + .medium-push-8 { + position: relative; + left: 66.66667%; + right: auto; } + + .medium-pull-8 { + position: relative; + right: 66.66667%; + left: auto; } + + .medium-push-9 { + position: relative; + left: 75%; + right: auto; } + + .medium-pull-9 { + position: relative; + right: 75%; + left: auto; } + + .medium-push-10 { + position: relative; + left: 83.33333%; + right: auto; } + + .medium-pull-10 { + position: relative; + right: 83.33333%; + left: auto; } + + .medium-push-11 { + position: relative; + left: 91.66667%; + right: auto; } + + .medium-pull-11 { + position: relative; + right: 91.66667%; + left: auto; } + + .column, + .columns { + position: relative; + padding-left: 0.9375rem; + padding-right: 0.9375rem; + float: left; } + + .medium-1 { + width: 8.33333%; } + + .medium-2 { + width: 16.66667%; } + + .medium-3 { + width: 25%; } + + .medium-4 { + width: 33.33333%; } + + .medium-5 { + width: 41.66667%; } + + .medium-6 { + width: 50%; } + + .medium-7 { + width: 58.33333%; } + + .medium-8 { + width: 66.66667%; } + + .medium-9 { + width: 75%; } + + .medium-10 { + width: 83.33333%; } + + .medium-11 { + width: 91.66667%; } + + .medium-12 { + width: 100%; } + + .medium-offset-0 { + margin-left: 0 !important; } + + .medium-offset-1 { + margin-left: 8.33333% !important; } + + .medium-offset-2 { + margin-left: 16.66667% !important; } + + .medium-offset-3 { + margin-left: 25% !important; } + + .medium-offset-4 { + margin-left: 33.33333% !important; } + + .medium-offset-5 { + margin-left: 41.66667% !important; } + + .medium-offset-6 { + margin-left: 50% !important; } + + .medium-offset-7 { + margin-left: 58.33333% !important; } + + .medium-offset-8 { + margin-left: 66.66667% !important; } + + .medium-offset-9 { + margin-left: 75% !important; } + + .medium-offset-10 { + margin-left: 83.33333% !important; } + + .medium-offset-11 { + margin-left: 91.66667% !important; } + + .medium-reset-order { + float: left; + left: auto; + margin-left: 0; + margin-right: 0; + right: auto; } + + .column.medium-centered, + .columns.medium-centered { + margin-left: auto; + margin-right: auto; + float: none; } + + .column.medium-uncentered, + .columns.medium-uncentered { + float: left; + margin-left: 0; + margin-right: 0; } + + .column.medium-centered:last-child, + .columns.medium-centered:last-child { + float: none; } + + .column.medium-uncentered:last-child, + .columns.medium-uncentered:last-child { + float: left; } + + .column.medium-uncentered.opposite, + .columns.medium-uncentered.opposite { + float: right; } + + .row.medium-collapse > .column, + .row.medium-collapse > .columns { + padding-left: 0; + padding-right: 0; } + .row.medium-collapse .row { + margin-left: 0; + margin-right: 0; } + .row.medium-uncollapse > .column, + .row.medium-uncollapse > .columns { + padding-left: 0.9375rem; + padding-right: 0.9375rem; + float: left; } + + .push-0 { + position: relative; + left: 0; + right: auto; } + + .pull-0 { + position: relative; + right: 0; + left: auto; } + + .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; } } +@media only screen and (min-width: 64.0625em) { + .large-push-0 { + position: relative; + left: 0; + right: auto; } + + .large-pull-0 { + position: relative; + right: 0; + left: auto; } + + .large-push-1 { + position: relative; + left: 8.33333%; + right: auto; } + + .large-pull-1 { + position: relative; + right: 8.33333%; + left: auto; } + + .large-push-2 { + position: relative; + left: 16.66667%; + right: auto; } + + .large-pull-2 { + position: relative; + right: 16.66667%; + left: auto; } + + .large-push-3 { + position: relative; + left: 25%; + right: auto; } + + .large-pull-3 { + position: relative; + right: 25%; + left: auto; } + + .large-push-4 { + position: relative; + left: 33.33333%; + right: auto; } + + .large-pull-4 { + position: relative; + right: 33.33333%; + left: auto; } + + .large-push-5 { + position: relative; + left: 41.66667%; + right: auto; } + + .large-pull-5 { + position: relative; + right: 41.66667%; + left: auto; } + + .large-push-6 { + position: relative; + left: 50%; + right: auto; } + + .large-pull-6 { + position: relative; + right: 50%; + left: auto; } + + .large-push-7 { + position: relative; + left: 58.33333%; + right: auto; } + + .large-pull-7 { + position: relative; + right: 58.33333%; + left: auto; } + + .large-push-8 { + position: relative; + left: 66.66667%; + right: auto; } + + .large-pull-8 { + position: relative; + right: 66.66667%; + left: auto; } + + .large-push-9 { + position: relative; + left: 75%; + right: auto; } + + .large-pull-9 { + position: relative; + right: 75%; + left: auto; } + + .large-push-10 { + position: relative; + left: 83.33333%; + right: auto; } + + .large-pull-10 { + position: relative; + right: 83.33333%; + left: auto; } + + .large-push-11 { + position: relative; + left: 91.66667%; + right: auto; } + + .large-pull-11 { + position: relative; + right: 91.66667%; + left: auto; } + + .column, + .columns { + position: relative; + padding-left: 0.9375rem; + padding-right: 0.9375rem; + float: left; } + + .large-1 { + width: 8.33333%; } + + .large-2 { + width: 16.66667%; } + + .large-3 { + width: 25%; } + + .large-4 { + width: 33.33333%; } + + .large-5 { + width: 41.66667%; } + + .large-6 { + width: 50%; } + + .large-7 { + width: 58.33333%; } + + .large-8 { + width: 66.66667%; } + + .large-9 { + width: 75%; } + + .large-10 { + width: 83.33333%; } + + .large-11 { + width: 91.66667%; } + + .large-12 { + width: 100%; } + + .large-offset-0 { + margin-left: 0 !important; } + + .large-offset-1 { + margin-left: 8.33333% !important; } + + .large-offset-2 { + margin-left: 16.66667% !important; } + + .large-offset-3 { + margin-left: 25% !important; } + + .large-offset-4 { + margin-left: 33.33333% !important; } + + .large-offset-5 { + margin-left: 41.66667% !important; } + + .large-offset-6 { + margin-left: 50% !important; } + + .large-offset-7 { + margin-left: 58.33333% !important; } + + .large-offset-8 { + margin-left: 66.66667% !important; } + + .large-offset-9 { + margin-left: 75% !important; } + + .large-offset-10 { + margin-left: 83.33333% !important; } + + .large-offset-11 { + margin-left: 91.66667% !important; } + + .large-reset-order { + float: left; + left: auto; + margin-left: 0; + margin-right: 0; + right: auto; } + + .column.large-centered, + .columns.large-centered { + margin-left: auto; + margin-right: auto; + float: none; } + + .column.large-uncentered, + .columns.large-uncentered { + float: left; + margin-left: 0; + margin-right: 0; } + + .column.large-centered:last-child, + .columns.large-centered:last-child { + float: none; } + + .column.large-uncentered:last-child, + .columns.large-uncentered:last-child { + float: left; } + + .column.large-uncentered.opposite, + .columns.large-uncentered.opposite { + float: right; } + + .row.large-collapse > .column, + .row.large-collapse > .columns { + padding-left: 0; + padding-right: 0; } + .row.large-collapse .row { + margin-left: 0; + margin-right: 0; } + .row.large-uncollapse > .column, + .row.large-uncollapse > .columns { + padding-left: 0.9375rem; + padding-right: 0.9375rem; + float: left; } + + .push-0 { + position: relative; + left: 0; + right: auto; } + + .pull-0 { + position: relative; + right: 0; + left: auto; } + + .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; } } +button, .button { + -webkit-appearance: none; + -moz-appearance: none; + border-radius: 0; + border-style: solid; + border-width: 0; + cursor: pointer; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-weight: normal; + line-height: normal; + margin: 0 0 1.25rem; + position: relative; + text-align: center; + text-decoration: none; + display: inline-block; + padding: 1rem 2rem 1.0625rem 2rem; + font-size: 1rem; + background-color: #008CBA; + border-color: #007095; + color: #FFFFFF; + transition: background-color 300ms ease-out; } + button:hover, button:focus, .button:hover, .button:focus { + background-color: #007095; } + button:hover, button:focus, .button:hover, .button:focus { + color: #FFFFFF; } + button.secondary, .button.secondary { + background-color: #e7e7e7; + border-color: #b9b9b9; + color: #333333; } + button.secondary:hover, button.secondary:focus, .button.secondary:hover, .button.secondary:focus { + background-color: #b9b9b9; } + button.secondary:hover, button.secondary:focus, .button.secondary:hover, .button.secondary:focus { + color: #333333; } + button.success, .button.success { + background-color: #43AC6A; + border-color: #368a55; + color: #FFFFFF; } + button.success:hover, button.success:focus, .button.success:hover, .button.success:focus { + background-color: #368a55; } + button.success:hover, button.success:focus, .button.success:hover, .button.success:focus { + color: #FFFFFF; } + button.alert, .button.alert { + background-color: #f04124; + border-color: #cf2a0e; + color: #FFFFFF; } + button.alert:hover, button.alert:focus, .button.alert:hover, .button.alert:focus { + background-color: #cf2a0e; } + button.alert:hover, button.alert:focus, .button.alert:hover, .button.alert:focus { + color: #FFFFFF; } + button.warning, .button.warning { + background-color: #f08a24; + border-color: #cf6e0e; + color: #FFFFFF; } + button.warning:hover, button.warning:focus, .button.warning:hover, .button.warning:focus { + background-color: #cf6e0e; } + button.warning:hover, button.warning:focus, .button.warning:hover, .button.warning:focus { + color: #FFFFFF; } + button.info, .button.info { + background-color: #a0d3e8; + border-color: #61b6d9; + color: #333333; } + button.info:hover, button.info:focus, .button.info:hover, .button.info:focus { + background-color: #61b6d9; } + button.info:hover, button.info:focus, .button.info:hover, .button.info:focus { + color: #FFFFFF; } + button.large, .button.large { + padding: 1.125rem 2.25rem 1.1875rem 2.25rem; + font-size: 1.25rem; } + button.small, .button.small { + padding: 0.875rem 1.75rem 0.9375rem 1.75rem; + font-size: 0.8125rem; } + button.tiny, .button.tiny { + padding: 0.625rem 1.25rem 0.6875rem 1.25rem; + font-size: 0.6875rem; } + button.expand, .button.expand { + padding-left: 0; + padding-right: 0; + width: 100%; } + button.left-align, .button.left-align { + text-align: left; + text-indent: 0.75rem; } + button.right-align, .button.right-align { + text-align: right; + padding-right: 0.75rem; } + button.radius, .button.radius { + border-radius: 3px; } + button.round, .button.round { + border-radius: 1000px; } + button.disabled, button[disabled], .button.disabled, .button[disabled] { + background-color: #008CBA; + border-color: #007095; + color: #FFFFFF; + box-shadow: none; + cursor: default; + opacity: 0.7; } + 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: #007095; } + 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: #FFFFFF; } + 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: #008CBA; } + button.disabled.secondary, button[disabled].secondary, .button.disabled.secondary, .button[disabled].secondary { + background-color: #e7e7e7; + border-color: #b9b9b9; + color: #333333; + box-shadow: none; + cursor: default; + opacity: 0.7; } + 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: #b9b9b9; } + 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: #333333; } + 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: #e7e7e7; } + button.disabled.success, button[disabled].success, .button.disabled.success, .button[disabled].success { + background-color: #43AC6A; + border-color: #368a55; + color: #FFFFFF; + box-shadow: none; + cursor: default; + opacity: 0.7; } + 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: #368a55; } + 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: #FFFFFF; } + 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: #43AC6A; } + button.disabled.alert, button[disabled].alert, .button.disabled.alert, .button[disabled].alert { + background-color: #f04124; + border-color: #cf2a0e; + color: #FFFFFF; + box-shadow: none; + cursor: default; + opacity: 0.7; } + 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: #cf2a0e; } + 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: #FFFFFF; } + 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: #f04124; } + button.disabled.warning, button[disabled].warning, .button.disabled.warning, .button[disabled].warning { + background-color: #f08a24; + border-color: #cf6e0e; + color: #FFFFFF; + box-shadow: none; + cursor: default; + opacity: 0.7; } + button.disabled.warning:hover, button.disabled.warning:focus, button[disabled].warning:hover, button[disabled].warning:focus, .button.disabled.warning:hover, .button.disabled.warning:focus, .button[disabled].warning:hover, .button[disabled].warning:focus { + background-color: #cf6e0e; } + button.disabled.warning:hover, button.disabled.warning:focus, button[disabled].warning:hover, button[disabled].warning:focus, .button.disabled.warning:hover, .button.disabled.warning:focus, .button[disabled].warning:hover, .button[disabled].warning:focus { + color: #FFFFFF; } + button.disabled.warning:hover, button.disabled.warning:focus, button[disabled].warning:hover, button[disabled].warning:focus, .button.disabled.warning:hover, .button.disabled.warning:focus, .button[disabled].warning:hover, .button[disabled].warning:focus { + background-color: #f08a24; } + button.disabled.info, button[disabled].info, .button.disabled.info, .button[disabled].info { + background-color: #a0d3e8; + border-color: #61b6d9; + color: #333333; + box-shadow: none; + cursor: default; + opacity: 0.7; } + button.disabled.info:hover, button.disabled.info:focus, button[disabled].info:hover, button[disabled].info:focus, .button.disabled.info:hover, .button.disabled.info:focus, .button[disabled].info:hover, .button[disabled].info:focus { + background-color: #61b6d9; } + button.disabled.info:hover, button.disabled.info:focus, button[disabled].info:hover, button[disabled].info:focus, .button.disabled.info:hover, .button.disabled.info:focus, .button[disabled].info:hover, .button[disabled].info:focus { + color: #FFFFFF; } + button.disabled.info:hover, button.disabled.info:focus, button[disabled].info:hover, button[disabled].info:focus, .button.disabled.info:hover, .button.disabled.info:focus, .button[disabled].info:hover, .button[disabled].info:focus { + background-color: #a0d3e8; } + +button::-moz-focus-inner { + border: 0; + padding: 0; } + +@media only screen and (min-width: 40.0625em) { + button, .button { + display: inline-block; } } +/* Standard Forms */ +form { + margin: 0 0 1rem; } + +/* Using forms within rows, we need to set some defaults */ +form .row .row { + margin: 0 -0.5rem; } + form .row .row .column, + form .row .row .columns { + padding: 0 0.5rem; } + form .row .row.collapse { + margin: 0; } + form .row .row.collapse .column, + form .row .row.collapse .columns { + padding: 0; } + form .row .row.collapse input { + -webkit-border-bottom-right-radius: 0; + -webkit-border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-top-right-radius: 0; } +form .row input.column, +form .row input.columns, +form .row textarea.column, +form .row textarea.columns { + padding-left: 0.5rem; } + +/* Label Styles */ +label { + color: #4d4d4d; + cursor: pointer; + display: block; + font-size: 0.875rem; + font-weight: normal; + line-height: 1.5; + margin-bottom: 0; + /* Styles for required inputs */ } + label.right { + float: none !important; + text-align: right; } + label.inline { + margin: 0 0 1rem 0; + padding: 0.5625rem 0; } + label small { + text-transform: capitalize; + color: #676767; } + +/* Attach elements to the beginning or end of an input */ +.prefix, +.postfix { + border-style: solid; + border-width: 1px; + display: block; + font-size: 0.875rem; + height: 2.3125rem; + line-height: 2.3125rem; + overflow: visible; + padding-bottom: 0; + padding-top: 0; + position: relative; + text-align: center; + width: 100%; + z-index: 2; } + +/* Adjust padding, alignment and radius if pre/post element is a button */ +.postfix.button { + border-color: true; } + +.prefix.button { + border: none; + padding-left: 0; + padding-right: 0; + padding-bottom: 0; + padding-top: 0; + text-align: center; } + +.prefix.button.radius { + border-radius: 0; + -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 { + border-radius: 0; + -webkit-border-bottom-right-radius: 3px; + -webkit-border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; } + +.prefix.button.round { + border-radius: 0; + -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 { + border-radius: 0; + -webkit-border-bottom-right-radius: 1000px; + -webkit-border-top-right-radius: 1000px; + border-bottom-right-radius: 1000px; + border-top-right-radius: 1000px; } + +/* Separate prefix and postfix styles when on span or label so buttons keep their own */ +span.prefix, label.prefix { + background: #f2f2f2; + border-right: none; + color: #333333; + border-color: #cccccc; } + +span.postfix, label.postfix { + background: #f2f2f2; + color: #333333; + border-color: #cccccc; } + +/* We use this to get basic styling on all basic form elements */ +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"], input[type="color"], textarea { + -webkit-appearance: none; + -moz-appearance: none; + border-radius: 0; + background-color: #FFFFFF; + border-style: solid; + border-width: 1px; + border-color: #cccccc; + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + color: rgba(0, 0, 0, 0.75); + display: block; + font-family: inherit; + font-size: 0.875rem; + height: 2.3125rem; + margin: 0 0 1rem 0; + padding: 0.5rem; + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: border-color 0.15s linear, background 0.15s linear; + -moz-transition: border-color 0.15s linear, background 0.15s linear; + -ms-transition: border-color 0.15s linear, background 0.15s linear; + -o-transition: border-color 0.15s linear, background 0.15s linear; + transition: border-color 0.15s linear, background 0.15s linear; } + 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, input[type="color"]:focus, textarea:focus { + background: #fafafa; + border-color: #999999; + 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, input[type="color"]:disabled, textarea:disabled { + background-color: #DDDDDD; + cursor: default; } + input[type="text"][disabled], input[type="text"][readonly], fieldset[disabled] input[type="text"], input[type="password"][disabled], input[type="password"][readonly], fieldset[disabled] input[type="password"], input[type="date"][disabled], input[type="date"][readonly], fieldset[disabled] input[type="date"], input[type="datetime"][disabled], input[type="datetime"][readonly], fieldset[disabled] input[type="datetime"], input[type="datetime-local"][disabled], input[type="datetime-local"][readonly], fieldset[disabled] input[type="datetime-local"], input[type="month"][disabled], input[type="month"][readonly], fieldset[disabled] input[type="month"], input[type="week"][disabled], input[type="week"][readonly], fieldset[disabled] input[type="week"], input[type="email"][disabled], input[type="email"][readonly], fieldset[disabled] input[type="email"], input[type="number"][disabled], input[type="number"][readonly], fieldset[disabled] input[type="number"], input[type="search"][disabled], input[type="search"][readonly], fieldset[disabled] input[type="search"], input[type="tel"][disabled], input[type="tel"][readonly], fieldset[disabled] input[type="tel"], input[type="time"][disabled], input[type="time"][readonly], fieldset[disabled] input[type="time"], input[type="url"][disabled], input[type="url"][readonly], fieldset[disabled] input[type="url"], input[type="color"][disabled], input[type="color"][readonly], fieldset[disabled] input[type="color"], textarea[disabled], textarea[readonly], fieldset[disabled] textarea { + background-color: #DDDDDD; + cursor: default; } + input[type="text"].radius, input[type="password"].radius, input[type="date"].radius, input[type="datetime"].radius, input[type="datetime-local"].radius, input[type="month"].radius, input[type="week"].radius, input[type="email"].radius, input[type="number"].radius, input[type="search"].radius, input[type="tel"].radius, input[type="time"].radius, input[type="url"].radius, input[type="color"].radius, textarea.radius { + border-radius: 3px; } + +form .row .prefix-radius.row.collapse input, +form .row .prefix-radius.row.collapse textarea, +form .row .prefix-radius.row.collapse select, +form .row .prefix-radius.row.collapse button { + border-radius: 0; + -webkit-border-bottom-right-radius: 3px; + -webkit-border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; } +form .row .prefix-radius.row.collapse .prefix { + border-radius: 0; + -webkit-border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; } +form .row .postfix-radius.row.collapse input, +form .row .postfix-radius.row.collapse textarea, +form .row .postfix-radius.row.collapse select, +form .row .postfix-radius.row.collapse button { + border-radius: 0; + -webkit-border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; } +form .row .postfix-radius.row.collapse .postfix { + border-radius: 0; + -webkit-border-bottom-right-radius: 3px; + -webkit-border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; } +form .row .prefix-round.row.collapse input, +form .row .prefix-round.row.collapse textarea, +form .row .prefix-round.row.collapse select, +form .row .prefix-round.row.collapse button { + border-radius: 0; + -webkit-border-bottom-right-radius: 1000px; + -webkit-border-top-right-radius: 1000px; + border-bottom-right-radius: 1000px; + border-top-right-radius: 1000px; } +form .row .prefix-round.row.collapse .prefix { + border-radius: 0; + -webkit-border-bottom-left-radius: 1000px; + -webkit-border-top-left-radius: 1000px; + border-bottom-left-radius: 1000px; + border-top-left-radius: 1000px; } +form .row .postfix-round.row.collapse input, +form .row .postfix-round.row.collapse textarea, +form .row .postfix-round.row.collapse select, +form .row .postfix-round.row.collapse button { + border-radius: 0; + -webkit-border-bottom-left-radius: 1000px; + -webkit-border-top-left-radius: 1000px; + border-bottom-left-radius: 1000px; + border-top-left-radius: 1000px; } +form .row .postfix-round.row.collapse .postfix { + border-radius: 0; + -webkit-border-bottom-right-radius: 1000px; + -webkit-border-top-right-radius: 1000px; + border-bottom-right-radius: 1000px; + border-top-right-radius: 1000px; } + +input[type="submit"] { + -webkit-appearance: none; + -moz-appearance: none; + border-radius: 0; } + +/* Respect enforced amount of rows for textarea */ +textarea[rows] { + height: auto; } + +/* Not allow resize out of parent */ +textarea { + max-width: 100%; } + +::-webkit-input-placeholder { + color: #cccccc; } + +:-moz-placeholder { + /* Firefox 18- */ + color: #cccccc; } + +::-moz-placeholder { + /* Firefox 19+ */ + color: #cccccc; } + +:-ms-input-placeholder { + color: #cccccc; } + +/* Add height value for select elements to match text input height */ +select { + -webkit-appearance: none !important; + -moz-appearance: none !important; + background-color: #FAFAFA; + border-radius: 0; + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+); + background-position: 100% center; + background-repeat: no-repeat; + border-style: solid; + border-width: 1px; + border-color: #cccccc; + color: rgba(0, 0, 0, 0.75); + font-family: inherit; + font-size: 0.875rem; + line-height: normal; + padding: 0.5rem; + border-radius: 0; + height: 2.3125rem; } + select::-ms-expand { + display: none; } + select.radius { + border-radius: 3px; } + select:hover { + background-color: #f3f3f3; + border-color: #999999; } + select:disabled { + background-color: #DDDDDD; + cursor: default; } + select[multiple] { + height: auto; } + +/* Adjust margin for form elements below */ +input[type="file"], +input[type="checkbox"], +input[type="radio"], +select { + margin: 0 0 1rem 0; } + +input[type="checkbox"] + label, +input[type="radio"] + label { + display: inline-block; + margin-left: 0.5rem; + margin-right: 1rem; + margin-bottom: 0; + vertical-align: baseline; } + +/* Normalize file input width */ +input[type="file"] { + width: 100%; } + +/* HTML5 Number spinners settings */ +/* We add basic fieldset styling */ +fieldset { + border: 1px solid #DDDDDD; + margin: 1.125rem 0; + padding: 1.25rem; } + fieldset legend { + background: #FFFFFF; + font-weight: bold; + margin-left: -0.1875rem; + margin: 0; + padding: 0 0.1875rem; } + +/* Error Handling */ +[data-abide] .error small.error, [data-abide] .error span.error, [data-abide] span.error, [data-abide] small.error { + display: block; + font-size: 0.75rem; + font-style: italic; + font-weight: normal; + margin-bottom: 1rem; + margin-top: -1px; + padding: 0.375rem 0.5625rem 0.5625rem; + background: #f04124; + color: #FFFFFF; } +[data-abide] span.error, [data-abide] small.error { + display: none; } + +span.error, small.error { + display: block; + font-size: 0.75rem; + font-style: italic; + font-weight: normal; + margin-bottom: 1rem; + margin-top: -1px; + padding: 0.375rem 0.5625rem 0.5625rem; + background: #f04124; + color: #FFFFFF; } + +.error input, +.error textarea, +.error select { + margin-bottom: 0; } +.error input[type="checkbox"], +.error input[type="radio"] { + margin-bottom: 1rem; } +.error label, +.error label.error { + color: #f04124; } +.error small.error { + display: block; + font-size: 0.75rem; + font-style: italic; + font-weight: normal; + margin-bottom: 1rem; + margin-top: -1px; + padding: 0.375rem 0.5625rem 0.5625rem; + background: #f04124; + color: #FFFFFF; } +.error > label > small { + background: transparent; + color: #676767; + display: inline; + font-size: 60%; + font-style: normal; + margin: 0; + padding: 0; + text-transform: capitalize; } +.error span.error-message { + display: block; } + +input.error, +textarea.error, +select.error { + margin-bottom: 0; } + +label.error { + color: #f04124; } + +meta.foundation-mq-topbar { + font-family: "/only screen and (min-width:40.0625em)/"; + width: 40.0625em; } + +/* Wrapped around .top-bar to contain to grid width */ +.contain-to-grid { + width: 100%; + background: #333333; } + .contain-to-grid .top-bar { + margin-bottom: 0; } + +.fixed { + position: fixed; + top: 0; + width: 100%; + z-index: 99; + left: 0; } + .fixed.expanded:not(.top-bar) { + height: auto; + max-height: 100%; + overflow-y: auto; + width: 100%; } + .fixed.expanded:not(.top-bar) .title-area { + position: fixed; + width: 100%; + z-index: 99; } + .fixed.expanded:not(.top-bar) .top-bar-section { + margin-top: 2.8125rem; + z-index: 98; } + +.top-bar { + background: #333333; + height: 2.8125rem; + line-height: 2.8125rem; + margin-bottom: 0; + overflow: hidden; + position: relative; } + .top-bar ul { + list-style: none; + margin-bottom: 0; } + .top-bar .row { + max-width: none; } + .top-bar form, + .top-bar input, + .top-bar select { + margin-bottom: 0; } + .top-bar input, + .top-bar select { + font-size: 0.75rem; + height: 1.75rem; + padding-bottom: .35rem; + padding-top: .35rem; } + .top-bar .button, .top-bar button { + font-size: 0.75rem; + margin-bottom: 0; + padding-bottom: 0.4125rem; + padding-top: 0.4125rem; } + @media only screen and (max-width: 40em) { + .top-bar .button, .top-bar button { + position: relative; + top: -1px; } } + .top-bar .title-area { + margin: 0; + position: relative; } + .top-bar .name { + font-size: 16px; + height: 2.8125rem; + margin: 0; } + .top-bar .name h1, .top-bar .name h2, .top-bar .name h3, .top-bar .name h4, .top-bar .name p, .top-bar .name span { + font-size: 1.0625rem; + line-height: 2.8125rem; + margin: 0; } + .top-bar .name h1 a, .top-bar .name h2 a, .top-bar .name h3 a, .top-bar .name h4 a, .top-bar .name p a, .top-bar .name span a { + color: #FFFFFF; + display: block; + font-weight: normal; + padding: 0 0.9375rem; + width: 75%; } + .top-bar .toggle-topbar { + position: absolute; + right: 0; + top: 0; } + .top-bar .toggle-topbar a { + color: #FFFFFF; + display: block; + font-size: 0.8125rem; + font-weight: bold; + height: 2.8125rem; + line-height: 2.8125rem; + padding: 0 0.9375rem; + position: relative; + text-transform: uppercase; } + .top-bar .toggle-topbar.menu-icon { + margin-top: -16px; + top: 50%; } + .top-bar .toggle-topbar.menu-icon a { + color: #FFFFFF; + height: 34px; + line-height: 33px; + padding: 0 2.5rem 0 0.9375rem; + position: relative; } + .top-bar .toggle-topbar.menu-icon a span::after { + content: ""; + display: block; + height: 0; + position: absolute; + margin-top: -8px; + top: 50%; + right: 0.9375rem; + box-shadow: 0 0 0 1px #FFFFFF, 0 7px 0 1px #FFFFFF, 0 14px 0 1px #FFFFFF; + width: 16px; } + .top-bar .toggle-topbar.menu-icon a span:hover:after { + box-shadow: 0 0 0 1px "", 0 7px 0 1px "", 0 14px 0 1px ""; } + .top-bar.expanded { + background: transparent; + height: auto; } + .top-bar.expanded .title-area { + background: #333333; } + .top-bar.expanded .toggle-topbar a { + color: #888888; } + .top-bar.expanded .toggle-topbar a span::after { + box-shadow: 0 0 0 1px #888888, 0 7px 0 1px #888888, 0 14px 0 1px #888888; } + @media screen and (-webkit-min-device-pixel-ratio: 0) { + .top-bar.expanded .top-bar-section .has-dropdown.moved > .dropdown, + .top-bar.expanded .top-bar-section .dropdown { + clip: initial; } + .top-bar.expanded .top-bar-section .has-dropdown:not(.moved) > ul { + padding: 0; } } + +.top-bar-section { + left: 0; + position: relative; + width: auto; + transition: left 300ms ease-out; } + .top-bar-section ul { + display: block; + font-size: 16px; + height: auto; + margin: 0; + padding: 0; + width: 100%; } + .top-bar-section .divider, + .top-bar-section [role="separator"] { + border-top: solid 1px #1a1a1a; + clear: both; + height: 1px; + width: 100%; } + .top-bar-section ul li { + background: #333333; } + .top-bar-section ul li > a { + color: #FFFFFF; + display: block; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-size: 0.8125rem; + font-weight: normal; + padding-left: 0.9375rem; + padding: 12px 0 12px 0.9375rem; + text-transform: none; + width: 100%; } + .top-bar-section ul li > a.button { + font-size: 0.8125rem; + padding-left: 0.9375rem; + padding-right: 0.9375rem; + background-color: #008CBA; + border-color: #007095; + color: #FFFFFF; } + .top-bar-section ul li > a.button:hover, .top-bar-section ul li > a.button:focus { + background-color: #007095; } + .top-bar-section ul li > a.button:hover, .top-bar-section ul li > a.button:focus { + color: #FFFFFF; } + .top-bar-section ul li > a.button.secondary { + background-color: #e7e7e7; + border-color: #b9b9b9; + color: #333333; } + .top-bar-section ul li > a.button.secondary:hover, .top-bar-section ul li > a.button.secondary:focus { + background-color: #b9b9b9; } + .top-bar-section ul li > a.button.secondary:hover, .top-bar-section ul li > a.button.secondary:focus { + color: #333333; } + .top-bar-section ul li > a.button.success { + background-color: #43AC6A; + border-color: #368a55; + color: #FFFFFF; } + .top-bar-section ul li > a.button.success:hover, .top-bar-section ul li > a.button.success:focus { + background-color: #368a55; } + .top-bar-section ul li > a.button.success:hover, .top-bar-section ul li > a.button.success:focus { + color: #FFFFFF; } + .top-bar-section ul li > a.button.alert { + background-color: #f04124; + border-color: #cf2a0e; + color: #FFFFFF; } + .top-bar-section ul li > a.button.alert:hover, .top-bar-section ul li > a.button.alert:focus { + background-color: #cf2a0e; } + .top-bar-section ul li > a.button.alert:hover, .top-bar-section ul li > a.button.alert:focus { + color: #FFFFFF; } + .top-bar-section ul li > a.button.warning { + background-color: #f08a24; + border-color: #cf6e0e; + color: #FFFFFF; } + .top-bar-section ul li > a.button.warning:hover, .top-bar-section ul li > a.button.warning:focus { + background-color: #cf6e0e; } + .top-bar-section ul li > a.button.warning:hover, .top-bar-section ul li > a.button.warning:focus { + color: #FFFFFF; } + .top-bar-section ul li > a.button.info { + background-color: #a0d3e8; + border-color: #61b6d9; + color: #333333; } + .top-bar-section ul li > a.button.info:hover, .top-bar-section ul li > a.button.info:focus { + background-color: #61b6d9; } + .top-bar-section ul li > a.button.info:hover, .top-bar-section ul li > a.button.info:focus { + color: #FFFFFF; } + .top-bar-section ul li > button { + font-size: 0.8125rem; + padding-left: 0.9375rem; + padding-right: 0.9375rem; + background-color: #008CBA; + border-color: #007095; + color: #FFFFFF; } + .top-bar-section ul li > button:hover, .top-bar-section ul li > button:focus { + background-color: #007095; } + .top-bar-section ul li > button:hover, .top-bar-section ul li > button:focus { + color: #FFFFFF; } + .top-bar-section ul li > button.secondary { + background-color: #e7e7e7; + border-color: #b9b9b9; + color: #333333; } + .top-bar-section ul li > button.secondary:hover, .top-bar-section ul li > button.secondary:focus { + background-color: #b9b9b9; } + .top-bar-section ul li > button.secondary:hover, .top-bar-section ul li > button.secondary:focus { + color: #333333; } + .top-bar-section ul li > button.success { + background-color: #43AC6A; + border-color: #368a55; + color: #FFFFFF; } + .top-bar-section ul li > button.success:hover, .top-bar-section ul li > button.success:focus { + background-color: #368a55; } + .top-bar-section ul li > button.success:hover, .top-bar-section ul li > button.success:focus { + color: #FFFFFF; } + .top-bar-section ul li > button.alert { + background-color: #f04124; + border-color: #cf2a0e; + color: #FFFFFF; } + .top-bar-section ul li > button.alert:hover, .top-bar-section ul li > button.alert:focus { + background-color: #cf2a0e; } + .top-bar-section ul li > button.alert:hover, .top-bar-section ul li > button.alert:focus { + color: #FFFFFF; } + .top-bar-section ul li > button.warning { + background-color: #f08a24; + border-color: #cf6e0e; + color: #FFFFFF; } + .top-bar-section ul li > button.warning:hover, .top-bar-section ul li > button.warning:focus { + background-color: #cf6e0e; } + .top-bar-section ul li > button.warning:hover, .top-bar-section ul li > button.warning:focus { + color: #FFFFFF; } + .top-bar-section ul li > button.info { + background-color: #a0d3e8; + border-color: #61b6d9; + color: #333333; } + .top-bar-section ul li > button.info:hover, .top-bar-section ul li > button.info:focus { + background-color: #61b6d9; } + .top-bar-section ul li > button.info:hover, .top-bar-section ul li > button.info:focus { + color: #FFFFFF; } + .top-bar-section ul li:hover:not(.has-form) > a { + background-color: #555555; + color: #FFFFFF; + background: #222222; } + .top-bar-section ul li.active > a { + background: #008CBA; + color: #FFFFFF; } + .top-bar-section ul li.active > a:hover { + background: #0078a0; + color: #FFFFFF; } + .top-bar-section .has-form { + padding: 0.9375rem; } + .top-bar-section .has-dropdown { + position: relative; } + .top-bar-section .has-dropdown > a:after { + border: inset 5px; + content: ""; + display: block; + height: 0; + width: 0; + border-color: transparent transparent transparent rgba(255, 255, 255, 0.4); + border-left-style: solid; + margin-right: 0.9375rem; + margin-top: -4.5px; + position: absolute; + top: 50%; + right: 0; } + .top-bar-section .has-dropdown.moved { + position: static; } + .top-bar-section .has-dropdown.moved > .dropdown { + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; + display: block; + position: absolute !important; + width: 100%; } + .top-bar-section .has-dropdown.moved > a:after { + display: none; } + .top-bar-section .dropdown { + clip: rect(1px, 1px, 1px, 1px); + height: 1px; + overflow: hidden; + position: absolute !important; + width: 1px; + display: block; + padding: 0; + position: absolute; + top: 0; + z-index: 99; + left: 100%; } + .top-bar-section .dropdown li { + height: auto; + width: 100%; } + .top-bar-section .dropdown li a { + font-weight: normal; + padding: 8px 0.9375rem; } + .top-bar-section .dropdown li a.parent-link { + font-weight: normal; } + .top-bar-section .dropdown li.title h5, .top-bar-section .dropdown li.parent-link { + margin-bottom: 0; + margin-top: 0; + font-size: 1.125rem; } + .top-bar-section .dropdown li.title h5 a, .top-bar-section .dropdown li.parent-link a { + color: #FFFFFF; + display: block; } + .top-bar-section .dropdown li.title h5 a:hover, .top-bar-section .dropdown li.parent-link a:hover { + background: none; } + .top-bar-section .dropdown li.has-form { + padding: 8px 0.9375rem; } + .top-bar-section .dropdown li .button, + .top-bar-section .dropdown li button { + top: auto; } + .top-bar-section .dropdown label { + color: #777777; + font-size: 0.625rem; + font-weight: bold; + margin-bottom: 0; + padding: 8px 0.9375rem 2px; + text-transform: uppercase; } + +.js-generated { + display: block; } + +@media only screen and (min-width: 40.0625em) { + .top-bar { + background: #333333; + 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, + .top-bar .name h2 a, + .top-bar .name h3 a, + .top-bar .name h4 a, + .top-bar .name h5 a, + .top-bar .name h6 a { + width: auto; } + .top-bar input, + .top-bar select, + .top-bar .button, + .top-bar button { + font-size: 0.875rem; + height: 1.75rem; + position: relative; + top: 0.53125rem; } + .top-bar.expanded { + background: #333333; } + + .contain-to-grid .top-bar { + margin-bottom: 0; + margin: 0 auto; + max-width: 62.5rem; } + + .top-bar-section { + transition: none 0 0; + left: 0 !important; } + .top-bar-section ul { + display: inline; + height: auto !important; + width: auto; } + .top-bar-section ul li { + float: left; } + .top-bar-section ul li .js-generated { + display: none; } + .top-bar-section li.hover > a:not(.button) { + background-color: #555555; + background: #222222; + color: #FFFFFF; } + .top-bar-section li:not(.has-form) a:not(.button) { + background: #333333; + line-height: 2.8125rem; + padding: 0 0.9375rem; } + .top-bar-section li:not(.has-form) a:not(.button):hover { + background-color: #555555; + background: #222222; } + .top-bar-section li.active:not(.has-form) a:not(.button) { + background: #008CBA; + color: #FFFFFF; + line-height: 2.8125rem; + padding: 0 0.9375rem; } + .top-bar-section li.active:not(.has-form) a:not(.button):hover { + background: #0078a0; + color: #FFFFFF; } + .top-bar-section .has-dropdown > a { + padding-right: 2.1875rem !important; } + .top-bar-section .has-dropdown > a:after { + border: inset 5px; + content: ""; + display: block; + height: 0; + width: 0; + border-color: rgba(255, 255, 255, 0.4) transparent transparent transparent; + border-top-style: solid; + margin-top: -2.5px; + top: 1.40625rem; } + .top-bar-section .has-dropdown.moved { + position: relative; } + .top-bar-section .has-dropdown.moved > .dropdown { + clip: rect(1px, 1px, 1px, 1px); + height: 1px; + overflow: hidden; + position: absolute !important; + width: 1px; + display: block; } + .top-bar-section .has-dropdown.hover > .dropdown, .top-bar-section .has-dropdown.not-click:hover > .dropdown { + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; + display: block; + position: absolute !important; } + .top-bar-section .has-dropdown > a:focus + .dropdown { + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; + display: block; + position: absolute !important; } + .top-bar-section .has-dropdown .dropdown li.has-dropdown > a:after { + border: none; + content: "\00bb"; + top: 0.1875rem; + right: 5px; } + .top-bar-section .dropdown { + left: 0; + background: transparent; + min-width: 100%; + top: auto; } + .top-bar-section .dropdown li a { + background: #333333; + color: #FFFFFF; + line-height: 2.8125rem; + padding: 12px 0.9375rem; + white-space: nowrap; } + .top-bar-section .dropdown li:not(.has-form):not(.active) > a:not(.button) { + background: #333333; + color: #FFFFFF; } + .top-bar-section .dropdown li:not(.has-form):not(.active):hover > a:not(.button) { + background-color: #555555; + color: #FFFFFF; + background: #222222; } + .top-bar-section .dropdown li label { + background: #333333; + white-space: nowrap; } + .top-bar-section .dropdown li .dropdown { + left: 100%; + top: 0; } + .top-bar-section > ul > .divider, + .top-bar-section > ul > [role="separator"] { + border-right: solid 1px #4e4e4e; + border-bottom: none; + border-top: none; + clear: none; + height: 2.8125rem; + width: 0; } + .top-bar-section .has-form { + background: #333333; + height: 2.8125rem; + padding: 0 0.9375rem; } + .top-bar-section .right li .dropdown { + left: auto; + right: 0; } + .top-bar-section .right li .dropdown li .dropdown { + right: 100%; } + .top-bar-section .left li .dropdown { + right: auto; + left: 0; } + .top-bar-section .left li .dropdown li .dropdown { + left: 100%; } + + .no-js .top-bar-section ul li:hover > a { + background-color: #555555; + background: #222222; + color: #FFFFFF; } + .no-js .top-bar-section ul li:active > a { + background: #008CBA; + color: #FFFFFF; } + .no-js .top-bar-section .has-dropdown:hover > .dropdown { + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; + display: block; + position: absolute !important; } + .no-js .top-bar-section .has-dropdown > a:focus + .dropdown { + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; + display: block; + position: absolute !important; } } +.breadcrumbs { + border-style: solid; + border-width: 1px; + display: block; + list-style: none; + margin-left: 0; + overflow: hidden; + padding: 0.5625rem 0.875rem 0.5625rem; + background-color: #f4f4f4; + border-color: gainsboro; + border-radius: 3px; } + .breadcrumbs > * { + color: #008CBA; + float: left; + font-size: 0.6875rem; + line-height: 0.6875rem; + margin: 0; + text-transform: uppercase; } + .breadcrumbs > *:hover a, .breadcrumbs > *:focus a { + text-decoration: underline; } + .breadcrumbs > * a { + color: #008CBA; } + .breadcrumbs > *.current { + color: #333333; + cursor: default; } + .breadcrumbs > *.current a { + color: #333333; + cursor: default; } + .breadcrumbs > *.current:hover, .breadcrumbs > *.current:hover a, .breadcrumbs > *.current:focus, .breadcrumbs > *.current:focus a { + text-decoration: none; } + .breadcrumbs > *.unavailable { + color: #999999; } + .breadcrumbs > *.unavailable a { + color: #999999; } + .breadcrumbs > *.unavailable:hover, .breadcrumbs > *.unavailable:hover a, .breadcrumbs > *.unavailable:focus, + .breadcrumbs > *.unavailable a:focus { + color: #999999; + cursor: not-allowed; + text-decoration: none; } + .breadcrumbs > *:before { + color: #AAAAAA; + content: "/"; + margin: 0 0.75rem; + position: relative; + top: 1px; } + .breadcrumbs > *:first-child:before { + content: " "; + margin: 0; } + +/* Accessibility - hides the forward slash */ +[aria-label="breadcrumbs"] [aria-hidden="true"]:after { + content: "/"; } + +.alert-box { + border-style: solid; + border-width: 1px; + display: block; + font-size: 0.8125rem; + font-weight: normal; + margin-bottom: 1.25rem; + padding: 0.875rem 1.5rem 0.875rem 0.875rem; + position: relative; + transition: opacity 300ms ease-out; + background-color: #008CBA; + border-color: #0078a0; + color: #FFFFFF; } + .alert-box .close { + right: 0.25rem; + background: inherit; + color: #333333; + font-size: 1.375rem; + line-height: .9; + margin-top: -0.6875rem; + opacity: 0.3; + padding: 0 6px 4px; + position: absolute; + top: 50%; } + .alert-box .close:hover, .alert-box .close:focus { + opacity: 0.5; } + .alert-box.radius { + border-radius: 3px; } + .alert-box.round { + border-radius: 1000px; } + .alert-box.success { + background-color: #43AC6A; + border-color: #3a945b; + color: #FFFFFF; } + .alert-box.alert { + background-color: #f04124; + border-color: #de2d0f; + color: #FFFFFF; } + .alert-box.secondary { + background-color: #e7e7e7; + border-color: #c7c7c7; + color: #4f4f4f; } + .alert-box.warning { + background-color: #f08a24; + border-color: #de770f; + color: #FFFFFF; } + .alert-box.info { + background-color: #a0d3e8; + border-color: #74bfdd; + color: #4f4f4f; } + .alert-box.alert-close { + opacity: 0; } + +.inline-list { + list-style: none; + margin-left: -1.375rem; + margin-right: 0; + margin: 0 auto 1.0625rem auto; + overflow: hidden; + padding: 0; } + .inline-list > li { + display: block; + float: left; + list-style: none; + margin-left: 1.375rem; } + .inline-list > li > * { + display: block; } + +.button-group { + list-style: none; + margin: 0; + left: 0; } + .button-group:before, .button-group:after { + content: " "; + display: table; } + .button-group:after { + clear: both; } + .button-group.even-2 li { + display: inline-block; + margin: 0 -2px; + width: 50%; } + .button-group.even-2 li > button, .button-group.even-2 li .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.even-2 li:first-child button, .button-group.even-2 li:first-child .button { + border-left: 0; } + .button-group.even-2 li button, .button-group.even-2 li .button { + width: 100%; } + .button-group.even-3 li { + display: inline-block; + margin: 0 -2px; + width: 33.33333%; } + .button-group.even-3 li > button, .button-group.even-3 li .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.even-3 li:first-child button, .button-group.even-3 li:first-child .button { + border-left: 0; } + .button-group.even-3 li button, .button-group.even-3 li .button { + width: 100%; } + .button-group.even-4 li { + display: inline-block; + margin: 0 -2px; + width: 25%; } + .button-group.even-4 li > button, .button-group.even-4 li .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.even-4 li:first-child button, .button-group.even-4 li:first-child .button { + border-left: 0; } + .button-group.even-4 li button, .button-group.even-4 li .button { + width: 100%; } + .button-group.even-5 li { + display: inline-block; + margin: 0 -2px; + width: 20%; } + .button-group.even-5 li > button, .button-group.even-5 li .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.even-5 li:first-child button, .button-group.even-5 li:first-child .button { + border-left: 0; } + .button-group.even-5 li button, .button-group.even-5 li .button { + width: 100%; } + .button-group.even-6 li { + display: inline-block; + margin: 0 -2px; + width: 16.66667%; } + .button-group.even-6 li > button, .button-group.even-6 li .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.even-6 li:first-child button, .button-group.even-6 li:first-child .button { + border-left: 0; } + .button-group.even-6 li button, .button-group.even-6 li .button { + width: 100%; } + .button-group.even-7 li { + display: inline-block; + margin: 0 -2px; + width: 14.28571%; } + .button-group.even-7 li > button, .button-group.even-7 li .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.even-7 li:first-child button, .button-group.even-7 li:first-child .button { + border-left: 0; } + .button-group.even-7 li button, .button-group.even-7 li .button { + width: 100%; } + .button-group.even-8 li { + display: inline-block; + margin: 0 -2px; + width: 12.5%; } + .button-group.even-8 li > button, .button-group.even-8 li .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.even-8 li:first-child button, .button-group.even-8 li:first-child .button { + border-left: 0; } + .button-group.even-8 li button, .button-group.even-8 li .button { + width: 100%; } + .button-group > li { + display: inline-block; + margin: 0 -2px; } + .button-group > li > button, .button-group > li .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group > li:first-child button, .button-group > li:first-child .button { + border-left: 0; } + .button-group.stack > li { + display: block; + margin: 0; + float: none; } + .button-group.stack > li > button, .button-group.stack > li .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.stack > li:first-child button, .button-group.stack > li:first-child .button { + border-left: 0; } + .button-group.stack > li > button, .button-group.stack > li .button { + border-color: rgba(255, 255, 255, 0.5); + border-left-width: 0; + border-top: 1px solid; + display: block; + margin: 0; } + .button-group.stack > li > button { + width: 100%; } + .button-group.stack > li:first-child button, .button-group.stack > li:first-child .button { + border-top: 0; } + .button-group.stack-for-small > li { + display: inline-block; + margin: 0 -2px; } + .button-group.stack-for-small > li > button, .button-group.stack-for-small > li .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.stack-for-small > li:first-child button, .button-group.stack-for-small > li:first-child .button { + border-left: 0; } + @media only screen and (max-width: 40em) { + .button-group.stack-for-small > li { + display: block; + margin: 0; } + .button-group.stack-for-small > li > button, .button-group.stack-for-small > li .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.stack-for-small > li:first-child button, .button-group.stack-for-small > li:first-child .button { + border-left: 0; } + .button-group.stack-for-small > li > button, .button-group.stack-for-small > li .button { + border-color: rgba(255, 255, 255, 0.5); + border-left-width: 0; + border-top: 1px solid; + display: block; + margin: 0; } + .button-group.stack-for-small > li > button { + width: 100%; } + .button-group.stack-for-small > li:first-child button, .button-group.stack-for-small > li:first-child .button { + border-top: 0; } } + .button-group.radius > * { + display: inline-block; + margin: 0 -2px; } + .button-group.radius > * > button, .button-group.radius > * .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.radius > *:first-child button, .button-group.radius > *:first-child .button { + border-left: 0; } + .button-group.radius > *, + .button-group.radius > * > a, + .button-group.radius > * > button, + .button-group.radius > * > .button { + border-radius: 0; } + .button-group.radius > *:first-child, .button-group.radius > *:first-child > a, .button-group.radius > *:first-child > button, .button-group.radius > *:first-child > .button { + -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 { + -webkit-border-bottom-right-radius: 3px; + -webkit-border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; } + .button-group.radius.stack > * { + display: block; + margin: 0; } + .button-group.radius.stack > * > button, .button-group.radius.stack > * .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.radius.stack > *:first-child button, .button-group.radius.stack > *:first-child .button { + border-left: 0; } + .button-group.radius.stack > * > button, .button-group.radius.stack > * .button { + border-color: rgba(255, 255, 255, 0.5); + border-left-width: 0; + border-top: 1px solid; + display: block; + margin: 0; } + .button-group.radius.stack > * > button { + width: 100%; } + .button-group.radius.stack > *:first-child button, .button-group.radius.stack > *:first-child .button { + border-top: 0; } + .button-group.radius.stack > *, + .button-group.radius.stack > * > a, + .button-group.radius.stack > * > button, + .button-group.radius.stack > * > .button { + border-radius: 0; } + .button-group.radius.stack > *:first-child, .button-group.radius.stack > *:first-child > a, .button-group.radius.stack > *:first-child > button, .button-group.radius.stack > *:first-child > .button { + -webkit-top-left-radius: 3px; + -webkit-top-right-radius: 3px; + border-top-left-radius: 3px; + border-top-right-radius: 3px; } + .button-group.radius.stack > *:last-child, .button-group.radius.stack > *:last-child > a, .button-group.radius.stack > *:last-child > button, .button-group.radius.stack > *:last-child > .button { + -webkit-bottom-left-radius: 3px; + -webkit-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; } + @media only screen and (min-width: 40.0625em) { + .button-group.radius.stack-for-small > * { + display: inline-block; + margin: 0 -2px; } + .button-group.radius.stack-for-small > * > button, .button-group.radius.stack-for-small > * .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.radius.stack-for-small > *:first-child button, .button-group.radius.stack-for-small > *:first-child .button { + border-left: 0; } + .button-group.radius.stack-for-small > *, + .button-group.radius.stack-for-small > * > a, + .button-group.radius.stack-for-small > * > button, + .button-group.radius.stack-for-small > * > .button { + border-radius: 0; } + .button-group.radius.stack-for-small > *:first-child, .button-group.radius.stack-for-small > *:first-child > a, .button-group.radius.stack-for-small > *:first-child > button, .button-group.radius.stack-for-small > *:first-child > .button { + -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.stack-for-small > *:last-child, .button-group.radius.stack-for-small > *:last-child > a, .button-group.radius.stack-for-small > *:last-child > button, .button-group.radius.stack-for-small > *:last-child > .button { + -webkit-border-bottom-right-radius: 3px; + -webkit-border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; } } + @media only screen and (max-width: 40em) { + .button-group.radius.stack-for-small > * { + display: block; + margin: 0; } + .button-group.radius.stack-for-small > * > button, .button-group.radius.stack-for-small > * .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.radius.stack-for-small > *:first-child button, .button-group.radius.stack-for-small > *:first-child .button { + border-left: 0; } + .button-group.radius.stack-for-small > * > button, .button-group.radius.stack-for-small > * .button { + border-color: rgba(255, 255, 255, 0.5); + border-left-width: 0; + border-top: 1px solid; + display: block; + margin: 0; } + .button-group.radius.stack-for-small > * > button { + width: 100%; } + .button-group.radius.stack-for-small > *:first-child button, .button-group.radius.stack-for-small > *:first-child .button { + border-top: 0; } + .button-group.radius.stack-for-small > *, + .button-group.radius.stack-for-small > * > a, + .button-group.radius.stack-for-small > * > button, + .button-group.radius.stack-for-small > * > .button { + border-radius: 0; } + .button-group.radius.stack-for-small > *:first-child, .button-group.radius.stack-for-small > *:first-child > a, .button-group.radius.stack-for-small > *:first-child > button, .button-group.radius.stack-for-small > *:first-child > .button { + -webkit-top-left-radius: 3px; + -webkit-top-right-radius: 3px; + border-top-left-radius: 3px; + border-top-right-radius: 3px; } + .button-group.radius.stack-for-small > *:last-child, .button-group.radius.stack-for-small > *:last-child > a, .button-group.radius.stack-for-small > *:last-child > button, .button-group.radius.stack-for-small > *:last-child > .button { + -webkit-bottom-left-radius: 3px; + -webkit-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; } } + .button-group.round > * { + display: inline-block; + margin: 0 -2px; } + .button-group.round > * > button, .button-group.round > * .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.round > *:first-child button, .button-group.round > *:first-child .button { + border-left: 0; } + .button-group.round > *, + .button-group.round > * > a, + .button-group.round > * > button, + .button-group.round > * > .button { + border-radius: 0; } + .button-group.round > *:first-child, .button-group.round > *:first-child > a, .button-group.round > *:first-child > button, .button-group.round > *:first-child > .button { + -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 { + -webkit-border-bottom-right-radius: 1000px; + -webkit-border-top-right-radius: 1000px; + border-bottom-right-radius: 1000px; + border-top-right-radius: 1000px; } + .button-group.round.stack > * { + display: block; + margin: 0; } + .button-group.round.stack > * > button, .button-group.round.stack > * .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.round.stack > *:first-child button, .button-group.round.stack > *:first-child .button { + border-left: 0; } + .button-group.round.stack > * > button, .button-group.round.stack > * .button { + border-color: rgba(255, 255, 255, 0.5); + border-left-width: 0; + border-top: 1px solid; + display: block; + margin: 0; } + .button-group.round.stack > * > button { + width: 100%; } + .button-group.round.stack > *:first-child button, .button-group.round.stack > *:first-child .button { + border-top: 0; } + .button-group.round.stack > *, + .button-group.round.stack > * > a, + .button-group.round.stack > * > button, + .button-group.round.stack > * > .button { + border-radius: 0; } + .button-group.round.stack > *:first-child, .button-group.round.stack > *:first-child > a, .button-group.round.stack > *:first-child > button, .button-group.round.stack > *:first-child > .button { + -webkit-top-left-radius: 1rem; + -webkit-top-right-radius: 1rem; + border-top-left-radius: 1rem; + border-top-right-radius: 1rem; } + .button-group.round.stack > *:last-child, .button-group.round.stack > *:last-child > a, .button-group.round.stack > *:last-child > button, .button-group.round.stack > *:last-child > .button { + -webkit-bottom-left-radius: 1rem; + -webkit-bottom-right-radius: 1rem; + border-bottom-left-radius: 1rem; + border-bottom-right-radius: 1rem; } + @media only screen and (min-width: 40.0625em) { + .button-group.round.stack-for-small > * { + display: inline-block; + margin: 0 -2px; } + .button-group.round.stack-for-small > * > button, .button-group.round.stack-for-small > * .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.round.stack-for-small > *:first-child button, .button-group.round.stack-for-small > *:first-child .button { + border-left: 0; } + .button-group.round.stack-for-small > *, + .button-group.round.stack-for-small > * > a, + .button-group.round.stack-for-small > * > button, + .button-group.round.stack-for-small > * > .button { + border-radius: 0; } + .button-group.round.stack-for-small > *:first-child, .button-group.round.stack-for-small > *:first-child > a, .button-group.round.stack-for-small > *:first-child > button, .button-group.round.stack-for-small > *:first-child > .button { + -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.stack-for-small > *:last-child, .button-group.round.stack-for-small > *:last-child > a, .button-group.round.stack-for-small > *:last-child > button, .button-group.round.stack-for-small > *:last-child > .button { + -webkit-border-bottom-right-radius: 1000px; + -webkit-border-top-right-radius: 1000px; + border-bottom-right-radius: 1000px; + border-top-right-radius: 1000px; } } + @media only screen and (max-width: 40em) { + .button-group.round.stack-for-small > * { + display: block; + margin: 0; } + .button-group.round.stack-for-small > * > button, .button-group.round.stack-for-small > * .button { + border-left: 1px solid; + border-color: rgba(255, 255, 255, 0.5); } + .button-group.round.stack-for-small > *:first-child button, .button-group.round.stack-for-small > *:first-child .button { + border-left: 0; } + .button-group.round.stack-for-small > * > button, .button-group.round.stack-for-small > * .button { + border-color: rgba(255, 255, 255, 0.5); + border-left-width: 0; + border-top: 1px solid; + display: block; + margin: 0; } + .button-group.round.stack-for-small > * > button { + width: 100%; } + .button-group.round.stack-for-small > *:first-child button, .button-group.round.stack-for-small > *:first-child .button { + border-top: 0; } + .button-group.round.stack-for-small > *, + .button-group.round.stack-for-small > * > a, + .button-group.round.stack-for-small > * > button, + .button-group.round.stack-for-small > * > .button { + border-radius: 0; } + .button-group.round.stack-for-small > *:first-child, .button-group.round.stack-for-small > *:first-child > a, .button-group.round.stack-for-small > *:first-child > button, .button-group.round.stack-for-small > *:first-child > .button { + -webkit-top-left-radius: 1rem; + -webkit-top-right-radius: 1rem; + border-top-left-radius: 1rem; + border-top-right-radius: 1rem; } + .button-group.round.stack-for-small > *:last-child, .button-group.round.stack-for-small > *:last-child > a, .button-group.round.stack-for-small > *:last-child > button, .button-group.round.stack-for-small > *:last-child > .button { + -webkit-bottom-left-radius: 1rem; + -webkit-bottom-right-radius: 1rem; + border-bottom-left-radius: 1rem; + border-bottom-right-radius: 1rem; } } + +.button-bar:before, .button-bar:after { + content: " "; + display: table; } +.button-bar:after { + clear: both; } +.button-bar .button-group { + float: left; + margin-right: 0.625rem; } + .button-bar .button-group div { + overflow: hidden; } + +/* Panels */ +.panel { + border-style: solid; + border-width: 1px; + border-color: #d8d8d8; + margin-bottom: 1.25rem; + padding: 1.25rem; + background: #f2f2f2; + color: #333333; } + .panel > :first-child { + margin-top: 0; } + .panel > :last-child { + margin-bottom: 0; } + .panel h1, .panel h2, .panel h3, .panel h4, .panel h5, .panel h6, .panel p, .panel li, .panel dl { + color: #333333; } + .panel h1, .panel h2, .panel h3, .panel h4, .panel h5, .panel h6 { + line-height: 1; + margin-bottom: 0.625rem; } + .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: #d8d8d8; + margin-bottom: 1.25rem; + padding: 1.25rem; + background: #ecfaff; + color: #333333; } + .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, .panel.callout p, .panel.callout li, .panel.callout dl { + color: #333333; } + .panel.callout h1, .panel.callout h2, .panel.callout h3, .panel.callout h4, .panel.callout h5, .panel.callout h6 { + line-height: 1; + margin-bottom: 0.625rem; } + .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.callout a:not(.button) { + color: #008CBA; } + .panel.callout a:not(.button):hover, .panel.callout a:not(.button):focus { + color: #0078a0; } + .panel.radius { + border-radius: 3px; } + +.dropdown.button, button.dropdown { + position: relative; + padding-right: 3.5625rem; } + .dropdown.button::after, button.dropdown::after { + border-color: #FFFFFF transparent transparent transparent; + border-style: solid; + content: ""; + display: block; + height: 0; + position: absolute; + top: 50%; + width: 0; } + .dropdown.button::after, button.dropdown::after { + border-width: 0.375rem; + right: 1.40625rem; + margin-top: -0.15625rem; } + .dropdown.button::after, button.dropdown::after { + border-color: #FFFFFF transparent transparent transparent; } + .dropdown.button.tiny, button.dropdown.tiny { + padding-right: 2.625rem; } + .dropdown.button.tiny:after, button.dropdown.tiny:after { + border-width: 0.375rem; + right: 1.125rem; + margin-top: -0.125rem; } + .dropdown.button.tiny::after, button.dropdown.tiny::after { + border-color: #FFFFFF transparent transparent transparent; } + .dropdown.button.small, button.dropdown.small { + padding-right: 3.0625rem; } + .dropdown.button.small::after, button.dropdown.small::after { + border-width: 0.4375rem; + right: 1.3125rem; + margin-top: -0.15625rem; } + .dropdown.button.small::after, button.dropdown.small::after { + border-color: #FFFFFF transparent transparent transparent; } + .dropdown.button.large, button.dropdown.large { + padding-right: 3.625rem; } + .dropdown.button.large::after, button.dropdown.large::after { + border-width: 0.3125rem; + right: 1.71875rem; + margin-top: -0.15625rem; } + .dropdown.button.large::after, button.dropdown.large::after { + border-color: #FFFFFF transparent transparent transparent; } + .dropdown.button.secondary:after, button.dropdown.secondary:after { + border-color: #333333 transparent transparent transparent; } + +/* Image Thumbnails */ +.th { + border: solid 4px #FFFFFF; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); + display: inline-block; + line-height: 0; + max-width: 100%; + transition: all 200ms ease-out; } + .th:hover, .th:focus { + box-shadow: 0 0 6px 1px rgba(0, 140, 186, 0.5); } + .th.radius { + border-radius: 3px; } + +/* Pricing Tables */ +.pricing-table { + border: solid 1px #DDDDDD; + margin-left: 0; + margin-bottom: 1.25rem; } + .pricing-table * { + list-style: none; + line-height: 1; } + .pricing-table .title { + background-color: #333333; + color: #EEEEEE; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-size: 1rem; + font-weight: normal; + padding: 0.9375rem 1.25rem; + text-align: center; } + .pricing-table .price { + background-color: #F6F6F6; + color: #333333; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-size: 2rem; + font-weight: normal; + padding: 0.9375rem 1.25rem; + text-align: center; } + .pricing-table .description { + background-color: #FFFFFF; + border-bottom: dotted 1px #DDDDDD; + color: #777777; + font-size: 0.75rem; + font-weight: normal; + line-height: 1.4; + padding: 0.9375rem; + text-align: center; } + .pricing-table .bullet-item { + background-color: #FFFFFF; + border-bottom: dotted 1px #DDDDDD; + color: #333333; + font-size: 0.875rem; + font-weight: normal; + padding: 0.9375rem; + text-align: center; } + .pricing-table .cta-button { + background-color: #FFFFFF; + padding: 1.25rem 1.25rem 0; + text-align: center; } + +@-webkit-keyframes rotate { + from { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); } } +@keyframes rotate { + from { + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -ms-transform: rotate(0deg); + transform: rotate(0deg); } + to { + -webkit-transform: rotate(360deg); + -moz-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); } } +/* Orbit Graceful Loading */ +.slideshow-wrapper { + position: relative; } + .slideshow-wrapper ul { + list-style-type: none; + margin: 0; } + .slideshow-wrapper ul li, + .slideshow-wrapper ul li .orbit-caption { + display: none; } + .slideshow-wrapper ul li:first-child { + display: block; } + .slideshow-wrapper .orbit-container { + background-color: transparent; } + .slideshow-wrapper .orbit-container li { + display: block; } + .slideshow-wrapper .orbit-container li .orbit-caption { + display: block; } + .slideshow-wrapper .orbit-container .orbit-bullets li { + display: inline-block; } + .slideshow-wrapper .preloader { + border-radius: 1000px; + animation-duration: 1.5s; + animation-iteration-count: infinite; + animation-name: rotate; + animation-timing-function: linear; + border-color: #555555 #FFFFFF; + border: solid 3px; + display: block; + height: 40px; + left: 50%; + margin-left: -20px; + margin-top: -20px; + position: absolute; + top: 50%; + width: 40px; } + +.orbit-container { + background: none; + overflow: hidden; + position: relative; + width: 100%; } + .orbit-container .orbit-slides-container { + list-style: none; + margin: 0; + padding: 0; + position: relative; + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -ms-transform: translateZ(0); + -o-transform: translateZ(0); + transform: translateZ(0); } + .orbit-container .orbit-slides-container img { + display: block; + max-width: 100%; } + .orbit-container .orbit-slides-container > * { + position: absolute; + top: 0; + width: 100%; + margin-left: 100%; } + .orbit-container .orbit-slides-container > *:first-child { + margin-left: 0; } + .orbit-container .orbit-slides-container > * .orbit-caption { + bottom: 0; + position: absolute; + background-color: rgba(51, 51, 51, 0.8); + color: #FFFFFF; + font-size: 0.875rem; + padding: 0.625rem 0.875rem; + width: 100%; } + .orbit-container .orbit-slide-number { + left: 10px; + background: transparent; + color: #FFFFFF; + font-size: 12px; + position: absolute; + top: 10px; + z-index: 10; } + .orbit-container .orbit-slide-number span { + font-weight: 700; + padding: 0.3125rem; } + .orbit-container .orbit-timer { + position: absolute; + top: 12px; + right: 10px; + height: 6px; + width: 100px; + z-index: 10; } + .orbit-container .orbit-timer .orbit-progress { + height: 3px; + background-color: rgba(255, 255, 255, 0.3); + display: block; + width: 0; + position: relative; + right: 20px; + top: 5px; } + .orbit-container .orbit-timer > span { + border: solid 4px #FFFFFF; + border-bottom: none; + border-top: none; + display: none; + height: 14px; + position: absolute; + top: 0; + width: 11px; + right: 0; } + .orbit-container .orbit-timer.paused > span { + top: 0; + width: 11px; + height: 14px; + border: inset 8px; + border-left-style: solid; + border-color: transparent; + border-left-color: #FFFFFF; + right: -4px; } + .orbit-container .orbit-timer.paused > span.dark { + border-left-color: #333333; } + .orbit-container:hover .orbit-timer > span { + display: block; } + .orbit-container .orbit-prev, + .orbit-container .orbit-next { + background-color: transparent; + color: white; + height: 60px; + line-height: 50px; + margin-top: -25px; + position: absolute; + text-indent: -9999px !important; + top: 45%; + width: 36px; + z-index: 10; } + .orbit-container .orbit-prev:hover, + .orbit-container .orbit-next:hover { + background-color: rgba(0, 0, 0, 0.3); } + .orbit-container .orbit-prev > span, + .orbit-container .orbit-next > span { + border: inset 10px; + display: block; + height: 0; + margin-top: -10px; + position: absolute; + top: 50%; + width: 0; } + .orbit-container .orbit-prev { + left: 0; } + .orbit-container .orbit-prev > span { + border-right-style: solid; + border-color: transparent; + border-right-color: #FFFFFF; } + .orbit-container .orbit-prev:hover > span { + border-right-color: #FFFFFF; } + .orbit-container .orbit-next { + right: 0; } + .orbit-container .orbit-next > span { + border-color: transparent; + border-left-style: solid; + border-left-color: #FFFFFF; + left: 50%; + margin-left: -4px; } + .orbit-container .orbit-next:hover > span { + border-left-color: #FFFFFF; } + +.orbit-bullets-container { + text-align: center; } + +.orbit-bullets { + display: block; + float: none; + margin: 0 auto 30px auto; + overflow: hidden; + position: relative; + text-align: center; + top: 10px; } + .orbit-bullets li { + background: #CCCCCC; + cursor: pointer; + display: inline-block; + float: none; + height: 0.5625rem; + margin-right: 6px; + width: 0.5625rem; + border-radius: 1000px; } + .orbit-bullets li.active { + background: #999999; } + .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: 40.0625em) { + .touch .orbit-container .orbit-prev, + .touch .orbit-container .orbit-next { + display: inherit; } + .touch .orbit-bullets { + display: block; } } +@media only screen and (max-width: 40em) { + .orbit-stack-on-small .orbit-slides-container { + height: auto !important; } + .orbit-stack-on-small .orbit-slides-container > * { + margin: 0 !important; + opacity: 1 !important; + position: relative; } + .orbit-stack-on-small .orbit-slide-number { + display: none; } + + .orbit-timer { + display: none; } + + .orbit-next, .orbit-prev { + display: none; } + + .orbit-bullets { + display: none; } } +[data-magellan-expedition], [data-magellan-expedition-clone] { + background: #FFFFFF; + min-width: 100%; + padding: 10px; + z-index: 50; } + [data-magellan-expedition] .sub-nav, [data-magellan-expedition-clone] .sub-nav { + margin-bottom: 0; } + [data-magellan-expedition] .sub-nav dd, [data-magellan-expedition-clone] .sub-nav dd { + margin-bottom: 0; } + [data-magellan-expedition] .sub-nav a, [data-magellan-expedition-clone] .sub-nav a { + line-height: 1.8em; } + +.icon-bar { + display: inline-block; + font-size: 0; + width: 100%; + background: #333333; } + .icon-bar > * { + display: block; + float: left; + font-size: 1rem; + margin: 0 auto; + padding: 1.25rem; + text-align: center; + width: 25%; } + .icon-bar > * i, .icon-bar > * img { + display: block; + margin: 0 auto; } + .icon-bar > * i + label, .icon-bar > * img + label { + margin-top: .0625rem; } + .icon-bar > * i { + font-size: 1.875rem; + vertical-align: middle; } + .icon-bar > * img { + height: 1.875rem; + width: 1.875rem; } + .icon-bar.label-right > * i, .icon-bar.label-right > * img { + display: inline-block; + margin: 0 .0625rem 0 0; } + .icon-bar.label-right > * i + label, .icon-bar.label-right > * img + label { + margin-top: 0; } + .icon-bar.label-right > * label { + display: inline-block; } + .icon-bar.vertical.label-right > * { + text-align: left; } + .icon-bar.vertical, .icon-bar.small-vertical { + height: 100%; + width: auto; } + .icon-bar.vertical .item, .icon-bar.small-vertical .item { + float: none; + margin: auto; + width: auto; } + @media only screen and (min-width: 40.0625em) { + .icon-bar.medium-vertical { + height: 100%; + width: auto; } + .icon-bar.medium-vertical .item { + float: none; + margin: auto; + width: auto; } } + @media only screen and (min-width: 64.0625em) { + .icon-bar.large-vertical { + height: 100%; + width: auto; } + .icon-bar.large-vertical .item { + float: none; + margin: auto; + width: auto; } } + .icon-bar > * { + font-size: 1rem; + padding: 1.25rem; } + .icon-bar > * i + label, .icon-bar > * img + label { + margin-top: .0625rem; + font-size: 1rem; } + .icon-bar > * i { + font-size: 1.875rem; } + .icon-bar > * img { + height: 1.875rem; + width: 1.875rem; } + .icon-bar > * label { + color: #FFFFFF; } + .icon-bar > * i { + color: #FFFFFF; } + .icon-bar > a:hover { + background: #008CBA; } + .icon-bar > a:hover label { + color: #FFFFFF; } + .icon-bar > a:hover i { + color: #FFFFFF; } + .icon-bar > a.active { + background: #008CBA; } + .icon-bar > a.active label { + color: #FFFFFF; } + .icon-bar > a.active i { + color: #FFFFFF; } + .icon-bar .item.disabled { + cursor: not-allowed; + opacity: 0.7; + pointer-events: none; } + .icon-bar .item.disabled > * { + opacity: 0.7; + cursor: not-allowed; } + .icon-bar.two-up .item { + width: 50%; } + .icon-bar.two-up.vertical .item, .icon-bar.two-up.small-vertical .item { + width: auto; } + @media only screen and (min-width: 40.0625em) { + .icon-bar.two-up.medium-vertical .item { + width: auto; } } + @media only screen and (min-width: 64.0625em) { + .icon-bar.two-up.large-vertical .item { + width: auto; } } + .icon-bar.three-up .item { + width: 33.3333%; } + .icon-bar.three-up.vertical .item, .icon-bar.three-up.small-vertical .item { + width: auto; } + @media only screen and (min-width: 40.0625em) { + .icon-bar.three-up.medium-vertical .item { + width: auto; } } + @media only screen and (min-width: 64.0625em) { + .icon-bar.three-up.large-vertical .item { + width: auto; } } + .icon-bar.four-up .item { + width: 25%; } + .icon-bar.four-up.vertical .item, .icon-bar.four-up.small-vertical .item { + width: auto; } + @media only screen and (min-width: 40.0625em) { + .icon-bar.four-up.medium-vertical .item { + width: auto; } } + @media only screen and (min-width: 64.0625em) { + .icon-bar.four-up.large-vertical .item { + width: auto; } } + .icon-bar.five-up .item { + width: 20%; } + .icon-bar.five-up.vertical .item, .icon-bar.five-up.small-vertical .item { + width: auto; } + @media only screen and (min-width: 40.0625em) { + .icon-bar.five-up.medium-vertical .item { + width: auto; } } + @media only screen and (min-width: 64.0625em) { + .icon-bar.five-up.large-vertical .item { + width: auto; } } + .icon-bar.six-up .item { + width: 16.66667%; } + .icon-bar.six-up.vertical .item, .icon-bar.six-up.small-vertical .item { + width: auto; } + @media only screen and (min-width: 40.0625em) { + .icon-bar.six-up.medium-vertical .item { + width: auto; } } + @media only screen and (min-width: 64.0625em) { + .icon-bar.six-up.large-vertical .item { + width: auto; } } + .icon-bar.seven-up .item { + width: 14.28571%; } + .icon-bar.seven-up.vertical .item, .icon-bar.seven-up.small-vertical .item { + width: auto; } + @media only screen and (min-width: 40.0625em) { + .icon-bar.seven-up.medium-vertical .item { + width: auto; } } + @media only screen and (min-width: 64.0625em) { + .icon-bar.seven-up.large-vertical .item { + width: auto; } } + .icon-bar.eight-up .item { + width: 12.5%; } + .icon-bar.eight-up.vertical .item, .icon-bar.eight-up.small-vertical .item { + width: auto; } + @media only screen and (min-width: 40.0625em) { + .icon-bar.eight-up.medium-vertical .item { + width: auto; } } + @media only screen and (min-width: 64.0625em) { + .icon-bar.eight-up.large-vertical .item { + width: auto; } } + +.icon-bar.two-up .item { + width: 50%; } +.icon-bar.two-up.vertical .item, .icon-bar.two-up.small-vertical .item { + width: auto; } +@media only screen and (min-width: 40.0625em) { + .icon-bar.two-up.medium-vertical .item { + width: auto; } } +@media only screen and (min-width: 64.0625em) { + .icon-bar.two-up.large-vertical .item { + width: auto; } } +.icon-bar.three-up .item { + width: 33.3333%; } +.icon-bar.three-up.vertical .item, .icon-bar.three-up.small-vertical .item { + width: auto; } +@media only screen and (min-width: 40.0625em) { + .icon-bar.three-up.medium-vertical .item { + width: auto; } } +@media only screen and (min-width: 64.0625em) { + .icon-bar.three-up.large-vertical .item { + width: auto; } } +.icon-bar.four-up .item { + width: 25%; } +.icon-bar.four-up.vertical .item, .icon-bar.four-up.small-vertical .item { + width: auto; } +@media only screen and (min-width: 40.0625em) { + .icon-bar.four-up.medium-vertical .item { + width: auto; } } +@media only screen and (min-width: 64.0625em) { + .icon-bar.four-up.large-vertical .item { + width: auto; } } +.icon-bar.five-up .item { + width: 20%; } +.icon-bar.five-up.vertical .item, .icon-bar.five-up.small-vertical .item { + width: auto; } +@media only screen and (min-width: 40.0625em) { + .icon-bar.five-up.medium-vertical .item { + width: auto; } } +@media only screen and (min-width: 64.0625em) { + .icon-bar.five-up.large-vertical .item { + width: auto; } } +.icon-bar.six-up .item { + width: 16.66667%; } +.icon-bar.six-up.vertical .item, .icon-bar.six-up.small-vertical .item { + width: auto; } +@media only screen and (min-width: 40.0625em) { + .icon-bar.six-up.medium-vertical .item { + width: auto; } } +@media only screen and (min-width: 64.0625em) { + .icon-bar.six-up.large-vertical .item { + width: auto; } } +.icon-bar.seven-up .item { + width: 14.28571%; } +.icon-bar.seven-up.vertical .item, .icon-bar.seven-up.small-vertical .item { + width: auto; } +@media only screen and (min-width: 40.0625em) { + .icon-bar.seven-up.medium-vertical .item { + width: auto; } } +@media only screen and (min-width: 64.0625em) { + .icon-bar.seven-up.large-vertical .item { + width: auto; } } +.icon-bar.eight-up .item { + width: 12.5%; } +.icon-bar.eight-up.vertical .item, .icon-bar.eight-up.small-vertical .item { + width: auto; } +@media only screen and (min-width: 40.0625em) { + .icon-bar.eight-up.medium-vertical .item { + width: auto; } } +@media only screen and (min-width: 64.0625em) { + .icon-bar.eight-up.large-vertical .item { + width: auto; } } + +.tabs { + margin-bottom: 0 !important; + margin-left: 0; } + .tabs:before, .tabs:after { + content: " "; + display: table; } + .tabs:after { + clear: both; } + .tabs dd, + .tabs .tab-title { + float: left; + list-style: none; + margin-bottom: 0 !important; + position: relative; } + .tabs dd > a, + .tabs .tab-title > a { + display: block; + background-color: #EFEFEF; + color: #222222; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-size: 1rem; + padding: 1rem 2rem; } + .tabs dd > a:hover, + .tabs .tab-title > a:hover { + background-color: #e1e1e1; } + .tabs dd.active a, + .tabs .tab-title.active a { + background-color: #FFFFFF; + color: #222222; } + .tabs.radius dd:first-child a, + .tabs.radius .tab:first-child a { + -webkit-border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; } + .tabs.radius dd:last-child a, + .tabs.radius .tab:last-child a { + -webkit-border-bottom-right-radius: 3px; + -webkit-border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; } + .tabs.vertical dd, + .tabs.vertical .tab-title { + position: inherit; + float: none; + display: block; + top: auto; } + +.tabs-content { + margin-bottom: 1.5rem; + width: 100%; } + .tabs-content:before, .tabs-content:after { + content: " "; + display: table; } + .tabs-content:after { + clear: both; } + .tabs-content > .content { + display: none; + float: left; + padding: 0.9375rem 0; + width: 100%; } + .tabs-content > .content.active { + display: block; + float: none; } + .tabs-content > .content.contained { + padding: 0.9375rem; } + .tabs-content.vertical { + display: block; } + .tabs-content.vertical > .content { + padding: 0 0.9375rem; } + +@media only screen and (min-width: 40.0625em) { + .tabs.vertical { + float: left; + margin: 0; + margin-bottom: 1.25rem !important; + max-width: 20%; + width: 20%; } + + .tabs-content.vertical { + float: left; + margin-left: -1px; + max-width: 80%; + padding-left: 1rem; + width: 80%; } } +.no-js .tabs-content > .content { + display: block; + float: none; } + +ul.pagination { + display: block; + margin-left: -0.3125rem; + min-height: 1.5rem; } + ul.pagination li { + color: #222222; + font-size: 0.875rem; + height: 1.5rem; + margin-left: 0.3125rem; } + ul.pagination li a, ul.pagination li button { + border-radius: 3px; + transition: background-color 300ms ease-out; + background: none; + color: #999999; + display: block; + font-size: 1em; + font-weight: normal; + line-height: inherit; + padding: 0.0625rem 0.625rem 0.0625rem; } + ul.pagination li:hover a, + ul.pagination li a:focus, ul.pagination li:hover button, + ul.pagination li button:focus { + background: #e6e6e6; } + ul.pagination li.unavailable a, ul.pagination li.unavailable button { + cursor: default; + color: #999999; } + ul.pagination li.unavailable:hover a, ul.pagination li.unavailable a:focus, ul.pagination li.unavailable:hover button, ul.pagination li.unavailable button:focus { + background: transparent; } + ul.pagination li.current a, ul.pagination li.current button { + background: #008CBA; + color: #FFFFFF; + cursor: default; + font-weight: bold; } + ul.pagination li.current a:hover, ul.pagination li.current a:focus, ul.pagination li.current button:hover, ul.pagination li.current button:focus { + background: #008CBA; } + ul.pagination li { + display: block; + float: left; } + +/* Pagination centred wrapper */ +.pagination-centered { + text-align: center; } + .pagination-centered ul.pagination li { + display: inline-block; + float: none; } + +.side-nav { + display: block; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + list-style-position: outside; + list-style-type: none; + margin: 0; + padding: 0.875rem 0; } + .side-nav li { + font-size: 0.875rem; + font-weight: normal; + margin: 0 0 0.4375rem 0; } + .side-nav li a:not(.button) { + color: #008CBA; + display: block; + margin: 0; + padding: 0.4375rem 0.875rem; } + .side-nav li a:not(.button):hover, .side-nav li a:not(.button):focus { + background: rgba(0, 0, 0, 0.025); + color: #1cc7ff; } + .side-nav li a:not(.button):active { + color: #1cc7ff; } + .side-nav li.active > a:first-child:not(.button) { + color: #1cc7ff; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-weight: normal; } + .side-nav li.divider { + border-top: 1px solid; + height: 0; + list-style: none; + padding: 0; + border-top-color: #e6e6e6; } + .side-nav li.heading { + color: #008CBA; + font-size: 0.875rem; + font-weight: bold; + text-transform: uppercase; } + +.accordion { + margin-bottom: 0; } + .accordion:before, .accordion:after { + content: " "; + display: table; } + .accordion:after { + clear: both; } + .accordion .accordion-navigation, .accordion dd { + display: block; + margin-bottom: 0 !important; } + .accordion .accordion-navigation.active > a, .accordion dd.active > a { + background: #e8e8e8; } + .accordion .accordion-navigation > a, .accordion dd > a { + background: #EFEFEF; + color: #222222; + display: block; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-size: 1rem; + padding: 1rem; } + .accordion .accordion-navigation > a:hover, .accordion dd > a:hover { + background: #e3e3e3; } + .accordion .accordion-navigation > .content, .accordion dd > .content { + display: none; + padding: 0.9375rem; } + .accordion .accordion-navigation > .content.active, .accordion dd > .content.active { + background: #FFFFFF; + display: block; } + +.text-left { + text-align: left !important; } + +.text-right { + text-align: right !important; } + +.text-center { + text-align: center !important; } + +.text-justify { + text-align: justify !important; } + +@media only screen and (max-width: 40em) { + .small-only-text-left { + text-align: left !important; } + + .small-only-text-right { + text-align: right !important; } + + .small-only-text-center { + text-align: center !important; } + + .small-only-text-justify { + text-align: justify !important; } } +@media only screen { + .small-text-left { + text-align: left !important; } + + .small-text-right { + text-align: right !important; } + + .small-text-center { + text-align: center !important; } + + .small-text-justify { + text-align: justify !important; } } +@media only screen and (min-width: 40.0625em) and (max-width: 64em) { + .medium-only-text-left { + text-align: left !important; } + + .medium-only-text-right { + text-align: right !important; } + + .medium-only-text-center { + text-align: center !important; } + + .medium-only-text-justify { + text-align: justify !important; } } +@media only screen and (min-width: 40.0625em) { + .medium-text-left { + text-align: left !important; } + + .medium-text-right { + text-align: right !important; } + + .medium-text-center { + text-align: center !important; } + + .medium-text-justify { + text-align: justify !important; } } +@media only screen and (min-width: 64.0625em) and (max-width: 90em) { + .large-only-text-left { + text-align: left !important; } + + .large-only-text-right { + text-align: right !important; } + + .large-only-text-center { + text-align: center !important; } + + .large-only-text-justify { + text-align: justify !important; } } +@media only screen and (min-width: 64.0625em) { + .large-text-left { + text-align: left !important; } + + .large-text-right { + text-align: right !important; } + + .large-text-center { + text-align: center !important; } + + .large-text-justify { + text-align: justify !important; } } +@media only screen and (min-width: 90.0625em) and (max-width: 120em) { + .xlarge-only-text-left { + text-align: left !important; } + + .xlarge-only-text-right { + text-align: right !important; } + + .xlarge-only-text-center { + text-align: center !important; } + + .xlarge-only-text-justify { + text-align: justify !important; } } +@media only screen and (min-width: 90.0625em) { + .xlarge-text-left { + text-align: left !important; } + + .xlarge-text-right { + text-align: right !important; } + + .xlarge-text-center { + text-align: center !important; } + + .xlarge-text-justify { + text-align: justify !important; } } +@media only screen and (min-width: 120.0625em) and (max-width: 6249999.9375em) { + .xxlarge-only-text-left { + text-align: left !important; } + + .xxlarge-only-text-right { + text-align: right !important; } + + .xxlarge-only-text-center { + text-align: center !important; } + + .xxlarge-only-text-justify { + text-align: justify !important; } } +@media only screen and (min-width: 120.0625em) { + .xxlarge-text-left { + text-align: left !important; } + + .xxlarge-text-right { + text-align: right !important; } + + .xxlarge-text-center { + text-align: center !important; } + + .xxlarge-text-justify { + text-align: justify !important; } } +/* Typography resets */ +div, +dl, +dt, +dd, +ul, +ol, +li, +h1, +h2, +h3, +h4, +h5, +h6, +pre, +form, +p, +blockquote, +th, +td { + margin: 0; + padding: 0; } + +/* Default Link Styles */ +a { + color: #008CBA; + line-height: inherit; + text-decoration: none; } + a:hover, a:focus { + color: #0078a0; } + a img { + border: none; } + +/* Default paragraph styles */ +p { + font-family: inherit; + font-size: 1rem; + font-weight: normal; + line-height: 1.6; + margin-bottom: 1.25rem; + text-rendering: optimizeLegibility; } + p.lead { + font-size: 1.21875rem; + line-height: 1.6; } + p aside { + font-size: 0.875rem; + font-style: italic; + line-height: 1.35; } + +/* Default header styles */ +h1, h2, h3, h4, h5, h6 { + color: #222222; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-style: normal; + font-weight: normal; + line-height: 1.4; + margin-bottom: 0.5rem; + margin-top: 0.2rem; + text-rendering: optimizeLegibility; } + h1 small, h2 small, h3 small, h4 small, h5 small, h6 small { + color: #6f6f6f; + font-size: 60%; + line-height: 0; } + +h1 { + font-size: 2.125rem; } + +h2 { + font-size: 1.6875rem; } + +h3 { + font-size: 1.375rem; } + +h4 { + font-size: 1.125rem; } + +h5 { + font-size: 1.125rem; } + +h6 { + font-size: 1rem; } + +.subheader { + line-height: 1.4; + color: #6f6f6f; + font-weight: normal; + margin-top: 0.2rem; + margin-bottom: 0.5rem; } + +hr { + border: solid #DDDDDD; + border-width: 1px 0 0; + clear: both; + height: 0; + margin: 1.25rem 0 1.1875rem; } + +/* Helpful Typography Defaults */ +em, +i { + font-style: italic; + line-height: inherit; } + +strong, +b { + font-weight: bold; + line-height: inherit; } + +small { + font-size: 60%; + line-height: inherit; } + +code { + background-color: #f8f8f8; + border-color: #dfdfdf; + border-style: solid; + border-width: 1px; + color: #333333; + font-family: Consolas, "Liberation Mono", Courier, monospace; + font-weight: normal; + padding: 0.125rem 0.3125rem 0.0625rem; } + +/* Lists */ +ul, +ol, +dl { + font-family: inherit; + font-size: 1rem; + line-height: 1.6; + list-style-position: outside; + margin-bottom: 1.25rem; } + +ul { + margin-left: 1.1rem; } + ul.no-bullet { + margin-left: 0; } + ul.no-bullet li ul, + ul.no-bullet li ol { + margin-left: 1.25rem; + margin-bottom: 0; + list-style: none; } + +/* Unordered Lists */ +ul li ul, +ul li ol { + margin-left: 1.25rem; + margin-bottom: 0; } +ul.square li ul, ul.circle li ul, ul.disc li ul { + list-style: inherit; } +ul.square { + list-style-type: square; + margin-left: 1.1rem; } +ul.circle { + list-style-type: circle; + margin-left: 1.1rem; } +ul.disc { + list-style-type: disc; + margin-left: 1.1rem; } +ul.no-bullet { + list-style: none; } + +/* Ordered Lists */ +ol { + margin-left: 1.4rem; } + ol li ul, + ol li ol { + margin-left: 1.25rem; + margin-bottom: 0; } + +/* Definition Lists */ +dl dt { + margin-bottom: 0.3rem; + font-weight: bold; } +dl dd { + margin-bottom: 0.75rem; } + +/* Abbreviations */ +abbr, +acronym { + text-transform: uppercase; + font-size: 90%; + color: #222; + cursor: help; } + +abbr { + text-transform: none; } + abbr[title] { + border-bottom: 1px dotted #DDDDDD; } + +/* Blockquotes */ +blockquote { + margin: 0 0 1.25rem; + padding: 0.5625rem 1.25rem 0 1.1875rem; + border-left: 1px solid #DDDDDD; } + blockquote cite { + display: block; + font-size: 0.8125rem; + color: #555555; } + blockquote cite:before { + content: "\2014 \0020"; } + blockquote cite a, + blockquote cite a:visited { + color: #555555; } + +blockquote, +blockquote p { + line-height: 1.6; + color: #6f6f6f; } + +/* Microformats */ +.vcard { + display: inline-block; + margin: 0 0 1.25rem 0; + border: 1px solid #DDDDDD; + padding: 0.625rem 0.75rem; } + .vcard li { + margin: 0; + display: block; } + .vcard .fn { + font-weight: bold; + font-size: 0.9375rem; } + +.vevent .summary { + font-weight: bold; } +.vevent abbr { + cursor: default; + text-decoration: none; + font-weight: bold; + border: none; + padding: 0 0.0625rem; } + +@media only screen and (min-width: 40.0625em) { + h1, h2, h3, h4, h5, h6 { + line-height: 1.4; } + + h1 { + font-size: 2.75rem; } + + h2 { + font-size: 2.3125rem; } + + h3 { + font-size: 1.6875rem; } + + h4 { + font-size: 1.4375rem; } + + h5 { + font-size: 1.125rem; } + + h6 { + font-size: 1rem; } } +.split.button { + position: relative; + padding-right: 5.0625rem; } + .split.button span { + display: block; + height: 100%; + position: absolute; + right: 0; + top: 0; + border-left: solid 1px; } + .split.button span:after { + position: absolute; + content: ""; + width: 0; + height: 0; + display: block; + border-style: inset; + top: 50%; + left: 50%; } + .split.button span:active { + background-color: rgba(0, 0, 0, 0.1); } + .split.button span { + border-left-color: rgba(255, 255, 255, 0.5); } + .split.button span { + width: 3.09375rem; } + .split.button span:after { + border-top-style: solid; + border-width: 0.375rem; + margin-left: -0.375rem; + top: 48%; } + .split.button span:after { + border-color: #FFFFFF transparent transparent transparent; } + .split.button.secondary span { + border-left-color: rgba(255, 255, 255, 0.5); } + .split.button.secondary span:after { + border-color: #FFFFFF transparent transparent transparent; } + .split.button.alert span { + border-left-color: rgba(255, 255, 255, 0.5); } + .split.button.success span { + border-left-color: rgba(255, 255, 255, 0.5); } + .split.button.tiny { + padding-right: 3.75rem; } + .split.button.tiny span { + width: 2.25rem; } + .split.button.tiny span:after { + border-top-style: solid; + border-width: 0.375rem; + margin-left: -0.375rem; + top: 48%; } + .split.button.small { + padding-right: 4.375rem; } + .split.button.small span { + width: 2.625rem; } + .split.button.small span:after { + border-top-style: solid; + border-width: 0.4375rem; + margin-left: -0.375rem; + top: 48%; } + .split.button.large { + padding-right: 5.5rem; } + .split.button.large span { + width: 3.4375rem; } + .split.button.large span:after { + border-top-style: solid; + border-width: 0.3125rem; + margin-left: -0.375rem; + top: 48%; } + .split.button.expand { + padding-left: 2rem; } + .split.button.secondary span:after { + border-color: #333333 transparent transparent transparent; } + .split.button.radius span { + -webkit-border-bottom-right-radius: 3px; + -webkit-border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; } + .split.button.round span { + -webkit-border-bottom-right-radius: 1000px; + -webkit-border-top-right-radius: 1000px; + border-bottom-right-radius: 1000px; + border-top-right-radius: 1000px; } + .split.button.no-pip span:before { + border-style: none; } + .split.button.no-pip span:after { + border-style: none; } + .split.button.no-pip span > i { + display: block; + left: 50%; + margin-left: -0.28889em; + margin-top: -0.48889em; + position: absolute; + top: 50%; } + +.reveal-modal-bg { + background: #000000; + background: rgba(0, 0, 0, 0.45); + bottom: 0; + display: none; + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 1004; + left: 0; } + +.reveal-modal { + border-radius: 3px; + display: none; + position: absolute; + top: 0; + visibility: hidden; + width: 100%; + z-index: 1005; + left: 0; + background-color: #FFFFFF; + padding: 1.875rem; + border: solid 1px #666666; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.4); } + @media only screen and (max-width: 40em) { + .reveal-modal { + min-height: 100vh; } } + .reveal-modal .column, .reveal-modal .columns { + min-width: 0; } + .reveal-modal > :first-child { + margin-top: 0; } + .reveal-modal > :last-child { + margin-bottom: 0; } + @media only screen and (min-width: 40.0625em) { + .reveal-modal { + left: 0; + margin: 0 auto; + max-width: 62.5rem; + right: 0; + width: 80%; } } + @media only screen and (min-width: 40.0625em) { + .reveal-modal { + top: 6.25rem; } } + .reveal-modal.radius { + border-radius: 3px; } + .reveal-modal.round { + border-radius: 1000px; } + .reveal-modal.collapse { + padding: 0; } + @media only screen and (min-width: 40.0625em) { + .reveal-modal.tiny { + left: 0; + margin: 0 auto; + max-width: 62.5rem; + right: 0; + width: 30%; } } + @media only screen and (min-width: 40.0625em) { + .reveal-modal.small { + left: 0; + margin: 0 auto; + max-width: 62.5rem; + right: 0; + width: 40%; } } + @media only screen and (min-width: 40.0625em) { + .reveal-modal.medium { + left: 0; + margin: 0 auto; + max-width: 62.5rem; + right: 0; + width: 60%; } } + @media only screen and (min-width: 40.0625em) { + .reveal-modal.large { + left: 0; + margin: 0 auto; + max-width: 62.5rem; + right: 0; + width: 70%; } } + @media only screen and (min-width: 40.0625em) { + .reveal-modal.xlarge { + left: 0; + margin: 0 auto; + max-width: 62.5rem; + right: 0; + width: 95%; } } + .reveal-modal.full { + height: 100vh; + height: 100%; + left: 0; + margin-left: 0 !important; + max-width: none !important; + min-height: 100vh; + top: 0; } + @media only screen and (min-width: 40.0625em) { + .reveal-modal.full { + left: 0; + margin: 0 auto; + max-width: 62.5rem; + right: 0; + width: 100%; } } + .reveal-modal.toback { + z-index: 1003; } + .reveal-modal .close-reveal-modal { + color: #AAAAAA; + cursor: pointer; + font-size: 2.5rem; + font-weight: bold; + line-height: 1; + position: absolute; + top: 0.625rem; + right: 1.375rem; } + +/* Tooltips */ +.has-tip { + border-bottom: dotted 1px #CCCCCC; + color: #333333; + cursor: help; + font-weight: bold; } + .has-tip:hover, .has-tip:focus { + border-bottom: dotted 1px #003f54; + color: #008CBA; } + .has-tip.tip-left, .has-tip.tip-right { + float: none !important; } + +.tooltip { + background: #333333; + color: #FFFFFF; + display: none; + font-size: 0.875rem; + font-weight: normal; + line-height: 1.3; + max-width: 300px; + padding: 0.75rem; + position: absolute; + width: 100%; + z-index: 1006; + left: 50%; } + .tooltip > .nub { + border-color: transparent transparent #333333 transparent; + border: solid 5px; + display: block; + height: 0; + pointer-events: none; + position: absolute; + top: -10px; + width: 0; + left: 5px; } + .tooltip > .nub.rtl { + left: auto; + right: 5px; } + .tooltip.radius { + border-radius: 3px; } + .tooltip.round { + border-radius: 1000px; } + .tooltip.round > .nub { + left: 2rem; } + .tooltip.opened { + border-bottom: dotted 1px #003f54 !important; + color: #008CBA !important; } + +.tap-to-close { + color: #777777; + display: block; + font-size: 0.625rem; + font-weight: normal; } + +@media only screen and (min-width: 40.0625em) { + .tooltip > .nub { + border-color: transparent transparent #333333 transparent; + top: -10px; } + .tooltip.tip-top > .nub { + border-color: #333333 transparent transparent transparent; + bottom: -10px; + top: auto; } + .tooltip.tip-left, .tooltip.tip-right { + float: none !important; } + .tooltip.tip-left > .nub { + border-color: transparent transparent transparent #333333; + left: auto; + margin-top: -5px; + right: -10px; + top: 50%; } + .tooltip.tip-right > .nub { + border-color: transparent #333333 transparent transparent; + left: -10px; + margin-top: -5px; + right: auto; + top: 50%; } } +/* Clearing Styles */ +.clearing-thumbs, [data-clearing] { + list-style: none; + margin-left: 0; + margin-bottom: 0; } + .clearing-thumbs:before, .clearing-thumbs:after, [data-clearing]:before, [data-clearing]:after { + content: " "; + display: table; } + .clearing-thumbs:after, [data-clearing]:after { + clear: both; } + .clearing-thumbs li, [data-clearing] li { + float: left; + margin-right: 10px; } + .clearing-thumbs[class*="block-grid-"] li, [data-clearing][class*="block-grid-"] li { + margin-right: 0; } + +.clearing-blackout { + background: #333333; + height: 100%; + position: fixed; + top: 0; + width: 100%; + z-index: 998; + left: 0; } + .clearing-blackout .clearing-close { + display: block; } + +.clearing-container { + height: 100%; + margin: 0; + overflow: hidden; + position: relative; + z-index: 998; } + +.clearing-touch-label { + color: #AAAAAA; + font-size: .6em; + left: 50%; + position: absolute; + top: 50%; } + +.visible-img { + height: 95%; + position: relative; } + .visible-img img { + position: absolute; + left: 50%; + top: 50%; + -webkit-transform: translateY(-50%) translateX(-50%); + -moz-transform: translateY(-50%) translateX(-50%); + -ms-transform: translateY(-50%) translateX(-50%); + -o-transform: translateY(-50%) translateX(-50%); + transform: translateY(-50%) translateX(-50%); + max-height: 100%; + max-width: 100%; } + +.clearing-caption { + background: #333333; + bottom: 0; + color: #CCCCCC; + font-size: 0.875em; + line-height: 1.3; + margin-bottom: 0; + padding: 10px 30px 20px; + position: absolute; + text-align: center; + width: 100%; + left: 0; } + +.clearing-close { + color: #CCCCCC; + display: none; + font-size: 30px; + line-height: 1; + padding-left: 20px; + padding-top: 10px; + z-index: 999; } + .clearing-close:hover, .clearing-close:focus { + color: #CCCCCC; } + +.clearing-assembled .clearing-container { + height: 100%; } + .clearing-assembled .clearing-container .carousel > ul { + display: none; } + +.clearing-feature li { + display: none; } + .clearing-feature li.clearing-featured-img { + display: block; } + +@media only screen and (min-width: 40.0625em) { + .clearing-main-prev, + .clearing-main-next { + height: 100%; + position: absolute; + top: 0; + width: 40px; } + .clearing-main-prev > span, + .clearing-main-next > span { + border: solid 12px; + display: block; + height: 0; + position: absolute; + top: 50%; + width: 0; } + .clearing-main-prev > span:hover, + .clearing-main-next > span:hover { + opacity: .8; } + + .clearing-main-prev { + left: 0; } + .clearing-main-prev > span { + left: 5px; + border-color: transparent; + border-right-color: #CCCCCC; } + + .clearing-main-next { + right: 0; } + .clearing-main-next > span { + border-color: transparent; + border-left-color: #CCCCCC; } + + .clearing-main-prev.disabled, + .clearing-main-next.disabled { + opacity: .3; } + + .clearing-assembled .clearing-container .carousel { + background: rgba(51, 51, 51, 0.8); + height: 120px; + margin-top: 10px; + text-align: center; } + .clearing-assembled .clearing-container .carousel > ul { + display: inline-block; + z-index: 999; + height: 100%; + position: relative; + float: none; } + .clearing-assembled .clearing-container .carousel > ul li { + clear: none; + cursor: pointer; + display: block; + float: left; + margin-right: 0; + min-height: inherit; + opacity: .4; + overflow: hidden; + padding: 0; + position: relative; + width: 120px; } + .clearing-assembled .clearing-container .carousel > ul li.fix-height img { + height: 100%; + max-width: none; } + .clearing-assembled .clearing-container .carousel > ul li a.th { + border: none; + box-shadow: none; + display: block; } + .clearing-assembled .clearing-container .carousel > ul li img { + cursor: pointer !important; + width: 100% !important; } + .clearing-assembled .clearing-container .carousel > ul li.visible { + opacity: 1; } + .clearing-assembled .clearing-container .carousel > ul li:hover { + opacity: .8; } + .clearing-assembled .clearing-container .visible-img { + background: #333333; + height: 85%; + overflow: hidden; } + + .clearing-close { + padding-left: 0; + padding-top: 0; + position: absolute; + top: 10px; + right: 20px; } } +/* Progress Bar */ +.progress { + background-color: #F6F6F6; + border: 1px solid white; + height: 1.5625rem; + margin-bottom: 0.625rem; + padding: 0.125rem; } + .progress .meter { + background: #008CBA; + display: block; + height: 100%; } + .progress.secondary .meter { + background: #e7e7e7; + display: block; + height: 100%; } + .progress.success .meter { + background: #43AC6A; + display: block; + height: 100%; } + .progress.alert .meter { + background: #f04124; + display: block; + height: 100%; } + .progress.radius { + border-radius: 3px; } + .progress.radius .meter { + border-radius: 2px; } + .progress.round { + border-radius: 1000px; } + .progress.round .meter { + border-radius: 999px; } + +.sub-nav { + display: block; + margin: -0.25rem 0 1.125rem; + overflow: hidden; + padding-top: 0.25rem; + width: auto; } + .sub-nav dt { + text-transform: uppercase; } + .sub-nav dt, + .sub-nav dd, + .sub-nav li { + color: #999999; + float: left; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-size: 0.875rem; + font-weight: normal; + margin-left: 1rem; + margin-bottom: 0; } + .sub-nav dt a, + .sub-nav dd a, + .sub-nav li a { + color: #999999; + padding: 0.1875rem 1rem; + text-decoration: none; } + .sub-nav dt a:hover, + .sub-nav dd a:hover, + .sub-nav li a:hover { + color: #737373; } + .sub-nav dt.active a, + .sub-nav dd.active a, + .sub-nav li.active a { + border-radius: 3px; + background: #008CBA; + color: #FFFFFF; + cursor: default; + font-weight: normal; + padding: 0.1875rem 1rem; } + .sub-nav dt.active a:hover, + .sub-nav dd.active a:hover, + .sub-nav li.active a:hover { + background: #0078a0; } + +/* Foundation Joyride */ +.joyride-list { + display: none; } + +/* Default styles for the container */ +.joyride-tip-guide { + background: #333333; + color: #FFFFFF; + display: none; + font-family: inherit; + font-weight: normal; + position: absolute; + top: 0; + width: 95%; + z-index: 101; + left: 2.5%; } + +.lt-ie9 .joyride-tip-guide { + margin-left: -400px; + max-width: 800px; + left: 50%; } + +.joyride-content-wrapper { + padding: 1.125rem 1.25rem 1.5rem; + width: 100%; } + .joyride-content-wrapper .button { + margin-bottom: 0 !important; } + .joyride-content-wrapper .joyride-prev-tip { + margin-right: 10px; } + +/* Add a little css triangle pip, older browser just miss out on the fanciness of it */ +.joyride-tip-guide .joyride-nub { + border: 10px solid #333333; + display: block; + height: 0; + position: absolute; + width: 0; + left: 22px; } + .joyride-tip-guide .joyride-nub.top { + border-color: #333333; + border-top-color: transparent !important; + border-top-style: solid; + border-left-color: transparent !important; + border-right-color: transparent !important; + top: -20px; } + .joyride-tip-guide .joyride-nub.bottom { + border-color: #333333 !important; + border-bottom-color: transparent !important; + border-bottom-style: solid; + border-left-color: transparent !important; + border-right-color: transparent !important; + bottom: -20px; } + .joyride-tip-guide .joyride-nub.right { + right: -20px; } + .joyride-tip-guide .joyride-nub.left { + left: -20px; } + +/* Typography */ +.joyride-tip-guide h1, +.joyride-tip-guide h2, +.joyride-tip-guide h3, +.joyride-tip-guide h4, +.joyride-tip-guide h5, +.joyride-tip-guide h6 { + color: #FFFFFF; + font-weight: bold; + line-height: 1.25; + margin: 0; } + +.joyride-tip-guide p { + font-size: 0.875rem; + line-height: 1.3; + margin: 0 0 1.125rem 0; } + +.joyride-timer-indicator-wrap { + border: solid 1px #555555; + bottom: 1rem; + height: 3px; + position: absolute; + width: 50px; + right: 1.0625rem; } + +.joyride-timer-indicator { + background: #666666; + display: block; + height: inherit; + width: 0; } + +.joyride-close-tip { + color: #777777 !important; + font-size: 24px; + font-weight: normal; + line-height: .5 !important; + position: absolute; + text-decoration: none; + top: 10px; + right: 12px; } + .joyride-close-tip:hover, .joyride-close-tip:focus { + color: #EEEEEE !important; } + +.joyride-modal-bg { + background: rgba(0, 0, 0, 0.5); + cursor: pointer; + display: none; + height: 100%; + position: fixed; + top: 0; + width: 100%; + z-index: 100; + left: 0; } + +.joyride-expose-wrapper { + background-color: #FFFFFF; + border-radius: 3px; + box-shadow: 0 0 15px #FFFFFF; + position: absolute; + z-index: 102; } + +.joyride-expose-cover { + background: transparent; + border-radius: 3px; + left: 0; + position: absolute; + top: 0; + z-index: 9999; } + +/* Styles for screens that are at least 768px; */ +@media only screen and (min-width: 40.0625em) { + .joyride-tip-guide { + width: 300px; + left: inherit; } + .joyride-tip-guide .joyride-nub.bottom { + border-color: #333333 !important; + border-bottom-color: transparent !important; + border-left-color: transparent !important; + border-right-color: transparent !important; + bottom: -20px; } + .joyride-tip-guide .joyride-nub.right { + border-color: #333333 !important; + border-right-color: transparent !important; + border-bottom-color: transparent !important; + border-top-color: transparent !important; + left: auto; + right: -20px; + top: 22px; } + .joyride-tip-guide .joyride-nub.left { + border-color: #333333 !important; + border-bottom-color: transparent !important; + border-left-color: transparent !important; + border-top-color: transparent !important; + left: -20px; + right: auto; + top: 22px; } } +.label { + display: inline-block; + font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + font-weight: normal; + line-height: 1; + margin-bottom: auto; + position: relative; + text-align: center; + text-decoration: none; + white-space: nowrap; + padding: 0.25rem 0.5rem 0.25rem; + font-size: 0.6875rem; + background-color: #008CBA; + color: #FFFFFF; } + .label.radius { + border-radius: 3px; } + .label.round { + border-radius: 1000px; } + .label.alert { + background-color: #f04124; + color: #FFFFFF; } + .label.warning { + background-color: #f08a24; + color: #FFFFFF; } + .label.success { + background-color: #43AC6A; + color: #FFFFFF; } + .label.secondary { + background-color: #e7e7e7; + color: #333333; } + .label.info { + background-color: #a0d3e8; + color: #333333; } + +.off-canvas-wrap { + -webkit-backface-visibility: hidden; + position: relative; + width: 100%; + overflow: hidden; } + .off-canvas-wrap.move-right, .off-canvas-wrap.move-left { + min-height: 100%; + -webkit-overflow-scrolling: touch; } + +.inner-wrap { + position: relative; + width: 100%; + -webkit-transition: -webkit-transform 500ms ease; + -moz-transition: -moz-transform 500ms ease; + -ms-transition: -ms-transform 500ms ease; + -o-transition: -o-transform 500ms ease; + transition: transform 500ms ease; } + .inner-wrap:before, .inner-wrap:after { + content: " "; + display: table; } + .inner-wrap:after { + clear: both; } + +.tab-bar { + -webkit-backface-visibility: hidden; + background: #333333; + color: #FFFFFF; + height: 2.8125rem; + line-height: 2.8125rem; + position: relative; } + .tab-bar h1, .tab-bar h2, .tab-bar h3, .tab-bar h4, .tab-bar h5, .tab-bar h6 { + color: #FFFFFF; + font-weight: bold; + line-height: 2.8125rem; + margin: 0; } + .tab-bar h1, .tab-bar h2, .tab-bar h3, .tab-bar h4 { + font-size: 1.125rem; } + +.left-small { + height: 2.8125rem; + position: absolute; + top: 0; + width: 2.8125rem; + border-right: solid 1px #1a1a1a; + left: 0; } + +.right-small { + height: 2.8125rem; + position: absolute; + top: 0; + width: 2.8125rem; + border-left: solid 1px #1a1a1a; + right: 0; } + +.tab-bar-section { + height: 2.8125rem; + padding: 0 0.625rem; + position: absolute; + text-align: center; + top: 0; } + .tab-bar-section.left { + text-align: left; } + .tab-bar-section.right { + text-align: right; } + .tab-bar-section.left { + left: 0; + right: 2.8125rem; } + .tab-bar-section.right { + left: 2.8125rem; + right: 0; } + .tab-bar-section.middle { + left: 2.8125rem; + right: 2.8125rem; } + +.tab-bar .menu-icon { + color: #FFFFFF; + display: block; + height: 2.8125rem; + padding: 0; + position: relative; + text-indent: 2.1875rem; + transform: translate3d(0, 0, 0); + width: 2.8125rem; } + .tab-bar .menu-icon span::after { + content: ""; + display: block; + height: 0; + position: absolute; + top: 50%; + margin-top: -0.5rem; + left: 0.90625rem; + box-shadow: 0 0 0 1px #FFFFFF, 0 7px 0 1px #FFFFFF, 0 14px 0 1px #FFFFFF; + width: 1rem; } + .tab-bar .menu-icon span:hover:after { + box-shadow: 0 0 0 1px #b3b3b3, 0 7px 0 1px #b3b3b3, 0 14px 0 1px #b3b3b3; } + +.left-off-canvas-menu { + -webkit-backface-visibility: hidden; + background: #333333; + bottom: 0; + box-sizing: content-box; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; + overflow-x: hidden; + overflow-y: auto; + position: absolute; + top: 0; + transition: transform 500ms ease 0s; + width: 15.625rem; + z-index: 1001; + -webkit-transform: translate3d(-100%, 0, 0); + -moz-transform: translate3d(-100%, 0, 0); + -ms-transform: translate(-100%, 0); + -ms-transform: translate3d(-100%, 0, 0); + -o-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + left: 0; } + .left-off-canvas-menu * { + -webkit-backface-visibility: hidden; } + +.right-off-canvas-menu { + -webkit-backface-visibility: hidden; + background: #333333; + bottom: 0; + box-sizing: content-box; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; + overflow-x: hidden; + overflow-y: auto; + position: absolute; + top: 0; + transition: transform 500ms ease 0s; + width: 15.625rem; + z-index: 1001; + -webkit-transform: translate3d(100%, 0, 0); + -moz-transform: translate3d(100%, 0, 0); + -ms-transform: translate(100%, 0); + -ms-transform: translate3d(100%, 0, 0); + -o-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + right: 0; } + .right-off-canvas-menu * { + -webkit-backface-visibility: hidden; } + +ul.off-canvas-list { + list-style-type: none; + margin: 0; + padding: 0; } + ul.off-canvas-list li label { + background: #444444; + border-bottom: none; + border-top: 1px solid #5e5e5e; + color: #999999; + display: block; + font-size: 0.75rem; + font-weight: bold; + margin: 0; + padding: 0.3rem 0.9375rem; + text-transform: uppercase; } + ul.off-canvas-list li a { + border-bottom: 1px solid #262626; + color: rgba(255, 255, 255, 0.7); + display: block; + padding: 0.66667rem; + transition: background 300ms ease; } + ul.off-canvas-list li a:hover { + background: #242424; } + ul.off-canvas-list li a:active { + background: #242424; } + +.move-right > .inner-wrap { + -webkit-transform: translate3d(15.625rem, 0, 0); + -moz-transform: translate3d(15.625rem, 0, 0); + -ms-transform: translate(15.625rem, 0); + -ms-transform: translate3d(15.625rem, 0, 0); + -o-transform: translate3d(15.625rem, 0, 0); + transform: translate3d(15.625rem, 0, 0); } +.move-right .exit-off-canvas { + -webkit-backface-visibility: hidden; + box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5); + cursor: pointer; + transition: background 300ms ease; + -webkit-tap-highlight-color: transparent; + background: rgba(255, 255, 255, 0.2); + bottom: 0; + display: block; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 1002; } + @media only screen and (min-width: 40.0625em) { + .move-right .exit-off-canvas:hover { + background: rgba(255, 255, 255, 0.05); } } + +.move-left > .inner-wrap { + -webkit-transform: translate3d(-15.625rem, 0, 0); + -moz-transform: translate3d(-15.625rem, 0, 0); + -ms-transform: translate(-15.625rem, 0); + -ms-transform: translate3d(-15.625rem, 0, 0); + -o-transform: translate3d(-15.625rem, 0, 0); + transform: translate3d(-15.625rem, 0, 0); } +.move-left .exit-off-canvas { + -webkit-backface-visibility: hidden; + box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5); + cursor: pointer; + transition: background 300ms ease; + -webkit-tap-highlight-color: transparent; + background: rgba(255, 255, 255, 0.2); + bottom: 0; + display: block; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 1002; } + @media only screen and (min-width: 40.0625em) { + .move-left .exit-off-canvas:hover { + background: rgba(255, 255, 255, 0.05); } } + +.offcanvas-overlap .left-off-canvas-menu, .offcanvas-overlap .right-off-canvas-menu { + -ms-transform: none; + -webkit-transform: none; + -moz-transform: none; + -o-transform: none; + transform: none; + z-index: 1003; } +.offcanvas-overlap .exit-off-canvas { + -webkit-backface-visibility: hidden; + box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5); + cursor: pointer; + transition: background 300ms ease; + -webkit-tap-highlight-color: transparent; + background: rgba(255, 255, 255, 0.2); + bottom: 0; + display: block; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 1002; } + @media only screen and (min-width: 40.0625em) { + .offcanvas-overlap .exit-off-canvas:hover { + background: rgba(255, 255, 255, 0.05); } } + +.offcanvas-overlap-left .right-off-canvas-menu { + -ms-transform: none; + -webkit-transform: none; + -moz-transform: none; + -o-transform: none; + transform: none; + z-index: 1003; } +.offcanvas-overlap-left .exit-off-canvas { + -webkit-backface-visibility: hidden; + box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5); + cursor: pointer; + transition: background 300ms ease; + -webkit-tap-highlight-color: transparent; + background: rgba(255, 255, 255, 0.2); + bottom: 0; + display: block; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 1002; } + @media only screen and (min-width: 40.0625em) { + .offcanvas-overlap-left .exit-off-canvas:hover { + background: rgba(255, 255, 255, 0.05); } } + +.offcanvas-overlap-right .left-off-canvas-menu { + -ms-transform: none; + -webkit-transform: none; + -moz-transform: none; + -o-transform: none; + transform: none; + z-index: 1003; } +.offcanvas-overlap-right .exit-off-canvas { + -webkit-backface-visibility: hidden; + box-shadow: -4px 0 4px rgba(0, 0, 0, 0.5), 4px 0 4px rgba(0, 0, 0, 0.5); + cursor: pointer; + transition: background 300ms ease; + -webkit-tap-highlight-color: transparent; + background: rgba(255, 255, 255, 0.2); + bottom: 0; + display: block; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 1002; } + @media only screen and (min-width: 40.0625em) { + .offcanvas-overlap-right .exit-off-canvas:hover { + background: rgba(255, 255, 255, 0.05); } } + +.no-csstransforms .left-off-canvas-menu { + left: -15.625rem; } +.no-csstransforms .right-off-canvas-menu { + right: -15.625rem; } +.no-csstransforms .move-left > .inner-wrap { + right: 15.625rem; } +.no-csstransforms .move-right > .inner-wrap { + left: 15.625rem; } + +.left-submenu { + -webkit-backface-visibility: hidden; + -webkit-overflow-scrolling: touch; + background: #333333; + bottom: 0; + box-sizing: content-box; + margin: 0; + overflow-x: hidden; + overflow-y: auto; + position: absolute; + top: 0; + width: 15.625rem; + z-index: 1002; + -webkit-transform: translate3d(-100%, 0, 0); + -moz-transform: translate3d(-100%, 0, 0); + -ms-transform: translate(-100%, 0); + -ms-transform: translate3d(-100%, 0, 0); + -o-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + left: 0; + -webkit-transition: -webkit-transform 500ms ease; + -moz-transition: -moz-transform 500ms ease; + -ms-transition: -ms-transform 500ms ease; + -o-transition: -o-transform 500ms ease; + transition: transform 500ms ease; } + .left-submenu * { + -webkit-backface-visibility: hidden; } + .left-submenu .back > a { + background: #444; + border-bottom: none; + border-top: 1px solid #5e5e5e; + color: #999999; + font-weight: bold; + padding: 0.3rem 0.9375rem; + text-transform: uppercase; + margin: 0; } + .left-submenu .back > a:hover { + background: #303030; + border-bottom: none; + border-top: 1px solid #5e5e5e; } + .left-submenu .back > a:before { + content: "\AB"; + margin-right: .5rem; + display: inline; } + .left-submenu.move-right, .left-submenu.offcanvas-overlap-right, .left-submenu.offcanvas-overlap { + -webkit-transform: translate3d(0%, 0, 0); + -moz-transform: translate3d(0%, 0, 0); + -ms-transform: translate(0%, 0); + -ms-transform: translate3d(0%, 0, 0); + -o-transform: translate3d(0%, 0, 0); + transform: translate3d(0%, 0, 0); } + +.right-submenu { + -webkit-backface-visibility: hidden; + -webkit-overflow-scrolling: touch; + background: #333333; + bottom: 0; + box-sizing: content-box; + margin: 0; + overflow-x: hidden; + overflow-y: auto; + position: absolute; + top: 0; + width: 15.625rem; + z-index: 1002; + -webkit-transform: translate3d(100%, 0, 0); + -moz-transform: translate3d(100%, 0, 0); + -ms-transform: translate(100%, 0); + -ms-transform: translate3d(100%, 0, 0); + -o-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + right: 0; + -webkit-transition: -webkit-transform 500ms ease; + -moz-transition: -moz-transform 500ms ease; + -ms-transition: -ms-transform 500ms ease; + -o-transition: -o-transform 500ms ease; + transition: transform 500ms ease; } + .right-submenu * { + -webkit-backface-visibility: hidden; } + .right-submenu .back > a { + background: #444; + border-bottom: none; + border-top: 1px solid #5e5e5e; + color: #999999; + font-weight: bold; + padding: 0.3rem 0.9375rem; + text-transform: uppercase; + margin: 0; } + .right-submenu .back > a:hover { + background: #303030; + border-bottom: none; + border-top: 1px solid #5e5e5e; } + .right-submenu .back > a:after { + content: "\BB"; + margin-left: .5rem; + display: inline; } + .right-submenu.move-left, .right-submenu.offcanvas-overlap-left, .right-submenu.offcanvas-overlap { + -webkit-transform: translate3d(0%, 0, 0); + -moz-transform: translate3d(0%, 0, 0); + -ms-transform: translate(0%, 0); + -ms-transform: translate3d(0%, 0, 0); + -o-transform: translate3d(0%, 0, 0); + transform: translate3d(0%, 0, 0); } + +.left-off-canvas-menu ul.off-canvas-list li.has-submenu > a:after { + content: "\BB"; + margin-left: .5rem; + display: inline; } + +.right-off-canvas-menu ul.off-canvas-list li.has-submenu > a:before { + content: "\AB"; + margin-right: .5rem; + display: inline; } + +/* Foundation Dropdowns */ +.f-dropdown { + display: none; + left: -9999px; + list-style: none; + margin-left: 0; + position: absolute; + background: #FFFFFF; + border: solid 1px #cccccc; + font-size: 0.875rem; + height: auto; + max-height: none; + width: 100%; + z-index: 89; + margin-top: 2px; + max-width: 200px; } + .f-dropdown.open { + display: block; } + .f-dropdown > *:first-child { + margin-top: 0; } + .f-dropdown > *:last-child { + margin-bottom: 0; } + .f-dropdown:before { + border: inset 6px; + content: ""; + display: block; + height: 0; + width: 0; + border-color: transparent transparent #FFFFFF transparent; + border-bottom-style: solid; + position: absolute; + top: -12px; + left: 10px; + z-index: 89; } + .f-dropdown:after { + border: inset 7px; + content: ""; + display: block; + height: 0; + width: 0; + border-color: transparent transparent #cccccc transparent; + border-bottom-style: solid; + position: absolute; + top: -14px; + left: 9px; + z-index: 88; } + .f-dropdown.right:before { + left: auto; + right: 10px; } + .f-dropdown.right:after { + left: auto; + right: 9px; } + .f-dropdown.drop-right { + display: none; + left: -9999px; + list-style: none; + margin-left: 0; + position: absolute; + background: #FFFFFF; + border: solid 1px #cccccc; + font-size: 0.875rem; + height: auto; + max-height: none; + width: 100%; + z-index: 89; + margin-top: 0; + margin-left: 2px; + max-width: 200px; } + .f-dropdown.drop-right.open { + display: block; } + .f-dropdown.drop-right > *:first-child { + margin-top: 0; } + .f-dropdown.drop-right > *:last-child { + margin-bottom: 0; } + .f-dropdown.drop-right:before { + border: inset 6px; + content: ""; + display: block; + height: 0; + width: 0; + border-color: transparent #FFFFFF transparent transparent; + border-right-style: solid; + position: absolute; + top: 10px; + left: -12px; + z-index: 89; } + .f-dropdown.drop-right:after { + border: inset 7px; + content: ""; + display: block; + height: 0; + width: 0; + border-color: transparent #cccccc transparent transparent; + border-right-style: solid; + position: absolute; + top: 9px; + left: -14px; + z-index: 88; } + .f-dropdown.drop-left { + display: none; + left: -9999px; + list-style: none; + margin-left: 0; + position: absolute; + background: #FFFFFF; + border: solid 1px #cccccc; + font-size: 0.875rem; + height: auto; + max-height: none; + width: 100%; + z-index: 89; + margin-top: 0; + margin-left: -2px; + max-width: 200px; } + .f-dropdown.drop-left.open { + display: block; } + .f-dropdown.drop-left > *:first-child { + margin-top: 0; } + .f-dropdown.drop-left > *:last-child { + margin-bottom: 0; } + .f-dropdown.drop-left:before { + border: inset 6px; + content: ""; + display: block; + height: 0; + width: 0; + border-color: transparent transparent transparent #FFFFFF; + border-left-style: solid; + position: absolute; + top: 10px; + right: -12px; + left: auto; + z-index: 89; } + .f-dropdown.drop-left:after { + border: inset 7px; + content: ""; + display: block; + height: 0; + width: 0; + border-color: transparent transparent transparent #cccccc; + border-left-style: solid; + position: absolute; + top: 9px; + right: -14px; + left: auto; + z-index: 88; } + .f-dropdown.drop-top { + display: none; + left: -9999px; + list-style: none; + margin-left: 0; + position: absolute; + background: #FFFFFF; + border: solid 1px #cccccc; + font-size: 0.875rem; + height: auto; + max-height: none; + width: 100%; + z-index: 89; + margin-left: 0; + margin-top: -2px; + max-width: 200px; } + .f-dropdown.drop-top.open { + display: block; } + .f-dropdown.drop-top > *:first-child { + margin-top: 0; } + .f-dropdown.drop-top > *:last-child { + margin-bottom: 0; } + .f-dropdown.drop-top:before { + border: inset 6px; + content: ""; + display: block; + height: 0; + width: 0; + border-color: #FFFFFF transparent transparent transparent; + border-top-style: solid; + bottom: -12px; + position: absolute; + top: auto; + left: 10px; + right: auto; + z-index: 89; } + .f-dropdown.drop-top:after { + border: inset 7px; + content: ""; + display: block; + height: 0; + width: 0; + border-color: #cccccc transparent transparent transparent; + border-top-style: solid; + bottom: -14px; + position: absolute; + top: auto; + left: 9px; + right: auto; + z-index: 88; } + .f-dropdown li { + cursor: pointer; + font-size: 0.875rem; + line-height: 1.125rem; + margin: 0; } + .f-dropdown li:hover, .f-dropdown li:focus { + background: #EEEEEE; } + .f-dropdown li.radius { + border-radius: 3px; } + .f-dropdown li a { + display: block; + padding: 0.5rem; + color: #555555; } + .f-dropdown.content { + display: none; + left: -9999px; + list-style: none; + margin-left: 0; + position: absolute; + background: #FFFFFF; + border: solid 1px #cccccc; + font-size: 0.875rem; + height: auto; + max-height: none; + padding: 1.25rem; + width: 100%; + z-index: 89; + max-width: 200px; } + .f-dropdown.content.open { + display: block; } + .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; } + .f-dropdown.mega { + width: 100% !important; + max-width: 100% !important; } + .f-dropdown.mega.open { + left: 0 !important; } + +table { + background: #FFFFFF; + border: solid 1px #DDDDDD; + margin-bottom: 1.25rem; + table-layout: auto; } + table caption { + background: transparent; + color: #222222; + font-size: 1rem; + font-weight: bold; } + table thead { + background: #F5F5F5; } + table thead tr th, + table thead tr td { + color: #222222; + font-size: 0.875rem; + font-weight: bold; + padding: 0.5rem 0.625rem 0.625rem; } + table tfoot { + background: #F5F5F5; } + table tfoot tr th, + table tfoot tr td { + color: #222222; + font-size: 0.875rem; + font-weight: bold; + padding: 0.5rem 0.625rem 0.625rem; } + table tr th, + table tr td { + color: #222222; + font-size: 0.875rem; + padding: 0.5625rem 0.625rem; + text-align: left; } + table tr.even, table tr.alt, table tr:nth-of-type(even) { + background: #F9F9F9; } + table thead tr th, + table tfoot tr th, + table tfoot tr td, + table tbody tr th, + table tbody tr td, + table tr td { + display: table-cell; + line-height: 1.125rem; } + +.range-slider { + border: 1px solid #DDDDDD; + margin: 1.25rem 0; + position: relative; + -ms-touch-action: none; + touch-action: none; + display: block; + height: 1rem; + width: 100%; + background: #FAFAFA; } + .range-slider.vertical-range { + border: 1px solid #DDDDDD; + margin: 1.25rem 0; + position: relative; + -ms-touch-action: none; + touch-action: none; + display: inline-block; + height: 12.5rem; + width: 1rem; } + .range-slider.vertical-range .range-slider-handle { + bottom: -10.5rem; + margin-left: -0.5rem; + margin-top: 0; + position: absolute; } + .range-slider.vertical-range .range-slider-active-segment { + border-bottom-left-radius: inherit; + border-bottom-right-radius: inherit; + border-top-left-radius: initial; + bottom: 0; + height: auto; + width: 0.875rem; } + .range-slider.radius { + background: #FAFAFA; + border-radius: 3px; } + .range-slider.radius .range-slider-handle { + background: #008CBA; + border-radius: 3px; } + .range-slider.radius .range-slider-handle:hover { + background: #007ba4; } + .range-slider.round { + background: #FAFAFA; + border-radius: 1000px; } + .range-slider.round .range-slider-handle { + background: #008CBA; + border-radius: 1000px; } + .range-slider.round .range-slider-handle:hover { + background: #007ba4; } + .range-slider.disabled, .range-slider[disabled] { + background: #FAFAFA; + cursor: not-allowed; + opacity: 0.7; } + .range-slider.disabled .range-slider-handle, .range-slider[disabled] .range-slider-handle { + background: #008CBA; + cursor: default; + opacity: 0.7; } + .range-slider.disabled .range-slider-handle:hover, .range-slider[disabled] .range-slider-handle:hover { + background: #007ba4; } + +.range-slider-active-segment { + background: #e5e5e5; + border-bottom-left-radius: inherit; + border-top-left-radius: inherit; + display: inline-block; + height: 0.875rem; + position: absolute; } + +.range-slider-handle { + border: 1px solid none; + cursor: pointer; + display: inline-block; + height: 1.375rem; + position: absolute; + top: -0.3125rem; + width: 2rem; + z-index: 1; + -ms-touch-action: manipulation; + touch-action: manipulation; + background: #008CBA; } + .range-slider-handle:hover { + background: #007ba4; } + +[class*="block-grid-"] { + display: block; + padding: 0; + margin: 0 -0.625rem; } + [class*="block-grid-"]:before, [class*="block-grid-"]:after { + content: " "; + display: table; } + [class*="block-grid-"]:after { + clear: both; } + [class*="block-grid-"] > li { + display: block; + float: left; + height: auto; + padding: 0 0.625rem 1.25rem; } + +@media only screen { + .small-block-grid-1 > li { + list-style: none; + width: 100%; } + .small-block-grid-1 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-1 > li:nth-of-type(1n+1) { + clear: both; } + + .small-block-grid-2 > li { + list-style: none; + width: 50%; } + .small-block-grid-2 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-2 > li:nth-of-type(2n+1) { + clear: both; } + + .small-block-grid-3 > li { + list-style: none; + width: 33.33333%; } + .small-block-grid-3 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-3 > li:nth-of-type(3n+1) { + clear: both; } + + .small-block-grid-4 > li { + list-style: none; + width: 25%; } + .small-block-grid-4 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-4 > li:nth-of-type(4n+1) { + clear: both; } + + .small-block-grid-5 > li { + list-style: none; + width: 20%; } + .small-block-grid-5 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-5 > li:nth-of-type(5n+1) { + clear: both; } + + .small-block-grid-6 > li { + list-style: none; + width: 16.66667%; } + .small-block-grid-6 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-6 > li:nth-of-type(6n+1) { + clear: both; } + + .small-block-grid-7 > li { + list-style: none; + width: 14.28571%; } + .small-block-grid-7 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-7 > li:nth-of-type(7n+1) { + clear: both; } + + .small-block-grid-8 > li { + list-style: none; + width: 12.5%; } + .small-block-grid-8 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-8 > li:nth-of-type(8n+1) { + clear: both; } + + .small-block-grid-9 > li { + list-style: none; + width: 11.11111%; } + .small-block-grid-9 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-9 > li:nth-of-type(9n+1) { + clear: both; } + + .small-block-grid-10 > li { + list-style: none; + width: 10%; } + .small-block-grid-10 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-10 > li:nth-of-type(10n+1) { + clear: both; } + + .small-block-grid-11 > li { + list-style: none; + width: 9.09091%; } + .small-block-grid-11 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-11 > li:nth-of-type(11n+1) { + clear: both; } + + .small-block-grid-12 > li { + list-style: none; + width: 8.33333%; } + .small-block-grid-12 > li:nth-of-type(1n) { + clear: none; } + .small-block-grid-12 > li:nth-of-type(12n+1) { + clear: both; } } +@media only screen and (min-width: 40.0625em) { + .medium-block-grid-1 > li { + list-style: none; + width: 100%; } + .medium-block-grid-1 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-1 > li:nth-of-type(1n+1) { + clear: both; } + + .medium-block-grid-2 > li { + list-style: none; + width: 50%; } + .medium-block-grid-2 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-2 > li:nth-of-type(2n+1) { + clear: both; } + + .medium-block-grid-3 > li { + list-style: none; + width: 33.33333%; } + .medium-block-grid-3 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-3 > li:nth-of-type(3n+1) { + clear: both; } + + .medium-block-grid-4 > li { + list-style: none; + width: 25%; } + .medium-block-grid-4 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-4 > li:nth-of-type(4n+1) { + clear: both; } + + .medium-block-grid-5 > li { + list-style: none; + width: 20%; } + .medium-block-grid-5 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-5 > li:nth-of-type(5n+1) { + clear: both; } + + .medium-block-grid-6 > li { + list-style: none; + width: 16.66667%; } + .medium-block-grid-6 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-6 > li:nth-of-type(6n+1) { + clear: both; } + + .medium-block-grid-7 > li { + list-style: none; + width: 14.28571%; } + .medium-block-grid-7 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-7 > li:nth-of-type(7n+1) { + clear: both; } + + .medium-block-grid-8 > li { + list-style: none; + width: 12.5%; } + .medium-block-grid-8 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-8 > li:nth-of-type(8n+1) { + clear: both; } + + .medium-block-grid-9 > li { + list-style: none; + width: 11.11111%; } + .medium-block-grid-9 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-9 > li:nth-of-type(9n+1) { + clear: both; } + + .medium-block-grid-10 > li { + list-style: none; + width: 10%; } + .medium-block-grid-10 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-10 > li:nth-of-type(10n+1) { + clear: both; } + + .medium-block-grid-11 > li { + list-style: none; + width: 9.09091%; } + .medium-block-grid-11 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-11 > li:nth-of-type(11n+1) { + clear: both; } + + .medium-block-grid-12 > li { + list-style: none; + width: 8.33333%; } + .medium-block-grid-12 > li:nth-of-type(1n) { + clear: none; } + .medium-block-grid-12 > li:nth-of-type(12n+1) { + clear: both; } } +@media only screen and (min-width: 64.0625em) { + .large-block-grid-1 > li { + list-style: none; + width: 100%; } + .large-block-grid-1 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-1 > li:nth-of-type(1n+1) { + clear: both; } + + .large-block-grid-2 > li { + list-style: none; + width: 50%; } + .large-block-grid-2 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-2 > li:nth-of-type(2n+1) { + clear: both; } + + .large-block-grid-3 > li { + list-style: none; + width: 33.33333%; } + .large-block-grid-3 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-3 > li:nth-of-type(3n+1) { + clear: both; } + + .large-block-grid-4 > li { + list-style: none; + width: 25%; } + .large-block-grid-4 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-4 > li:nth-of-type(4n+1) { + clear: both; } + + .large-block-grid-5 > li { + list-style: none; + width: 20%; } + .large-block-grid-5 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-5 > li:nth-of-type(5n+1) { + clear: both; } + + .large-block-grid-6 > li { + list-style: none; + width: 16.66667%; } + .large-block-grid-6 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-6 > li:nth-of-type(6n+1) { + clear: both; } + + .large-block-grid-7 > li { + list-style: none; + width: 14.28571%; } + .large-block-grid-7 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-7 > li:nth-of-type(7n+1) { + clear: both; } + + .large-block-grid-8 > li { + list-style: none; + width: 12.5%; } + .large-block-grid-8 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-8 > li:nth-of-type(8n+1) { + clear: both; } + + .large-block-grid-9 > li { + list-style: none; + width: 11.11111%; } + .large-block-grid-9 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-9 > li:nth-of-type(9n+1) { + clear: both; } + + .large-block-grid-10 > li { + list-style: none; + width: 10%; } + .large-block-grid-10 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-10 > li:nth-of-type(10n+1) { + clear: both; } + + .large-block-grid-11 > li { + list-style: none; + width: 9.09091%; } + .large-block-grid-11 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-11 > li:nth-of-type(11n+1) { + clear: both; } + + .large-block-grid-12 > li { + list-style: none; + width: 8.33333%; } + .large-block-grid-12 > li:nth-of-type(1n) { + clear: none; } + .large-block-grid-12 > li:nth-of-type(12n+1) { + clear: both; } } +.flex-video { + height: 0; + margin-bottom: 1rem; + overflow: hidden; + padding-bottom: 67.5%; + padding-top: 1.5625rem; + position: relative; } + .flex-video.widescreen { + padding-bottom: 56.34%; } + .flex-video.vimeo { + padding-top: 0; } + .flex-video iframe, + .flex-video object, + .flex-video embed, + .flex-video video { + height: 100%; + position: absolute; + top: 0; + width: 100%; + left: 0; } + +.keystroke, +kbd { + background-color: #ededed; + border-color: #dddddd; + color: #222222; + border-style: solid; + border-width: 1px; + font-family: "Consolas", "Menlo", "Courier", monospace; + font-size: inherit; + margin: 0; + padding: 0.125rem 0.25rem 0; + border-radius: 3px; } + +.switch { + border: none; + margin-bottom: 1.5rem; + outline: 0; + padding: 0; + position: relative; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + .switch label { + background: #DDDDDD; + color: transparent; + cursor: pointer; + display: block; + margin-bottom: 1rem; + position: relative; + text-indent: 100%; + width: 4rem; + height: 2rem; + transition: left 0.15s ease-out; } + .switch input { + left: 10px; + opacity: 0; + padding: 0; + position: absolute; + top: 9px; } + .switch input + label { + margin-left: 0; + margin-right: 0; } + .switch label:after { + background: #FFFFFF; + content: ""; + display: block; + height: 1.5rem; + left: .25rem; + position: absolute; + top: .25rem; + width: 1.5rem; + -webkit-transition: left 0.15s ease-out; + -moz-transition: left 0.15s ease-out; + -o-transition: translate3d(0, 0, 0); + transition: left 0.15s ease-out; + -webkit-transform: translate3d(0, 0, 0); + -moz-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + .switch input:checked + label { + background: #008CBA; } + .switch input:checked + label:after { + left: 2.25rem; } + .switch label { + height: 2rem; + width: 4rem; } + .switch label:after { + height: 1.5rem; + width: 1.5rem; } + .switch input:checked + label:after { + left: 2.25rem; } + .switch label { + color: transparent; + background: #DDDDDD; } + .switch label:after { + background: #FFFFFF; } + .switch input:checked + label { + background: #008CBA; } + .switch.large label { + height: 2.5rem; + width: 5rem; } + .switch.large label:after { + height: 2rem; + width: 2rem; } + .switch.large input:checked + label:after { + left: 2.75rem; } + .switch.small label { + height: 1.75rem; + width: 3.5rem; } + .switch.small label:after { + height: 1.25rem; + width: 1.25rem; } + .switch.small input:checked + label:after { + left: 2rem; } + .switch.tiny label { + height: 1.5rem; + width: 3rem; } + .switch.tiny label:after { + height: 1rem; + width: 1rem; } + .switch.tiny input:checked + label:after { + left: 1.75rem; } + .switch.radius label { + border-radius: 4px; } + .switch.radius label:after { + border-radius: 3px; } + .switch.round { + border-radius: 1000px; } + .switch.round label { + border-radius: 2rem; } + .switch.round label:after { + border-radius: 2rem; } + +/* small displays */ +@media only screen { + .show-for-small-only, .show-for-small-up, .show-for-small, .show-for-small-down, .hide-for-medium-only, .hide-for-medium-up, .hide-for-medium, .show-for-medium-down, .hide-for-large-only, .hide-for-large-up, .hide-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xlarge, .show-for-xlarge-down, .hide-for-xxlarge-only, .hide-for-xxlarge-up, .hide-for-xxlarge, .show-for-xxlarge-down { + display: inherit !important; } + + .hide-for-small-only, .hide-for-small-up, .hide-for-small, .hide-for-small-down, .show-for-medium-only, .show-for-medium-up, .show-for-medium, .hide-for-medium-down, .show-for-large-only, .show-for-large-up, .show-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .show-for-xlarge, .hide-for-xlarge-down, .show-for-xxlarge-only, .show-for-xxlarge-up, .show-for-xxlarge, .hide-for-xxlarge-down { + display: none !important; } + + .visible-for-small-only, .visible-for-small-up, .visible-for-small, .visible-for-small-down, .hidden-for-medium-only, .hidden-for-medium-up, .hidden-for-medium, .visible-for-medium-down, .hidden-for-large-only, .hidden-for-large-up, .hidden-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xlarge, .visible-for-xlarge-down, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up, .hidden-for-xxlarge, .visible-for-xxlarge-down { + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; } + + .hidden-for-small-only, .hidden-for-small-up, .hidden-for-small, .hidden-for-small-down, .visible-for-medium-only, .visible-for-medium-up, .visible-for-medium, .hidden-for-medium-down, .visible-for-large-only, .visible-for-large-up, .visible-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xlarge, .hidden-for-xlarge-down, .visible-for-xxlarge-only, .visible-for-xxlarge-up, .visible-for-xxlarge, .hidden-for-xxlarge-down { + clip: rect(1px, 1px, 1px, 1px); + height: 1px; + overflow: hidden; + position: absolute !important; + width: 1px; } + + table.show-for-small-only, table.show-for-small-up, table.show-for-small, table.show-for-small-down, table.hide-for-medium-only, table.hide-for-medium-up, table.hide-for-medium, table.show-for-medium-down, table.hide-for-large-only, table.hide-for-large-up, table.hide-for-large, table.show-for-large-down, table.hide-for-xlarge-only, table.hide-for-xlarge-up, table.hide-for-xlarge, table.show-for-xlarge-down, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up, table.hide-for-xxlarge, table.show-for-xxlarge-down { + display: table !important; } + + thead.show-for-small-only, thead.show-for-small-up, thead.show-for-small, thead.show-for-small-down, thead.hide-for-medium-only, thead.hide-for-medium-up, thead.hide-for-medium, thead.show-for-medium-down, thead.hide-for-large-only, thead.hide-for-large-up, thead.hide-for-large, thead.show-for-large-down, thead.hide-for-xlarge-only, thead.hide-for-xlarge-up, thead.hide-for-xlarge, thead.show-for-xlarge-down, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up, thead.hide-for-xxlarge, thead.show-for-xxlarge-down { + display: table-header-group !important; } + + tbody.show-for-small-only, tbody.show-for-small-up, tbody.show-for-small, tbody.show-for-small-down, tbody.hide-for-medium-only, tbody.hide-for-medium-up, tbody.hide-for-medium, tbody.show-for-medium-down, tbody.hide-for-large-only, tbody.hide-for-large-up, tbody.hide-for-large, tbody.show-for-large-down, tbody.hide-for-xlarge-only, tbody.hide-for-xlarge-up, tbody.hide-for-xlarge, tbody.show-for-xlarge-down, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up, tbody.hide-for-xxlarge, tbody.show-for-xxlarge-down { + display: table-row-group !important; } + + tr.show-for-small-only, tr.show-for-small-up, tr.show-for-small, tr.show-for-small-down, tr.hide-for-medium-only, tr.hide-for-medium-up, tr.hide-for-medium, tr.show-for-medium-down, tr.hide-for-large-only, tr.hide-for-large-up, tr.hide-for-large, tr.show-for-large-down, tr.hide-for-xlarge-only, tr.hide-for-xlarge-up, tr.hide-for-xlarge, tr.show-for-xlarge-down, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up, tr.hide-for-xxlarge, tr.show-for-xxlarge-down { + display: table-row; } + + th.show-for-small-only, td.show-for-small-only, th.show-for-small-up, td.show-for-small-up, th.show-for-small, td.show-for-small, th.show-for-small-down, td.show-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.hide-for-medium-up, td.hide-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.show-for-medium-down, td.show-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.hide-for-large-up, td.hide-for-large-up, th.hide-for-large, td.hide-for-large, th.show-for-large-down, td.show-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.hide-for-xlarge-up, td.hide-for-xlarge-up, th.hide-for-xlarge, td.hide-for-xlarge, th.show-for-xlarge-down, td.show-for-xlarge-down, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up, th.hide-for-xxlarge, td.hide-for-xxlarge, th.show-for-xxlarge-down, td.show-for-xxlarge-down { + display: table-cell !important; } } +/* medium displays */ +@media only screen and (min-width: 40.0625em) { + .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .show-for-medium-only, .show-for-medium-up, .show-for-medium, .show-for-medium-down, .hide-for-large-only, .hide-for-large-up, .hide-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xlarge, .show-for-xlarge-down, .hide-for-xxlarge-only, .hide-for-xxlarge-up, .hide-for-xxlarge, .show-for-xxlarge-down { + display: inherit !important; } + + .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .hide-for-medium-only, .hide-for-medium-up, .hide-for-medium, .hide-for-medium-down, .show-for-large-only, .show-for-large-up, .show-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .show-for-xlarge, .hide-for-xlarge-down, .show-for-xxlarge-only, .show-for-xxlarge-up, .show-for-xxlarge, .hide-for-xxlarge-down { + display: none !important; } + + .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .visible-for-medium-only, .visible-for-medium-up, .visible-for-medium, .visible-for-medium-down, .hidden-for-large-only, .hidden-for-large-up, .hidden-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xlarge, .visible-for-xlarge-down, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up, .hidden-for-xxlarge, .visible-for-xxlarge-down { + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; } + + .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .hidden-for-medium-only, .hidden-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .visible-for-large-only, .visible-for-large-up, .visible-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xlarge, .hidden-for-xlarge-down, .visible-for-xxlarge-only, .visible-for-xxlarge-up, .visible-for-xxlarge, .hidden-for-xxlarge-down { + clip: rect(1px, 1px, 1px, 1px); + height: 1px; + overflow: hidden; + position: absolute !important; + width: 1px; } + + table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.show-for-medium-only, table.show-for-medium-up, table.show-for-medium, table.show-for-medium-down, table.hide-for-large-only, table.hide-for-large-up, table.hide-for-large, table.show-for-large-down, table.hide-for-xlarge-only, table.hide-for-xlarge-up, table.hide-for-xlarge, table.show-for-xlarge-down, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up, table.hide-for-xxlarge, table.show-for-xxlarge-down { + display: table !important; } + + thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.show-for-medium-only, thead.show-for-medium-up, thead.show-for-medium, thead.show-for-medium-down, thead.hide-for-large-only, thead.hide-for-large-up, thead.hide-for-large, thead.show-for-large-down, thead.hide-for-xlarge-only, thead.hide-for-xlarge-up, thead.hide-for-xlarge, thead.show-for-xlarge-down, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up, thead.hide-for-xxlarge, thead.show-for-xxlarge-down { + display: table-header-group !important; } + + tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.show-for-medium-only, tbody.show-for-medium-up, tbody.show-for-medium, tbody.show-for-medium-down, tbody.hide-for-large-only, tbody.hide-for-large-up, tbody.hide-for-large, tbody.show-for-large-down, tbody.hide-for-xlarge-only, tbody.hide-for-xlarge-up, tbody.hide-for-xlarge, tbody.show-for-xlarge-down, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up, tbody.hide-for-xxlarge, tbody.show-for-xxlarge-down { + display: table-row-group !important; } + + tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.show-for-medium-only, tr.show-for-medium-up, tr.show-for-medium, tr.show-for-medium-down, tr.hide-for-large-only, tr.hide-for-large-up, tr.hide-for-large, tr.show-for-large-down, tr.hide-for-xlarge-only, tr.hide-for-xlarge-up, tr.hide-for-xlarge, tr.show-for-xlarge-down, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up, tr.hide-for-xxlarge, tr.show-for-xxlarge-down { + display: table-row; } + + th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.show-for-medium-only, td.show-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.show-for-medium, td.show-for-medium, th.show-for-medium-down, td.show-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.hide-for-large-up, td.hide-for-large-up, th.hide-for-large, td.hide-for-large, th.show-for-large-down, td.show-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.hide-for-xlarge-up, td.hide-for-xlarge-up, th.hide-for-xlarge, td.hide-for-xlarge, th.show-for-xlarge-down, td.show-for-xlarge-down, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up, th.hide-for-xxlarge, td.hide-for-xxlarge, th.show-for-xxlarge-down, td.show-for-xxlarge-down { + display: table-cell !important; } } +/* large displays */ +@media only screen and (min-width: 64.0625em) { + .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .hide-for-medium-only, .show-for-medium-up, .hide-for-medium, .hide-for-medium-down, .show-for-large-only, .show-for-large-up, .show-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xlarge, .show-for-xlarge-down, .hide-for-xxlarge-only, .hide-for-xxlarge-up, .hide-for-xxlarge, .show-for-xxlarge-down { + display: inherit !important; } + + .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .show-for-medium-only, .hide-for-medium-up, .show-for-medium, .show-for-medium-down, .hide-for-large-only, .hide-for-large-up, .hide-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .show-for-xlarge, .hide-for-xlarge-down, .show-for-xxlarge-only, .show-for-xxlarge-up, .show-for-xxlarge, .hide-for-xxlarge-down { + display: none !important; } + + .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .hidden-for-medium-only, .visible-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .visible-for-large-only, .visible-for-large-up, .visible-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xlarge, .visible-for-xlarge-down, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up, .hidden-for-xxlarge, .visible-for-xxlarge-down { + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; } + + .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .visible-for-medium-only, .hidden-for-medium-up, .visible-for-medium, .visible-for-medium-down, .hidden-for-large-only, .hidden-for-large-up, .hidden-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xlarge, .hidden-for-xlarge-down, .visible-for-xxlarge-only, .visible-for-xxlarge-up, .visible-for-xxlarge, .hidden-for-xxlarge-down { + clip: rect(1px, 1px, 1px, 1px); + height: 1px; + overflow: hidden; + position: absolute !important; + width: 1px; } + + table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.hide-for-medium-only, table.show-for-medium-up, table.hide-for-medium, table.hide-for-medium-down, table.show-for-large-only, table.show-for-large-up, table.show-for-large, table.show-for-large-down, table.hide-for-xlarge-only, table.hide-for-xlarge-up, table.hide-for-xlarge, table.show-for-xlarge-down, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up, table.hide-for-xxlarge, table.show-for-xxlarge-down { + display: table !important; } + + thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.hide-for-medium-only, thead.show-for-medium-up, thead.hide-for-medium, thead.hide-for-medium-down, thead.show-for-large-only, thead.show-for-large-up, thead.show-for-large, thead.show-for-large-down, thead.hide-for-xlarge-only, thead.hide-for-xlarge-up, thead.hide-for-xlarge, thead.show-for-xlarge-down, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up, thead.hide-for-xxlarge, thead.show-for-xxlarge-down { + display: table-header-group !important; } + + tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.hide-for-medium-only, tbody.show-for-medium-up, tbody.hide-for-medium, tbody.hide-for-medium-down, tbody.show-for-large-only, tbody.show-for-large-up, tbody.show-for-large, tbody.show-for-large-down, tbody.hide-for-xlarge-only, tbody.hide-for-xlarge-up, tbody.hide-for-xlarge, tbody.show-for-xlarge-down, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up, tbody.hide-for-xxlarge, tbody.show-for-xxlarge-down { + display: table-row-group !important; } + + tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.hide-for-medium-only, tr.show-for-medium-up, tr.hide-for-medium, tr.hide-for-medium-down, tr.show-for-large-only, tr.show-for-large-up, tr.show-for-large, tr.show-for-large-down, tr.hide-for-xlarge-only, tr.hide-for-xlarge-up, tr.hide-for-xlarge, tr.show-for-xlarge-down, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up, tr.hide-for-xxlarge, tr.show-for-xxlarge-down { + display: table-row; } + + th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.hide-for-medium-down, td.hide-for-medium-down, th.show-for-large-only, td.show-for-large-only, th.show-for-large-up, td.show-for-large-up, th.show-for-large, td.show-for-large, th.show-for-large-down, td.show-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.hide-for-xlarge-up, td.hide-for-xlarge-up, th.hide-for-xlarge, td.hide-for-xlarge, th.show-for-xlarge-down, td.show-for-xlarge-down, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up, th.hide-for-xxlarge, td.hide-for-xxlarge, th.show-for-xxlarge-down, td.show-for-xxlarge-down { + display: table-cell !important; } } +/* xlarge displays */ +@media only screen and (min-width: 90.0625em) { + .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .hide-for-medium-only, .show-for-medium-up, .hide-for-medium, .hide-for-medium-down, .hide-for-large-only, .show-for-large-up, .hide-for-large, .hide-for-large-down, .show-for-xlarge-only, .show-for-xlarge-up, .show-for-xlarge, .show-for-xlarge-down, .hide-for-xxlarge-only, .hide-for-xxlarge-up, .hide-for-xxlarge, .show-for-xxlarge-down { + display: inherit !important; } + + .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .show-for-medium-only, .hide-for-medium-up, .show-for-medium, .show-for-medium-down, .show-for-large-only, .hide-for-large-up, .show-for-large, .show-for-large-down, .hide-for-xlarge-only, .hide-for-xlarge-up, .hide-for-xlarge, .hide-for-xlarge-down, .show-for-xxlarge-only, .show-for-xxlarge-up, .show-for-xxlarge, .hide-for-xxlarge-down { + display: none !important; } + + .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .hidden-for-medium-only, .visible-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .hidden-for-large-only, .visible-for-large-up, .hidden-for-large, .hidden-for-large-down, .visible-for-xlarge-only, .visible-for-xlarge-up, .visible-for-xlarge, .visible-for-xlarge-down, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up, .hidden-for-xxlarge, .visible-for-xxlarge-down { + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; } + + .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .visible-for-medium-only, .hidden-for-medium-up, .visible-for-medium, .visible-for-medium-down, .visible-for-large-only, .hidden-for-large-up, .visible-for-large, .visible-for-large-down, .hidden-for-xlarge-only, .hidden-for-xlarge-up, .hidden-for-xlarge, .hidden-for-xlarge-down, .visible-for-xxlarge-only, .visible-for-xxlarge-up, .visible-for-xxlarge, .hidden-for-xxlarge-down { + clip: rect(1px, 1px, 1px, 1px); + height: 1px; + overflow: hidden; + position: absolute !important; + width: 1px; } + + table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.hide-for-medium-only, table.show-for-medium-up, table.hide-for-medium, table.hide-for-medium-down, table.hide-for-large-only, table.show-for-large-up, table.hide-for-large, table.hide-for-large-down, table.show-for-xlarge-only, table.show-for-xlarge-up, table.show-for-xlarge, table.show-for-xlarge-down, table.hide-for-xxlarge-only, table.hide-for-xxlarge-up, table.hide-for-xxlarge, table.show-for-xxlarge-down { + display: table !important; } + + thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.hide-for-medium-only, thead.show-for-medium-up, thead.hide-for-medium, thead.hide-for-medium-down, thead.hide-for-large-only, thead.show-for-large-up, thead.hide-for-large, thead.hide-for-large-down, thead.show-for-xlarge-only, thead.show-for-xlarge-up, thead.show-for-xlarge, thead.show-for-xlarge-down, thead.hide-for-xxlarge-only, thead.hide-for-xxlarge-up, thead.hide-for-xxlarge, thead.show-for-xxlarge-down { + display: table-header-group !important; } + + tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.hide-for-medium-only, tbody.show-for-medium-up, tbody.hide-for-medium, tbody.hide-for-medium-down, tbody.hide-for-large-only, tbody.show-for-large-up, tbody.hide-for-large, tbody.hide-for-large-down, tbody.show-for-xlarge-only, tbody.show-for-xlarge-up, tbody.show-for-xlarge, tbody.show-for-xlarge-down, tbody.hide-for-xxlarge-only, tbody.hide-for-xxlarge-up, tbody.hide-for-xxlarge, tbody.show-for-xxlarge-down { + display: table-row-group !important; } + + tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.hide-for-medium-only, tr.show-for-medium-up, tr.hide-for-medium, tr.hide-for-medium-down, tr.hide-for-large-only, tr.show-for-large-up, tr.hide-for-large, tr.hide-for-large-down, tr.show-for-xlarge-only, tr.show-for-xlarge-up, tr.show-for-xlarge, tr.show-for-xlarge-down, tr.hide-for-xxlarge-only, tr.hide-for-xxlarge-up, tr.hide-for-xxlarge, tr.show-for-xxlarge-down { + display: table-row; } + + th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.hide-for-medium-down, td.hide-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.show-for-large-up, td.show-for-large-up, th.hide-for-large, td.hide-for-large, th.hide-for-large-down, td.hide-for-large-down, th.show-for-xlarge-only, td.show-for-xlarge-only, th.show-for-xlarge-up, td.show-for-xlarge-up, th.show-for-xlarge, td.show-for-xlarge, th.show-for-xlarge-down, td.show-for-xlarge-down, th.hide-for-xxlarge-only, td.hide-for-xxlarge-only, th.hide-for-xxlarge-up, td.hide-for-xxlarge-up, th.hide-for-xxlarge, td.hide-for-xxlarge, th.show-for-xxlarge-down, td.show-for-xxlarge-down { + display: table-cell !important; } } +/* xxlarge displays */ +@media only screen and (min-width: 120.0625em) { + .hide-for-small-only, .show-for-small-up, .hide-for-small, .hide-for-small-down, .hide-for-medium-only, .show-for-medium-up, .hide-for-medium, .hide-for-medium-down, .hide-for-large-only, .show-for-large-up, .hide-for-large, .hide-for-large-down, .hide-for-xlarge-only, .show-for-xlarge-up, .hide-for-xlarge, .hide-for-xlarge-down, .show-for-xxlarge-only, .show-for-xxlarge-up, .show-for-xxlarge, .show-for-xxlarge-down { + display: inherit !important; } + + .show-for-small-only, .hide-for-small-up, .show-for-small, .show-for-small-down, .show-for-medium-only, .hide-for-medium-up, .show-for-medium, .show-for-medium-down, .show-for-large-only, .hide-for-large-up, .show-for-large, .show-for-large-down, .show-for-xlarge-only, .hide-for-xlarge-up, .show-for-xlarge, .show-for-xlarge-down, .hide-for-xxlarge-only, .hide-for-xxlarge-up, .hide-for-xxlarge, .hide-for-xxlarge-down { + display: none !important; } + + .hidden-for-small-only, .visible-for-small-up, .hidden-for-small, .hidden-for-small-down, .hidden-for-medium-only, .visible-for-medium-up, .hidden-for-medium, .hidden-for-medium-down, .hidden-for-large-only, .visible-for-large-up, .hidden-for-large, .hidden-for-large-down, .hidden-for-xlarge-only, .visible-for-xlarge-up, .hidden-for-xlarge, .hidden-for-xlarge-down, .visible-for-xxlarge-only, .visible-for-xxlarge-up, .visible-for-xxlarge, .visible-for-xxlarge-down { + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; } + + .visible-for-small-only, .hidden-for-small-up, .visible-for-small, .visible-for-small-down, .visible-for-medium-only, .hidden-for-medium-up, .visible-for-medium, .visible-for-medium-down, .visible-for-large-only, .hidden-for-large-up, .visible-for-large, .visible-for-large-down, .visible-for-xlarge-only, .hidden-for-xlarge-up, .visible-for-xlarge, .visible-for-xlarge-down, .hidden-for-xxlarge-only, .hidden-for-xxlarge-up, .hidden-for-xxlarge, .hidden-for-xxlarge-down { + clip: rect(1px, 1px, 1px, 1px); + height: 1px; + overflow: hidden; + position: absolute !important; + width: 1px; } + + table.hide-for-small-only, table.show-for-small-up, table.hide-for-small, table.hide-for-small-down, table.hide-for-medium-only, table.show-for-medium-up, table.hide-for-medium, table.hide-for-medium-down, table.hide-for-large-only, table.show-for-large-up, table.hide-for-large, table.hide-for-large-down, table.hide-for-xlarge-only, table.show-for-xlarge-up, table.hide-for-xlarge, table.hide-for-xlarge-down, table.show-for-xxlarge-only, table.show-for-xxlarge-up, table.show-for-xxlarge, table.show-for-xxlarge-down { + display: table !important; } + + thead.hide-for-small-only, thead.show-for-small-up, thead.hide-for-small, thead.hide-for-small-down, thead.hide-for-medium-only, thead.show-for-medium-up, thead.hide-for-medium, thead.hide-for-medium-down, thead.hide-for-large-only, thead.show-for-large-up, thead.hide-for-large, thead.hide-for-large-down, thead.hide-for-xlarge-only, thead.show-for-xlarge-up, thead.hide-for-xlarge, thead.hide-for-xlarge-down, thead.show-for-xxlarge-only, thead.show-for-xxlarge-up, thead.show-for-xxlarge, thead.show-for-xxlarge-down { + display: table-header-group !important; } + + tbody.hide-for-small-only, tbody.show-for-small-up, tbody.hide-for-small, tbody.hide-for-small-down, tbody.hide-for-medium-only, tbody.show-for-medium-up, tbody.hide-for-medium, tbody.hide-for-medium-down, tbody.hide-for-large-only, tbody.show-for-large-up, tbody.hide-for-large, tbody.hide-for-large-down, tbody.hide-for-xlarge-only, tbody.show-for-xlarge-up, tbody.hide-for-xlarge, tbody.hide-for-xlarge-down, tbody.show-for-xxlarge-only, tbody.show-for-xxlarge-up, tbody.show-for-xxlarge, tbody.show-for-xxlarge-down { + display: table-row-group !important; } + + tr.hide-for-small-only, tr.show-for-small-up, tr.hide-for-small, tr.hide-for-small-down, tr.hide-for-medium-only, tr.show-for-medium-up, tr.hide-for-medium, tr.hide-for-medium-down, tr.hide-for-large-only, tr.show-for-large-up, tr.hide-for-large, tr.hide-for-large-down, tr.hide-for-xlarge-only, tr.show-for-xlarge-up, tr.hide-for-xlarge, tr.hide-for-xlarge-down, tr.show-for-xxlarge-only, tr.show-for-xxlarge-up, tr.show-for-xxlarge, tr.show-for-xxlarge-down { + display: table-row; } + + th.hide-for-small-only, td.hide-for-small-only, th.show-for-small-up, td.show-for-small-up, th.hide-for-small, td.hide-for-small, th.hide-for-small-down, td.hide-for-small-down, th.hide-for-medium-only, td.hide-for-medium-only, th.show-for-medium-up, td.show-for-medium-up, th.hide-for-medium, td.hide-for-medium, th.hide-for-medium-down, td.hide-for-medium-down, th.hide-for-large-only, td.hide-for-large-only, th.show-for-large-up, td.show-for-large-up, th.hide-for-large, td.hide-for-large, th.hide-for-large-down, td.hide-for-large-down, th.hide-for-xlarge-only, td.hide-for-xlarge-only, th.show-for-xlarge-up, td.show-for-xlarge-up, th.hide-for-xlarge, td.hide-for-xlarge, th.hide-for-xlarge-down, td.hide-for-xlarge-down, th.show-for-xxlarge-only, td.show-for-xxlarge-only, th.show-for-xxlarge-up, td.show-for-xxlarge-up, th.show-for-xxlarge, td.show-for-xxlarge, th.show-for-xxlarge-down, td.show-for-xxlarge-down { + display: table-cell !important; } } +/* Orientation targeting */ +.show-for-landscape, +.hide-for-portrait { + display: inherit !important; } + +.hide-for-landscape, +.show-for-portrait { + display: none !important; } + +/* Specific visibility for tables */ +table.hide-for-landscape, table.show-for-portrait { + display: table !important; } + +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; } + + /* Specific visibility for tables */ + table.show-for-landscape, table.hide-for-portrait { + display: table !important; } + + 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; } + + /* Specific visibility for tables */ + table.show-for-portrait, table.hide-for-landscape { + display: table !important; } + + 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; } } +/* Touch-enabled device targeting */ +.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; } + +/* Specific visibility for tables */ +table.hide-for-touch { + display: table !important; } + +.touch table.show-for-touch { + display: table !important; } + +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; } + +/* Screen reader-specific classes */ +.show-for-sr { + clip: rect(1px, 1px, 1px, 1px); + height: 1px; + overflow: hidden; + position: absolute !important; + width: 1px; } + +.show-on-focus { + clip: rect(1px, 1px, 1px, 1px); + height: 1px; + overflow: hidden; + position: absolute !important; + width: 1px; } + .show-on-focus:focus, .show-on-focus:active { + position: static !important; + height: auto; + width: auto; + overflow: visible; + clip: auto; } + +/* + * Print styles. + * + * Inlined to avoid required HTTP connection: www.phpied.com/delay-loading-your-print-css/ + * Credit to Paul Irish and HTML5 Boilerplate (html5boilerplate.com) +*/ +.print-only { + display: none !important; } + +@media print { + * { + background: transparent !important; + box-shadow: none !important; + color: #000000 !important; + /* Black prints faster: h5bp.com/s */ + text-shadow: none !important; } + + .show-for-print { + display: block; } + + .hide-for-print { + display: none; } + + table.show-for-print { + display: table !important; } + + thead.show-for-print { + display: table-header-group !important; } + + tbody.show-for-print { + display: table-row-group !important; } + + tr.show-for-print { + display: table-row !important; } + + td.show-for-print { + display: table-cell !important; } + + th.show-for-print { + display: table-cell !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 #999999; + page-break-inside: avoid; } + + thead { + display: table-header-group; + /* h5bp.com/t */ } + + tr, + img { + page-break-inside: avoid; } + + img { + max-width: 100% !important; } + + @page { + margin: .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; } } +/* Print visibility */ +@media print { + .show-for-print { + display: block; } + + .hide-for-print { + display: none; } + + table.show-for-print { + display: table !important; } + + thead.show-for-print { + display: table-header-group !important; } + + tbody.show-for-print { + display: table-row-group !important; } + + tr.show-for-print { + display: table-row !important; } + + td.show-for-print { + display: table-cell !important; } + + th.show-for-print { + display: table-cell !important; } } +@media not print { + .show-for-print { + display: none !important; } } diff --git a/library/foundation/css/foundation.min.css b/library/foundation/css/foundation.min.css new file mode 100644 index 000000000..dc4928644 --- /dev/null +++ b/library/foundation/css/foundation.min.css @@ -0,0 +1 @@ +meta.foundation-version{font-family:"/5.5.2/"}meta.foundation-mq-small{font-family:"/only screen/";width:0}meta.foundation-mq-small-only{font-family:"/only screen and (max-width: 40em)/";width:0}meta.foundation-mq-medium{font-family:"/only screen and (min-width:40.0625em)/";width:40.0625em}meta.foundation-mq-medium-only{font-family:"/only screen and (min-width:40.0625em) and (max-width:64em)/";width:40.0625em}meta.foundation-mq-large{font-family:"/only screen and (min-width:64.0625em)/";width:64.0625em}meta.foundation-mq-large-only{font-family:"/only screen and (min-width:64.0625em) and (max-width:90em)/";width:64.0625em}meta.foundation-mq-xlarge{font-family:"/only screen and (min-width:90.0625em)/";width:90.0625em}meta.foundation-mq-xlarge-only{font-family:"/only screen and (min-width:90.0625em) and (max-width:120em)/";width:90.0625em}meta.foundation-mq-xxlarge{font-family:"/only screen and (min-width:120.0625em)/";width:120.0625em}meta.foundation-data-attribute-namespace{font-family:false}html,body{height:100%}html{box-sizing:border-box}*,*:before,*:after{-webkit-box-sizing:inherit;-moz-box-sizing:inherit;box-sizing:inherit}html,body{font-size:100%}body{background:#fff;color:#222;cursor:auto;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-style:normal;font-weight:normal;line-height:1.5;margin:0;padding:0;position:relative}a:hover{cursor:pointer}img{max-width:100%;height:auto}img{-ms-interpolation-mode:bicubic}#map_canvas img,#map_canvas embed,#map_canvas object,.map_canvas img,.map_canvas embed,.map_canvas object,.mqa-display img,.mqa-display embed,.mqa-display object{max-width:none !important}.left{float:left !important}.right{float:right !important}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.hide{display:none}.invisible{visibility:hidden}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:inline-block;vertical-align:middle}textarea{height:auto;min-height:50px}select{width:100%}.row{margin:0 auto;max-width:62.5rem;width:100%}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.row.collapse>.column,.row.collapse>.columns{padding-left:0;padding-right:0}.row.collapse .row{margin-left:0;margin-right:0}.row .row{margin:0 -0.9375rem;max-width:none;width:auto}.row .row:before,.row .row:after{content:" ";display:table}.row .row:after{clear:both}.row .row.collapse{margin:0;max-width:none;width:auto}.row .row.collapse:before,.row .row.collapse:after{content:" ";display:table}.row .row.collapse:after{clear:both}.column,.columns{padding-left:0.9375rem;padding-right:0.9375rem;width:100%;float:left}.column+.column:last-child,.columns+.column:last-child,.column+.columns:last-child,.columns+.columns:last-child{float:right}.column+.column.end,.columns+.column.end,.column+.columns.end,.columns+.columns.end{float:left}@media only screen{.small-push-0{position:relative;left:0;right:auto}.small-pull-0{position:relative;right:0;left:auto}.small-push-1{position:relative;left:8.33333%;right:auto}.small-pull-1{position:relative;right:8.33333%;left:auto}.small-push-2{position:relative;left:16.66667%;right:auto}.small-pull-2{position:relative;right:16.66667%;left:auto}.small-push-3{position:relative;left:25%;right:auto}.small-pull-3{position:relative;right:25%;left:auto}.small-push-4{position:relative;left:33.33333%;right:auto}.small-pull-4{position:relative;right:33.33333%;left:auto}.small-push-5{position:relative;left:41.66667%;right:auto}.small-pull-5{position:relative;right:41.66667%;left:auto}.small-push-6{position:relative;left:50%;right:auto}.small-pull-6{position:relative;right:50%;left:auto}.small-push-7{position:relative;left:58.33333%;right:auto}.small-pull-7{position:relative;right:58.33333%;left:auto}.small-push-8{position:relative;left:66.66667%;right:auto}.small-pull-8{position:relative;right:66.66667%;left:auto}.small-push-9{position:relative;left:75%;right:auto}.small-pull-9{position:relative;right:75%;left:auto}.small-push-10{position:relative;left:83.33333%;right:auto}.small-pull-10{position:relative;right:83.33333%;left:auto}.small-push-11{position:relative;left:91.66667%;right:auto}.small-pull-11{position:relative;right:91.66667%;left:auto}.column,.columns{position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left}.small-1{width:8.33333%}.small-2{width:16.66667%}.small-3{width:25%}.small-4{width:33.33333%}.small-5{width:41.66667%}.small-6{width:50%}.small-7{width:58.33333%}.small-8{width:66.66667%}.small-9{width:75%}.small-10{width:83.33333%}.small-11{width:91.66667%}.small-12{width:100%}.small-offset-0{margin-left:0 !important}.small-offset-1{margin-left:8.33333% !important}.small-offset-2{margin-left:16.66667% !important}.small-offset-3{margin-left:25% !important}.small-offset-4{margin-left:33.33333% !important}.small-offset-5{margin-left:41.66667% !important}.small-offset-6{margin-left:50% !important}.small-offset-7{margin-left:58.33333% !important}.small-offset-8{margin-left:66.66667% !important}.small-offset-9{margin-left:75% !important}.small-offset-10{margin-left:83.33333% !important}.small-offset-11{margin-left:91.66667% !important}.small-reset-order{float:left;left:auto;margin-left:0;margin-right:0;right:auto}.column.small-centered,.columns.small-centered{margin-left:auto;margin-right:auto;float:none}.column.small-uncentered,.columns.small-uncentered{float:left;margin-left:0;margin-right:0}.column.small-centered:last-child,.columns.small-centered:last-child{float:none}.column.small-uncentered:last-child,.columns.small-uncentered:last-child{float:left}.column.small-uncentered.opposite,.columns.small-uncentered.opposite{float:right}.row.small-collapse>.column,.row.small-collapse>.columns{padding-left:0;padding-right:0}.row.small-collapse .row{margin-left:0;margin-right:0}.row.small-uncollapse>.column,.row.small-uncollapse>.columns{padding-left:0.9375rem;padding-right:0.9375rem;float:left}}@media only screen and (min-width: 40.0625em){.medium-push-0{position:relative;left:0;right:auto}.medium-pull-0{position:relative;right:0;left:auto}.medium-push-1{position:relative;left:8.33333%;right:auto}.medium-pull-1{position:relative;right:8.33333%;left:auto}.medium-push-2{position:relative;left:16.66667%;right:auto}.medium-pull-2{position:relative;right:16.66667%;left:auto}.medium-push-3{position:relative;left:25%;right:auto}.medium-pull-3{position:relative;right:25%;left:auto}.medium-push-4{position:relative;left:33.33333%;right:auto}.medium-pull-4{position:relative;right:33.33333%;left:auto}.medium-push-5{position:relative;left:41.66667%;right:auto}.medium-pull-5{position:relative;right:41.66667%;left:auto}.medium-push-6{position:relative;left:50%;right:auto}.medium-pull-6{position:relative;right:50%;left:auto}.medium-push-7{position:relative;left:58.33333%;right:auto}.medium-pull-7{position:relative;right:58.33333%;left:auto}.medium-push-8{position:relative;left:66.66667%;right:auto}.medium-pull-8{position:relative;right:66.66667%;left:auto}.medium-push-9{position:relative;left:75%;right:auto}.medium-pull-9{position:relative;right:75%;left:auto}.medium-push-10{position:relative;left:83.33333%;right:auto}.medium-pull-10{position:relative;right:83.33333%;left:auto}.medium-push-11{position:relative;left:91.66667%;right:auto}.medium-pull-11{position:relative;right:91.66667%;left:auto}.column,.columns{position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left}.medium-1{width:8.33333%}.medium-2{width:16.66667%}.medium-3{width:25%}.medium-4{width:33.33333%}.medium-5{width:41.66667%}.medium-6{width:50%}.medium-7{width:58.33333%}.medium-8{width:66.66667%}.medium-9{width:75%}.medium-10{width:83.33333%}.medium-11{width:91.66667%}.medium-12{width:100%}.medium-offset-0{margin-left:0 !important}.medium-offset-1{margin-left:8.33333% !important}.medium-offset-2{margin-left:16.66667% !important}.medium-offset-3{margin-left:25% !important}.medium-offset-4{margin-left:33.33333% !important}.medium-offset-5{margin-left:41.66667% !important}.medium-offset-6{margin-left:50% !important}.medium-offset-7{margin-left:58.33333% !important}.medium-offset-8{margin-left:66.66667% !important}.medium-offset-9{margin-left:75% !important}.medium-offset-10{margin-left:83.33333% !important}.medium-offset-11{margin-left:91.66667% !important}.medium-reset-order{float:left;left:auto;margin-left:0;margin-right:0;right:auto}.column.medium-centered,.columns.medium-centered{margin-left:auto;margin-right:auto;float:none}.column.medium-uncentered,.columns.medium-uncentered{float:left;margin-left:0;margin-right:0}.column.medium-centered:last-child,.columns.medium-centered:last-child{float:none}.column.medium-uncentered:last-child,.columns.medium-uncentered:last-child{float:left}.column.medium-uncentered.opposite,.columns.medium-uncentered.opposite{float:right}.row.medium-collapse>.column,.row.medium-collapse>.columns{padding-left:0;padding-right:0}.row.medium-collapse .row{margin-left:0;margin-right:0}.row.medium-uncollapse>.column,.row.medium-uncollapse>.columns{padding-left:0.9375rem;padding-right:0.9375rem;float:left}.push-0{position:relative;left:0;right:auto}.pull-0{position:relative;right:0;left:auto}.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}}@media only screen and (min-width: 64.0625em){.large-push-0{position:relative;left:0;right:auto}.large-pull-0{position:relative;right:0;left:auto}.large-push-1{position:relative;left:8.33333%;right:auto}.large-pull-1{position:relative;right:8.33333%;left:auto}.large-push-2{position:relative;left:16.66667%;right:auto}.large-pull-2{position:relative;right:16.66667%;left:auto}.large-push-3{position:relative;left:25%;right:auto}.large-pull-3{position:relative;right:25%;left:auto}.large-push-4{position:relative;left:33.33333%;right:auto}.large-pull-4{position:relative;right:33.33333%;left:auto}.large-push-5{position:relative;left:41.66667%;right:auto}.large-pull-5{position:relative;right:41.66667%;left:auto}.large-push-6{position:relative;left:50%;right:auto}.large-pull-6{position:relative;right:50%;left:auto}.large-push-7{position:relative;left:58.33333%;right:auto}.large-pull-7{position:relative;right:58.33333%;left:auto}.large-push-8{position:relative;left:66.66667%;right:auto}.large-pull-8{position:relative;right:66.66667%;left:auto}.large-push-9{position:relative;left:75%;right:auto}.large-pull-9{position:relative;right:75%;left:auto}.large-push-10{position:relative;left:83.33333%;right:auto}.large-pull-10{position:relative;right:83.33333%;left:auto}.large-push-11{position:relative;left:91.66667%;right:auto}.large-pull-11{position:relative;right:91.66667%;left:auto}.column,.columns{position:relative;padding-left:0.9375rem;padding-right:0.9375rem;float:left}.large-1{width:8.33333%}.large-2{width:16.66667%}.large-3{width:25%}.large-4{width:33.33333%}.large-5{width:41.66667%}.large-6{width:50%}.large-7{width:58.33333%}.large-8{width:66.66667%}.large-9{width:75%}.large-10{width:83.33333%}.large-11{width:91.66667%}.large-12{width:100%}.large-offset-0{margin-left:0 !important}.large-offset-1{margin-left:8.33333% !important}.large-offset-2{margin-left:16.66667% !important}.large-offset-3{margin-left:25% !important}.large-offset-4{margin-left:33.33333% !important}.large-offset-5{margin-left:41.66667% !important}.large-offset-6{margin-left:50% !important}.large-offset-7{margin-left:58.33333% !important}.large-offset-8{margin-left:66.66667% !important}.large-offset-9{margin-left:75% !important}.large-offset-10{margin-left:83.33333% !important}.large-offset-11{margin-left:91.66667% !important}.large-reset-order{float:left;left:auto;margin-left:0;margin-right:0;right:auto}.column.large-centered,.columns.large-centered{margin-left:auto;margin-right:auto;float:none}.column.large-uncentered,.columns.large-uncentered{float:left;margin-left:0;margin-right:0}.column.large-centered:last-child,.columns.large-centered:last-child{float:none}.column.large-uncentered:last-child,.columns.large-uncentered:last-child{float:left}.column.large-uncentered.opposite,.columns.large-uncentered.opposite{float:right}.row.large-collapse>.column,.row.large-collapse>.columns{padding-left:0;padding-right:0}.row.large-collapse .row{margin-left:0;margin-right:0}.row.large-uncollapse>.column,.row.large-uncollapse>.columns{padding-left:0.9375rem;padding-right:0.9375rem;float:left}.push-0{position:relative;left:0;right:auto}.pull-0{position:relative;right:0;left:auto}.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}}button,.button{-webkit-appearance:none;-moz-appearance:none;border-radius:0;border-style:solid;border-width:0;cursor:pointer;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-weight:normal;line-height:normal;margin:0 0 1.25rem;position:relative;text-align:center;text-decoration:none;display:inline-block;padding:1rem 2rem 1.0625rem 2rem;font-size:1rem;background-color:#008CBA;border-color:#007095;color:#fff;transition:background-color 300ms ease-out}button:hover,button:focus,.button:hover,.button:focus{background-color:#007095}button:hover,button:focus,.button:hover,.button:focus{color:#fff}button.secondary,.button.secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333}button.secondary:hover,button.secondary:focus,.button.secondary:hover,.button.secondary:focus{background-color:#b9b9b9}button.secondary:hover,button.secondary:focus,.button.secondary:hover,.button.secondary:focus{color:#333}button.success,.button.success{background-color:#43AC6A;border-color:#368a55;color:#fff}button.success:hover,button.success:focus,.button.success:hover,.button.success:focus{background-color:#368a55}button.success:hover,button.success:focus,.button.success:hover,.button.success:focus{color:#fff}button.alert,.button.alert{background-color:#f04124;border-color:#cf2a0e;color:#fff}button.alert:hover,button.alert:focus,.button.alert:hover,.button.alert:focus{background-color:#cf2a0e}button.alert:hover,button.alert:focus,.button.alert:hover,.button.alert:focus{color:#fff}button.warning,.button.warning{background-color:#f08a24;border-color:#cf6e0e;color:#fff}button.warning:hover,button.warning:focus,.button.warning:hover,.button.warning:focus{background-color:#cf6e0e}button.warning:hover,button.warning:focus,.button.warning:hover,.button.warning:focus{color:#fff}button.info,.button.info{background-color:#a0d3e8;border-color:#61b6d9;color:#333}button.info:hover,button.info:focus,.button.info:hover,.button.info:focus{background-color:#61b6d9}button.info:hover,button.info:focus,.button.info:hover,.button.info:focus{color:#fff}button.large,.button.large{padding:1.125rem 2.25rem 1.1875rem 2.25rem;font-size:1.25rem}button.small,.button.small{padding:0.875rem 1.75rem 0.9375rem 1.75rem;font-size:0.8125rem}button.tiny,.button.tiny{padding:0.625rem 1.25rem 0.6875rem 1.25rem;font-size:0.6875rem}button.expand,.button.expand{padding-left:0;padding-right:0;width:100%}button.left-align,.button.left-align{text-align:left;text-indent:0.75rem}button.right-align,.button.right-align{text-align:right;padding-right:0.75rem}button.radius,.button.radius{border-radius:3px}button.round,.button.round{border-radius:1000px}button.disabled,button[disabled],.button.disabled,.button[disabled]{background-color:#008CBA;border-color:#007095;color:#fff;box-shadow:none;cursor:default;opacity:0.7}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:#007095}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:#008CBA}button.disabled.secondary,button[disabled].secondary,.button.disabled.secondary,.button[disabled].secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333;box-shadow:none;cursor:default;opacity:0.7}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:#b9b9b9}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:#e7e7e7}button.disabled.success,button[disabled].success,.button.disabled.success,.button[disabled].success{background-color:#43AC6A;border-color:#368a55;color:#fff;box-shadow:none;cursor:default;opacity:0.7}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:#368a55}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:#43AC6A}button.disabled.alert,button[disabled].alert,.button.disabled.alert,.button[disabled].alert{background-color:#f04124;border-color:#cf2a0e;color:#fff;box-shadow:none;cursor:default;opacity:0.7}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:#cf2a0e}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:#f04124}button.disabled.warning,button[disabled].warning,.button.disabled.warning,.button[disabled].warning{background-color:#f08a24;border-color:#cf6e0e;color:#fff;box-shadow:none;cursor:default;opacity:0.7}button.disabled.warning:hover,button.disabled.warning:focus,button[disabled].warning:hover,button[disabled].warning:focus,.button.disabled.warning:hover,.button.disabled.warning:focus,.button[disabled].warning:hover,.button[disabled].warning:focus{background-color:#cf6e0e}button.disabled.warning:hover,button.disabled.warning:focus,button[disabled].warning:hover,button[disabled].warning:focus,.button.disabled.warning:hover,.button.disabled.warning:focus,.button[disabled].warning:hover,.button[disabled].warning:focus{color:#fff}button.disabled.warning:hover,button.disabled.warning:focus,button[disabled].warning:hover,button[disabled].warning:focus,.button.disabled.warning:hover,.button.disabled.warning:focus,.button[disabled].warning:hover,.button[disabled].warning:focus{background-color:#f08a24}button.disabled.info,button[disabled].info,.button.disabled.info,.button[disabled].info{background-color:#a0d3e8;border-color:#61b6d9;color:#333;box-shadow:none;cursor:default;opacity:0.7}button.disabled.info:hover,button.disabled.info:focus,button[disabled].info:hover,button[disabled].info:focus,.button.disabled.info:hover,.button.disabled.info:focus,.button[disabled].info:hover,.button[disabled].info:focus{background-color:#61b6d9}button.disabled.info:hover,button.disabled.info:focus,button[disabled].info:hover,button[disabled].info:focus,.button.disabled.info:hover,.button.disabled.info:focus,.button[disabled].info:hover,.button[disabled].info:focus{color:#fff}button.disabled.info:hover,button.disabled.info:focus,button[disabled].info:hover,button[disabled].info:focus,.button.disabled.info:hover,.button.disabled.info:focus,.button[disabled].info:hover,.button[disabled].info:focus{background-color:#a0d3e8}button::-moz-focus-inner{border:0;padding:0}@media only screen and (min-width: 40.0625em){button,.button{display:inline-block}}form{margin:0 0 1rem}form .row .row{margin:0 -0.5rem}form .row .row .column,form .row .row .columns{padding:0 0.5rem}form .row .row.collapse{margin:0}form .row .row.collapse .column,form .row .row.collapse .columns{padding:0}form .row .row.collapse input{-webkit-border-bottom-right-radius:0;-webkit-border-top-right-radius:0;border-bottom-right-radius:0;border-top-right-radius:0}form .row input.column,form .row input.columns,form .row textarea.column,form .row textarea.columns{padding-left:0.5rem}label{color:#4d4d4d;cursor:pointer;display:block;font-size:0.875rem;font-weight:normal;line-height:1.5;margin-bottom:0}label.right{float:none !important;text-align:right}label.inline{margin:0 0 1rem 0;padding:0.5625rem 0}label small{text-transform:capitalize;color:#676767}.prefix,.postfix{border-style:solid;border-width:1px;display:block;font-size:0.875rem;height:2.3125rem;line-height:2.3125rem;overflow:visible;padding-bottom:0;padding-top:0;position:relative;text-align:center;width:100%;z-index:2}.postfix.button{border-color:true}.prefix.button{border:none;padding-left:0;padding-right:0;padding-bottom:0;padding-top:0;text-align:center}.prefix.button.radius{border-radius:0;-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{border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}.prefix.button.round{border-radius:0;-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{border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}span.prefix,label.prefix{background:#f2f2f2;border-right:none;color:#333;border-color:#ccc}span.postfix,label.postfix{background:#f2f2f2;color:#333;border-color:#ccc}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"],input[type="color"],textarea{-webkit-appearance:none;-moz-appearance:none;border-radius:0;background-color:#fff;border-style:solid;border-width:1px;border-color:#ccc;box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);color:rgba(0,0,0,0.75);display:block;font-family:inherit;font-size:0.875rem;height:2.3125rem;margin:0 0 1rem 0;padding:0.5rem;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color 0.15s linear,background 0.15s linear;-moz-transition:border-color 0.15s linear,background 0.15s linear;-ms-transition:border-color 0.15s linear,background 0.15s linear;-o-transition:border-color 0.15s linear,background 0.15s linear;transition:border-color 0.15s linear,background 0.15s linear}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,input[type="color"]: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,input[type="color"]:disabled,textarea:disabled{background-color:#ddd;cursor:default}input[type="text"][disabled],input[type="text"][readonly],fieldset[disabled] input[type="text"],input[type="password"][disabled],input[type="password"][readonly],fieldset[disabled] input[type="password"],input[type="date"][disabled],input[type="date"][readonly],fieldset[disabled] input[type="date"],input[type="datetime"][disabled],input[type="datetime"][readonly],fieldset[disabled] input[type="datetime"],input[type="datetime-local"][disabled],input[type="datetime-local"][readonly],fieldset[disabled] input[type="datetime-local"],input[type="month"][disabled],input[type="month"][readonly],fieldset[disabled] input[type="month"],input[type="week"][disabled],input[type="week"][readonly],fieldset[disabled] input[type="week"],input[type="email"][disabled],input[type="email"][readonly],fieldset[disabled] input[type="email"],input[type="number"][disabled],input[type="number"][readonly],fieldset[disabled] input[type="number"],input[type="search"][disabled],input[type="search"][readonly],fieldset[disabled] input[type="search"],input[type="tel"][disabled],input[type="tel"][readonly],fieldset[disabled] input[type="tel"],input[type="time"][disabled],input[type="time"][readonly],fieldset[disabled] input[type="time"],input[type="url"][disabled],input[type="url"][readonly],fieldset[disabled] input[type="url"],input[type="color"][disabled],input[type="color"][readonly],fieldset[disabled] input[type="color"],textarea[disabled],textarea[readonly],fieldset[disabled] textarea{background-color:#ddd;cursor:default}input[type="text"].radius,input[type="password"].radius,input[type="date"].radius,input[type="datetime"].radius,input[type="datetime-local"].radius,input[type="month"].radius,input[type="week"].radius,input[type="email"].radius,input[type="number"].radius,input[type="search"].radius,input[type="tel"].radius,input[type="time"].radius,input[type="url"].radius,input[type="color"].radius,textarea.radius{border-radius:3px}form .row .prefix-radius.row.collapse input,form .row .prefix-radius.row.collapse textarea,form .row .prefix-radius.row.collapse select,form .row .prefix-radius.row.collapse button{border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}form .row .prefix-radius.row.collapse .prefix{border-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}form .row .postfix-radius.row.collapse input,form .row .postfix-radius.row.collapse textarea,form .row .postfix-radius.row.collapse select,form .row .postfix-radius.row.collapse button{border-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}form .row .postfix-radius.row.collapse .postfix{border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}form .row .prefix-round.row.collapse input,form .row .prefix-round.row.collapse textarea,form .row .prefix-round.row.collapse select,form .row .prefix-round.row.collapse button{border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}form .row .prefix-round.row.collapse .prefix{border-radius:0;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}form .row .postfix-round.row.collapse input,form .row .postfix-round.row.collapse textarea,form .row .postfix-round.row.collapse select,form .row .postfix-round.row.collapse button{border-radius:0;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px}form .row .postfix-round.row.collapse .postfix{border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}input[type="submit"]{-webkit-appearance:none;-moz-appearance:none;border-radius:0}textarea[rows]{height:auto}textarea{max-width:100%}::-webkit-input-placeholder{color:#ccc}:-moz-placeholder{color:#ccc}::-moz-placeholder{color:#ccc}:-ms-input-placeholder{color:#ccc}select{-webkit-appearance:none !important;-moz-appearance:none !important;background-color:#FAFAFA;border-radius:0;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+);background-position:100% center;background-repeat:no-repeat;border-style:solid;border-width:1px;border-color:#ccc;color:rgba(0,0,0,0.75);font-family:inherit;font-size:0.875rem;line-height:normal;padding:0.5rem;border-radius:0;height:2.3125rem}select::-ms-expand{display:none}select.radius{border-radius:3px}select:hover{background-color:#f3f3f3;border-color:#999}select:disabled{background-color:#ddd;cursor:default}select[multiple]{height:auto}input[type="file"],input[type="checkbox"],input[type="radio"],select{margin:0 0 1rem 0}input[type="checkbox"]+label,input[type="radio"]+label{display:inline-block;margin-left:0.5rem;margin-right:1rem;margin-bottom:0;vertical-align:baseline}input[type="file"]{width:100%}fieldset{border:1px solid #ddd;margin:1.125rem 0;padding:1.25rem}fieldset legend{background:#fff;font-weight:bold;margin-left:-0.1875rem;margin:0;padding:0 0.1875rem}[data-abide] .error small.error,[data-abide] .error span.error,[data-abide] span.error,[data-abide] small.error{display:block;font-size:0.75rem;font-style:italic;font-weight:normal;margin-bottom:1rem;margin-top:-1px;padding:0.375rem 0.5625rem 0.5625rem;background:#f04124;color:#fff}[data-abide] span.error,[data-abide] small.error{display:none}span.error,small.error{display:block;font-size:0.75rem;font-style:italic;font-weight:normal;margin-bottom:1rem;margin-top:-1px;padding:0.375rem 0.5625rem 0.5625rem;background:#f04124;color:#fff}.error input,.error textarea,.error select{margin-bottom:0}.error input[type="checkbox"],.error input[type="radio"]{margin-bottom:1rem}.error label,.error label.error{color:#f04124}.error small.error{display:block;font-size:0.75rem;font-style:italic;font-weight:normal;margin-bottom:1rem;margin-top:-1px;padding:0.375rem 0.5625rem 0.5625rem;background:#f04124;color:#fff}.error>label>small{background:transparent;color:#676767;display:inline;font-size:60%;font-style:normal;margin:0;padding:0;text-transform:capitalize}.error span.error-message{display:block}input.error,textarea.error,select.error{margin-bottom:0}label.error{color:#f04124}meta.foundation-mq-topbar{font-family:"/only screen and (min-width:40.0625em)/";width:40.0625em}.contain-to-grid{width:100%;background:#333}.contain-to-grid .top-bar{margin-bottom:0}.fixed{position:fixed;top:0;width:100%;z-index:99;left:0}.fixed.expanded:not(.top-bar){height:auto;max-height:100%;overflow-y:auto;width:100%}.fixed.expanded:not(.top-bar) .title-area{position:fixed;width:100%;z-index:99}.fixed.expanded:not(.top-bar) .top-bar-section{margin-top:2.8125rem;z-index:98}.top-bar{background:#333;height:2.8125rem;line-height:2.8125rem;margin-bottom:0;overflow:hidden;position:relative}.top-bar ul{list-style:none;margin-bottom:0}.top-bar .row{max-width:none}.top-bar form,.top-bar input,.top-bar select{margin-bottom:0}.top-bar input,.top-bar select{font-size:0.75rem;height:1.75rem;padding-bottom:.35rem;padding-top:.35rem}.top-bar .button,.top-bar button{font-size:0.75rem;margin-bottom:0;padding-bottom:0.4125rem;padding-top:0.4125rem}@media only screen and (max-width: 40em){.top-bar .button,.top-bar button{position:relative;top:-1px}}.top-bar .title-area{margin:0;position:relative}.top-bar .name{font-size:16px;height:2.8125rem;margin:0}.top-bar .name h1,.top-bar .name h2,.top-bar .name h3,.top-bar .name h4,.top-bar .name p,.top-bar .name span{font-size:1.0625rem;line-height:2.8125rem;margin:0}.top-bar .name h1 a,.top-bar .name h2 a,.top-bar .name h3 a,.top-bar .name h4 a,.top-bar .name p a,.top-bar .name span a{color:#fff;display:block;font-weight:normal;padding:0 0.9375rem;width:75%}.top-bar .toggle-topbar{position:absolute;right:0;top:0}.top-bar .toggle-topbar a{color:#fff;display:block;font-size:0.8125rem;font-weight:bold;height:2.8125rem;line-height:2.8125rem;padding:0 0.9375rem;position:relative;text-transform:uppercase}.top-bar .toggle-topbar.menu-icon{margin-top:-16px;top:50%}.top-bar .toggle-topbar.menu-icon a{color:#fff;height:34px;line-height:33px;padding:0 2.5rem 0 0.9375rem;position:relative}.top-bar .toggle-topbar.menu-icon a span::after{content:"";display:block;height:0;position:absolute;margin-top:-8px;top:50%;right:0.9375rem;box-shadow:0 0 0 1px #fff,0 7px 0 1px #fff,0 14px 0 1px #fff;width:16px}.top-bar .toggle-topbar.menu-icon a span:hover:after{box-shadow:0 0 0 1px "",0 7px 0 1px "",0 14px 0 1px ""}.top-bar.expanded{background:transparent;height:auto}.top-bar.expanded .title-area{background:#333}.top-bar.expanded .toggle-topbar a{color:#888}.top-bar.expanded .toggle-topbar a span::after{box-shadow:0 0 0 1px #888,0 7px 0 1px #888,0 14px 0 1px #888}@media screen and (-webkit-min-device-pixel-ratio: 0){.top-bar.expanded .top-bar-section .has-dropdown.moved>.dropdown,.top-bar.expanded .top-bar-section .dropdown{clip:initial}.top-bar.expanded .top-bar-section .has-dropdown:not(.moved)>ul{padding:0}}.top-bar-section{left:0;position:relative;width:auto;transition:left 300ms ease-out}.top-bar-section ul{display:block;font-size:16px;height:auto;margin:0;padding:0;width:100%}.top-bar-section .divider,.top-bar-section [role="separator"]{border-top:solid 1px #1a1a1a;clear:both;height:1px;width:100%}.top-bar-section ul li{background:#333}.top-bar-section ul li>a{color:#fff;display:block;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-size:0.8125rem;font-weight:normal;padding-left:0.9375rem;padding:12px 0 12px 0.9375rem;text-transform:none;width:100%}.top-bar-section ul li>a.button{font-size:0.8125rem;padding-left:0.9375rem;padding-right:0.9375rem;background-color:#008CBA;border-color:#007095;color:#fff}.top-bar-section ul li>a.button:hover,.top-bar-section ul li>a.button:focus{background-color:#007095}.top-bar-section ul li>a.button:hover,.top-bar-section ul li>a.button:focus{color:#fff}.top-bar-section ul li>a.button.secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333}.top-bar-section ul li>a.button.secondary:hover,.top-bar-section ul li>a.button.secondary:focus{background-color:#b9b9b9}.top-bar-section ul li>a.button.secondary:hover,.top-bar-section ul li>a.button.secondary:focus{color:#333}.top-bar-section ul li>a.button.success{background-color:#43AC6A;border-color:#368a55;color:#fff}.top-bar-section ul li>a.button.success:hover,.top-bar-section ul li>a.button.success:focus{background-color:#368a55}.top-bar-section ul li>a.button.success:hover,.top-bar-section ul li>a.button.success:focus{color:#fff}.top-bar-section ul li>a.button.alert{background-color:#f04124;border-color:#cf2a0e;color:#fff}.top-bar-section ul li>a.button.alert:hover,.top-bar-section ul li>a.button.alert:focus{background-color:#cf2a0e}.top-bar-section ul li>a.button.alert:hover,.top-bar-section ul li>a.button.alert:focus{color:#fff}.top-bar-section ul li>a.button.warning{background-color:#f08a24;border-color:#cf6e0e;color:#fff}.top-bar-section ul li>a.button.warning:hover,.top-bar-section ul li>a.button.warning:focus{background-color:#cf6e0e}.top-bar-section ul li>a.button.warning:hover,.top-bar-section ul li>a.button.warning:focus{color:#fff}.top-bar-section ul li>a.button.info{background-color:#a0d3e8;border-color:#61b6d9;color:#333}.top-bar-section ul li>a.button.info:hover,.top-bar-section ul li>a.button.info:focus{background-color:#61b6d9}.top-bar-section ul li>a.button.info:hover,.top-bar-section ul li>a.button.info:focus{color:#fff}.top-bar-section ul li>button{font-size:0.8125rem;padding-left:0.9375rem;padding-right:0.9375rem;background-color:#008CBA;border-color:#007095;color:#fff}.top-bar-section ul li>button:hover,.top-bar-section ul li>button:focus{background-color:#007095}.top-bar-section ul li>button:hover,.top-bar-section ul li>button:focus{color:#fff}.top-bar-section ul li>button.secondary{background-color:#e7e7e7;border-color:#b9b9b9;color:#333}.top-bar-section ul li>button.secondary:hover,.top-bar-section ul li>button.secondary:focus{background-color:#b9b9b9}.top-bar-section ul li>button.secondary:hover,.top-bar-section ul li>button.secondary:focus{color:#333}.top-bar-section ul li>button.success{background-color:#43AC6A;border-color:#368a55;color:#fff}.top-bar-section ul li>button.success:hover,.top-bar-section ul li>button.success:focus{background-color:#368a55}.top-bar-section ul li>button.success:hover,.top-bar-section ul li>button.success:focus{color:#fff}.top-bar-section ul li>button.alert{background-color:#f04124;border-color:#cf2a0e;color:#fff}.top-bar-section ul li>button.alert:hover,.top-bar-section ul li>button.alert:focus{background-color:#cf2a0e}.top-bar-section ul li>button.alert:hover,.top-bar-section ul li>button.alert:focus{color:#fff}.top-bar-section ul li>button.warning{background-color:#f08a24;border-color:#cf6e0e;color:#fff}.top-bar-section ul li>button.warning:hover,.top-bar-section ul li>button.warning:focus{background-color:#cf6e0e}.top-bar-section ul li>button.warning:hover,.top-bar-section ul li>button.warning:focus{color:#fff}.top-bar-section ul li>button.info{background-color:#a0d3e8;border-color:#61b6d9;color:#333}.top-bar-section ul li>button.info:hover,.top-bar-section ul li>button.info:focus{background-color:#61b6d9}.top-bar-section ul li>button.info:hover,.top-bar-section ul li>button.info:focus{color:#fff}.top-bar-section ul li:hover:not(.has-form)>a{background-color:#555;color:#fff;background:#222}.top-bar-section ul li.active>a{background:#008CBA;color:#fff}.top-bar-section ul li.active>a:hover{background:#0078a0;color:#fff}.top-bar-section .has-form{padding:0.9375rem}.top-bar-section .has-dropdown{position:relative}.top-bar-section .has-dropdown>a:after{border:inset 5px;content:"";display:block;height:0;width:0;border-color:transparent transparent transparent rgba(255,255,255,0.4);border-left-style:solid;margin-right:0.9375rem;margin-top:-4.5px;position:absolute;top:50%;right:0}.top-bar-section .has-dropdown.moved{position:static}.top-bar-section .has-dropdown.moved>.dropdown{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;display:block;position:absolute !important;width:100%}.top-bar-section .has-dropdown.moved>a:after{display:none}.top-bar-section .dropdown{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px;display:block;padding:0;position:absolute;top:0;z-index:99;left:100%}.top-bar-section .dropdown li{height:auto;width:100%}.top-bar-section .dropdown li a{font-weight:normal;padding:8px 0.9375rem}.top-bar-section .dropdown li a.parent-link{font-weight:normal}.top-bar-section .dropdown li.title h5,.top-bar-section .dropdown li.parent-link{margin-bottom:0;margin-top:0;font-size:1.125rem}.top-bar-section .dropdown li.title h5 a,.top-bar-section .dropdown li.parent-link a{color:#fff;display:block}.top-bar-section .dropdown li.title h5 a:hover,.top-bar-section .dropdown li.parent-link a:hover{background:none}.top-bar-section .dropdown li.has-form{padding:8px 0.9375rem}.top-bar-section .dropdown li .button,.top-bar-section .dropdown li button{top:auto}.top-bar-section .dropdown label{color:#777;font-size:0.625rem;font-weight:bold;margin-bottom:0;padding:8px 0.9375rem 2px;text-transform:uppercase}.js-generated{display:block}@media only screen and (min-width: 40.0625em){.top-bar{background:#333;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,.top-bar .name h2 a,.top-bar .name h3 a,.top-bar .name h4 a,.top-bar .name h5 a,.top-bar .name h6 a{width:auto}.top-bar input,.top-bar select,.top-bar .button,.top-bar button{font-size:0.875rem;height:1.75rem;position:relative;top:0.53125rem}.top-bar.expanded{background:#333}.contain-to-grid .top-bar{margin-bottom:0;margin:0 auto;max-width:62.5rem}.top-bar-section{transition:none 0 0;left:0 !important}.top-bar-section ul{display:inline;height:auto !important;width:auto}.top-bar-section ul li{float:left}.top-bar-section ul li .js-generated{display:none}.top-bar-section li.hover>a:not(.button){background-color:#555;background:#222;color:#fff}.top-bar-section li:not(.has-form) a:not(.button){background:#333;line-height:2.8125rem;padding:0 0.9375rem}.top-bar-section li:not(.has-form) a:not(.button):hover{background-color:#555;background:#222}.top-bar-section li.active:not(.has-form) a:not(.button){background:#008CBA;color:#fff;line-height:2.8125rem;padding:0 0.9375rem}.top-bar-section li.active:not(.has-form) a:not(.button):hover{background:#0078a0;color:#fff}.top-bar-section .has-dropdown>a{padding-right:2.1875rem !important}.top-bar-section .has-dropdown>a:after{border:inset 5px;content:"";display:block;height:0;width:0;border-color:rgba(255,255,255,0.4) transparent transparent transparent;border-top-style:solid;margin-top:-2.5px;top:1.40625rem}.top-bar-section .has-dropdown.moved{position:relative}.top-bar-section .has-dropdown.moved>.dropdown{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px;display:block}.top-bar-section .has-dropdown.hover>.dropdown,.top-bar-section .has-dropdown.not-click:hover>.dropdown{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;display:block;position:absolute !important}.top-bar-section .has-dropdown>a:focus+.dropdown{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;display:block;position:absolute !important}.top-bar-section .has-dropdown .dropdown li.has-dropdown>a:after{border:none;content:"\00bb";top:0.1875rem;right:5px}.top-bar-section .dropdown{left:0;background:transparent;min-width:100%;top:auto}.top-bar-section .dropdown li a{background:#333;color:#fff;line-height:2.8125rem;padding:12px 0.9375rem;white-space:nowrap}.top-bar-section .dropdown li:not(.has-form):not(.active)>a:not(.button){background:#333;color:#fff}.top-bar-section .dropdown li:not(.has-form):not(.active):hover>a:not(.button){background-color:#555;color:#fff;background:#222}.top-bar-section .dropdown li label{background:#333;white-space:nowrap}.top-bar-section .dropdown li .dropdown{left:100%;top:0}.top-bar-section>ul>.divider,.top-bar-section>ul>[role="separator"]{border-right:solid 1px #4e4e4e;border-bottom:none;border-top:none;clear:none;height:2.8125rem;width:0}.top-bar-section .has-form{background:#333;height:2.8125rem;padding:0 0.9375rem}.top-bar-section .right li .dropdown{left:auto;right:0}.top-bar-section .right li .dropdown li .dropdown{right:100%}.top-bar-section .left li .dropdown{right:auto;left:0}.top-bar-section .left li .dropdown li .dropdown{left:100%}.no-js .top-bar-section ul li:hover>a{background-color:#555;background:#222;color:#fff}.no-js .top-bar-section ul li:active>a{background:#008CBA;color:#fff}.no-js .top-bar-section .has-dropdown:hover>.dropdown{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;display:block;position:absolute !important}.no-js .top-bar-section .has-dropdown>a:focus+.dropdown{position:static !important;height:auto;width:auto;overflow:visible;clip:auto;display:block;position:absolute !important}}.breadcrumbs{border-style:solid;border-width:1px;display:block;list-style:none;margin-left:0;overflow:hidden;padding:0.5625rem 0.875rem 0.5625rem;background-color:#f4f4f4;border-color:#dcdcdc;border-radius:3px}.breadcrumbs>*{color:#008CBA;float:left;font-size:0.6875rem;line-height:0.6875rem;margin:0;text-transform:uppercase}.breadcrumbs>*:hover a,.breadcrumbs>*:focus a{text-decoration:underline}.breadcrumbs>* a{color:#008CBA}.breadcrumbs>*.current{color:#333;cursor:default}.breadcrumbs>*.current a{color:#333;cursor:default}.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{color:#999;cursor:not-allowed;text-decoration:none}.breadcrumbs>*:before{color:#aaa;content:"/";margin:0 0.75rem;position:relative;top:1px}.breadcrumbs>*:first-child:before{content:" ";margin:0}[aria-label="breadcrumbs"] [aria-hidden="true"]:after{content:"/"}.alert-box{border-style:solid;border-width:1px;display:block;font-size:0.8125rem;font-weight:normal;margin-bottom:1.25rem;padding:0.875rem 1.5rem 0.875rem 0.875rem;position:relative;transition:opacity 300ms ease-out;background-color:#008CBA;border-color:#0078a0;color:#fff}.alert-box .close{right:0.25rem;background:inherit;color:#333;font-size:1.375rem;line-height:.9;margin-top:-0.6875rem;opacity:0.3;padding:0 6px 4px;position:absolute;top:50%}.alert-box .close:hover,.alert-box .close:focus{opacity:0.5}.alert-box.radius{border-radius:3px}.alert-box.round{border-radius:1000px}.alert-box.success{background-color:#43AC6A;border-color:#3a945b;color:#fff}.alert-box.alert{background-color:#f04124;border-color:#de2d0f;color:#fff}.alert-box.secondary{background-color:#e7e7e7;border-color:#c7c7c7;color:#4f4f4f}.alert-box.warning{background-color:#f08a24;border-color:#de770f;color:#fff}.alert-box.info{background-color:#a0d3e8;border-color:#74bfdd;color:#4f4f4f}.alert-box.alert-close{opacity:0}.inline-list{list-style:none;margin-left:-1.375rem;margin-right:0;margin:0 auto 1.0625rem auto;overflow:hidden;padding:0}.inline-list>li{display:block;float:left;list-style:none;margin-left:1.375rem}.inline-list>li>*{display:block}.button-group{list-style:none;margin:0;left:0}.button-group:before,.button-group:after{content:" ";display:table}.button-group:after{clear:both}.button-group.even-2 li{display:inline-block;margin:0 -2px;width:50%}.button-group.even-2 li>button,.button-group.even-2 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-2 li:first-child button,.button-group.even-2 li:first-child .button{border-left:0}.button-group.even-2 li button,.button-group.even-2 li .button{width:100%}.button-group.even-3 li{display:inline-block;margin:0 -2px;width:33.33333%}.button-group.even-3 li>button,.button-group.even-3 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-3 li:first-child button,.button-group.even-3 li:first-child .button{border-left:0}.button-group.even-3 li button,.button-group.even-3 li .button{width:100%}.button-group.even-4 li{display:inline-block;margin:0 -2px;width:25%}.button-group.even-4 li>button,.button-group.even-4 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-4 li:first-child button,.button-group.even-4 li:first-child .button{border-left:0}.button-group.even-4 li button,.button-group.even-4 li .button{width:100%}.button-group.even-5 li{display:inline-block;margin:0 -2px;width:20%}.button-group.even-5 li>button,.button-group.even-5 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-5 li:first-child button,.button-group.even-5 li:first-child .button{border-left:0}.button-group.even-5 li button,.button-group.even-5 li .button{width:100%}.button-group.even-6 li{display:inline-block;margin:0 -2px;width:16.66667%}.button-group.even-6 li>button,.button-group.even-6 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-6 li:first-child button,.button-group.even-6 li:first-child .button{border-left:0}.button-group.even-6 li button,.button-group.even-6 li .button{width:100%}.button-group.even-7 li{display:inline-block;margin:0 -2px;width:14.28571%}.button-group.even-7 li>button,.button-group.even-7 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-7 li:first-child button,.button-group.even-7 li:first-child .button{border-left:0}.button-group.even-7 li button,.button-group.even-7 li .button{width:100%}.button-group.even-8 li{display:inline-block;margin:0 -2px;width:12.5%}.button-group.even-8 li>button,.button-group.even-8 li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.even-8 li:first-child button,.button-group.even-8 li:first-child .button{border-left:0}.button-group.even-8 li button,.button-group.even-8 li .button{width:100%}.button-group>li{display:inline-block;margin:0 -2px}.button-group>li>button,.button-group>li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group>li:first-child button,.button-group>li:first-child .button{border-left:0}.button-group.stack>li{display:block;margin:0;float:none}.button-group.stack>li>button,.button-group.stack>li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.stack>li:first-child button,.button-group.stack>li:first-child .button{border-left:0}.button-group.stack>li>button,.button-group.stack>li .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.stack>li>button{width:100%}.button-group.stack>li:first-child button,.button-group.stack>li:first-child .button{border-top:0}.button-group.stack-for-small>li{display:inline-block;margin:0 -2px}.button-group.stack-for-small>li>button,.button-group.stack-for-small>li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.stack-for-small>li:first-child button,.button-group.stack-for-small>li:first-child .button{border-left:0}@media only screen and (max-width: 40em){.button-group.stack-for-small>li{display:block;margin:0}.button-group.stack-for-small>li>button,.button-group.stack-for-small>li .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.stack-for-small>li:first-child button,.button-group.stack-for-small>li:first-child .button{border-left:0}.button-group.stack-for-small>li>button,.button-group.stack-for-small>li .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.stack-for-small>li>button{width:100%}.button-group.stack-for-small>li:first-child button,.button-group.stack-for-small>li:first-child .button{border-top:0}}.button-group.radius>*{display:inline-block;margin:0 -2px}.button-group.radius>*>button,.button-group.radius>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.radius>*:first-child button,.button-group.radius>*:first-child .button{border-left:0}.button-group.radius>*,.button-group.radius>*>a,.button-group.radius>*>button,.button-group.radius>*>.button{border-radius:0}.button-group.radius>*:first-child,.button-group.radius>*:first-child>a,.button-group.radius>*:first-child>button,.button-group.radius>*:first-child>.button{-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{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}.button-group.radius.stack>*{display:block;margin:0}.button-group.radius.stack>*>button,.button-group.radius.stack>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.radius.stack>*:first-child button,.button-group.radius.stack>*:first-child .button{border-left:0}.button-group.radius.stack>*>button,.button-group.radius.stack>* .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.radius.stack>*>button{width:100%}.button-group.radius.stack>*:first-child button,.button-group.radius.stack>*:first-child .button{border-top:0}.button-group.radius.stack>*,.button-group.radius.stack>*>a,.button-group.radius.stack>*>button,.button-group.radius.stack>*>.button{border-radius:0}.button-group.radius.stack>*:first-child,.button-group.radius.stack>*:first-child>a,.button-group.radius.stack>*:first-child>button,.button-group.radius.stack>*:first-child>.button{-webkit-top-left-radius:3px;-webkit-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.button-group.radius.stack>*:last-child,.button-group.radius.stack>*:last-child>a,.button-group.radius.stack>*:last-child>button,.button-group.radius.stack>*:last-child>.button{-webkit-bottom-left-radius:3px;-webkit-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}@media only screen and (min-width: 40.0625em){.button-group.radius.stack-for-small>*{display:inline-block;margin:0 -2px}.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.radius.stack-for-small>*:first-child button,.button-group.radius.stack-for-small>*:first-child .button{border-left:0}.button-group.radius.stack-for-small>*,.button-group.radius.stack-for-small>*>a,.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>*>.button{border-radius:0}.button-group.radius.stack-for-small>*:first-child,.button-group.radius.stack-for-small>*:first-child>a,.button-group.radius.stack-for-small>*:first-child>button,.button-group.radius.stack-for-small>*:first-child>.button{-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.stack-for-small>*:last-child,.button-group.radius.stack-for-small>*:last-child>a,.button-group.radius.stack-for-small>*:last-child>button,.button-group.radius.stack-for-small>*:last-child>.button{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}}@media only screen and (max-width: 40em){.button-group.radius.stack-for-small>*{display:block;margin:0}.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.radius.stack-for-small>*:first-child button,.button-group.radius.stack-for-small>*:first-child .button{border-left:0}.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>* .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.radius.stack-for-small>*>button{width:100%}.button-group.radius.stack-for-small>*:first-child button,.button-group.radius.stack-for-small>*:first-child .button{border-top:0}.button-group.radius.stack-for-small>*,.button-group.radius.stack-for-small>*>a,.button-group.radius.stack-for-small>*>button,.button-group.radius.stack-for-small>*>.button{border-radius:0}.button-group.radius.stack-for-small>*:first-child,.button-group.radius.stack-for-small>*:first-child>a,.button-group.radius.stack-for-small>*:first-child>button,.button-group.radius.stack-for-small>*:first-child>.button{-webkit-top-left-radius:3px;-webkit-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.button-group.radius.stack-for-small>*:last-child,.button-group.radius.stack-for-small>*:last-child>a,.button-group.radius.stack-for-small>*:last-child>button,.button-group.radius.stack-for-small>*:last-child>.button{-webkit-bottom-left-radius:3px;-webkit-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}}.button-group.round>*{display:inline-block;margin:0 -2px}.button-group.round>*>button,.button-group.round>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.round>*:first-child button,.button-group.round>*:first-child .button{border-left:0}.button-group.round>*,.button-group.round>*>a,.button-group.round>*>button,.button-group.round>*>.button{border-radius:0}.button-group.round>*:first-child,.button-group.round>*:first-child>a,.button-group.round>*:first-child>button,.button-group.round>*:first-child>.button{-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{-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}.button-group.round.stack>*{display:block;margin:0}.button-group.round.stack>*>button,.button-group.round.stack>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.round.stack>*:first-child button,.button-group.round.stack>*:first-child .button{border-left:0}.button-group.round.stack>*>button,.button-group.round.stack>* .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.round.stack>*>button{width:100%}.button-group.round.stack>*:first-child button,.button-group.round.stack>*:first-child .button{border-top:0}.button-group.round.stack>*,.button-group.round.stack>*>a,.button-group.round.stack>*>button,.button-group.round.stack>*>.button{border-radius:0}.button-group.round.stack>*:first-child,.button-group.round.stack>*:first-child>a,.button-group.round.stack>*:first-child>button,.button-group.round.stack>*:first-child>.button{-webkit-top-left-radius:1rem;-webkit-top-right-radius:1rem;border-top-left-radius:1rem;border-top-right-radius:1rem}.button-group.round.stack>*:last-child,.button-group.round.stack>*:last-child>a,.button-group.round.stack>*:last-child>button,.button-group.round.stack>*:last-child>.button{-webkit-bottom-left-radius:1rem;-webkit-bottom-right-radius:1rem;border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}@media only screen and (min-width: 40.0625em){.button-group.round.stack-for-small>*{display:inline-block;margin:0 -2px}.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.round.stack-for-small>*:first-child button,.button-group.round.stack-for-small>*:first-child .button{border-left:0}.button-group.round.stack-for-small>*,.button-group.round.stack-for-small>*>a,.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>*>.button{border-radius:0}.button-group.round.stack-for-small>*:first-child,.button-group.round.stack-for-small>*:first-child>a,.button-group.round.stack-for-small>*:first-child>button,.button-group.round.stack-for-small>*:first-child>.button{-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.stack-for-small>*:last-child,.button-group.round.stack-for-small>*:last-child>a,.button-group.round.stack-for-small>*:last-child>button,.button-group.round.stack-for-small>*:last-child>.button{-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}}@media only screen and (max-width: 40em){.button-group.round.stack-for-small>*{display:block;margin:0}.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>* .button{border-left:1px solid;border-color:rgba(255,255,255,0.5)}.button-group.round.stack-for-small>*:first-child button,.button-group.round.stack-for-small>*:first-child .button{border-left:0}.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>* .button{border-color:rgba(255,255,255,0.5);border-left-width:0;border-top:1px solid;display:block;margin:0}.button-group.round.stack-for-small>*>button{width:100%}.button-group.round.stack-for-small>*:first-child button,.button-group.round.stack-for-small>*:first-child .button{border-top:0}.button-group.round.stack-for-small>*,.button-group.round.stack-for-small>*>a,.button-group.round.stack-for-small>*>button,.button-group.round.stack-for-small>*>.button{border-radius:0}.button-group.round.stack-for-small>*:first-child,.button-group.round.stack-for-small>*:first-child>a,.button-group.round.stack-for-small>*:first-child>button,.button-group.round.stack-for-small>*:first-child>.button{-webkit-top-left-radius:1rem;-webkit-top-right-radius:1rem;border-top-left-radius:1rem;border-top-right-radius:1rem}.button-group.round.stack-for-small>*:last-child,.button-group.round.stack-for-small>*:last-child>a,.button-group.round.stack-for-small>*:last-child>button,.button-group.round.stack-for-small>*:last-child>.button{-webkit-bottom-left-radius:1rem;-webkit-bottom-right-radius:1rem;border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}}.button-bar:before,.button-bar:after{content:" ";display:table}.button-bar:after{clear:both}.button-bar .button-group{float:left;margin-right:0.625rem}.button-bar .button-group div{overflow:hidden}.panel{border-style:solid;border-width:1px;border-color:#d8d8d8;margin-bottom:1.25rem;padding:1.25rem;background:#f2f2f2;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,.panel p,.panel li,.panel dl{color:#333}.panel h1,.panel h2,.panel h3,.panel h4,.panel h5,.panel h6{line-height:1;margin-bottom:0.625rem}.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:#d8d8d8;margin-bottom:1.25rem;padding:1.25rem;background:#ecfaff;color:#333}.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,.panel.callout p,.panel.callout li,.panel.callout dl{color:#333}.panel.callout h1,.panel.callout h2,.panel.callout h3,.panel.callout h4,.panel.callout h5,.panel.callout h6{line-height:1;margin-bottom:0.625rem}.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.callout a:not(.button){color:#008CBA}.panel.callout a:not(.button):hover,.panel.callout a:not(.button):focus{color:#0078a0}.panel.radius{border-radius:3px}.dropdown.button,button.dropdown{position:relative;padding-right:3.5625rem}.dropdown.button::after,button.dropdown::after{border-color:#fff transparent transparent transparent;border-style:solid;content:"";display:block;height:0;position:absolute;top:50%;width:0}.dropdown.button::after,button.dropdown::after{border-width:0.375rem;right:1.40625rem;margin-top:-0.15625rem}.dropdown.button::after,button.dropdown::after{border-color:#fff transparent transparent transparent}.dropdown.button.tiny,button.dropdown.tiny{padding-right:2.625rem}.dropdown.button.tiny:after,button.dropdown.tiny:after{border-width:0.375rem;right:1.125rem;margin-top:-0.125rem}.dropdown.button.tiny::after,button.dropdown.tiny::after{border-color:#fff transparent transparent transparent}.dropdown.button.small,button.dropdown.small{padding-right:3.0625rem}.dropdown.button.small::after,button.dropdown.small::after{border-width:0.4375rem;right:1.3125rem;margin-top:-0.15625rem}.dropdown.button.small::after,button.dropdown.small::after{border-color:#fff transparent transparent transparent}.dropdown.button.large,button.dropdown.large{padding-right:3.625rem}.dropdown.button.large::after,button.dropdown.large::after{border-width:0.3125rem;right:1.71875rem;margin-top:-0.15625rem}.dropdown.button.large::after,button.dropdown.large::after{border-color:#fff transparent transparent transparent}.dropdown.button.secondary:after,button.dropdown.secondary:after{border-color:#333 transparent transparent transparent}.th{border:solid 4px #fff;box-shadow:0 0 0 1px rgba(0,0,0,0.2);display:inline-block;line-height:0;max-width:100%;transition:all 200ms ease-out}.th:hover,.th:focus{box-shadow:0 0 6px 1px rgba(0,140,186,0.5)}.th.radius{border-radius:3px}.pricing-table{border:solid 1px #ddd;margin-left:0;margin-bottom:1.25rem}.pricing-table *{list-style:none;line-height:1}.pricing-table .title{background-color:#333;color:#eee;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-size:1rem;font-weight:normal;padding:0.9375rem 1.25rem;text-align:center}.pricing-table .price{background-color:#F6F6F6;color:#333;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-size:2rem;font-weight:normal;padding:0.9375rem 1.25rem;text-align:center}.pricing-table .description{background-color:#fff;border-bottom:dotted 1px #ddd;color:#777;font-size:0.75rem;font-weight:normal;line-height:1.4;padding:0.9375rem;text-align:center}.pricing-table .bullet-item{background-color:#fff;border-bottom:dotted 1px #ddd;color:#333;font-size:0.875rem;font-weight:normal;padding:0.9375rem;text-align:center}.pricing-table .cta-button{background-color:#fff;padding:1.25rem 1.25rem 0;text-align:center}@-webkit-keyframes rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{from{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}}.slideshow-wrapper{position:relative}.slideshow-wrapper ul{list-style-type:none;margin:0}.slideshow-wrapper ul li,.slideshow-wrapper ul li .orbit-caption{display:none}.slideshow-wrapper ul li:first-child{display:block}.slideshow-wrapper .orbit-container{background-color:transparent}.slideshow-wrapper .orbit-container li{display:block}.slideshow-wrapper .orbit-container li .orbit-caption{display:block}.slideshow-wrapper .orbit-container .orbit-bullets li{display:inline-block}.slideshow-wrapper .preloader{border-radius:1000px;animation-duration:1.5s;animation-iteration-count:infinite;animation-name:rotate;animation-timing-function:linear;border-color:#555 #fff;border:solid 3px;display:block;height:40px;left:50%;margin-left:-20px;margin-top:-20px;position:absolute;top:50%;width:40px}.orbit-container{background:none;overflow:hidden;position:relative;width:100%}.orbit-container .orbit-slides-container{list-style:none;margin:0;padding:0;position:relative;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.orbit-container .orbit-slides-container img{display:block;max-width:100%}.orbit-container .orbit-slides-container>*{position:absolute;top:0;width:100%;margin-left:100%}.orbit-container .orbit-slides-container>*:first-child{margin-left:0}.orbit-container .orbit-slides-container>* .orbit-caption{bottom:0;position:absolute;background-color:rgba(51,51,51,0.8);color:#fff;font-size:0.875rem;padding:0.625rem 0.875rem;width:100%}.orbit-container .orbit-slide-number{left:10px;background:transparent;color:#fff;font-size:12px;position:absolute;top:10px;z-index:10}.orbit-container .orbit-slide-number span{font-weight:700;padding:0.3125rem}.orbit-container .orbit-timer{position:absolute;top:12px;right:10px;height:6px;width:100px;z-index:10}.orbit-container .orbit-timer .orbit-progress{height:3px;background-color:rgba(255,255,255,0.3);display:block;width:0;position:relative;right:20px;top:5px}.orbit-container .orbit-timer>span{border:solid 4px #fff;border-bottom:none;border-top:none;display:none;height:14px;position:absolute;top:0;width:11px;right:0}.orbit-container .orbit-timer.paused>span{top:0;width:11px;height:14px;border:inset 8px;border-left-style:solid;border-color:transparent;border-left-color:#fff;right:-4px}.orbit-container .orbit-timer.paused>span.dark{border-left-color:#333}.orbit-container:hover .orbit-timer>span{display:block}.orbit-container .orbit-prev,.orbit-container .orbit-next{background-color:transparent;color:white;height:60px;line-height:50px;margin-top:-25px;position:absolute;text-indent:-9999px !important;top:45%;width:36px;z-index:10}.orbit-container .orbit-prev:hover,.orbit-container .orbit-next:hover{background-color:rgba(0,0,0,0.3)}.orbit-container .orbit-prev>span,.orbit-container .orbit-next>span{border:inset 10px;display:block;height:0;margin-top:-10px;position:absolute;top:50%;width:0}.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:#fff}.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:-4px}.orbit-container .orbit-next:hover>span{border-left-color:#fff}.orbit-bullets-container{text-align:center}.orbit-bullets{display:block;float:none;margin:0 auto 30px auto;overflow:hidden;position:relative;text-align:center;top:10px}.orbit-bullets li{background:#ccc;cursor:pointer;display:inline-block;float:none;height:0.5625rem;margin-right:6px;width:0.5625rem;border-radius:1000px}.orbit-bullets li.active{background:#999}.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: 40.0625em){.touch .orbit-container .orbit-prev,.touch .orbit-container .orbit-next{display:inherit}.touch .orbit-bullets{display:block}}@media only screen and (max-width: 40em){.orbit-stack-on-small .orbit-slides-container{height:auto !important}.orbit-stack-on-small .orbit-slides-container>*{margin:0 !important;opacity:1 !important;position:relative}.orbit-stack-on-small .orbit-slide-number{display:none}.orbit-timer{display:none}.orbit-next,.orbit-prev{display:none}.orbit-bullets{display:none}}[data-magellan-expedition],[data-magellan-expedition-clone]{background:#fff;min-width:100%;padding:10px;z-index:50}[data-magellan-expedition] .sub-nav,[data-magellan-expedition-clone] .sub-nav{margin-bottom:0}[data-magellan-expedition] .sub-nav dd,[data-magellan-expedition-clone] .sub-nav dd{margin-bottom:0}[data-magellan-expedition] .sub-nav a,[data-magellan-expedition-clone] .sub-nav a{line-height:1.8em}.icon-bar{display:inline-block;font-size:0;width:100%;background:#333}.icon-bar>*{display:block;float:left;font-size:1rem;margin:0 auto;padding:1.25rem;text-align:center;width:25%}.icon-bar>* i,.icon-bar>* img{display:block;margin:0 auto}.icon-bar>* i+label,.icon-bar>* img+label{margin-top:.0625rem}.icon-bar>* i{font-size:1.875rem;vertical-align:middle}.icon-bar>* img{height:1.875rem;width:1.875rem}.icon-bar.label-right>* i,.icon-bar.label-right>* img{display:inline-block;margin:0 .0625rem 0 0}.icon-bar.label-right>* i+label,.icon-bar.label-right>* img+label{margin-top:0}.icon-bar.label-right>* label{display:inline-block}.icon-bar.vertical.label-right>*{text-align:left}.icon-bar.vertical,.icon-bar.small-vertical{height:100%;width:auto}.icon-bar.vertical .item,.icon-bar.small-vertical .item{float:none;margin:auto;width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.medium-vertical{height:100%;width:auto}.icon-bar.medium-vertical .item{float:none;margin:auto;width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.large-vertical{height:100%;width:auto}.icon-bar.large-vertical .item{float:none;margin:auto;width:auto}}.icon-bar>*{font-size:1rem;padding:1.25rem}.icon-bar>* i+label,.icon-bar>* img+label{margin-top:.0625rem;font-size:1rem}.icon-bar>* i{font-size:1.875rem}.icon-bar>* img{height:1.875rem;width:1.875rem}.icon-bar>* label{color:#fff}.icon-bar>* i{color:#fff}.icon-bar>a:hover{background:#008CBA}.icon-bar>a:hover label{color:#fff}.icon-bar>a:hover i{color:#fff}.icon-bar>a.active{background:#008CBA}.icon-bar>a.active label{color:#fff}.icon-bar>a.active i{color:#fff}.icon-bar .item.disabled{cursor:not-allowed;opacity:0.7;pointer-events:none}.icon-bar .item.disabled>*{opacity:0.7;cursor:not-allowed}.icon-bar.two-up .item{width:50%}.icon-bar.two-up.vertical .item,.icon-bar.two-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.two-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.two-up.large-vertical .item{width:auto}}.icon-bar.three-up .item{width:33.3333%}.icon-bar.three-up.vertical .item,.icon-bar.three-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.three-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.three-up.large-vertical .item{width:auto}}.icon-bar.four-up .item{width:25%}.icon-bar.four-up.vertical .item,.icon-bar.four-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.four-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.four-up.large-vertical .item{width:auto}}.icon-bar.five-up .item{width:20%}.icon-bar.five-up.vertical .item,.icon-bar.five-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.five-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.five-up.large-vertical .item{width:auto}}.icon-bar.six-up .item{width:16.66667%}.icon-bar.six-up.vertical .item,.icon-bar.six-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.six-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.six-up.large-vertical .item{width:auto}}.icon-bar.seven-up .item{width:14.28571%}.icon-bar.seven-up.vertical .item,.icon-bar.seven-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.seven-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.seven-up.large-vertical .item{width:auto}}.icon-bar.eight-up .item{width:12.5%}.icon-bar.eight-up.vertical .item,.icon-bar.eight-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.eight-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.eight-up.large-vertical .item{width:auto}}.icon-bar.two-up .item{width:50%}.icon-bar.two-up.vertical .item,.icon-bar.two-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.two-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.two-up.large-vertical .item{width:auto}}.icon-bar.three-up .item{width:33.3333%}.icon-bar.three-up.vertical .item,.icon-bar.three-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.three-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.three-up.large-vertical .item{width:auto}}.icon-bar.four-up .item{width:25%}.icon-bar.four-up.vertical .item,.icon-bar.four-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.four-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.four-up.large-vertical .item{width:auto}}.icon-bar.five-up .item{width:20%}.icon-bar.five-up.vertical .item,.icon-bar.five-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.five-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.five-up.large-vertical .item{width:auto}}.icon-bar.six-up .item{width:16.66667%}.icon-bar.six-up.vertical .item,.icon-bar.six-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.six-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.six-up.large-vertical .item{width:auto}}.icon-bar.seven-up .item{width:14.28571%}.icon-bar.seven-up.vertical .item,.icon-bar.seven-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.seven-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.seven-up.large-vertical .item{width:auto}}.icon-bar.eight-up .item{width:12.5%}.icon-bar.eight-up.vertical .item,.icon-bar.eight-up.small-vertical .item{width:auto}@media only screen and (min-width: 40.0625em){.icon-bar.eight-up.medium-vertical .item{width:auto}}@media only screen and (min-width: 64.0625em){.icon-bar.eight-up.large-vertical .item{width:auto}}.tabs{margin-bottom:0 !important;margin-left:0}.tabs:before,.tabs:after{content:" ";display:table}.tabs:after{clear:both}.tabs dd,.tabs .tab-title{float:left;list-style:none;margin-bottom:0 !important;position:relative}.tabs dd>a,.tabs .tab-title>a{display:block;background-color:#EFEFEF;color:#222;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-size:1rem;padding:1rem 2rem}.tabs dd>a:hover,.tabs .tab-title>a:hover{background-color:#e1e1e1}.tabs dd.active a,.tabs .tab-title.active a{background-color:#fff;color:#222}.tabs.radius dd:first-child a,.tabs.radius .tab:first-child a{-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px}.tabs.radius dd:last-child a,.tabs.radius .tab:last-child a{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}.tabs.vertical dd,.tabs.vertical .tab-title{position:inherit;float:none;display:block;top:auto}.tabs-content{margin-bottom:1.5rem;width:100%}.tabs-content:before,.tabs-content:after{content:" ";display:table}.tabs-content:after{clear:both}.tabs-content>.content{display:none;float:left;padding:0.9375rem 0;width:100%}.tabs-content>.content.active{display:block;float:none}.tabs-content>.content.contained{padding:0.9375rem}.tabs-content.vertical{display:block}.tabs-content.vertical>.content{padding:0 0.9375rem}@media only screen and (min-width: 40.0625em){.tabs.vertical{float:left;margin:0;margin-bottom:1.25rem !important;max-width:20%;width:20%}.tabs-content.vertical{float:left;margin-left:-1px;max-width:80%;padding-left:1rem;width:80%}}.no-js .tabs-content>.content{display:block;float:none}ul.pagination{display:block;margin-left:-0.3125rem;min-height:1.5rem}ul.pagination li{color:#222;font-size:0.875rem;height:1.5rem;margin-left:0.3125rem}ul.pagination li a,ul.pagination li button{border-radius:3px;transition:background-color 300ms ease-out;background:none;color:#999;display:block;font-size:1em;font-weight:normal;line-height:inherit;padding:0.0625rem 0.625rem 0.0625rem}ul.pagination li:hover a,ul.pagination li a:focus,ul.pagination li:hover button,ul.pagination li button:focus{background:#e6e6e6}ul.pagination li.unavailable a,ul.pagination li.unavailable button{cursor:default;color:#999}ul.pagination li.unavailable:hover a,ul.pagination li.unavailable a:focus,ul.pagination li.unavailable:hover button,ul.pagination li.unavailable button:focus{background:transparent}ul.pagination li.current a,ul.pagination li.current button{background:#008CBA;color:#fff;cursor:default;font-weight:bold}ul.pagination li.current a:hover,ul.pagination li.current a:focus,ul.pagination li.current button:hover,ul.pagination li.current button:focus{background:#008CBA}ul.pagination li{display:block;float:left}.pagination-centered{text-align:center}.pagination-centered ul.pagination li{display:inline-block;float:none}.side-nav{display:block;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;list-style-position:outside;list-style-type:none;margin:0;padding:0.875rem 0}.side-nav li{font-size:0.875rem;font-weight:normal;margin:0 0 0.4375rem 0}.side-nav li a:not(.button){color:#008CBA;display:block;margin:0;padding:0.4375rem 0.875rem}.side-nav li a:not(.button):hover,.side-nav li a:not(.button):focus{background:rgba(0,0,0,0.025);color:#1cc7ff}.side-nav li a:not(.button):active{color:#1cc7ff}.side-nav li.active>a:first-child:not(.button){color:#1cc7ff;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-weight:normal}.side-nav li.divider{border-top:1px solid;height:0;list-style:none;padding:0;border-top-color:#e6e6e6}.side-nav li.heading{color:#008CBA;font-size:0.875rem;font-weight:bold;text-transform:uppercase}.accordion{margin-bottom:0}.accordion:before,.accordion:after{content:" ";display:table}.accordion:after{clear:both}.accordion .accordion-navigation,.accordion dd{display:block;margin-bottom:0 !important}.accordion .accordion-navigation.active>a,.accordion dd.active>a{background:#e8e8e8}.accordion .accordion-navigation>a,.accordion dd>a{background:#EFEFEF;color:#222;display:block;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-size:1rem;padding:1rem}.accordion .accordion-navigation>a:hover,.accordion dd>a:hover{background:#e3e3e3}.accordion .accordion-navigation>.content,.accordion dd>.content{display:none;padding:0.9375rem}.accordion .accordion-navigation>.content.active,.accordion dd>.content.active{background:#fff;display:block}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}.text-justify{text-align:justify !important}@media only screen and (max-width: 40em){.small-only-text-left{text-align:left !important}.small-only-text-right{text-align:right !important}.small-only-text-center{text-align:center !important}.small-only-text-justify{text-align:justify !important}}@media only screen{.small-text-left{text-align:left !important}.small-text-right{text-align:right !important}.small-text-center{text-align:center !important}.small-text-justify{text-align:justify !important}}@media only screen and (min-width: 40.0625em) and (max-width: 64em){.medium-only-text-left{text-align:left !important}.medium-only-text-right{text-align:right !important}.medium-only-text-center{text-align:center !important}.medium-only-text-justify{text-align:justify !important}}@media only screen and (min-width: 40.0625em){.medium-text-left{text-align:left !important}.medium-text-right{text-align:right !important}.medium-text-center{text-align:center !important}.medium-text-justify{text-align:justify !important}}@media only screen and (min-width: 64.0625em) and (max-width: 90em){.large-only-text-left{text-align:left !important}.large-only-text-right{text-align:right !important}.large-only-text-center{text-align:center !important}.large-only-text-justify{text-align:justify !important}}@media only screen and (min-width: 64.0625em){.large-text-left{text-align:left !important}.large-text-right{text-align:right !important}.large-text-center{text-align:center !important}.large-text-justify{text-align:justify !important}}@media only screen and (min-width: 90.0625em) and (max-width: 120em){.xlarge-only-text-left{text-align:left !important}.xlarge-only-text-right{text-align:right !important}.xlarge-only-text-center{text-align:center !important}.xlarge-only-text-justify{text-align:justify !important}}@media only screen and (min-width: 90.0625em){.xlarge-text-left{text-align:left !important}.xlarge-text-right{text-align:right !important}.xlarge-text-center{text-align:center !important}.xlarge-text-justify{text-align:justify !important}}@media only screen and (min-width: 120.0625em) and (max-width: 6249999.9375em){.xxlarge-only-text-left{text-align:left !important}.xxlarge-only-text-right{text-align:right !important}.xxlarge-only-text-center{text-align:center !important}.xxlarge-only-text-justify{text-align:justify !important}}@media only screen and (min-width: 120.0625em){.xxlarge-text-left{text-align:left !important}.xxlarge-text-right{text-align:right !important}.xxlarge-text-center{text-align:center !important}.xxlarge-text-justify{text-align:justify !important}}div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}a{color:#008CBA;line-height:inherit;text-decoration:none}a:hover,a:focus{color:#0078a0}a img{border:none}p{font-family:inherit;font-size:1rem;font-weight:normal;line-height:1.6;margin-bottom:1.25rem;text-rendering:optimizeLegibility}p.lead{font-size:1.21875rem;line-height:1.6}p aside{font-size:0.875rem;font-style:italic;line-height:1.35}h1,h2,h3,h4,h5,h6{color:#222;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-style:normal;font-weight:normal;line-height:1.4;margin-bottom:0.5rem;margin-top:0.2rem;text-rendering:optimizeLegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#6f6f6f;font-size:60%;line-height:0}h1{font-size:2.125rem}h2{font-size:1.6875rem}h3{font-size:1.375rem}h4{font-size:1.125rem}h5{font-size:1.125rem}h6{font-size:1rem}.subheader{line-height:1.4;color:#6f6f6f;font-weight:normal;margin-top:0.2rem;margin-bottom:0.5rem}hr{border:solid #ddd;border-width:1px 0 0;clear:both;height:0;margin:1.25rem 0 1.1875rem}em,i{font-style:italic;line-height:inherit}strong,b{font-weight:bold;line-height:inherit}small{font-size:60%;line-height:inherit}code{background-color:#f8f8f8;border-color:#dfdfdf;border-style:solid;border-width:1px;color:#333;font-family:Consolas,"Liberation Mono",Courier,monospace;font-weight:normal;padding:0.125rem 0.3125rem 0.0625rem}ul,ol,dl{font-family:inherit;font-size:1rem;line-height:1.6;list-style-position:outside;margin-bottom:1.25rem}ul{margin-left:1.1rem}ul.no-bullet{margin-left:0}ul.no-bullet li ul,ul.no-bullet li ol{margin-left:1.25rem;margin-bottom:0;list-style:none}ul li ul,ul li ol{margin-left:1.25rem;margin-bottom:0}ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}ul.square{list-style-type:square;margin-left:1.1rem}ul.circle{list-style-type:circle;margin-left:1.1rem}ul.disc{list-style-type:disc;margin-left:1.1rem}ul.no-bullet{list-style:none}ol{margin-left:1.4rem}ol li ul,ol li ol{margin-left:1.25rem;margin-bottom:0}dl dt{margin-bottom:0.3rem;font-weight:bold}dl dd{margin-bottom:0.75rem}abbr,acronym{text-transform:uppercase;font-size:90%;color:#222;cursor:help}abbr{text-transform:none}abbr[title]{border-bottom:1px dotted #ddd}blockquote{margin:0 0 1.25rem;padding:0.5625rem 1.25rem 0 1.1875rem;border-left:1px solid #ddd}blockquote cite{display:block;font-size:0.8125rem;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.25rem 0;border:1px solid #ddd;padding:0.625rem 0.75rem}.vcard li{margin:0;display:block}.vcard .fn{font-weight:bold;font-size:0.9375rem}.vevent .summary{font-weight:bold}.vevent abbr{cursor:default;text-decoration:none;font-weight:bold;border:none;padding:0 0.0625rem}@media only screen and (min-width: 40.0625em){h1,h2,h3,h4,h5,h6{line-height:1.4}h1{font-size:2.75rem}h2{font-size:2.3125rem}h3{font-size:1.6875rem}h4{font-size:1.4375rem}h5{font-size:1.125rem}h6{font-size:1rem}}.split.button{position:relative;padding-right:5.0625rem}.split.button span{display:block;height:100%;position:absolute;right:0;top:0;border-left:solid 1px}.split.button span:after{position:absolute;content:"";width:0;height:0;display:block;border-style:inset;top:50%;left:50%}.split.button span:active{background-color:rgba(0,0,0,0.1)}.split.button span{border-left-color:rgba(255,255,255,0.5)}.split.button span{width:3.09375rem}.split.button span:after{border-top-style:solid;border-width:0.375rem;margin-left:-0.375rem;top:48%}.split.button span:after{border-color:#fff transparent transparent transparent}.split.button.secondary span{border-left-color:rgba(255,255,255,0.5)}.split.button.secondary span:after{border-color:#fff transparent transparent transparent}.split.button.alert span{border-left-color:rgba(255,255,255,0.5)}.split.button.success span{border-left-color:rgba(255,255,255,0.5)}.split.button.tiny{padding-right:3.75rem}.split.button.tiny span{width:2.25rem}.split.button.tiny span:after{border-top-style:solid;border-width:0.375rem;margin-left:-0.375rem;top:48%}.split.button.small{padding-right:4.375rem}.split.button.small span{width:2.625rem}.split.button.small span:after{border-top-style:solid;border-width:0.4375rem;margin-left:-0.375rem;top:48%}.split.button.large{padding-right:5.5rem}.split.button.large span{width:3.4375rem}.split.button.large span:after{border-top-style:solid;border-width:0.3125rem;margin-left:-0.375rem;top:48%}.split.button.expand{padding-left:2rem}.split.button.secondary span:after{border-color:#333 transparent transparent transparent}.split.button.radius span{-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px}.split.button.round span{-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px}.split.button.no-pip span:before{border-style:none}.split.button.no-pip span:after{border-style:none}.split.button.no-pip span>i{display:block;left:50%;margin-left:-0.28889em;margin-top:-0.48889em;position:absolute;top:50%}.reveal-modal-bg{background:#000;background:rgba(0,0,0,0.45);bottom:0;display:none;left:0;position:fixed;right:0;top:0;z-index:1004;left:0}.reveal-modal{border-radius:3px;display:none;position:absolute;top:0;visibility:hidden;width:100%;z-index:1005;left:0;background-color:#fff;padding:1.875rem;border:solid 1px #666;box-shadow:0 0 10px rgba(0,0,0,0.4)}@media only screen and (max-width: 40em){.reveal-modal{min-height:100vh}}.reveal-modal .column,.reveal-modal .columns{min-width:0}.reveal-modal>:first-child{margin-top:0}.reveal-modal>:last-child{margin-bottom:0}@media only screen and (min-width: 40.0625em){.reveal-modal{left:0;margin:0 auto;max-width:62.5rem;right:0;width:80%}}@media only screen and (min-width: 40.0625em){.reveal-modal{top:6.25rem}}.reveal-modal.radius{border-radius:3px}.reveal-modal.round{border-radius:1000px}.reveal-modal.collapse{padding:0}@media only screen and (min-width: 40.0625em){.reveal-modal.tiny{left:0;margin:0 auto;max-width:62.5rem;right:0;width:30%}}@media only screen and (min-width: 40.0625em){.reveal-modal.small{left:0;margin:0 auto;max-width:62.5rem;right:0;width:40%}}@media only screen and (min-width: 40.0625em){.reveal-modal.medium{left:0;margin:0 auto;max-width:62.5rem;right:0;width:60%}}@media only screen and (min-width: 40.0625em){.reveal-modal.large{left:0;margin:0 auto;max-width:62.5rem;right:0;width:70%}}@media only screen and (min-width: 40.0625em){.reveal-modal.xlarge{left:0;margin:0 auto;max-width:62.5rem;right:0;width:95%}}.reveal-modal.full{height:100vh;height:100%;left:0;margin-left:0 !important;max-width:none !important;min-height:100vh;top:0}@media only screen and (min-width: 40.0625em){.reveal-modal.full{left:0;margin:0 auto;max-width:62.5rem;right:0;width:100%}}.reveal-modal.toback{z-index:1003}.reveal-modal .close-reveal-modal{color:#aaa;cursor:pointer;font-size:2.5rem;font-weight:bold;line-height:1;position:absolute;top:0.625rem;right:1.375rem}.has-tip{border-bottom:dotted 1px #ccc;color:#333;cursor:help;font-weight:bold}.has-tip:hover,.has-tip:focus{border-bottom:dotted 1px #003f54;color:#008CBA}.has-tip.tip-left,.has-tip.tip-right{float:none !important}.tooltip{background:#333;color:#fff;display:none;font-size:0.875rem;font-weight:normal;line-height:1.3;max-width:300px;padding:0.75rem;position:absolute;width:100%;z-index:1006;left:50%}.tooltip>.nub{border-color:transparent transparent #333 transparent;border:solid 5px;display:block;height:0;pointer-events:none;position:absolute;top:-10px;width:0;left:5px}.tooltip>.nub.rtl{left:auto;right:5px}.tooltip.radius{border-radius:3px}.tooltip.round{border-radius:1000px}.tooltip.round>.nub{left:2rem}.tooltip.opened{border-bottom:dotted 1px #003f54 !important;color:#008CBA !important}.tap-to-close{color:#777;display:block;font-size:0.625rem;font-weight:normal}@media only screen and (min-width: 40.0625em){.tooltip>.nub{border-color:transparent transparent #333 transparent;top:-10px}.tooltip.tip-top>.nub{border-color:#333 transparent transparent transparent;bottom:-10px;top:auto}.tooltip.tip-left,.tooltip.tip-right{float:none !important}.tooltip.tip-left>.nub{border-color:transparent transparent transparent #333;left:auto;margin-top:-5px;right:-10px;top:50%}.tooltip.tip-right>.nub{border-color:transparent #333 transparent transparent;left:-10px;margin-top:-5px;right:auto;top:50%}}.clearing-thumbs,[data-clearing]{list-style:none;margin-left:0;margin-bottom:0}.clearing-thumbs:before,.clearing-thumbs:after,[data-clearing]:before,[data-clearing]:after{content:" ";display:table}.clearing-thumbs:after,[data-clearing]:after{clear:both}.clearing-thumbs li,[data-clearing] li{float:left;margin-right:10px}.clearing-thumbs[class*="block-grid-"] li,[data-clearing][class*="block-grid-"] li{margin-right:0}.clearing-blackout{background:#333;height:100%;position:fixed;top:0;width:100%;z-index:998;left:0}.clearing-blackout .clearing-close{display:block}.clearing-container{height:100%;margin:0;overflow:hidden;position:relative;z-index:998}.clearing-touch-label{color:#aaa;font-size:.6em;left:50%;position:absolute;top:50%}.visible-img{height:95%;position:relative}.visible-img img{position:absolute;left:50%;top:50%;-webkit-transform:translateY(-50%) translateX(-50%);-moz-transform:translateY(-50%) translateX(-50%);-ms-transform:translateY(-50%) translateX(-50%);-o-transform:translateY(-50%) translateX(-50%);transform:translateY(-50%) translateX(-50%);max-height:100%;max-width:100%}.clearing-caption{background:#333;bottom:0;color:#ccc;font-size:0.875em;line-height:1.3;margin-bottom:0;padding:10px 30px 20px;position:absolute;text-align:center;width:100%;left:0}.clearing-close{color:#ccc;display:none;font-size:30px;line-height:1;padding-left:20px;padding-top:10px;z-index:999}.clearing-close:hover,.clearing-close:focus{color:#ccc}.clearing-assembled .clearing-container{height:100%}.clearing-assembled .clearing-container .carousel>ul{display:none}.clearing-feature li{display:none}.clearing-feature li.clearing-featured-img{display:block}@media only screen and (min-width: 40.0625em){.clearing-main-prev,.clearing-main-next{height:100%;position:absolute;top:0;width:40px}.clearing-main-prev>span,.clearing-main-next>span{border:solid 12px;display:block;height:0;position:absolute;top:50%;width:0}.clearing-main-prev>span:hover,.clearing-main-next>span:hover{opacity:.8}.clearing-main-prev{left:0}.clearing-main-prev>span{left:5px;border-color:transparent;border-right-color:#ccc}.clearing-main-next{right:0}.clearing-main-next>span{border-color:transparent;border-left-color:#ccc}.clearing-main-prev.disabled,.clearing-main-next.disabled{opacity:.3}.clearing-assembled .clearing-container .carousel{background:rgba(51,51,51,0.8);height:120px;margin-top:10px;text-align:center}.clearing-assembled .clearing-container .carousel>ul{display:inline-block;z-index:999;height:100%;position:relative;float:none}.clearing-assembled .clearing-container .carousel>ul li{clear:none;cursor:pointer;display:block;float:left;margin-right:0;min-height:inherit;opacity:.4;overflow:hidden;padding:0;position:relative;width:120px}.clearing-assembled .clearing-container .carousel>ul li.fix-height img{height:100%;max-width:none}.clearing-assembled .clearing-container .carousel>ul li a.th{border:none;box-shadow:none;display:block}.clearing-assembled .clearing-container .carousel>ul li img{cursor:pointer !important;width:100% !important}.clearing-assembled .clearing-container .carousel>ul li.visible{opacity:1}.clearing-assembled .clearing-container .carousel>ul li:hover{opacity:.8}.clearing-assembled .clearing-container .visible-img{background:#333;height:85%;overflow:hidden}.clearing-close{padding-left:0;padding-top:0;position:absolute;top:10px;right:20px}}.progress{background-color:#F6F6F6;border:1px solid #fff;height:1.5625rem;margin-bottom:0.625rem;padding:0.125rem}.progress .meter{background:#008CBA;display:block;height:100%}.progress.secondary .meter{background:#e7e7e7;display:block;height:100%}.progress.success .meter{background:#43AC6A;display:block;height:100%}.progress.alert .meter{background:#f04124;display:block;height:100%}.progress.radius{border-radius:3px}.progress.radius .meter{border-radius:2px}.progress.round{border-radius:1000px}.progress.round .meter{border-radius:999px}.sub-nav{display:block;margin:-0.25rem 0 1.125rem;overflow:hidden;padding-top:0.25rem;width:auto}.sub-nav dt{text-transform:uppercase}.sub-nav dt,.sub-nav dd,.sub-nav li{color:#999;float:left;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-size:0.875rem;font-weight:normal;margin-left:1rem;margin-bottom:0}.sub-nav dt a,.sub-nav dd a,.sub-nav li a{color:#999;padding:0.1875rem 1rem;text-decoration:none}.sub-nav dt a:hover,.sub-nav dd a:hover,.sub-nav li a:hover{color:#737373}.sub-nav dt.active a,.sub-nav dd.active a,.sub-nav li.active a{border-radius:3px;background:#008CBA;color:#fff;cursor:default;font-weight:normal;padding:0.1875rem 1rem}.sub-nav dt.active a:hover,.sub-nav dd.active a:hover,.sub-nav li.active a:hover{background:#0078a0}.joyride-list{display:none}.joyride-tip-guide{background:#333;color:#fff;display:none;font-family:inherit;font-weight:normal;position:absolute;top:0;width:95%;z-index:101;left:2.5%}.lt-ie9 .joyride-tip-guide{margin-left:-400px;max-width:800px;left:50%}.joyride-content-wrapper{padding:1.125rem 1.25rem 1.5rem;width:100%}.joyride-content-wrapper .button{margin-bottom:0 !important}.joyride-content-wrapper .joyride-prev-tip{margin-right:10px}.joyride-tip-guide .joyride-nub{border:10px solid #333;display:block;height:0;position:absolute;width:0;left:22px}.joyride-tip-guide .joyride-nub.top{border-color:#333;border-top-color:transparent !important;border-top-style:solid;border-left-color:transparent !important;border-right-color:transparent !important;top:-20px}.joyride-tip-guide .joyride-nub.bottom{border-color:#333 !important;border-bottom-color:transparent !important;border-bottom-style:solid;border-left-color:transparent !important;border-right-color:transparent !important;bottom:-20px}.joyride-tip-guide .joyride-nub.right{right:-20px}.joyride-tip-guide .joyride-nub.left{left:-20px}.joyride-tip-guide h1,.joyride-tip-guide h2,.joyride-tip-guide h3,.joyride-tip-guide h4,.joyride-tip-guide h5,.joyride-tip-guide h6{color:#fff;font-weight:bold;line-height:1.25;margin:0}.joyride-tip-guide p{font-size:0.875rem;line-height:1.3;margin:0 0 1.125rem 0}.joyride-timer-indicator-wrap{border:solid 1px #555;bottom:1rem;height:3px;position:absolute;width:50px;right:1.0625rem}.joyride-timer-indicator{background:#666;display:block;height:inherit;width:0}.joyride-close-tip{color:#777 !important;font-size:24px;font-weight:normal;line-height:.5 !important;position:absolute;text-decoration:none;top:10px;right:12px}.joyride-close-tip:hover,.joyride-close-tip:focus{color:#eee !important}.joyride-modal-bg{background:rgba(0,0,0,0.5);cursor:pointer;display:none;height:100%;position:fixed;top:0;width:100%;z-index:100;left:0}.joyride-expose-wrapper{background-color:#fff;border-radius:3px;box-shadow:0 0 15px #fff;position:absolute;z-index:102}.joyride-expose-cover{background:transparent;border-radius:3px;left:0;position:absolute;top:0;z-index:9999}@media only screen and (min-width: 40.0625em){.joyride-tip-guide{width:300px;left:inherit}.joyride-tip-guide .joyride-nub.bottom{border-color:#333 !important;border-bottom-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;bottom:-20px}.joyride-tip-guide .joyride-nub.right{border-color:#333 !important;border-right-color:transparent !important;border-bottom-color:transparent !important;border-top-color:transparent !important;left:auto;right:-20px;top:22px}.joyride-tip-guide .joyride-nub.left{border-color:#333 !important;border-bottom-color:transparent !important;border-left-color:transparent !important;border-top-color:transparent !important;left:-20px;right:auto;top:22px}}.label{display:inline-block;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-weight:normal;line-height:1;margin-bottom:auto;position:relative;text-align:center;text-decoration:none;white-space:nowrap;padding:0.25rem 0.5rem 0.25rem;font-size:0.6875rem;background-color:#008CBA;color:#fff}.label.radius{border-radius:3px}.label.round{border-radius:1000px}.label.alert{background-color:#f04124;color:#fff}.label.warning{background-color:#f08a24;color:#fff}.label.success{background-color:#43AC6A;color:#fff}.label.secondary{background-color:#e7e7e7;color:#333}.label.info{background-color:#a0d3e8;color:#333}.off-canvas-wrap{-webkit-backface-visibility:hidden;position:relative;width:100%;overflow:hidden}.off-canvas-wrap.move-right,.off-canvas-wrap.move-left{min-height:100%;-webkit-overflow-scrolling:touch}.inner-wrap{position:relative;width:100%;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease}.inner-wrap:before,.inner-wrap:after{content:" ";display:table}.inner-wrap:after{clear:both}.tab-bar{-webkit-backface-visibility:hidden;background:#333;color:#fff;height:2.8125rem;line-height:2.8125rem;position:relative}.tab-bar h1,.tab-bar h2,.tab-bar h3,.tab-bar h4,.tab-bar h5,.tab-bar h6{color:#fff;font-weight:bold;line-height:2.8125rem;margin:0}.tab-bar h1,.tab-bar h2,.tab-bar h3,.tab-bar h4{font-size:1.125rem}.left-small{height:2.8125rem;position:absolute;top:0;width:2.8125rem;border-right:solid 1px #1a1a1a;left:0}.right-small{height:2.8125rem;position:absolute;top:0;width:2.8125rem;border-left:solid 1px #1a1a1a;right:0}.tab-bar-section{height:2.8125rem;padding:0 0.625rem;position:absolute;text-align:center;top:0}.tab-bar-section.left{text-align:left}.tab-bar-section.right{text-align:right}.tab-bar-section.left{left:0;right:2.8125rem}.tab-bar-section.right{left:2.8125rem;right:0}.tab-bar-section.middle{left:2.8125rem;right:2.8125rem}.tab-bar .menu-icon{color:#fff;display:block;height:2.8125rem;padding:0;position:relative;text-indent:2.1875rem;transform:translate3d(0, 0, 0);width:2.8125rem}.tab-bar .menu-icon span::after{content:"";display:block;height:0;position:absolute;top:50%;margin-top:-0.5rem;left:0.90625rem;box-shadow:0 0 0 1px #fff,0 7px 0 1px #fff,0 14px 0 1px #fff;width:1rem}.tab-bar .menu-icon span:hover:after{box-shadow:0 0 0 1px #b3b3b3,0 7px 0 1px #b3b3b3,0 14px 0 1px #b3b3b3}.left-off-canvas-menu{-webkit-backface-visibility:hidden;background:#333;bottom:0;box-sizing:content-box;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;overflow-x:hidden;overflow-y:auto;position:absolute;top:0;transition:transform 500ms ease 0s;width:15.625rem;z-index:1001;-webkit-transform:translate3d(-100%, 0, 0);-moz-transform:translate3d(-100%, 0, 0);-ms-transform:translate(-100%, 0);-ms-transform:translate3d(-100%, 0, 0);-o-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.left-off-canvas-menu *{-webkit-backface-visibility:hidden}.right-off-canvas-menu{-webkit-backface-visibility:hidden;background:#333;bottom:0;box-sizing:content-box;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;overflow-x:hidden;overflow-y:auto;position:absolute;top:0;transition:transform 500ms ease 0s;width:15.625rem;z-index:1001;-webkit-transform:translate3d(100%, 0, 0);-moz-transform:translate3d(100%, 0, 0);-ms-transform:translate(100%, 0);-ms-transform:translate3d(100%, 0, 0);-o-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);right:0}.right-off-canvas-menu *{-webkit-backface-visibility:hidden}ul.off-canvas-list{list-style-type:none;margin:0;padding:0}ul.off-canvas-list li label{background:#444;border-bottom:none;border-top:1px solid #5e5e5e;color:#999;display:block;font-size:0.75rem;font-weight:bold;margin:0;padding:0.3rem 0.9375rem;text-transform:uppercase}ul.off-canvas-list li a{border-bottom:1px solid #262626;color:rgba(255,255,255,0.7);display:block;padding:0.66667rem;transition:background 300ms ease}ul.off-canvas-list li a:hover{background:#242424}ul.off-canvas-list li a:active{background:#242424}.move-right>.inner-wrap{-webkit-transform:translate3d(15.625rem, 0, 0);-moz-transform:translate3d(15.625rem, 0, 0);-ms-transform:translate(15.625rem, 0);-ms-transform:translate3d(15.625rem, 0, 0);-o-transform:translate3d(15.625rem, 0, 0);transform:translate3d(15.625rem, 0, 0)}.move-right .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width: 40.0625em){.move-right .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.move-left>.inner-wrap{-webkit-transform:translate3d(-15.625rem, 0, 0);-moz-transform:translate3d(-15.625rem, 0, 0);-ms-transform:translate(-15.625rem, 0);-ms-transform:translate3d(-15.625rem, 0, 0);-o-transform:translate3d(-15.625rem, 0, 0);transform:translate3d(-15.625rem, 0, 0)}.move-left .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width: 40.0625em){.move-left .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.offcanvas-overlap .left-off-canvas-menu,.offcanvas-overlap .right-off-canvas-menu{-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003}.offcanvas-overlap .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width: 40.0625em){.offcanvas-overlap .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.offcanvas-overlap-left .right-off-canvas-menu{-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003}.offcanvas-overlap-left .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width: 40.0625em){.offcanvas-overlap-left .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.offcanvas-overlap-right .left-off-canvas-menu{-ms-transform:none;-webkit-transform:none;-moz-transform:none;-o-transform:none;transform:none;z-index:1003}.offcanvas-overlap-right .exit-off-canvas{-webkit-backface-visibility:hidden;box-shadow:-4px 0 4px rgba(0,0,0,0.5),4px 0 4px rgba(0,0,0,0.5);cursor:pointer;transition:background 300ms ease;-webkit-tap-highlight-color:transparent;background:rgba(255,255,255,0.2);bottom:0;display:block;left:0;position:absolute;right:0;top:0;z-index:1002}@media only screen and (min-width: 40.0625em){.offcanvas-overlap-right .exit-off-canvas:hover{background:rgba(255,255,255,0.05)}}.no-csstransforms .left-off-canvas-menu{left:-15.625rem}.no-csstransforms .right-off-canvas-menu{right:-15.625rem}.no-csstransforms .move-left>.inner-wrap{right:15.625rem}.no-csstransforms .move-right>.inner-wrap{left:15.625rem}.left-submenu{-webkit-backface-visibility:hidden;-webkit-overflow-scrolling:touch;background:#333;bottom:0;box-sizing:content-box;margin:0;overflow-x:hidden;overflow-y:auto;position:absolute;top:0;width:15.625rem;z-index:1002;-webkit-transform:translate3d(-100%, 0, 0);-moz-transform:translate3d(-100%, 0, 0);-ms-transform:translate(-100%, 0);-ms-transform:translate3d(-100%, 0, 0);-o-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease}.left-submenu *{-webkit-backface-visibility:hidden}.left-submenu .back>a{background:#444;border-bottom:none;border-top:1px solid #5e5e5e;color:#999;font-weight:bold;padding:0.3rem 0.9375rem;text-transform:uppercase;margin:0}.left-submenu .back>a:hover{background:#303030;border-bottom:none;border-top:1px solid #5e5e5e}.left-submenu .back>a:before{content:"\AB";margin-right:.5rem;display:inline}.left-submenu.move-right,.left-submenu.offcanvas-overlap-right,.left-submenu.offcanvas-overlap{-webkit-transform:translate3d(0%, 0, 0);-moz-transform:translate3d(0%, 0, 0);-ms-transform:translate(0%, 0);-ms-transform:translate3d(0%, 0, 0);-o-transform:translate3d(0%, 0, 0);transform:translate3d(0%, 0, 0)}.right-submenu{-webkit-backface-visibility:hidden;-webkit-overflow-scrolling:touch;background:#333;bottom:0;box-sizing:content-box;margin:0;overflow-x:hidden;overflow-y:auto;position:absolute;top:0;width:15.625rem;z-index:1002;-webkit-transform:translate3d(100%, 0, 0);-moz-transform:translate3d(100%, 0, 0);-ms-transform:translate(100%, 0);-ms-transform:translate3d(100%, 0, 0);-o-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);right:0;-webkit-transition:-webkit-transform 500ms ease;-moz-transition:-moz-transform 500ms ease;-ms-transition:-ms-transform 500ms ease;-o-transition:-o-transform 500ms ease;transition:transform 500ms ease}.right-submenu *{-webkit-backface-visibility:hidden}.right-submenu .back>a{background:#444;border-bottom:none;border-top:1px solid #5e5e5e;color:#999;font-weight:bold;padding:0.3rem 0.9375rem;text-transform:uppercase;margin:0}.right-submenu .back>a:hover{background:#303030;border-bottom:none;border-top:1px solid #5e5e5e}.right-submenu .back>a:after{content:"\BB";margin-left:.5rem;display:inline}.right-submenu.move-left,.right-submenu.offcanvas-overlap-left,.right-submenu.offcanvas-overlap{-webkit-transform:translate3d(0%, 0, 0);-moz-transform:translate3d(0%, 0, 0);-ms-transform:translate(0%, 0);-ms-transform:translate3d(0%, 0, 0);-o-transform:translate3d(0%, 0, 0);transform:translate3d(0%, 0, 0)}.left-off-canvas-menu ul.off-canvas-list li.has-submenu>a:after{content:"\BB";margin-left:.5rem;display:inline}.right-off-canvas-menu ul.off-canvas-list li.has-submenu>a:before{content:"\AB";margin-right:.5rem;display:inline}.f-dropdown{display:none;left:-9999px;list-style:none;margin-left:0;position:absolute;background:#fff;border:solid 1px #ccc;font-size:0.875rem;height:auto;max-height:none;width:100%;z-index:89;margin-top:2px;max-width:200px}.f-dropdown.open{display:block}.f-dropdown>*:first-child{margin-top:0}.f-dropdown>*:last-child{margin-bottom:0}.f-dropdown:before{border:inset 6px;content:"";display:block;height:0;width:0;border-color:transparent transparent #fff transparent;border-bottom-style:solid;position:absolute;top:-12px;left:10px;z-index:89}.f-dropdown:after{border:inset 7px;content:"";display:block;height:0;width:0;border-color:transparent transparent #ccc transparent;border-bottom-style:solid;position:absolute;top:-14px;left:9px;z-index:88}.f-dropdown.right:before{left:auto;right:10px}.f-dropdown.right:after{left:auto;right:9px}.f-dropdown.drop-right{display:none;left:-9999px;list-style:none;margin-left:0;position:absolute;background:#fff;border:solid 1px #ccc;font-size:0.875rem;height:auto;max-height:none;width:100%;z-index:89;margin-top:0;margin-left:2px;max-width:200px}.f-dropdown.drop-right.open{display:block}.f-dropdown.drop-right>*:first-child{margin-top:0}.f-dropdown.drop-right>*:last-child{margin-bottom:0}.f-dropdown.drop-right:before{border:inset 6px;content:"";display:block;height:0;width:0;border-color:transparent #fff transparent transparent;border-right-style:solid;position:absolute;top:10px;left:-12px;z-index:89}.f-dropdown.drop-right:after{border:inset 7px;content:"";display:block;height:0;width:0;border-color:transparent #ccc transparent transparent;border-right-style:solid;position:absolute;top:9px;left:-14px;z-index:88}.f-dropdown.drop-left{display:none;left:-9999px;list-style:none;margin-left:0;position:absolute;background:#fff;border:solid 1px #ccc;font-size:0.875rem;height:auto;max-height:none;width:100%;z-index:89;margin-top:0;margin-left:-2px;max-width:200px}.f-dropdown.drop-left.open{display:block}.f-dropdown.drop-left>*:first-child{margin-top:0}.f-dropdown.drop-left>*:last-child{margin-bottom:0}.f-dropdown.drop-left:before{border:inset 6px;content:"";display:block;height:0;width:0;border-color:transparent transparent transparent #fff;border-left-style:solid;position:absolute;top:10px;right:-12px;left:auto;z-index:89}.f-dropdown.drop-left:after{border:inset 7px;content:"";display:block;height:0;width:0;border-color:transparent transparent transparent #ccc;border-left-style:solid;position:absolute;top:9px;right:-14px;left:auto;z-index:88}.f-dropdown.drop-top{display:none;left:-9999px;list-style:none;margin-left:0;position:absolute;background:#fff;border:solid 1px #ccc;font-size:0.875rem;height:auto;max-height:none;width:100%;z-index:89;margin-left:0;margin-top:-2px;max-width:200px}.f-dropdown.drop-top.open{display:block}.f-dropdown.drop-top>*:first-child{margin-top:0}.f-dropdown.drop-top>*:last-child{margin-bottom:0}.f-dropdown.drop-top:before{border:inset 6px;content:"";display:block;height:0;width:0;border-color:#fff transparent transparent transparent;border-top-style:solid;bottom:-12px;position:absolute;top:auto;left:10px;right:auto;z-index:89}.f-dropdown.drop-top:after{border:inset 7px;content:"";display:block;height:0;width:0;border-color:#ccc transparent transparent transparent;border-top-style:solid;bottom:-14px;position:absolute;top:auto;left:9px;right:auto;z-index:88}.f-dropdown li{cursor:pointer;font-size:0.875rem;line-height:1.125rem;margin:0}.f-dropdown li:hover,.f-dropdown li:focus{background:#eee}.f-dropdown li.radius{border-radius:3px}.f-dropdown li a{display:block;padding:0.5rem;color:#555}.f-dropdown.content{display:none;left:-9999px;list-style:none;margin-left:0;position:absolute;background:#fff;border:solid 1px #ccc;font-size:0.875rem;height:auto;max-height:none;padding:1.25rem;width:100%;z-index:89;max-width:200px}.f-dropdown.content.open{display:block}.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}.f-dropdown.mega{width:100% !important;max-width:100% !important}.f-dropdown.mega.open{left:0 !important}table{background:#fff;border:solid 1px #ddd;margin-bottom:1.25rem;table-layout:auto}table caption{background:transparent;color:#222;font-size:1rem;font-weight:bold}table thead{background:#F5F5F5}table thead tr th,table thead tr td{color:#222;font-size:0.875rem;font-weight:bold;padding:0.5rem 0.625rem 0.625rem}table tfoot{background:#F5F5F5}table tfoot tr th,table tfoot tr td{color:#222;font-size:0.875rem;font-weight:bold;padding:0.5rem 0.625rem 0.625rem}table tr th,table tr td{color:#222;font-size:0.875rem;padding:0.5625rem 0.625rem;text-align:left}table tr.even,table tr.alt,table tr:nth-of-type(even){background:#F9F9F9}table thead tr th,table tfoot tr th,table tfoot tr td,table tbody tr th,table tbody tr td,table tr td{display:table-cell;line-height:1.125rem}.range-slider{border:1px solid #ddd;margin:1.25rem 0;position:relative;-ms-touch-action:none;touch-action:none;display:block;height:1rem;width:100%;background:#FAFAFA}.range-slider.vertical-range{border:1px solid #ddd;margin:1.25rem 0;position:relative;-ms-touch-action:none;touch-action:none;display:inline-block;height:12.5rem;width:1rem}.range-slider.vertical-range .range-slider-handle{bottom:-10.5rem;margin-left:-0.5rem;margin-top:0;position:absolute}.range-slider.vertical-range .range-slider-active-segment{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;border-top-left-radius:initial;bottom:0;height:auto;width:0.875rem}.range-slider.radius{background:#FAFAFA;border-radius:3px}.range-slider.radius .range-slider-handle{background:#008CBA;border-radius:3px}.range-slider.radius .range-slider-handle:hover{background:#007ba4}.range-slider.round{background:#FAFAFA;border-radius:1000px}.range-slider.round .range-slider-handle{background:#008CBA;border-radius:1000px}.range-slider.round .range-slider-handle:hover{background:#007ba4}.range-slider.disabled,.range-slider[disabled]{background:#FAFAFA;cursor:not-allowed;opacity:0.7}.range-slider.disabled .range-slider-handle,.range-slider[disabled] .range-slider-handle{background:#008CBA;cursor:default;opacity:0.7}.range-slider.disabled .range-slider-handle:hover,.range-slider[disabled] .range-slider-handle:hover{background:#007ba4}.range-slider-active-segment{background:#e5e5e5;border-bottom-left-radius:inherit;border-top-left-radius:inherit;display:inline-block;height:0.875rem;position:absolute}.range-slider-handle{border:1px solid none;cursor:pointer;display:inline-block;height:1.375rem;position:absolute;top:-0.3125rem;width:2rem;z-index:1;-ms-touch-action:manipulation;touch-action:manipulation;background:#008CBA}.range-slider-handle:hover{background:#007ba4}[class*="block-grid-"]{display:block;padding:0;margin:0 -0.625rem}[class*="block-grid-"]:before,[class*="block-grid-"]:after{content:" ";display:table}[class*="block-grid-"]:after{clear:both}[class*="block-grid-"]>li{display:block;float:left;height:auto;padding:0 0.625rem 1.25rem}@media only screen{.small-block-grid-1>li{list-style:none;width:100%}.small-block-grid-1>li:nth-of-type(1n){clear:none}.small-block-grid-1>li:nth-of-type(1n+1){clear:both}.small-block-grid-2>li{list-style:none;width:50%}.small-block-grid-2>li:nth-of-type(1n){clear:none}.small-block-grid-2>li:nth-of-type(2n+1){clear:both}.small-block-grid-3>li{list-style:none;width:33.33333%}.small-block-grid-3>li:nth-of-type(1n){clear:none}.small-block-grid-3>li:nth-of-type(3n+1){clear:both}.small-block-grid-4>li{list-style:none;width:25%}.small-block-grid-4>li:nth-of-type(1n){clear:none}.small-block-grid-4>li:nth-of-type(4n+1){clear:both}.small-block-grid-5>li{list-style:none;width:20%}.small-block-grid-5>li:nth-of-type(1n){clear:none}.small-block-grid-5>li:nth-of-type(5n+1){clear:both}.small-block-grid-6>li{list-style:none;width:16.66667%}.small-block-grid-6>li:nth-of-type(1n){clear:none}.small-block-grid-6>li:nth-of-type(6n+1){clear:both}.small-block-grid-7>li{list-style:none;width:14.28571%}.small-block-grid-7>li:nth-of-type(1n){clear:none}.small-block-grid-7>li:nth-of-type(7n+1){clear:both}.small-block-grid-8>li{list-style:none;width:12.5%}.small-block-grid-8>li:nth-of-type(1n){clear:none}.small-block-grid-8>li:nth-of-type(8n+1){clear:both}.small-block-grid-9>li{list-style:none;width:11.11111%}.small-block-grid-9>li:nth-of-type(1n){clear:none}.small-block-grid-9>li:nth-of-type(9n+1){clear:both}.small-block-grid-10>li{list-style:none;width:10%}.small-block-grid-10>li:nth-of-type(1n){clear:none}.small-block-grid-10>li:nth-of-type(10n+1){clear:both}.small-block-grid-11>li{list-style:none;width:9.09091%}.small-block-grid-11>li:nth-of-type(1n){clear:none}.small-block-grid-11>li:nth-of-type(11n+1){clear:both}.small-block-grid-12>li{list-style:none;width:8.33333%}.small-block-grid-12>li:nth-of-type(1n){clear:none}.small-block-grid-12>li:nth-of-type(12n+1){clear:both}}@media only screen and (min-width: 40.0625em){.medium-block-grid-1>li{list-style:none;width:100%}.medium-block-grid-1>li:nth-of-type(1n){clear:none}.medium-block-grid-1>li:nth-of-type(1n+1){clear:both}.medium-block-grid-2>li{list-style:none;width:50%}.medium-block-grid-2>li:nth-of-type(1n){clear:none}.medium-block-grid-2>li:nth-of-type(2n+1){clear:both}.medium-block-grid-3>li{list-style:none;width:33.33333%}.medium-block-grid-3>li:nth-of-type(1n){clear:none}.medium-block-grid-3>li:nth-of-type(3n+1){clear:both}.medium-block-grid-4>li{list-style:none;width:25%}.medium-block-grid-4>li:nth-of-type(1n){clear:none}.medium-block-grid-4>li:nth-of-type(4n+1){clear:both}.medium-block-grid-5>li{list-style:none;width:20%}.medium-block-grid-5>li:nth-of-type(1n){clear:none}.medium-block-grid-5>li:nth-of-type(5n+1){clear:both}.medium-block-grid-6>li{list-style:none;width:16.66667%}.medium-block-grid-6>li:nth-of-type(1n){clear:none}.medium-block-grid-6>li:nth-of-type(6n+1){clear:both}.medium-block-grid-7>li{list-style:none;width:14.28571%}.medium-block-grid-7>li:nth-of-type(1n){clear:none}.medium-block-grid-7>li:nth-of-type(7n+1){clear:both}.medium-block-grid-8>li{list-style:none;width:12.5%}.medium-block-grid-8>li:nth-of-type(1n){clear:none}.medium-block-grid-8>li:nth-of-type(8n+1){clear:both}.medium-block-grid-9>li{list-style:none;width:11.11111%}.medium-block-grid-9>li:nth-of-type(1n){clear:none}.medium-block-grid-9>li:nth-of-type(9n+1){clear:both}.medium-block-grid-10>li{list-style:none;width:10%}.medium-block-grid-10>li:nth-of-type(1n){clear:none}.medium-block-grid-10>li:nth-of-type(10n+1){clear:both}.medium-block-grid-11>li{list-style:none;width:9.09091%}.medium-block-grid-11>li:nth-of-type(1n){clear:none}.medium-block-grid-11>li:nth-of-type(11n+1){clear:both}.medium-block-grid-12>li{list-style:none;width:8.33333%}.medium-block-grid-12>li:nth-of-type(1n){clear:none}.medium-block-grid-12>li:nth-of-type(12n+1){clear:both}}@media only screen and (min-width: 64.0625em){.large-block-grid-1>li{list-style:none;width:100%}.large-block-grid-1>li:nth-of-type(1n){clear:none}.large-block-grid-1>li:nth-of-type(1n+1){clear:both}.large-block-grid-2>li{list-style:none;width:50%}.large-block-grid-2>li:nth-of-type(1n){clear:none}.large-block-grid-2>li:nth-of-type(2n+1){clear:both}.large-block-grid-3>li{list-style:none;width:33.33333%}.large-block-grid-3>li:nth-of-type(1n){clear:none}.large-block-grid-3>li:nth-of-type(3n+1){clear:both}.large-block-grid-4>li{list-style:none;width:25%}.large-block-grid-4>li:nth-of-type(1n){clear:none}.large-block-grid-4>li:nth-of-type(4n+1){clear:both}.large-block-grid-5>li{list-style:none;width:20%}.large-block-grid-5>li:nth-of-type(1n){clear:none}.large-block-grid-5>li:nth-of-type(5n+1){clear:both}.large-block-grid-6>li{list-style:none;width:16.66667%}.large-block-grid-6>li:nth-of-type(1n){clear:none}.large-block-grid-6>li:nth-of-type(6n+1){clear:both}.large-block-grid-7>li{list-style:none;width:14.28571%}.large-block-grid-7>li:nth-of-type(1n){clear:none}.large-block-grid-7>li:nth-of-type(7n+1){clear:both}.large-block-grid-8>li{list-style:none;width:12.5%}.large-block-grid-8>li:nth-of-type(1n){clear:none}.large-block-grid-8>li:nth-of-type(8n+1){clear:both}.large-block-grid-9>li{list-style:none;width:11.11111%}.large-block-grid-9>li:nth-of-type(1n){clear:none}.large-block-grid-9>li:nth-of-type(9n+1){clear:both}.large-block-grid-10>li{list-style:none;width:10%}.large-block-grid-10>li:nth-of-type(1n){clear:none}.large-block-grid-10>li:nth-of-type(10n+1){clear:both}.large-block-grid-11>li{list-style:none;width:9.09091%}.large-block-grid-11>li:nth-of-type(1n){clear:none}.large-block-grid-11>li:nth-of-type(11n+1){clear:both}.large-block-grid-12>li{list-style:none;width:8.33333%}.large-block-grid-12>li:nth-of-type(1n){clear:none}.large-block-grid-12>li:nth-of-type(12n+1){clear:both}}.flex-video{height:0;margin-bottom:1rem;overflow:hidden;padding-bottom:67.5%;padding-top:1.5625rem;position:relative}.flex-video.widescreen{padding-bottom:56.34%}.flex-video.vimeo{padding-top:0}.flex-video iframe,.flex-video object,.flex-video embed,.flex-video video{height:100%;position:absolute;top:0;width:100%;left:0}.keystroke,kbd{background-color:#ededed;border-color:#ddd;color:#222;border-style:solid;border-width:1px;font-family:"Consolas","Menlo","Courier",monospace;font-size:inherit;margin:0;padding:0.125rem 0.25rem 0;border-radius:3px}.switch{border:none;margin-bottom:1.5rem;outline:0;padding:0;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.switch label{background:#ddd;color:transparent;cursor:pointer;display:block;margin-bottom:1rem;position:relative;text-indent:100%;width:4rem;height:2rem;transition:left 0.15s ease-out}.switch input{left:10px;opacity:0;padding:0;position:absolute;top:9px}.switch input+label{margin-left:0;margin-right:0}.switch label:after{background:#fff;content:"";display:block;height:1.5rem;left:.25rem;position:absolute;top:.25rem;width:1.5rem;-webkit-transition:left 0.15s ease-out;-moz-transition:left 0.15s ease-out;-o-transition:translate3d(0, 0, 0);transition:left 0.15s ease-out;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.switch input:checked+label{background:#008CBA}.switch input:checked+label:after{left:2.25rem}.switch label{height:2rem;width:4rem}.switch label:after{height:1.5rem;width:1.5rem}.switch input:checked+label:after{left:2.25rem}.switch label{color:transparent;background:#ddd}.switch label:after{background:#fff}.switch input:checked+label{background:#008CBA}.switch.large label{height:2.5rem;width:5rem}.switch.large label:after{height:2rem;width:2rem}.switch.large input:checked+label:after{left:2.75rem}.switch.small label{height:1.75rem;width:3.5rem}.switch.small label:after{height:1.25rem;width:1.25rem}.switch.small input:checked+label:after{left:2rem}.switch.tiny label{height:1.5rem;width:3rem}.switch.tiny label:after{height:1rem;width:1rem}.switch.tiny input:checked+label:after{left:1.75rem}.switch.radius label{border-radius:4px}.switch.radius label:after{border-radius:3px}.switch.round{border-radius:1000px}.switch.round label{border-radius:2rem}.switch.round label:after{border-radius:2rem}@media only screen{.show-for-small-only,.show-for-small-up,.show-for-small,.show-for-small-down,.hide-for-medium-only,.hide-for-medium-up,.hide-for-medium,.show-for-medium-down,.hide-for-large-only,.hide-for-large-up,.hide-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.hide-for-small-only,.hide-for-small-up,.hide-for-small,.hide-for-small-down,.show-for-medium-only,.show-for-medium-up,.show-for-medium,.hide-for-medium-down,.show-for-large-only,.show-for-large-up,.show-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.show-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.visible-for-small-only,.visible-for-small-up,.visible-for-small,.visible-for-small-down,.hidden-for-medium-only,.hidden-for-medium-up,.hidden-for-medium,.visible-for-medium-down,.hidden-for-large-only,.hidden-for-large-up,.hidden-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.hidden-for-small-only,.hidden-for-small-up,.hidden-for-small,.hidden-for-small-down,.visible-for-medium-only,.visible-for-medium-up,.visible-for-medium,.hidden-for-medium-down,.visible-for-large-only,.visible-for-large-up,.visible-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.hidden-for-xxlarge-down{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}table.show-for-small-only,table.show-for-small-up,table.show-for-small,table.show-for-small-down,table.hide-for-medium-only,table.hide-for-medium-up,table.hide-for-medium,table.show-for-medium-down,table.hide-for-large-only,table.hide-for-large-up,table.hide-for-large,table.show-for-large-down,table.hide-for-xlarge-only,table.hide-for-xlarge-up,table.hide-for-xlarge,table.show-for-xlarge-down,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up,table.hide-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.show-for-small-only,thead.show-for-small-up,thead.show-for-small,thead.show-for-small-down,thead.hide-for-medium-only,thead.hide-for-medium-up,thead.hide-for-medium,thead.show-for-medium-down,thead.hide-for-large-only,thead.hide-for-large-up,thead.hide-for-large,thead.show-for-large-down,thead.hide-for-xlarge-only,thead.hide-for-xlarge-up,thead.hide-for-xlarge,thead.show-for-xlarge-down,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up,thead.hide-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.show-for-small-only,tbody.show-for-small-up,tbody.show-for-small,tbody.show-for-small-down,tbody.hide-for-medium-only,tbody.hide-for-medium-up,tbody.hide-for-medium,tbody.show-for-medium-down,tbody.hide-for-large-only,tbody.hide-for-large-up,tbody.hide-for-large,tbody.show-for-large-down,tbody.hide-for-xlarge-only,tbody.hide-for-xlarge-up,tbody.hide-for-xlarge,tbody.show-for-xlarge-down,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up,tbody.hide-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.show-for-small-only,tr.show-for-small-up,tr.show-for-small,tr.show-for-small-down,tr.hide-for-medium-only,tr.hide-for-medium-up,tr.hide-for-medium,tr.show-for-medium-down,tr.hide-for-large-only,tr.hide-for-large-up,tr.hide-for-large,tr.show-for-large-down,tr.hide-for-xlarge-only,tr.hide-for-xlarge-up,tr.hide-for-xlarge,tr.show-for-xlarge-down,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up,tr.hide-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.show-for-small-only,td.show-for-small-only,th.show-for-small-up,td.show-for-small-up,th.show-for-small,td.show-for-small,th.show-for-small-down,td.show-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.hide-for-medium-up,td.hide-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.show-for-medium-down,td.show-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.hide-for-large-up,td.hide-for-large-up,th.hide-for-large,td.hide-for-large,th.show-for-large-down,td.show-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.hide-for-xlarge-up,td.hide-for-xlarge-up,th.hide-for-xlarge,td.hide-for-xlarge,th.show-for-xlarge-down,td.show-for-xlarge-down,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up,th.hide-for-xxlarge,td.hide-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}@media only screen and (min-width: 40.0625em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.show-for-medium-only,.show-for-medium-up,.show-for-medium,.show-for-medium-down,.hide-for-large-only,.hide-for-large-up,.hide-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.hide-for-medium-only,.hide-for-medium-up,.hide-for-medium,.hide-for-medium-down,.show-for-large-only,.show-for-large-up,.show-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.show-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.visible-for-medium-only,.visible-for-medium-up,.visible-for-medium,.visible-for-medium-down,.hidden-for-large-only,.hidden-for-large-up,.hidden-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.hidden-for-medium-only,.hidden-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.visible-for-large-only,.visible-for-large-up,.visible-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.hidden-for-xxlarge-down{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.show-for-medium-only,table.show-for-medium-up,table.show-for-medium,table.show-for-medium-down,table.hide-for-large-only,table.hide-for-large-up,table.hide-for-large,table.show-for-large-down,table.hide-for-xlarge-only,table.hide-for-xlarge-up,table.hide-for-xlarge,table.show-for-xlarge-down,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up,table.hide-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.show-for-medium-only,thead.show-for-medium-up,thead.show-for-medium,thead.show-for-medium-down,thead.hide-for-large-only,thead.hide-for-large-up,thead.hide-for-large,thead.show-for-large-down,thead.hide-for-xlarge-only,thead.hide-for-xlarge-up,thead.hide-for-xlarge,thead.show-for-xlarge-down,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up,thead.hide-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.show-for-medium-only,tbody.show-for-medium-up,tbody.show-for-medium,tbody.show-for-medium-down,tbody.hide-for-large-only,tbody.hide-for-large-up,tbody.hide-for-large,tbody.show-for-large-down,tbody.hide-for-xlarge-only,tbody.hide-for-xlarge-up,tbody.hide-for-xlarge,tbody.show-for-xlarge-down,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up,tbody.hide-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.show-for-medium-only,tr.show-for-medium-up,tr.show-for-medium,tr.show-for-medium-down,tr.hide-for-large-only,tr.hide-for-large-up,tr.hide-for-large,tr.show-for-large-down,tr.hide-for-xlarge-only,tr.hide-for-xlarge-up,tr.hide-for-xlarge,tr.show-for-xlarge-down,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up,tr.hide-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.show-for-medium-only,td.show-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.show-for-medium,td.show-for-medium,th.show-for-medium-down,td.show-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.hide-for-large-up,td.hide-for-large-up,th.hide-for-large,td.hide-for-large,th.show-for-large-down,td.show-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.hide-for-xlarge-up,td.hide-for-xlarge-up,th.hide-for-xlarge,td.hide-for-xlarge,th.show-for-xlarge-down,td.show-for-xlarge-down,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up,th.hide-for-xxlarge,td.hide-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}@media only screen and (min-width: 64.0625em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.hide-for-medium-only,.show-for-medium-up,.hide-for-medium,.hide-for-medium-down,.show-for-large-only,.show-for-large-up,.show-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.show-for-medium-only,.hide-for-medium-up,.show-for-medium,.show-for-medium-down,.hide-for-large-only,.hide-for-large-up,.hide-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.show-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.hidden-for-medium-only,.visible-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.visible-for-large-only,.visible-for-large-up,.visible-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.visible-for-medium-only,.hidden-for-medium-up,.visible-for-medium,.visible-for-medium-down,.hidden-for-large-only,.hidden-for-large-up,.hidden-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.hidden-for-xxlarge-down{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.hide-for-medium-only,table.show-for-medium-up,table.hide-for-medium,table.hide-for-medium-down,table.show-for-large-only,table.show-for-large-up,table.show-for-large,table.show-for-large-down,table.hide-for-xlarge-only,table.hide-for-xlarge-up,table.hide-for-xlarge,table.show-for-xlarge-down,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up,table.hide-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.hide-for-medium-only,thead.show-for-medium-up,thead.hide-for-medium,thead.hide-for-medium-down,thead.show-for-large-only,thead.show-for-large-up,thead.show-for-large,thead.show-for-large-down,thead.hide-for-xlarge-only,thead.hide-for-xlarge-up,thead.hide-for-xlarge,thead.show-for-xlarge-down,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up,thead.hide-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.hide-for-medium-only,tbody.show-for-medium-up,tbody.hide-for-medium,tbody.hide-for-medium-down,tbody.show-for-large-only,tbody.show-for-large-up,tbody.show-for-large,tbody.show-for-large-down,tbody.hide-for-xlarge-only,tbody.hide-for-xlarge-up,tbody.hide-for-xlarge,tbody.show-for-xlarge-down,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up,tbody.hide-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.hide-for-medium-only,tr.show-for-medium-up,tr.hide-for-medium,tr.hide-for-medium-down,tr.show-for-large-only,tr.show-for-large-up,tr.show-for-large,tr.show-for-large-down,tr.hide-for-xlarge-only,tr.hide-for-xlarge-up,tr.hide-for-xlarge,tr.show-for-xlarge-down,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up,tr.hide-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.hide-for-medium-down,td.hide-for-medium-down,th.show-for-large-only,td.show-for-large-only,th.show-for-large-up,td.show-for-large-up,th.show-for-large,td.show-for-large,th.show-for-large-down,td.show-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.hide-for-xlarge-up,td.hide-for-xlarge-up,th.hide-for-xlarge,td.hide-for-xlarge,th.show-for-xlarge-down,td.show-for-xlarge-down,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up,th.hide-for-xxlarge,td.hide-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}@media only screen and (min-width: 90.0625em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.hide-for-medium-only,.show-for-medium-up,.hide-for-medium,.hide-for-medium-down,.hide-for-large-only,.show-for-large-up,.hide-for-large,.hide-for-large-down,.show-for-xlarge-only,.show-for-xlarge-up,.show-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.show-for-medium-only,.hide-for-medium-up,.show-for-medium,.show-for-medium-down,.show-for-large-only,.hide-for-large-up,.show-for-large,.show-for-large-down,.hide-for-xlarge-only,.hide-for-xlarge-up,.hide-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.hidden-for-medium-only,.visible-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.hidden-for-large-only,.visible-for-large-up,.hidden-for-large,.hidden-for-large-down,.visible-for-xlarge-only,.visible-for-xlarge-up,.visible-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.visible-for-medium-only,.hidden-for-medium-up,.visible-for-medium,.visible-for-medium-down,.visible-for-large-only,.hidden-for-large-up,.visible-for-large,.visible-for-large-down,.hidden-for-xlarge-only,.hidden-for-xlarge-up,.hidden-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.hidden-for-xxlarge-down{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.hide-for-medium-only,table.show-for-medium-up,table.hide-for-medium,table.hide-for-medium-down,table.hide-for-large-only,table.show-for-large-up,table.hide-for-large,table.hide-for-large-down,table.show-for-xlarge-only,table.show-for-xlarge-up,table.show-for-xlarge,table.show-for-xlarge-down,table.hide-for-xxlarge-only,table.hide-for-xxlarge-up,table.hide-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.hide-for-medium-only,thead.show-for-medium-up,thead.hide-for-medium,thead.hide-for-medium-down,thead.hide-for-large-only,thead.show-for-large-up,thead.hide-for-large,thead.hide-for-large-down,thead.show-for-xlarge-only,thead.show-for-xlarge-up,thead.show-for-xlarge,thead.show-for-xlarge-down,thead.hide-for-xxlarge-only,thead.hide-for-xxlarge-up,thead.hide-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.hide-for-medium-only,tbody.show-for-medium-up,tbody.hide-for-medium,tbody.hide-for-medium-down,tbody.hide-for-large-only,tbody.show-for-large-up,tbody.hide-for-large,tbody.hide-for-large-down,tbody.show-for-xlarge-only,tbody.show-for-xlarge-up,tbody.show-for-xlarge,tbody.show-for-xlarge-down,tbody.hide-for-xxlarge-only,tbody.hide-for-xxlarge-up,tbody.hide-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.hide-for-medium-only,tr.show-for-medium-up,tr.hide-for-medium,tr.hide-for-medium-down,tr.hide-for-large-only,tr.show-for-large-up,tr.hide-for-large,tr.hide-for-large-down,tr.show-for-xlarge-only,tr.show-for-xlarge-up,tr.show-for-xlarge,tr.show-for-xlarge-down,tr.hide-for-xxlarge-only,tr.hide-for-xxlarge-up,tr.hide-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.hide-for-medium-down,td.hide-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.show-for-large-up,td.show-for-large-up,th.hide-for-large,td.hide-for-large,th.hide-for-large-down,td.hide-for-large-down,th.show-for-xlarge-only,td.show-for-xlarge-only,th.show-for-xlarge-up,td.show-for-xlarge-up,th.show-for-xlarge,td.show-for-xlarge,th.show-for-xlarge-down,td.show-for-xlarge-down,th.hide-for-xxlarge-only,td.hide-for-xxlarge-only,th.hide-for-xxlarge-up,td.hide-for-xxlarge-up,th.hide-for-xxlarge,td.hide-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-down{display:table-cell !important}}@media only screen and (min-width: 120.0625em){.hide-for-small-only,.show-for-small-up,.hide-for-small,.hide-for-small-down,.hide-for-medium-only,.show-for-medium-up,.hide-for-medium,.hide-for-medium-down,.hide-for-large-only,.show-for-large-up,.hide-for-large,.hide-for-large-down,.hide-for-xlarge-only,.show-for-xlarge-up,.hide-for-xlarge,.hide-for-xlarge-down,.show-for-xxlarge-only,.show-for-xxlarge-up,.show-for-xxlarge,.show-for-xxlarge-down{display:inherit !important}.show-for-small-only,.hide-for-small-up,.show-for-small,.show-for-small-down,.show-for-medium-only,.hide-for-medium-up,.show-for-medium,.show-for-medium-down,.show-for-large-only,.hide-for-large-up,.show-for-large,.show-for-large-down,.show-for-xlarge-only,.hide-for-xlarge-up,.show-for-xlarge,.show-for-xlarge-down,.hide-for-xxlarge-only,.hide-for-xxlarge-up,.hide-for-xxlarge,.hide-for-xxlarge-down{display:none !important}.hidden-for-small-only,.visible-for-small-up,.hidden-for-small,.hidden-for-small-down,.hidden-for-medium-only,.visible-for-medium-up,.hidden-for-medium,.hidden-for-medium-down,.hidden-for-large-only,.visible-for-large-up,.hidden-for-large,.hidden-for-large-down,.hidden-for-xlarge-only,.visible-for-xlarge-up,.hidden-for-xlarge,.hidden-for-xlarge-down,.visible-for-xxlarge-only,.visible-for-xxlarge-up,.visible-for-xxlarge,.visible-for-xxlarge-down{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.visible-for-small-only,.hidden-for-small-up,.visible-for-small,.visible-for-small-down,.visible-for-medium-only,.hidden-for-medium-up,.visible-for-medium,.visible-for-medium-down,.visible-for-large-only,.hidden-for-large-up,.visible-for-large,.visible-for-large-down,.visible-for-xlarge-only,.hidden-for-xlarge-up,.visible-for-xlarge,.visible-for-xlarge-down,.hidden-for-xxlarge-only,.hidden-for-xxlarge-up,.hidden-for-xxlarge,.hidden-for-xxlarge-down{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}table.hide-for-small-only,table.show-for-small-up,table.hide-for-small,table.hide-for-small-down,table.hide-for-medium-only,table.show-for-medium-up,table.hide-for-medium,table.hide-for-medium-down,table.hide-for-large-only,table.show-for-large-up,table.hide-for-large,table.hide-for-large-down,table.hide-for-xlarge-only,table.show-for-xlarge-up,table.hide-for-xlarge,table.hide-for-xlarge-down,table.show-for-xxlarge-only,table.show-for-xxlarge-up,table.show-for-xxlarge,table.show-for-xxlarge-down{display:table !important}thead.hide-for-small-only,thead.show-for-small-up,thead.hide-for-small,thead.hide-for-small-down,thead.hide-for-medium-only,thead.show-for-medium-up,thead.hide-for-medium,thead.hide-for-medium-down,thead.hide-for-large-only,thead.show-for-large-up,thead.hide-for-large,thead.hide-for-large-down,thead.hide-for-xlarge-only,thead.show-for-xlarge-up,thead.hide-for-xlarge,thead.hide-for-xlarge-down,thead.show-for-xxlarge-only,thead.show-for-xxlarge-up,thead.show-for-xxlarge,thead.show-for-xxlarge-down{display:table-header-group !important}tbody.hide-for-small-only,tbody.show-for-small-up,tbody.hide-for-small,tbody.hide-for-small-down,tbody.hide-for-medium-only,tbody.show-for-medium-up,tbody.hide-for-medium,tbody.hide-for-medium-down,tbody.hide-for-large-only,tbody.show-for-large-up,tbody.hide-for-large,tbody.hide-for-large-down,tbody.hide-for-xlarge-only,tbody.show-for-xlarge-up,tbody.hide-for-xlarge,tbody.hide-for-xlarge-down,tbody.show-for-xxlarge-only,tbody.show-for-xxlarge-up,tbody.show-for-xxlarge,tbody.show-for-xxlarge-down{display:table-row-group !important}tr.hide-for-small-only,tr.show-for-small-up,tr.hide-for-small,tr.hide-for-small-down,tr.hide-for-medium-only,tr.show-for-medium-up,tr.hide-for-medium,tr.hide-for-medium-down,tr.hide-for-large-only,tr.show-for-large-up,tr.hide-for-large,tr.hide-for-large-down,tr.hide-for-xlarge-only,tr.show-for-xlarge-up,tr.hide-for-xlarge,tr.hide-for-xlarge-down,tr.show-for-xxlarge-only,tr.show-for-xxlarge-up,tr.show-for-xxlarge,tr.show-for-xxlarge-down{display:table-row}th.hide-for-small-only,td.hide-for-small-only,th.show-for-small-up,td.show-for-small-up,th.hide-for-small,td.hide-for-small,th.hide-for-small-down,td.hide-for-small-down,th.hide-for-medium-only,td.hide-for-medium-only,th.show-for-medium-up,td.show-for-medium-up,th.hide-for-medium,td.hide-for-medium,th.hide-for-medium-down,td.hide-for-medium-down,th.hide-for-large-only,td.hide-for-large-only,th.show-for-large-up,td.show-for-large-up,th.hide-for-large,td.hide-for-large,th.hide-for-large-down,td.hide-for-large-down,th.hide-for-xlarge-only,td.hide-for-xlarge-only,th.show-for-xlarge-up,td.show-for-xlarge-up,th.hide-for-xlarge,td.hide-for-xlarge,th.hide-for-xlarge-down,td.hide-for-xlarge-down,th.show-for-xxlarge-only,td.show-for-xxlarge-only,th.show-for-xxlarge-up,td.show-for-xxlarge-up,th.show-for-xxlarge,td.show-for-xxlarge,th.show-for-xxlarge-down,td.show-for-xxlarge-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 !important}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 !important}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 !important}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 !important}.touch table.show-for-touch{display:table !important}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}.show-for-sr{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}.show-on-focus{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}.show-on-focus:focus,.show-on-focus:active{position:static !important;height:auto;width:auto;overflow:visible;clip:auto}.print-only{display:none !important}@media print{*{background:transparent !important;box-shadow:none !important;color:#000 !important;text-shadow:none !important}.show-for-print{display:block}.hide-for-print{display:none}table.show-for-print{display:table !important}thead.show-for-print{display:table-header-group !important}tbody.show-for-print{display:table-row-group !important}tr.show-for-print{display:table-row !important}td.show-for-print{display:table-cell !important}th.show-for-print{display:table-cell !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:.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}}@media print{.show-for-print{display:block}.hide-for-print{display:none}table.show-for-print{display:table !important}thead.show-for-print{display:table-header-group !important}tbody.show-for-print{display:table-row-group !important}tr.show-for-print{display:table-row !important}td.show-for-print{display:table-cell !important}th.show-for-print{display:table-cell !important}}@media not print{.show-for-print{display:none !important}} diff --git a/library/foundation/js/foundation.min.js b/library/foundation/js/foundation.min.js new file mode 100644 index 000000000..ad62543be --- /dev/null +++ b/library/foundation/js/foundation.min.js @@ -0,0 +1,6376 @@ +/* + * Foundation Responsive Library + * http://foundation.zurb.com + * Copyright 2014, ZURB + * Free to use under the MIT license. + * http://www.opensource.org/licenses/mit-license.php +*/ + +(function ($, window, document, undefined) { + 'use strict'; + + var header_helpers = function (class_array) { + var i = class_array.length; + var head = $('head'); + + while (i--) { + if (head.has('.' + class_array[i]).length === 0) { + head.append('<meta class="' + class_array[i] + '" />'); + } + } + }; + + header_helpers([ + 'foundation-mq-small', + 'foundation-mq-small-only', + 'foundation-mq-medium', + 'foundation-mq-medium-only', + 'foundation-mq-large', + 'foundation-mq-large-only', + 'foundation-mq-xlarge', + 'foundation-mq-xlarge-only', + 'foundation-mq-xxlarge', + 'foundation-data-attribute-namespace']); + + // Enable FastClick if present + + $(function () { + if (typeof FastClick !== 'undefined') { + // Don't attach to body if undefined + if (typeof document.body !== 'undefined') { + FastClick.attach(document.body); + } + } + }); + + // private Fast Selector wrapper, + // returns jQuery object. Only use where + // getElementById is not available. + var S = function (selector, context) { + if (typeof selector === 'string') { + if (context) { + var cont; + if (context.jquery) { + cont = context[0]; + if (!cont) { + return context; + } + } else { + cont = context; + } + return $(cont.querySelectorAll(selector)); + } + + return $(document.querySelectorAll(selector)); + } + + return $(selector, context); + }; + + // Namespace functions. + + var attr_name = function (init) { + var arr = []; + if (!init) { + arr.push('data'); + } + if (this.namespace.length > 0) { + arr.push(this.namespace); + } + arr.push(this.name); + + return arr.join('-'); + }; + + var add_namespace = function (str) { + var parts = str.split('-'), + i = parts.length, + arr = []; + + while (i--) { + if (i !== 0) { + arr.push(parts[i]); + } else { + if (this.namespace.length > 0) { + arr.push(this.namespace, parts[i]); + } else { + arr.push(parts[i]); + } + } + } + + return arr.reverse().join('-'); + }; + + // Event binding and data-options updating. + + var bindings = function (method, options) { + var self = this, + bind = function(){ + var $this = S(this), + should_bind_events = !$this.data(self.attr_name(true) + '-init'); + $this.data(self.attr_name(true) + '-init', $.extend({}, self.settings, (options || method), self.data_options($this))); + + if (should_bind_events) { + self.events(this); + } + }; + + if (S(this.scope).is('[' + this.attr_name() +']')) { + bind.call(this.scope); + } else { + S('[' + this.attr_name() +']', this.scope).each(bind); + } + // # Patch to fix #5043 to move this *after* the if/else clause in order for Backbone and similar frameworks to have improved control over event binding and data-options updating. + if (typeof method === 'string') { + return this[method].call(this, options); + } + + }; + + var single_image_loaded = function (image, callback) { + function loaded () { + callback(image[0]); + } + + function bindLoad () { + this.one('load', loaded); + + if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { + var src = this.attr( 'src' ), + param = src.match( /\?/ ) ? '&' : '?'; + + param += 'random=' + (new Date()).getTime(); + this.attr('src', src + param); + } + } + + if (!image.attr('src')) { + loaded(); + return; + } + + if (image[0].complete || image[0].readyState === 4) { + loaded(); + } else { + bindLoad.call(image); + } + }; + + /*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license */ + + window.matchMedia || (window.matchMedia = function() { + "use strict"; + + // For browsers that support matchMedium api such as IE 9 and webkit + var styleMedia = (window.styleMedia || window.media); + + // For those that don't support matchMedium + if (!styleMedia) { + var style = document.createElement('style'), + script = document.getElementsByTagName('script')[0], + info = null; + + style.type = 'text/css'; + style.id = 'matchmediajs-test'; + + script.parentNode.insertBefore(style, script); + + // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers + info = ('getComputedStyle' in window) && window.getComputedStyle(style, null) || style.currentStyle; + + styleMedia = { + matchMedium: function(media) { + var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }'; + + // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers + if (style.styleSheet) { + style.styleSheet.cssText = text; + } else { + style.textContent = text; + } + + // Test if media query is true or false + return info.width === '1px'; + } + }; + } + + return function(media) { + return { + matches: styleMedia.matchMedium(media || 'all'), + media: media || 'all' + }; + }; + }()); + + /* + * jquery.requestAnimationFrame + * https://github.com/gnarf37/jquery-requestAnimationFrame + * Requires jQuery 1.8+ + * + * Copyright (c) 2012 Corey Frang + * Licensed under the MIT license. + */ + + (function(jQuery) { + + + // requestAnimationFrame polyfill adapted from Erik Möller + // fixes from Paul Irish and Tino Zijdel + // http://paulirish.com/2011/requestanimationframe-for-smart-animating/ + // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating + + var animating, + lastTime = 0, + vendors = ['webkit', 'moz'], + requestAnimationFrame = window.requestAnimationFrame, + cancelAnimationFrame = window.cancelAnimationFrame, + jqueryFxAvailable = 'undefined' !== typeof jQuery.fx; + + for (; lastTime < vendors.length && !requestAnimationFrame; lastTime++) { + requestAnimationFrame = window[ vendors[lastTime] + 'RequestAnimationFrame' ]; + cancelAnimationFrame = cancelAnimationFrame || + window[ vendors[lastTime] + 'CancelAnimationFrame' ] || + window[ vendors[lastTime] + 'CancelRequestAnimationFrame' ]; + } + + function raf() { + if (animating) { + requestAnimationFrame(raf); + + if (jqueryFxAvailable) { + jQuery.fx.tick(); + } + } + } + + if (requestAnimationFrame) { + // use rAF + window.requestAnimationFrame = requestAnimationFrame; + window.cancelAnimationFrame = cancelAnimationFrame; + + if (jqueryFxAvailable) { + jQuery.fx.timer = function (timer) { + if (timer() && jQuery.timers.push(timer) && !animating) { + animating = true; + raf(); + } + }; + + jQuery.fx.stop = function () { + animating = false; + }; + } + } else { + // polyfill + window.requestAnimationFrame = function (callback) { + var currTime = new Date().getTime(), + timeToCall = Math.max(0, 16 - (currTime - lastTime)), + id = window.setTimeout(function () { + callback(currTime + timeToCall); + }, timeToCall); + lastTime = currTime + timeToCall; + return id; + }; + + window.cancelAnimationFrame = function (id) { + clearTimeout(id); + }; + + } + + }( $ )); + + function removeQuotes (string) { + if (typeof string === 'string' || string instanceof String) { + string = string.replace(/^['\\/"]+|(;\s?})+|['\\/"]+$/g, ''); + } + + return string; + } + + window.Foundation = { + name : 'Foundation', + + version : '5.5.2', + + media_queries : { + 'small' : S('.foundation-mq-small').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'small-only' : S('.foundation-mq-small-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'medium' : S('.foundation-mq-medium').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'medium-only' : S('.foundation-mq-medium-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'large' : S('.foundation-mq-large').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'large-only' : S('.foundation-mq-large-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'xlarge' : S('.foundation-mq-xlarge').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'xlarge-only' : S('.foundation-mq-xlarge-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'xxlarge' : S('.foundation-mq-xxlarge').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, '') + }, + + stylesheet : $('<style></style>').appendTo('head')[0].sheet, + + global : { + namespace : undefined + }, + + init : function (scope, libraries, method, options, response) { + var args = [scope, method, options, response], + responses = []; + + // check RTL + this.rtl = /rtl/i.test(S('html').attr('dir')); + + // set foundation global scope + this.scope = scope || this.scope; + + this.set_namespace(); + + if (libraries && typeof libraries === 'string' && !/reflow/i.test(libraries)) { + if (this.libs.hasOwnProperty(libraries)) { + responses.push(this.init_lib(libraries, args)); + } + } else { + for (var lib in this.libs) { + responses.push(this.init_lib(lib, libraries)); + } + } + + S(window).load(function () { + S(window) + .trigger('resize.fndtn.clearing') + .trigger('resize.fndtn.dropdown') + .trigger('resize.fndtn.equalizer') + .trigger('resize.fndtn.interchange') + .trigger('resize.fndtn.joyride') + .trigger('resize.fndtn.magellan') + .trigger('resize.fndtn.topbar') + .trigger('resize.fndtn.slider'); + }); + + return scope; + }, + + init_lib : function (lib, args) { + if (this.libs.hasOwnProperty(lib)) { + this.patch(this.libs[lib]); + + if (args && args.hasOwnProperty(lib)) { + if (typeof this.libs[lib].settings !== 'undefined') { + $.extend(true, this.libs[lib].settings, args[lib]); + } else if (typeof this.libs[lib].defaults !== 'undefined') { + $.extend(true, this.libs[lib].defaults, args[lib]); + } + return this.libs[lib].init.apply(this.libs[lib], [this.scope, args[lib]]); + } + + args = args instanceof Array ? args : new Array(args); + return this.libs[lib].init.apply(this.libs[lib], args); + } + + return function () {}; + }, + + patch : function (lib) { + lib.scope = this.scope; + lib.namespace = this.global.namespace; + lib.rtl = this.rtl; + lib['data_options'] = this.utils.data_options; + lib['attr_name'] = attr_name; + lib['add_namespace'] = add_namespace; + lib['bindings'] = bindings; + lib['S'] = this.utils.S; + }, + + inherit : function (scope, methods) { + var methods_arr = methods.split(' '), + i = methods_arr.length; + + while (i--) { + if (this.utils.hasOwnProperty(methods_arr[i])) { + scope[methods_arr[i]] = this.utils[methods_arr[i]]; + } + } + }, + + set_namespace : function () { + + // Description: + // Don't bother reading the namespace out of the meta tag + // if the namespace has been set globally in javascript + // + // Example: + // Foundation.global.namespace = 'my-namespace'; + // or make it an empty string: + // Foundation.global.namespace = ''; + // + // + + // If the namespace has not been set (is undefined), try to read it out of the meta element. + // Otherwise use the globally defined namespace, even if it's empty ('') + var namespace = ( this.global.namespace === undefined ) ? $('.foundation-data-attribute-namespace').css('font-family') : this.global.namespace; + + // Finally, if the namsepace is either undefined or false, set it to an empty string. + // Otherwise use the namespace value. + this.global.namespace = ( namespace === undefined || /false/i.test(namespace) ) ? '' : namespace; + }, + + libs : {}, + + // methods that can be inherited in libraries + utils : { + + // Description: + // Fast Selector wrapper returns jQuery object. Only use where getElementById + // is not available. + // + // Arguments: + // Selector (String): CSS selector describing the element(s) to be + // returned as a jQuery object. + // + // Scope (String): CSS selector describing the area to be searched. Default + // is document. + // + // Returns: + // Element (jQuery Object): jQuery object containing elements matching the + // selector within the scope. + S : S, + + // Description: + // Executes a function a max of once every n milliseconds + // + // Arguments: + // Func (Function): Function to be throttled. + // + // Delay (Integer): Function execution threshold in milliseconds. + // + // Returns: + // Lazy_function (Function): Function with throttling applied. + throttle : function (func, delay) { + var timer = null; + + return function () { + var context = this, args = arguments; + + if (timer == null) { + timer = setTimeout(function () { + func.apply(context, args); + timer = null; + }, delay); + } + }; + }, + + // Description: + // Executes a function when it stops being invoked for n seconds + // Modified version of _.debounce() http://underscorejs.org + // + // Arguments: + // Func (Function): Function to be debounced. + // + // Delay (Integer): Function execution threshold in milliseconds. + // + // Immediate (Bool): Whether the function should be called at the beginning + // of the delay instead of the end. Default is false. + // + // Returns: + // Lazy_function (Function): Function with debouncing applied. + debounce : function (func, delay, immediate) { + var timeout, result; + return function () { + var context = this, args = arguments; + var later = function () { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + } + }; + var callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, delay); + if (callNow) { + result = func.apply(context, args); + } + return result; + }; + }, + + // Description: + // Parses data-options attribute + // + // Arguments: + // El (jQuery Object): Element to be parsed. + // + // Returns: + // Options (Javascript Object): Contents of the element's data-options + // attribute. + data_options : function (el, data_attr_name) { + data_attr_name = data_attr_name || 'options'; + var opts = {}, ii, p, opts_arr, + data_options = function (el) { + var namespace = Foundation.global.namespace; + + if (namespace.length > 0) { + return el.data(namespace + '-' + data_attr_name); + } + + return el.data(data_attr_name); + }; + + var cached_options = data_options(el); + + if (typeof cached_options === 'object') { + return cached_options; + } + + opts_arr = (cached_options || ':').split(';'); + ii = opts_arr.length; + + function isNumber (o) { + return !isNaN (o - 0) && o !== null && o !== '' && o !== false && o !== true; + } + + function trim (str) { + if (typeof str === 'string') { + return $.trim(str); + } + return str; + } + + while (ii--) { + p = opts_arr[ii].split(':'); + p = [p[0], p.slice(1).join(':')]; + + if (/true/i.test(p[1])) { + p[1] = true; + } + if (/false/i.test(p[1])) { + p[1] = false; + } + if (isNumber(p[1])) { + if (p[1].indexOf('.') === -1) { + p[1] = parseInt(p[1], 10); + } else { + p[1] = parseFloat(p[1]); + } + } + + if (p.length === 2 && p[0].length > 0) { + opts[trim(p[0])] = trim(p[1]); + } + } + + return opts; + }, + + // Description: + // Adds JS-recognizable media queries + // + // Arguments: + // Media (String): Key string for the media query to be stored as in + // Foundation.media_queries + // + // Class (String): Class name for the generated <meta> tag + register_media : function (media, media_class) { + if (Foundation.media_queries[media] === undefined) { + $('head').append('<meta class="' + media_class + '"/>'); + Foundation.media_queries[media] = removeQuotes($('.' + media_class).css('font-family')); + } + }, + + // Description: + // Add custom CSS within a JS-defined media query + // + // Arguments: + // Rule (String): CSS rule to be appended to the document. + // + // Media (String): Optional media query string for the CSS rule to be + // nested under. + add_custom_rule : function (rule, media) { + if (media === undefined && Foundation.stylesheet) { + Foundation.stylesheet.insertRule(rule, Foundation.stylesheet.cssRules.length); + } else { + var query = Foundation.media_queries[media]; + + if (query !== undefined) { + Foundation.stylesheet.insertRule('@media ' + + Foundation.media_queries[media] + '{ ' + rule + ' }', Foundation.stylesheet.cssRules.length); + } + } + }, + + // Description: + // Performs a callback function when an image is fully loaded + // + // Arguments: + // Image (jQuery Object): Image(s) to check if loaded. + // + // Callback (Function): Function to execute when image is fully loaded. + image_loaded : function (images, callback) { + var self = this, + unloaded = images.length; + + function pictures_has_height(images) { + var pictures_number = images.length; + + for (var i = pictures_number - 1; i >= 0; i--) { + if(images.attr('height') === undefined) { + return false; + }; + }; + + return true; + } + + if (unloaded === 0 || pictures_has_height(images)) { + callback(images); + } + + images.each(function () { + single_image_loaded(self.S(this), function () { + unloaded -= 1; + if (unloaded === 0) { + callback(images); + } + }); + }); + }, + + // Description: + // Returns a random, alphanumeric string + // + // Arguments: + // Length (Integer): Length of string to be generated. Defaults to random + // integer. + // + // Returns: + // Rand (String): Pseudo-random, alphanumeric string. + random_str : function () { + if (!this.fidx) { + this.fidx = 0; + } + this.prefix = this.prefix || [(this.name || 'F'), (+new Date).toString(36)].join('-'); + + return this.prefix + (this.fidx++).toString(36); + }, + + // Description: + // Helper for window.matchMedia + // + // Arguments: + // mq (String): Media query + // + // Returns: + // (Boolean): Whether the media query passes or not + match : function (mq) { + return window.matchMedia(mq).matches; + }, + + // Description: + // Helpers for checking Foundation default media queries with JS + // + // Returns: + // (Boolean): Whether the media query passes or not + + is_small_up : function () { + return this.match(Foundation.media_queries.small); + }, + + is_medium_up : function () { + return this.match(Foundation.media_queries.medium); + }, + + is_large_up : function () { + return this.match(Foundation.media_queries.large); + }, + + is_xlarge_up : function () { + return this.match(Foundation.media_queries.xlarge); + }, + + is_xxlarge_up : function () { + return this.match(Foundation.media_queries.xxlarge); + }, + + is_small_only : function () { + return !this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up(); + }, + + is_medium_only : function () { + return this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up(); + }, + + is_large_only : function () { + return this.is_medium_up() && this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up(); + }, + + is_xlarge_only : function () { + return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && !this.is_xxlarge_up(); + }, + + is_xxlarge_only : function () { + return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && this.is_xxlarge_up(); + } + } + }; + + $.fn.foundation = function () { + var args = Array.prototype.slice.call(arguments, 0); + + return this.each(function () { + Foundation.init.apply(Foundation, [this].concat(args)); + return this; + }); + }; + +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.slider = { + name : 'slider', + + version : '5.5.2', + + settings : { + start : 0, + end : 100, + step : 1, + precision : null, + initial : null, + display_selector : '', + vertical : false, + trigger_input_change : false, + on_change : function () {} + }, + + cache : {}, + + init : function (scope, method, options) { + Foundation.inherit(this, 'throttle'); + this.bindings(method, options); + this.reflow(); + }, + + events : function () { + var self = this; + + $(this.scope) + .off('.slider') + .on('mousedown.fndtn.slider touchstart.fndtn.slider pointerdown.fndtn.slider', + '[' + self.attr_name() + ']:not(.disabled, [disabled]) .range-slider-handle', function (e) { + if (!self.cache.active) { + e.preventDefault(); + self.set_active_slider($(e.target)); + } + }) + .on('mousemove.fndtn.slider touchmove.fndtn.slider pointermove.fndtn.slider', function (e) { + if (!!self.cache.active) { + e.preventDefault(); + if ($.data(self.cache.active[0], 'settings').vertical) { + var scroll_offset = 0; + if (!e.pageY) { + scroll_offset = window.scrollY; + } + self.calculate_position(self.cache.active, self.get_cursor_position(e, 'y') + scroll_offset); + } else { + self.calculate_position(self.cache.active, self.get_cursor_position(e, 'x')); + } + } + }) + .on('mouseup.fndtn.slider touchend.fndtn.slider pointerup.fndtn.slider', function (e) { + self.remove_active_slider(); + }) + .on('change.fndtn.slider', function (e) { + self.settings.on_change(); + }); + + self.S(window) + .on('resize.fndtn.slider', self.throttle(function (e) { + self.reflow(); + }, 300)); + + // update slider value as users change input value + this.S('[' + this.attr_name() + ']').each(function () { + var slider = $(this), + handle = slider.children('.range-slider-handle')[0], + settings = self.initialize_settings(handle); + + if (settings.display_selector != '') { + $(settings.display_selector).each(function(){ + if (this.hasOwnProperty('value')) { + $(this).change(function(){ + // is there a better way to do this? + slider.foundation("slider", "set_value", $(this).val()); + }); + } + }); + } + }); + }, + + get_cursor_position : function (e, xy) { + var pageXY = 'page' + xy.toUpperCase(), + clientXY = 'client' + xy.toUpperCase(), + position; + + if (typeof e[pageXY] !== 'undefined') { + position = e[pageXY]; + } else if (typeof e.originalEvent[clientXY] !== 'undefined') { + position = e.originalEvent[clientXY]; + } else if (e.originalEvent.touches && e.originalEvent.touches[0] && typeof e.originalEvent.touches[0][clientXY] !== 'undefined') { + position = e.originalEvent.touches[0][clientXY]; + } else if (e.currentPoint && typeof e.currentPoint[xy] !== 'undefined') { + position = e.currentPoint[xy]; + } + + return position; + }, + + set_active_slider : function ($handle) { + this.cache.active = $handle; + }, + + remove_active_slider : function () { + this.cache.active = null; + }, + + calculate_position : function ($handle, cursor_x) { + var self = this, + settings = $.data($handle[0], 'settings'), + handle_l = $.data($handle[0], 'handle_l'), + handle_o = $.data($handle[0], 'handle_o'), + bar_l = $.data($handle[0], 'bar_l'), + bar_o = $.data($handle[0], 'bar_o'); + + requestAnimationFrame(function () { + var pct; + + if (Foundation.rtl && !settings.vertical) { + pct = self.limit_to(((bar_o + bar_l - cursor_x) / bar_l), 0, 1); + } else { + pct = self.limit_to(((cursor_x - bar_o) / bar_l), 0, 1); + } + + pct = settings.vertical ? 1 - pct : pct; + + var norm = self.normalized_value(pct, settings.start, settings.end, settings.step, settings.precision); + + self.set_ui($handle, norm); + }); + }, + + set_ui : function ($handle, value) { + var settings = $.data($handle[0], 'settings'), + handle_l = $.data($handle[0], 'handle_l'), + bar_l = $.data($handle[0], 'bar_l'), + norm_pct = this.normalized_percentage(value, settings.start, settings.end), + handle_offset = norm_pct * (bar_l - handle_l) - 1, + progress_bar_length = norm_pct * 100, + $handle_parent = $handle.parent(), + $hidden_inputs = $handle.parent().children('input[type=hidden]'); + + if (Foundation.rtl && !settings.vertical) { + handle_offset = -handle_offset; + } + + handle_offset = settings.vertical ? -handle_offset + bar_l - handle_l + 1 : handle_offset; + this.set_translate($handle, handle_offset, settings.vertical); + + if (settings.vertical) { + $handle.siblings('.range-slider-active-segment').css('height', progress_bar_length + '%'); + } else { + $handle.siblings('.range-slider-active-segment').css('width', progress_bar_length + '%'); + } + + $handle_parent.attr(this.attr_name(), value).trigger('change.fndtn.slider'); + + $hidden_inputs.val(value); + if (settings.trigger_input_change) { + $hidden_inputs.trigger('change.fndtn.slider'); + } + + if (!$handle[0].hasAttribute('aria-valuemin')) { + $handle.attr({ + 'aria-valuemin' : settings.start, + 'aria-valuemax' : settings.end + }); + } + $handle.attr('aria-valuenow', value); + + if (settings.display_selector != '') { + $(settings.display_selector).each(function () { + if (this.hasAttribute('value')) { + $(this).val(value); + } else { + $(this).text(value); + } + }); + } + + }, + + normalized_percentage : function (val, start, end) { + return Math.min(1, (val - start) / (end - start)); + }, + + normalized_value : function (val, start, end, step, precision) { + var range = end - start, + point = val * range, + mod = (point - (point % step)) / step, + rem = point % step, + round = ( rem >= step * 0.5 ? step : 0); + return ((mod * step + round) + start).toFixed(precision); + }, + + set_translate : function (ele, offset, vertical) { + if (vertical) { + $(ele) + .css('-webkit-transform', 'translateY(' + offset + 'px)') + .css('-moz-transform', 'translateY(' + offset + 'px)') + .css('-ms-transform', 'translateY(' + offset + 'px)') + .css('-o-transform', 'translateY(' + offset + 'px)') + .css('transform', 'translateY(' + offset + 'px)'); + } else { + $(ele) + .css('-webkit-transform', 'translateX(' + offset + 'px)') + .css('-moz-transform', 'translateX(' + offset + 'px)') + .css('-ms-transform', 'translateX(' + offset + 'px)') + .css('-o-transform', 'translateX(' + offset + 'px)') + .css('transform', 'translateX(' + offset + 'px)'); + } + }, + + limit_to : function (val, min, max) { + return Math.min(Math.max(val, min), max); + }, + + initialize_settings : function (handle) { + var settings = $.extend({}, this.settings, this.data_options($(handle).parent())), + decimal_places_match_result; + + if (settings.precision === null) { + decimal_places_match_result = ('' + settings.step).match(/\.([\d]*)/); + settings.precision = decimal_places_match_result && decimal_places_match_result[1] ? decimal_places_match_result[1].length : 0; + } + + if (settings.vertical) { + $.data(handle, 'bar_o', $(handle).parent().offset().top); + $.data(handle, 'bar_l', $(handle).parent().outerHeight()); + $.data(handle, 'handle_o', $(handle).offset().top); + $.data(handle, 'handle_l', $(handle).outerHeight()); + } else { + $.data(handle, 'bar_o', $(handle).parent().offset().left); + $.data(handle, 'bar_l', $(handle).parent().outerWidth()); + $.data(handle, 'handle_o', $(handle).offset().left); + $.data(handle, 'handle_l', $(handle).outerWidth()); + } + + $.data(handle, 'bar', $(handle).parent()); + return $.data(handle, 'settings', settings); + }, + + set_initial_position : function ($ele) { + var settings = $.data($ele.children('.range-slider-handle')[0], 'settings'), + initial = ((typeof settings.initial == 'number' && !isNaN(settings.initial)) ? settings.initial : Math.floor((settings.end - settings.start) * 0.5 / settings.step) * settings.step + settings.start), + $handle = $ele.children('.range-slider-handle'); + this.set_ui($handle, initial); + }, + + set_value : function (value) { + var self = this; + $('[' + self.attr_name() + ']', this.scope).each(function () { + $(this).attr(self.attr_name(), value); + }); + if (!!$(this.scope).attr(self.attr_name())) { + $(this.scope).attr(self.attr_name(), value); + } + self.reflow(); + }, + + reflow : function () { + var self = this; + self.S('[' + this.attr_name() + ']').each(function () { + var handle = $(this).children('.range-slider-handle')[0], + val = $(this).attr(self.attr_name()); + self.initialize_settings(handle); + + if (val) { + self.set_ui($(handle), parseFloat(val)); + } else { + self.set_initial_position($(this)); + } + }); + } + }; + +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + var Modernizr = Modernizr || false; + + Foundation.libs.joyride = { + name : 'joyride', + + version : '5.5.2', + + defaults : { + expose : false, // turn on or off the expose feature + modal : true, // Whether to cover page with modal during the tour + keyboard : true, // enable left, right and esc keystrokes + tip_location : 'bottom', // 'top' or 'bottom' in relation to parent + nub_position : 'auto', // override on a per tooltip bases + scroll_speed : 1500, // Page scrolling speed in milliseconds, 0 = no scroll animation + scroll_animation : 'linear', // supports 'swing' and 'linear', extend with jQuery UI. + timer : 0, // 0 = no timer , all other numbers = timer in milliseconds + start_timer_on_click : true, // true or false - true requires clicking the first button start the timer + start_offset : 0, // the index of the tooltip you want to start on (index of the li) + next_button : true, // true or false to control whether a next button is used + prev_button : true, // true or false to control whether a prev button is used + tip_animation : 'fade', // 'pop' or 'fade' in each tip + pause_after : [], // array of indexes where to pause the tour after + exposed : [], // array of expose elements + tip_animation_fade_speed : 300, // when tipAnimation = 'fade' this is speed in milliseconds for the transition + cookie_monster : false, // true or false to control whether cookies are used + cookie_name : 'joyride', // Name the cookie you'll use + cookie_domain : false, // Will this cookie be attached to a domain, ie. '.notableapp.com' + cookie_expires : 365, // set when you would like the cookie to expire. + tip_container : 'body', // Where will the tip be attached + abort_on_close : true, // When true, the close event will not fire any callback + tip_location_patterns : { + top : ['bottom'], + bottom : [], // bottom should not need to be repositioned + left : ['right', 'top', 'bottom'], + right : ['left', 'top', 'bottom'] + }, + post_ride_callback : function () {}, // A method to call once the tour closes (canceled or complete) + post_step_callback : function () {}, // A method to call after each step + pre_step_callback : function () {}, // A method to call before each step + pre_ride_callback : function () {}, // A method to call before the tour starts (passed index, tip, and cloned exposed element) + post_expose_callback : function () {}, // A method to call after an element has been exposed + template : { // HTML segments for tip layout + link : '<a href="#close" class="joyride-close-tip">×</a>', + timer : '<div class="joyride-timer-indicator-wrap"><span class="joyride-timer-indicator"></span></div>', + tip : '<div class="joyride-tip-guide"><span class="joyride-nub"></span></div>', + wrapper : '<div class="joyride-content-wrapper"></div>', + button : '<a href="#" class="small button joyride-next-tip"></a>', + prev_button : '<a href="#" class="small button joyride-prev-tip"></a>', + modal : '<div class="joyride-modal-bg"></div>', + expose : '<div class="joyride-expose-wrapper"></div>', + expose_cover : '<div class="joyride-expose-cover"></div>' + }, + expose_add_class : '' // One or more space-separated class names to be added to exposed element + }, + + init : function (scope, method, options) { + Foundation.inherit(this, 'throttle random_str'); + + this.settings = this.settings || $.extend({}, this.defaults, (options || method)); + + this.bindings(method, options) + }, + + go_next : function () { + if (this.settings.$li.next().length < 1) { + this.end(); + } else if (this.settings.timer > 0) { + clearTimeout(this.settings.automate); + this.hide(); + this.show(); + this.startTimer(); + } else { + this.hide(); + this.show(); + } + }, + + go_prev : function () { + if (this.settings.$li.prev().length < 1) { + // Do nothing if there are no prev element + } else if (this.settings.timer > 0) { + clearTimeout(this.settings.automate); + this.hide(); + this.show(null, true); + this.startTimer(); + } else { + this.hide(); + this.show(null, true); + } + }, + + events : function () { + var self = this; + + $(this.scope) + .off('.joyride') + .on('click.fndtn.joyride', '.joyride-next-tip, .joyride-modal-bg', function (e) { + e.preventDefault(); + this.go_next() + }.bind(this)) + .on('click.fndtn.joyride', '.joyride-prev-tip', function (e) { + e.preventDefault(); + this.go_prev(); + }.bind(this)) + + .on('click.fndtn.joyride', '.joyride-close-tip', function (e) { + e.preventDefault(); + this.end(this.settings.abort_on_close); + }.bind(this)) + + .on('keyup.fndtn.joyride', function (e) { + // Don't do anything if keystrokes are disabled + // or if the joyride is not being shown + if (!this.settings.keyboard || !this.settings.riding) { + return; + } + + switch (e.which) { + case 39: // right arrow + e.preventDefault(); + this.go_next(); + break; + case 37: // left arrow + e.preventDefault(); + this.go_prev(); + break; + case 27: // escape + e.preventDefault(); + this.end(this.settings.abort_on_close); + } + }.bind(this)); + + $(window) + .off('.joyride') + .on('resize.fndtn.joyride', self.throttle(function () { + if ($('[' + self.attr_name() + ']').length > 0 && self.settings.$next_tip && self.settings.riding) { + if (self.settings.exposed.length > 0) { + var $els = $(self.settings.exposed); + + $els.each(function () { + var $this = $(this); + self.un_expose($this); + self.expose($this); + }); + } + + if (self.is_phone()) { + self.pos_phone(); + } else { + self.pos_default(false); + } + } + }, 100)); + }, + + start : function () { + var self = this, + $this = $('[' + this.attr_name() + ']', this.scope), + integer_settings = ['timer', 'scrollSpeed', 'startOffset', 'tipAnimationFadeSpeed', 'cookieExpires'], + int_settings_count = integer_settings.length; + + if (!$this.length > 0) { + return; + } + + if (!this.settings.init) { + this.events(); + } + + this.settings = $this.data(this.attr_name(true) + '-init'); + + // non configureable settings + this.settings.$content_el = $this; + this.settings.$body = $(this.settings.tip_container); + this.settings.body_offset = $(this.settings.tip_container).position(); + this.settings.$tip_content = this.settings.$content_el.find('> li'); + this.settings.paused = false; + this.settings.attempts = 0; + this.settings.riding = true; + + // can we create cookies? + if (typeof $.cookie !== 'function') { + this.settings.cookie_monster = false; + } + + // generate the tips and insert into dom. + if (!this.settings.cookie_monster || this.settings.cookie_monster && !$.cookie(this.settings.cookie_name)) { + this.settings.$tip_content.each(function (index) { + var $this = $(this); + this.settings = $.extend({}, self.defaults, self.data_options($this)); + + // Make sure that settings parsed from data_options are integers where necessary + var i = int_settings_count; + while (i--) { + self.settings[integer_settings[i]] = parseInt(self.settings[integer_settings[i]], 10); + } + self.create({$li : $this, index : index}); + }); + + // show first tip + if (!this.settings.start_timer_on_click && this.settings.timer > 0) { + this.show('init'); + this.startTimer(); + } else { + this.show('init'); + } + + } + }, + + resume : function () { + this.set_li(); + this.show(); + }, + + tip_template : function (opts) { + var $blank, content; + + opts.tip_class = opts.tip_class || ''; + + $blank = $(this.settings.template.tip).addClass(opts.tip_class); + content = $.trim($(opts.li).html()) + + this.prev_button_text(opts.prev_button_text, opts.index) + + this.button_text(opts.button_text) + + this.settings.template.link + + this.timer_instance(opts.index); + + $blank.append($(this.settings.template.wrapper)); + $blank.first().attr(this.add_namespace('data-index'), opts.index); + $('.joyride-content-wrapper', $blank).append(content); + + return $blank[0]; + }, + + timer_instance : function (index) { + var txt; + + if ((index === 0 && this.settings.start_timer_on_click && this.settings.timer > 0) || this.settings.timer === 0) { + txt = ''; + } else { + txt = $(this.settings.template.timer)[0].outerHTML; + } + return txt; + }, + + button_text : function (txt) { + if (this.settings.tip_settings.next_button) { + txt = $.trim(txt) || 'Next'; + txt = $(this.settings.template.button).append(txt)[0].outerHTML; + } else { + txt = ''; + } + return txt; + }, + + prev_button_text : function (txt, idx) { + if (this.settings.tip_settings.prev_button) { + txt = $.trim(txt) || 'Previous'; + + // Add the disabled class to the button if it's the first element + if (idx == 0) { + txt = $(this.settings.template.prev_button).append(txt).addClass('disabled')[0].outerHTML; + } else { + txt = $(this.settings.template.prev_button).append(txt)[0].outerHTML; + } + } else { + txt = ''; + } + return txt; + }, + + create : function (opts) { + this.settings.tip_settings = $.extend({}, this.settings, this.data_options(opts.$li)); + var buttonText = opts.$li.attr(this.add_namespace('data-button')) || opts.$li.attr(this.add_namespace('data-text')), + prevButtonText = opts.$li.attr(this.add_namespace('data-button-prev')) || opts.$li.attr(this.add_namespace('data-prev-text')), + tipClass = opts.$li.attr('class'), + $tip_content = $(this.tip_template({ + tip_class : tipClass, + index : opts.index, + button_text : buttonText, + prev_button_text : prevButtonText, + li : opts.$li + })); + + $(this.settings.tip_container).append($tip_content); + }, + + show : function (init, is_prev) { + var $timer = null; + + // are we paused? + if (this.settings.$li === undefined || ($.inArray(this.settings.$li.index(), this.settings.pause_after) === -1)) { + + // don't go to the next li if the tour was paused + if (this.settings.paused) { + this.settings.paused = false; + } else { + this.set_li(init, is_prev); + } + + this.settings.attempts = 0; + + if (this.settings.$li.length && this.settings.$target.length > 0) { + if (init) { //run when we first start + this.settings.pre_ride_callback(this.settings.$li.index(), this.settings.$next_tip); + if (this.settings.modal) { + this.show_modal(); + } + } + + this.settings.pre_step_callback(this.settings.$li.index(), this.settings.$next_tip); + + if (this.settings.modal && this.settings.expose) { + this.expose(); + } + + this.settings.tip_settings = $.extend({}, this.settings, this.data_options(this.settings.$li)); + + this.settings.timer = parseInt(this.settings.timer, 10); + + this.settings.tip_settings.tip_location_pattern = this.settings.tip_location_patterns[this.settings.tip_settings.tip_location]; + + // scroll and hide bg if not modal + if (!/body/i.test(this.settings.$target.selector)) { + var joyridemodalbg = $('.joyride-modal-bg'); + if (/pop/i.test(this.settings.tipAnimation)) { + joyridemodalbg.hide(); + } else { + joyridemodalbg.fadeOut(this.settings.tipAnimationFadeSpeed); + } + this.scroll_to(); + } + + if (this.is_phone()) { + this.pos_phone(true); + } else { + this.pos_default(true); + } + + $timer = this.settings.$next_tip.find('.joyride-timer-indicator'); + + if (/pop/i.test(this.settings.tip_animation)) { + + $timer.width(0); + + if (this.settings.timer > 0) { + + this.settings.$next_tip.show(); + + setTimeout(function () { + $timer.animate({ + width : $timer.parent().width() + }, this.settings.timer, 'linear'); + }.bind(this), this.settings.tip_animation_fade_speed); + + } else { + this.settings.$next_tip.show(); + + } + + } else if (/fade/i.test(this.settings.tip_animation)) { + + $timer.width(0); + + if (this.settings.timer > 0) { + + this.settings.$next_tip + .fadeIn(this.settings.tip_animation_fade_speed) + .show(); + + setTimeout(function () { + $timer.animate({ + width : $timer.parent().width() + }, this.settings.timer, 'linear'); + }.bind(this), this.settings.tip_animation_fade_speed); + + } else { + this.settings.$next_tip.fadeIn(this.settings.tip_animation_fade_speed); + } + } + + this.settings.$current_tip = this.settings.$next_tip; + + // skip non-existant targets + } else if (this.settings.$li && this.settings.$target.length < 1) { + + this.show(init, is_prev); + + } else { + + this.end(); + + } + } else { + + this.settings.paused = true; + + } + + }, + + is_phone : function () { + return matchMedia(Foundation.media_queries.small).matches && + !matchMedia(Foundation.media_queries.medium).matches; + }, + + hide : function () { + if (this.settings.modal && this.settings.expose) { + this.un_expose(); + } + + if (!this.settings.modal) { + $('.joyride-modal-bg').hide(); + } + + // Prevent scroll bouncing...wait to remove from layout + this.settings.$current_tip.css('visibility', 'hidden'); + setTimeout($.proxy(function () { + this.hide(); + this.css('visibility', 'visible'); + }, this.settings.$current_tip), 0); + this.settings.post_step_callback(this.settings.$li.index(), + this.settings.$current_tip); + }, + + set_li : function (init, is_prev) { + if (init) { + this.settings.$li = this.settings.$tip_content.eq(this.settings.start_offset); + this.set_next_tip(); + this.settings.$current_tip = this.settings.$next_tip; + } else { + if (is_prev) { + this.settings.$li = this.settings.$li.prev(); + } else { + this.settings.$li = this.settings.$li.next(); + } + this.set_next_tip(); + } + + this.set_target(); + }, + + set_next_tip : function () { + this.settings.$next_tip = $('.joyride-tip-guide').eq(this.settings.$li.index()); + this.settings.$next_tip.data('closed', ''); + }, + + set_target : function () { + var cl = this.settings.$li.attr(this.add_namespace('data-class')), + id = this.settings.$li.attr(this.add_namespace('data-id')), + $sel = function () { + if (id) { + return $(document.getElementById(id)); + } else if (cl) { + return $('.' + cl).first(); + } else { + return $('body'); + } + }; + + this.settings.$target = $sel(); + }, + + scroll_to : function () { + var window_half, tipOffset; + + window_half = $(window).height() / 2; + tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight()); + + if (tipOffset != 0) { + $('html, body').stop().animate({ + scrollTop : tipOffset + }, this.settings.scroll_speed, 'swing'); + } + }, + + paused : function () { + return ($.inArray((this.settings.$li.index() + 1), this.settings.pause_after) === -1); + }, + + restart : function () { + this.hide(); + this.settings.$li = undefined; + this.show('init'); + }, + + pos_default : function (init) { + var $nub = this.settings.$next_tip.find('.joyride-nub'), + nub_width = Math.ceil($nub.outerWidth() / 2), + nub_height = Math.ceil($nub.outerHeight() / 2), + toggle = init || false; + + // tip must not be "display: none" to calculate position + if (toggle) { + this.settings.$next_tip.css('visibility', 'hidden'); + this.settings.$next_tip.show(); + } + + if (!/body/i.test(this.settings.$target.selector)) { + var topAdjustment = this.settings.tip_settings.tipAdjustmentY ? parseInt(this.settings.tip_settings.tipAdjustmentY) : 0, + leftAdjustment = this.settings.tip_settings.tipAdjustmentX ? parseInt(this.settings.tip_settings.tipAdjustmentX) : 0; + + if (this.bottom()) { + if (this.rtl) { + this.settings.$next_tip.css({ + top : (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment), + left : this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth() + leftAdjustment}); + } else { + this.settings.$next_tip.css({ + top : (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment), + left : this.settings.$target.offset().left + leftAdjustment}); + } + + this.nub_position($nub, this.settings.tip_settings.nub_position, 'top'); + + } else if (this.top()) { + if (this.rtl) { + this.settings.$next_tip.css({ + top : (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment), + left : this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth()}); + } else { + this.settings.$next_tip.css({ + top : (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment), + left : this.settings.$target.offset().left + leftAdjustment}); + } + + this.nub_position($nub, this.settings.tip_settings.nub_position, 'bottom'); + + } else if (this.right()) { + + this.settings.$next_tip.css({ + top : this.settings.$target.offset().top + topAdjustment, + left : (this.settings.$target.outerWidth() + this.settings.$target.offset().left + nub_width + leftAdjustment)}); + + this.nub_position($nub, this.settings.tip_settings.nub_position, 'left'); + + } else if (this.left()) { + + this.settings.$next_tip.css({ + top : this.settings.$target.offset().top + topAdjustment, + left : (this.settings.$target.offset().left - this.settings.$next_tip.outerWidth() - nub_width + leftAdjustment)}); + + this.nub_position($nub, this.settings.tip_settings.nub_position, 'right'); + + } + + if (!this.visible(this.corners(this.settings.$next_tip)) && this.settings.attempts < this.settings.tip_settings.tip_location_pattern.length) { + + $nub.removeClass('bottom') + .removeClass('top') + .removeClass('right') + .removeClass('left'); + + this.settings.tip_settings.tip_location = this.settings.tip_settings.tip_location_pattern[this.settings.attempts]; + + this.settings.attempts++; + + this.pos_default(); + + } + + } else if (this.settings.$li.length) { + + this.pos_modal($nub); + + } + + if (toggle) { + this.settings.$next_tip.hide(); + this.settings.$next_tip.css('visibility', 'visible'); + } + + }, + + pos_phone : function (init) { + var tip_height = this.settings.$next_tip.outerHeight(), + tip_offset = this.settings.$next_tip.offset(), + target_height = this.settings.$target.outerHeight(), + $nub = $('.joyride-nub', this.settings.$next_tip), + nub_height = Math.ceil($nub.outerHeight() / 2), + toggle = init || false; + + $nub.removeClass('bottom') + .removeClass('top') + .removeClass('right') + .removeClass('left'); + + if (toggle) { + this.settings.$next_tip.css('visibility', 'hidden'); + this.settings.$next_tip.show(); + } + + if (!/body/i.test(this.settings.$target.selector)) { + + if (this.top()) { + + this.settings.$next_tip.offset({top : this.settings.$target.offset().top - tip_height - nub_height}); + $nub.addClass('bottom'); + + } else { + + this.settings.$next_tip.offset({top : this.settings.$target.offset().top + target_height + nub_height}); + $nub.addClass('top'); + + } + + } else if (this.settings.$li.length) { + this.pos_modal($nub); + } + + if (toggle) { + this.settings.$next_tip.hide(); + this.settings.$next_tip.css('visibility', 'visible'); + } + }, + + pos_modal : function ($nub) { + this.center(); + $nub.hide(); + + this.show_modal(); + }, + + show_modal : function () { + if (!this.settings.$next_tip.data('closed')) { + var joyridemodalbg = $('.joyride-modal-bg'); + if (joyridemodalbg.length < 1) { + var joyridemodalbg = $(this.settings.template.modal); + joyridemodalbg.appendTo('body'); + } + + if (/pop/i.test(this.settings.tip_animation)) { + joyridemodalbg.show(); + } else { + joyridemodalbg.fadeIn(this.settings.tip_animation_fade_speed); + } + } + }, + + expose : function () { + var expose, + exposeCover, + el, + origCSS, + origClasses, + randId = 'expose-' + this.random_str(6); + + if (arguments.length > 0 && arguments[0] instanceof $) { + el = arguments[0]; + } else if (this.settings.$target && !/body/i.test(this.settings.$target.selector)) { + el = this.settings.$target; + } else { + return false; + } + + if (el.length < 1) { + if (window.console) { + console.error('element not valid', el); + } + return false; + } + + expose = $(this.settings.template.expose); + this.settings.$body.append(expose); + expose.css({ + top : el.offset().top, + left : el.offset().left, + width : el.outerWidth(true), + height : el.outerHeight(true) + }); + + exposeCover = $(this.settings.template.expose_cover); + + origCSS = { + zIndex : el.css('z-index'), + position : el.css('position') + }; + + origClasses = el.attr('class') == null ? '' : el.attr('class'); + + el.css('z-index', parseInt(expose.css('z-index')) + 1); + + if (origCSS.position == 'static') { + el.css('position', 'relative'); + } + + el.data('expose-css', origCSS); + el.data('orig-class', origClasses); + el.attr('class', origClasses + ' ' + this.settings.expose_add_class); + + exposeCover.css({ + top : el.offset().top, + left : el.offset().left, + width : el.outerWidth(true), + height : el.outerHeight(true) + }); + + if (this.settings.modal) { + this.show_modal(); + } + + this.settings.$body.append(exposeCover); + expose.addClass(randId); + exposeCover.addClass(randId); + el.data('expose', randId); + this.settings.post_expose_callback(this.settings.$li.index(), this.settings.$next_tip, el); + this.add_exposed(el); + }, + + un_expose : function () { + var exposeId, + el, + expose, + origCSS, + origClasses, + clearAll = false; + + if (arguments.length > 0 && arguments[0] instanceof $) { + el = arguments[0]; + } else if (this.settings.$target && !/body/i.test(this.settings.$target.selector)) { + el = this.settings.$target; + } else { + return false; + } + + if (el.length < 1) { + if (window.console) { + console.error('element not valid', el); + } + return false; + } + + exposeId = el.data('expose'); + expose = $('.' + exposeId); + + if (arguments.length > 1) { + clearAll = arguments[1]; + } + + if (clearAll === true) { + $('.joyride-expose-wrapper,.joyride-expose-cover').remove(); + } else { + expose.remove(); + } + + origCSS = el.data('expose-css'); + + if (origCSS.zIndex == 'auto') { + el.css('z-index', ''); + } else { + el.css('z-index', origCSS.zIndex); + } + + if (origCSS.position != el.css('position')) { + if (origCSS.position == 'static') {// this is default, no need to set it. + el.css('position', ''); + } else { + el.css('position', origCSS.position); + } + } + + origClasses = el.data('orig-class'); + el.attr('class', origClasses); + el.removeData('orig-classes'); + + el.removeData('expose'); + el.removeData('expose-z-index'); + this.remove_exposed(el); + }, + + add_exposed : function (el) { + this.settings.exposed = this.settings.exposed || []; + if (el instanceof $ || typeof el === 'object') { + this.settings.exposed.push(el[0]); + } else if (typeof el == 'string') { + this.settings.exposed.push(el); + } + }, + + remove_exposed : function (el) { + var search, i; + if (el instanceof $) { + search = el[0] + } else if (typeof el == 'string') { + search = el; + } + + this.settings.exposed = this.settings.exposed || []; + i = this.settings.exposed.length; + + while (i--) { + if (this.settings.exposed[i] == search) { + this.settings.exposed.splice(i, 1); + return; + } + } + }, + + center : function () { + var $w = $(window); + + this.settings.$next_tip.css({ + top : ((($w.height() - this.settings.$next_tip.outerHeight()) / 2) + $w.scrollTop()), + left : ((($w.width() - this.settings.$next_tip.outerWidth()) / 2) + $w.scrollLeft()) + }); + + return true; + }, + + bottom : function () { + return /bottom/i.test(this.settings.tip_settings.tip_location); + }, + + top : function () { + return /top/i.test(this.settings.tip_settings.tip_location); + }, + + right : function () { + return /right/i.test(this.settings.tip_settings.tip_location); + }, + + left : function () { + return /left/i.test(this.settings.tip_settings.tip_location); + }, + + corners : function (el) { + var w = $(window), + window_half = w.height() / 2, + //using this to calculate since scroll may not have finished yet. + tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight()), + right = w.width() + w.scrollLeft(), + offsetBottom = w.height() + tipOffset, + bottom = w.height() + w.scrollTop(), + top = w.scrollTop(); + + if (tipOffset < top) { + if (tipOffset < 0) { + top = 0; + } else { + top = tipOffset; + } + } + + if (offsetBottom > bottom) { + bottom = offsetBottom; + } + + return [ + el.offset().top < top, + right < el.offset().left + el.outerWidth(), + bottom < el.offset().top + el.outerHeight(), + w.scrollLeft() > el.offset().left + ]; + }, + + visible : function (hidden_corners) { + var i = hidden_corners.length; + + while (i--) { + if (hidden_corners[i]) { + return false; + } + } + + return true; + }, + + nub_position : function (nub, pos, def) { + if (pos === 'auto') { + nub.addClass(def); + } else { + nub.addClass(pos); + } + }, + + startTimer : function () { + if (this.settings.$li.length) { + this.settings.automate = setTimeout(function () { + this.hide(); + this.show(); + this.startTimer(); + }.bind(this), this.settings.timer); + } else { + clearTimeout(this.settings.automate); + } + }, + + end : function (abort) { + if (this.settings.cookie_monster) { + $.cookie(this.settings.cookie_name, 'ridden', {expires : this.settings.cookie_expires, domain : this.settings.cookie_domain}); + } + + if (this.settings.timer > 0) { + clearTimeout(this.settings.automate); + } + + if (this.settings.modal && this.settings.expose) { + this.un_expose(); + } + + // Unplug keystrokes listener + $(this.scope).off('keyup.joyride') + + this.settings.$next_tip.data('closed', true); + this.settings.riding = false; + + $('.joyride-modal-bg').hide(); + this.settings.$current_tip.hide(); + + if (typeof abort === 'undefined' || abort === false) { + this.settings.post_step_callback(this.settings.$li.index(), this.settings.$current_tip); + this.settings.post_ride_callback(this.settings.$li.index(), this.settings.$current_tip); + } + + $('.joyride-tip-guide').remove(); + }, + + off : function () { + $(this.scope).off('.joyride'); + $(window).off('.joyride'); + $('.joyride-close-tip, .joyride-next-tip, .joyride-modal-bg').off('.joyride'); + $('.joyride-tip-guide, .joyride-modal-bg').remove(); + clearTimeout(this.settings.automate); + this.settings = {}; + }, + + reflow : function () {} + }; +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.equalizer = { + name : 'equalizer', + + version : '5.5.2', + + settings : { + use_tallest : true, + before_height_change : $.noop, + after_height_change : $.noop, + equalize_on_stack : false, + act_on_hidden_el: false + }, + + init : function (scope, method, options) { + Foundation.inherit(this, 'image_loaded'); + this.bindings(method, options); + this.reflow(); + }, + + events : function () { + this.S(window).off('.equalizer').on('resize.fndtn.equalizer', function (e) { + this.reflow(); + }.bind(this)); + }, + + equalize : function (equalizer) { + var isStacked = false, + group = equalizer.data('equalizer'), + settings = equalizer.data(this.attr_name(true)+'-init') || this.settings, + vals, + firstTopOffset; + + if (settings.act_on_hidden_el) { + vals = group ? equalizer.find('['+this.attr_name()+'-watch="'+group+'"]') : equalizer.find('['+this.attr_name()+'-watch]'); + } + else { + vals = group ? equalizer.find('['+this.attr_name()+'-watch="'+group+'"]:visible') : equalizer.find('['+this.attr_name()+'-watch]:visible'); + } + + if (vals.length === 0) { + return; + } + + settings.before_height_change(); + equalizer.trigger('before-height-change.fndth.equalizer'); + vals.height('inherit'); + + if (settings.equalize_on_stack === false) { + firstTopOffset = vals.first().offset().top; + vals.each(function () { + if ($(this).offset().top !== firstTopOffset) { + isStacked = true; + return false; + } + }); + if (isStacked) { + return; + } + } + + var heights = vals.map(function () { return $(this).outerHeight(false) }).get(); + + if (settings.use_tallest) { + var max = Math.max.apply(null, heights); + vals.css('height', max); + } else { + var min = Math.min.apply(null, heights); + vals.css('height', min); + } + + settings.after_height_change(); + equalizer.trigger('after-height-change.fndtn.equalizer'); + }, + + reflow : function () { + var self = this; + + this.S('[' + this.attr_name() + ']', this.scope).each(function () { + var $eq_target = $(this), + media_query = $eq_target.data('equalizer-mq'), + ignore_media_query = true; + + if (media_query) { + media_query = 'is_' + media_query.replace(/-/g, '_'); + if (Foundation.utils.hasOwnProperty(media_query)) { + ignore_media_query = false; + } + } + + self.image_loaded(self.S('img', this), function () { + if (ignore_media_query || Foundation.utils[media_query]()) { + self.equalize($eq_target) + } else { + var vals = $eq_target.find('[' + self.attr_name() + '-watch]:visible'); + vals.css('height', 'auto'); + } + }); + }); + } + }; +})(jQuery, window, window.document); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.dropdown = { + name : 'dropdown', + + version : '5.5.2', + + settings : { + active_class : 'open', + disabled_class : 'disabled', + mega_class : 'mega', + align : 'bottom', + is_hover : false, + hover_timeout : 150, + opened : function () {}, + closed : function () {} + }, + + init : function (scope, method, options) { + Foundation.inherit(this, 'throttle'); + + $.extend(true, this.settings, method, options); + this.bindings(method, options); + }, + + events : function (scope) { + var self = this, + S = self.S; + + S(this.scope) + .off('.dropdown') + .on('click.fndtn.dropdown', '[' + this.attr_name() + ']', function (e) { + var settings = S(this).data(self.attr_name(true) + '-init') || self.settings; + if (!settings.is_hover || Modernizr.touch) { + e.preventDefault(); + if (S(this).parent('[data-reveal-id]').length) { + e.stopPropagation(); + } + self.toggle($(this)); + } + }) + .on('mouseenter.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) { + var $this = S(this), + dropdown, + target; + + clearTimeout(self.timeout); + + if ($this.data(self.data_attr())) { + dropdown = S('#' + $this.data(self.data_attr())); + target = $this; + } else { + dropdown = $this; + target = S('[' + self.attr_name() + '="' + dropdown.attr('id') + '"]'); + } + + var settings = target.data(self.attr_name(true) + '-init') || self.settings; + + if (S(e.currentTarget).data(self.data_attr()) && settings.is_hover) { + self.closeall.call(self); + } + + if (settings.is_hover) { + self.open.apply(self, [dropdown, target]); + } + }) + .on('mouseleave.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) { + var $this = S(this); + var settings; + + if ($this.data(self.data_attr())) { + settings = $this.data(self.data_attr(true) + '-init') || self.settings; + } else { + var target = S('[' + self.attr_name() + '="' + S(this).attr('id') + '"]'), + settings = target.data(self.attr_name(true) + '-init') || self.settings; + } + + self.timeout = setTimeout(function () { + if ($this.data(self.data_attr())) { + if (settings.is_hover) { + self.close.call(self, S('#' + $this.data(self.data_attr()))); + } + } else { + if (settings.is_hover) { + self.close.call(self, $this); + } + } + }.bind(this), settings.hover_timeout); + }) + .on('click.fndtn.dropdown', function (e) { + var parent = S(e.target).closest('[' + self.attr_name() + '-content]'); + var links = parent.find('a'); + + if (links.length > 0 && parent.attr('aria-autoclose') !== 'false') { + self.close.call(self, S('[' + self.attr_name() + '-content]')); + } + + if (e.target !== document && !$.contains(document.documentElement, e.target)) { + return; + } + + if (S(e.target).closest('[' + self.attr_name() + ']').length > 0) { + return; + } + + if (!(S(e.target).data('revealId')) && + (parent.length > 0 && (S(e.target).is('[' + self.attr_name() + '-content]') || + $.contains(parent.first()[0], e.target)))) { + e.stopPropagation(); + return; + } + + self.close.call(self, S('[' + self.attr_name() + '-content]')); + }) + .on('opened.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () { + self.settings.opened.call(this); + }) + .on('closed.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () { + self.settings.closed.call(this); + }); + + S(window) + .off('.dropdown') + .on('resize.fndtn.dropdown', self.throttle(function () { + self.resize.call(self); + }, 50)); + + this.resize(); + }, + + close : function (dropdown) { + var self = this; + dropdown.each(function (idx) { + var original_target = $('[' + self.attr_name() + '=' + dropdown[idx].id + ']') || $('aria-controls=' + dropdown[idx].id + ']'); + original_target.attr('aria-expanded', 'false'); + if (self.S(this).hasClass(self.settings.active_class)) { + self.S(this) + .css(Foundation.rtl ? 'right' : 'left', '-99999px') + .attr('aria-hidden', 'true') + .removeClass(self.settings.active_class) + .prev('[' + self.attr_name() + ']') + .removeClass(self.settings.active_class) + .removeData('target'); + + self.S(this).trigger('closed.fndtn.dropdown', [dropdown]); + } + }); + dropdown.removeClass('f-open-' + this.attr_name(true)); + }, + + closeall : function () { + var self = this; + $.each(self.S('.f-open-' + this.attr_name(true)), function () { + self.close.call(self, self.S(this)); + }); + }, + + open : function (dropdown, target) { + this + .css(dropdown + .addClass(this.settings.active_class), target); + dropdown.prev('[' + this.attr_name() + ']').addClass(this.settings.active_class); + dropdown.data('target', target.get(0)).trigger('opened.fndtn.dropdown', [dropdown, target]); + dropdown.attr('aria-hidden', 'false'); + target.attr('aria-expanded', 'true'); + dropdown.focus(); + dropdown.addClass('f-open-' + this.attr_name(true)); + }, + + data_attr : function () { + if (this.namespace.length > 0) { + return this.namespace + '-' + this.name; + } + + return this.name; + }, + + toggle : function (target) { + if (target.hasClass(this.settings.disabled_class)) { + return; + } + var dropdown = this.S('#' + target.data(this.data_attr())); + if (dropdown.length === 0) { + // No dropdown found, not continuing + return; + } + + this.close.call(this, this.S('[' + this.attr_name() + '-content]').not(dropdown)); + + if (dropdown.hasClass(this.settings.active_class)) { + this.close.call(this, dropdown); + if (dropdown.data('target') !== target.get(0)) { + this.open.call(this, dropdown, target); + } + } else { + this.open.call(this, dropdown, target); + } + }, + + resize : function () { + var dropdown = this.S('[' + this.attr_name() + '-content].open'); + var target = $(dropdown.data("target")); + + if (dropdown.length && target.length) { + this.css(dropdown, target); + } + }, + + css : function (dropdown, target) { + var left_offset = Math.max((target.width() - dropdown.width()) / 2, 8), + settings = target.data(this.attr_name(true) + '-init') || this.settings, + parentOverflow = dropdown.parent().css('overflow-y') || dropdown.parent().css('overflow'); + + this.clear_idx(); + + + + if (this.small()) { + var p = this.dirs.bottom.call(dropdown, target, settings); + + dropdown.attr('style', '').removeClass('drop-left drop-right drop-top').css({ + position : 'absolute', + width : '95%', + 'max-width' : 'none', + top : p.top + }); + + dropdown.css(Foundation.rtl ? 'right' : 'left', left_offset); + } + // detect if dropdown is in an overflow container + else if (parentOverflow !== 'visible') { + var offset = target[0].offsetTop + target[0].offsetHeight; + + dropdown.attr('style', '').css({ + position : 'absolute', + top : offset + }); + + dropdown.css(Foundation.rtl ? 'right' : 'left', left_offset); + } + else { + + this.style(dropdown, target, settings); + } + + return dropdown; + }, + + style : function (dropdown, target, settings) { + var css = $.extend({position : 'absolute'}, + this.dirs[settings.align].call(dropdown, target, settings)); + + dropdown.attr('style', '').css(css); + }, + + // return CSS property object + // `this` is the dropdown + dirs : { + // Calculate target offset + _base : function (t) { + var o_p = this.offsetParent(), + o = o_p.offset(), + p = t.offset(); + + p.top -= o.top; + p.left -= o.left; + + //set some flags on the p object to pass along + p.missRight = false; + p.missTop = false; + p.missLeft = false; + p.leftRightFlag = false; + + //lets see if the panel will be off the screen + //get the actual width of the page and store it + var actualBodyWidth; + if (document.getElementsByClassName('row')[0]) { + actualBodyWidth = document.getElementsByClassName('row')[0].clientWidth; + } else { + actualBodyWidth = window.innerWidth; + } + + var actualMarginWidth = (window.innerWidth - actualBodyWidth) / 2; + var actualBoundary = actualBodyWidth; + + if (!this.hasClass('mega')) { + //miss top + if (t.offset().top <= this.outerHeight()) { + p.missTop = true; + actualBoundary = window.innerWidth - actualMarginWidth; + p.leftRightFlag = true; + } + + //miss right + if (t.offset().left + this.outerWidth() > t.offset().left + actualMarginWidth && t.offset().left - actualMarginWidth > this.outerWidth()) { + p.missRight = true; + p.missLeft = false; + } + + //miss left + if (t.offset().left - this.outerWidth() <= 0) { + p.missLeft = true; + p.missRight = false; + } + } + + return p; + }, + + top : function (t, s) { + var self = Foundation.libs.dropdown, + p = self.dirs._base.call(this, t); + + this.addClass('drop-top'); + + if (p.missTop == true) { + p.top = p.top + t.outerHeight() + this.outerHeight(); + this.removeClass('drop-top'); + } + + if (p.missRight == true) { + p.left = p.left - this.outerWidth() + t.outerWidth(); + } + + if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) { + self.adjust_pip(this, t, s, p); + } + + if (Foundation.rtl) { + return {left : p.left - this.outerWidth() + t.outerWidth(), + top : p.top - this.outerHeight()}; + } + + return {left : p.left, top : p.top - this.outerHeight()}; + }, + + bottom : function (t, s) { + var self = Foundation.libs.dropdown, + p = self.dirs._base.call(this, t); + + if (p.missRight == true) { + p.left = p.left - this.outerWidth() + t.outerWidth(); + } + + if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) { + self.adjust_pip(this, t, s, p); + } + + if (self.rtl) { + return {left : p.left - this.outerWidth() + t.outerWidth(), top : p.top + t.outerHeight()}; + } + + return {left : p.left, top : p.top + t.outerHeight()}; + }, + + left : function (t, s) { + var p = Foundation.libs.dropdown.dirs._base.call(this, t); + + this.addClass('drop-left'); + + if (p.missLeft == true) { + p.left = p.left + this.outerWidth(); + p.top = p.top + t.outerHeight(); + this.removeClass('drop-left'); + } + + return {left : p.left - this.outerWidth(), top : p.top}; + }, + + right : function (t, s) { + var p = Foundation.libs.dropdown.dirs._base.call(this, t); + + this.addClass('drop-right'); + + if (p.missRight == true) { + p.left = p.left - this.outerWidth(); + p.top = p.top + t.outerHeight(); + this.removeClass('drop-right'); + } else { + p.triggeredRight = true; + } + + var self = Foundation.libs.dropdown; + + if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) { + self.adjust_pip(this, t, s, p); + } + + return {left : p.left + t.outerWidth(), top : p.top}; + } + }, + + // Insert rule to style psuedo elements + adjust_pip : function (dropdown, target, settings, position) { + var sheet = Foundation.stylesheet, + pip_offset_base = 8; + + if (dropdown.hasClass(settings.mega_class)) { + pip_offset_base = position.left + (target.outerWidth() / 2) - 8; + } else if (this.small()) { + pip_offset_base += position.left - 8; + } + + this.rule_idx = sheet.cssRules.length; + + //default + var sel_before = '.f-dropdown.open:before', + sel_after = '.f-dropdown.open:after', + css_before = 'left: ' + pip_offset_base + 'px;', + css_after = 'left: ' + (pip_offset_base - 1) + 'px;'; + + if (position.missRight == true) { + pip_offset_base = dropdown.outerWidth() - 23; + sel_before = '.f-dropdown.open:before', + sel_after = '.f-dropdown.open:after', + css_before = 'left: ' + pip_offset_base + 'px;', + css_after = 'left: ' + (pip_offset_base - 1) + 'px;'; + } + + //just a case where right is fired, but its not missing right + if (position.triggeredRight == true) { + sel_before = '.f-dropdown.open:before', + sel_after = '.f-dropdown.open:after', + css_before = 'left:-12px;', + css_after = 'left:-14px;'; + } + + if (sheet.insertRule) { + sheet.insertRule([sel_before, '{', css_before, '}'].join(' '), this.rule_idx); + sheet.insertRule([sel_after, '{', css_after, '}'].join(' '), this.rule_idx + 1); + } else { + sheet.addRule(sel_before, css_before, this.rule_idx); + sheet.addRule(sel_after, css_after, this.rule_idx + 1); + } + }, + + // Remove old dropdown rule index + clear_idx : function () { + var sheet = Foundation.stylesheet; + + if (typeof this.rule_idx !== 'undefined') { + sheet.deleteRule(this.rule_idx); + sheet.deleteRule(this.rule_idx); + delete this.rule_idx; + } + }, + + small : function () { + return matchMedia(Foundation.media_queries.small).matches && + !matchMedia(Foundation.media_queries.medium).matches; + }, + + off : function () { + this.S(this.scope).off('.fndtn.dropdown'); + this.S('html, body').off('.fndtn.dropdown'); + this.S(window).off('.fndtn.dropdown'); + this.S('[data-dropdown-content]').off('.fndtn.dropdown'); + }, + + reflow : function () {} + }; +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.clearing = { + name : 'clearing', + + version : '5.5.2', + + settings : { + templates : { + viewing : '<a href="#" class="clearing-close">×</a>' + + '<div class="visible-img" style="display: none"><div class="clearing-touch-label"></div><img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />' + + '<p class="clearing-caption"></p><a href="#" class="clearing-main-prev"><span></span></a>' + + '<a href="#" class="clearing-main-next"><span></span></a></div>' + + '<img class="clearing-preload-next" style="display: none" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />' + + '<img class="clearing-preload-prev" style="display: none" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />' + }, + + // comma delimited list of selectors that, on click, will close clearing, + // add 'div.clearing-blackout, div.visible-img' to close on background click + close_selectors : '.clearing-close, div.clearing-blackout', + + // Default to the entire li element. + open_selectors : '', + + // Image will be skipped in carousel. + skip_selector : '', + + touch_label : '', + + // event initializers and locks + init : false, + locked : false + }, + + init : function (scope, method, options) { + var self = this; + Foundation.inherit(this, 'throttle image_loaded'); + + this.bindings(method, options); + + if (self.S(this.scope).is('[' + this.attr_name() + ']')) { + this.assemble(self.S('li', this.scope)); + } else { + self.S('[' + this.attr_name() + ']', this.scope).each(function () { + self.assemble(self.S('li', this)); + }); + } + }, + + events : function (scope) { + var self = this, + S = self.S, + $scroll_container = $('.scroll-container'); + + if ($scroll_container.length > 0) { + this.scope = $scroll_container; + } + + S(this.scope) + .off('.clearing') + .on('click.fndtn.clearing', 'ul[' + this.attr_name() + '] li ' + this.settings.open_selectors, + function (e, current, target) { + var current = current || S(this), + target = target || current, + next = current.next('li'), + settings = current.closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init'), + image = S(e.target); + + e.preventDefault(); + + if (!settings) { + self.init(); + settings = current.closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init'); + } + + // if clearing is open and the current image is + // clicked, go to the next image in sequence + if (target.hasClass('visible') && + current[0] === target[0] && + next.length > 0 && self.is_open(current)) { + target = next; + image = S('img', target); + } + + // set current and target to the clicked li if not otherwise defined. + self.open(image, current, target); + self.update_paddles(target); + }) + + .on('click.fndtn.clearing', '.clearing-main-next', + function (e) { self.nav(e, 'next') }) + .on('click.fndtn.clearing', '.clearing-main-prev', + function (e) { self.nav(e, 'prev') }) + .on('click.fndtn.clearing', this.settings.close_selectors, + function (e) { Foundation.libs.clearing.close(e, this) }); + + $(document).on('keydown.fndtn.clearing', + function (e) { self.keydown(e) }); + + S(window).off('.clearing').on('resize.fndtn.clearing', + function () { self.resize() }); + + this.swipe_events(scope); + }, + + swipe_events : function (scope) { + var self = this, + S = self.S; + + S(this.scope) + .on('touchstart.fndtn.clearing', '.visible-img', function (e) { + if (!e.touches) { e = e.originalEvent; } + var data = { + start_page_x : e.touches[0].pageX, + start_page_y : e.touches[0].pageY, + start_time : (new Date()).getTime(), + delta_x : 0, + is_scrolling : undefined + }; + + S(this).data('swipe-transition', data); + e.stopPropagation(); + }) + .on('touchmove.fndtn.clearing', '.visible-img', function (e) { + if (!e.touches) { + e = e.originalEvent; + } + // Ignore pinch/zoom events + if (e.touches.length > 1 || e.scale && e.scale !== 1) { + return; + } + + var data = S(this).data('swipe-transition'); + + if (typeof data === 'undefined') { + data = {}; + } + + data.delta_x = e.touches[0].pageX - data.start_page_x; + + if (Foundation.rtl) { + data.delta_x = -data.delta_x; + } + + if (typeof data.is_scrolling === 'undefined') { + data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) ); + } + + if (!data.is_scrolling && !data.active) { + e.preventDefault(); + var direction = (data.delta_x < 0) ? 'next' : 'prev'; + data.active = true; + self.nav(e, direction); + } + }) + .on('touchend.fndtn.clearing', '.visible-img', function (e) { + S(this).data('swipe-transition', {}); + e.stopPropagation(); + }); + }, + + assemble : function ($li) { + var $el = $li.parent(); + + if ($el.parent().hasClass('carousel')) { + return; + } + + $el.after('<div id="foundationClearingHolder"></div>'); + + var grid = $el.detach(), + grid_outerHTML = ''; + + if (grid[0] == null) { + return; + } else { + grid_outerHTML = grid[0].outerHTML; + } + + var holder = this.S('#foundationClearingHolder'), + settings = $el.data(this.attr_name(true) + '-init'), + data = { + grid : '<div class="carousel">' + grid_outerHTML + '</div>', + viewing : settings.templates.viewing + }, + wrapper = '<div class="clearing-assembled"><div>' + data.viewing + + data.grid + '</div></div>', + touch_label = this.settings.touch_label; + + if (Modernizr.touch) { + wrapper = $(wrapper).find('.clearing-touch-label').html(touch_label).end(); + } + + holder.after(wrapper).remove(); + }, + + open : function ($image, current, target) { + var self = this, + body = $(document.body), + root = target.closest('.clearing-assembled'), + container = self.S('div', root).first(), + visible_image = self.S('.visible-img', container), + image = self.S('img', visible_image).not($image), + label = self.S('.clearing-touch-label', container), + error = false, + loaded = {}; + + // Event to disable scrolling on touch devices when Clearing is activated + $('body').on('touchmove', function (e) { + e.preventDefault(); + }); + + image.error(function () { + error = true; + }); + + function startLoad() { + setTimeout(function () { + this.image_loaded(image, function () { + if (image.outerWidth() === 1 && !error) { + startLoad.call(this); + } else { + cb.call(this, image); + } + }.bind(this)); + }.bind(this), 100); + } + + function cb (image) { + var $image = $(image); + $image.css('visibility', 'visible'); + $image.trigger('imageVisible'); + // toggle the gallery + body.css('overflow', 'hidden'); + root.addClass('clearing-blackout'); + container.addClass('clearing-container'); + visible_image.show(); + this.fix_height(target) + .caption(self.S('.clearing-caption', visible_image), self.S('img', target)) + .center_and_label(image, label) + .shift(current, target, function () { + target.closest('li').siblings().removeClass('visible'); + target.closest('li').addClass('visible'); + }); + visible_image.trigger('opened.fndtn.clearing') + } + + if (!this.locked()) { + visible_image.trigger('open.fndtn.clearing'); + // set the image to the selected thumbnail + loaded = this.load($image); + if (loaded.interchange) { + image + .attr('data-interchange', loaded.interchange) + .foundation('interchange', 'reflow'); + } else { + image + .attr('src', loaded.src) + .attr('data-interchange', ''); + } + image.css('visibility', 'hidden'); + + startLoad.call(this); + } + }, + + close : function (e, el) { + e.preventDefault(); + + var root = (function (target) { + if (/blackout/.test(target.selector)) { + return target; + } else { + return target.closest('.clearing-blackout'); + } + }($(el))), + body = $(document.body), container, visible_image; + + if (el === e.target && root) { + body.css('overflow', ''); + container = $('div', root).first(); + visible_image = $('.visible-img', container); + visible_image.trigger('close.fndtn.clearing'); + this.settings.prev_index = 0; + $('ul[' + this.attr_name() + ']', root) + .attr('style', '').closest('.clearing-blackout') + .removeClass('clearing-blackout'); + container.removeClass('clearing-container'); + visible_image.hide(); + visible_image.trigger('closed.fndtn.clearing'); + } + + // Event to re-enable scrolling on touch devices + $('body').off('touchmove'); + + return false; + }, + + is_open : function (current) { + return current.parent().prop('style').length > 0; + }, + + keydown : function (e) { + var clearing = $('.clearing-blackout ul[' + this.attr_name() + ']'), + NEXT_KEY = this.rtl ? 37 : 39, + PREV_KEY = this.rtl ? 39 : 37, + ESC_KEY = 27; + + if (e.which === NEXT_KEY) { + this.go(clearing, 'next'); + } + if (e.which === PREV_KEY) { + this.go(clearing, 'prev'); + } + if (e.which === ESC_KEY) { + this.S('a.clearing-close').trigger('click.fndtn.clearing'); + } + }, + + nav : function (e, direction) { + var clearing = $('ul[' + this.attr_name() + ']', '.clearing-blackout'); + + e.preventDefault(); + this.go(clearing, direction); + }, + + resize : function () { + var image = $('img', '.clearing-blackout .visible-img'), + label = $('.clearing-touch-label', '.clearing-blackout'); + + if (image.length) { + this.center_and_label(image, label); + image.trigger('resized.fndtn.clearing') + } + }, + + // visual adjustments + fix_height : function (target) { + var lis = target.parent().children(), + self = this; + + lis.each(function () { + var li = self.S(this), + image = li.find('img'); + + if (li.height() > image.outerHeight()) { + li.addClass('fix-height'); + } + }) + .closest('ul') + .width(lis.length * 100 + '%'); + + return this; + }, + + update_paddles : function (target) { + target = target.closest('li'); + var visible_image = target + .closest('.carousel') + .siblings('.visible-img'); + + if (target.next().length > 0) { + this.S('.clearing-main-next', visible_image).removeClass('disabled'); + } else { + this.S('.clearing-main-next', visible_image).addClass('disabled'); + } + + if (target.prev().length > 0) { + this.S('.clearing-main-prev', visible_image).removeClass('disabled'); + } else { + this.S('.clearing-main-prev', visible_image).addClass('disabled'); + } + }, + + center_and_label : function (target, label) { + if (!this.rtl && label.length > 0) { + label.css({ + marginLeft : -(label.outerWidth() / 2), + marginTop : -(target.outerHeight() / 2)-label.outerHeight()-10 + }); + } else { + label.css({ + marginRight : -(label.outerWidth() / 2), + marginTop : -(target.outerHeight() / 2)-label.outerHeight()-10, + left: 'auto', + right: '50%' + }); + } + return this; + }, + + // image loading and preloading + + load : function ($image) { + var href, + interchange, + closest_a; + + if ($image[0].nodeName === 'A') { + href = $image.attr('href'); + interchange = $image.data('clearing-interchange'); + } else { + closest_a = $image.closest('a'); + href = closest_a.attr('href'); + interchange = closest_a.data('clearing-interchange'); + } + + this.preload($image); + + return { + 'src': href ? href : $image.attr('src'), + 'interchange': href ? interchange : $image.data('clearing-interchange') + } + }, + + preload : function ($image) { + this + .img($image.closest('li').next(), 'next') + .img($image.closest('li').prev(), 'prev'); + }, + + img : function (img, sibling_type) { + if (img.length) { + var preload_img = $('.clearing-preload-' + sibling_type), + new_a = this.S('a', img), + src, + interchange, + image; + + if (new_a.length) { + src = new_a.attr('href'); + interchange = new_a.data('clearing-interchange'); + } else { + image = this.S('img', img); + src = image.attr('src'); + interchange = image.data('clearing-interchange'); + } + + if (interchange) { + preload_img.attr('data-interchange', interchange); + } else { + preload_img.attr('src', src); + preload_img.attr('data-interchange', ''); + } + } + return this; + }, + + // image caption + + caption : function (container, $image) { + var caption = $image.attr('data-caption'); + + if (caption) { + container + .html(caption) + .show(); + } else { + container + .text('') + .hide(); + } + return this; + }, + + // directional methods + + go : function ($ul, direction) { + var current = this.S('.visible', $ul), + target = current[direction](); + + // Check for skip selector. + if (this.settings.skip_selector && target.find(this.settings.skip_selector).length != 0) { + target = target[direction](); + } + + if (target.length) { + this.S('img', target) + .trigger('click.fndtn.clearing', [current, target]) + .trigger('change.fndtn.clearing'); + } + }, + + shift : function (current, target, callback) { + var clearing = target.parent(), + old_index = this.settings.prev_index || target.index(), + direction = this.direction(clearing, current, target), + dir = this.rtl ? 'right' : 'left', + left = parseInt(clearing.css('left'), 10), + width = target.outerWidth(), + skip_shift; + + var dir_obj = {}; + + // we use jQuery animate instead of CSS transitions because we + // need a callback to unlock the next animation + // needs support for RTL ** + if (target.index() !== old_index && !/skip/.test(direction)) { + if (/left/.test(direction)) { + this.lock(); + dir_obj[dir] = left + width; + clearing.animate(dir_obj, 300, this.unlock()); + } else if (/right/.test(direction)) { + this.lock(); + dir_obj[dir] = left - width; + clearing.animate(dir_obj, 300, this.unlock()); + } + } else if (/skip/.test(direction)) { + // the target image is not adjacent to the current image, so + // do we scroll right or not + skip_shift = target.index() - this.settings.up_count; + this.lock(); + + if (skip_shift > 0) { + dir_obj[dir] = -(skip_shift * width); + clearing.animate(dir_obj, 300, this.unlock()); + } else { + dir_obj[dir] = 0; + clearing.animate(dir_obj, 300, this.unlock()); + } + } + + callback(); + }, + + direction : function ($el, current, target) { + var lis = this.S('li', $el), + li_width = lis.outerWidth() + (lis.outerWidth() / 4), + up_count = Math.floor(this.S('.clearing-container').outerWidth() / li_width) - 1, + target_index = lis.index(target), + response; + + this.settings.up_count = up_count; + + if (this.adjacent(this.settings.prev_index, target_index)) { + if ((target_index > up_count) && target_index > this.settings.prev_index) { + response = 'right'; + } else if ((target_index > up_count - 1) && target_index <= this.settings.prev_index) { + response = 'left'; + } else { + response = false; + } + } else { + response = 'skip'; + } + + this.settings.prev_index = target_index; + + return response; + }, + + adjacent : function (current_index, target_index) { + for (var i = target_index + 1; i >= target_index - 1; i--) { + if (i === current_index) { + return true; + } + } + return false; + }, + + // lock management + + lock : function () { + this.settings.locked = true; + }, + + unlock : function () { + this.settings.locked = false; + }, + + locked : function () { + return this.settings.locked; + }, + + off : function () { + this.S(this.scope).off('.fndtn.clearing'); + this.S(window).off('.fndtn.clearing'); + }, + + reflow : function () { + this.init(); + } + }; + +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + var noop = function () {}; + + var Orbit = function (el, settings) { + // Don't reinitialize plugin + if (el.hasClass(settings.slides_container_class)) { + return this; + } + + var self = this, + container, + slides_container = el, + number_container, + bullets_container, + timer_container, + idx = 0, + animate, + timer, + locked = false, + adjust_height_after = false; + + self.slides = function () { + return slides_container.children(settings.slide_selector); + }; + + self.slides().first().addClass(settings.active_slide_class); + + self.update_slide_number = function (index) { + if (settings.slide_number) { + number_container.find('span:first').text(parseInt(index) + 1); + number_container.find('span:last').text(self.slides().length); + } + if (settings.bullets) { + bullets_container.children().removeClass(settings.bullets_active_class); + $(bullets_container.children().get(index)).addClass(settings.bullets_active_class); + } + }; + + self.update_active_link = function (index) { + var link = $('[data-orbit-link="' + self.slides().eq(index).attr('data-orbit-slide') + '"]'); + link.siblings().removeClass(settings.bullets_active_class); + link.addClass(settings.bullets_active_class); + }; + + self.build_markup = function () { + slides_container.wrap('<div class="' + settings.container_class + '"></div>'); + container = slides_container.parent(); + slides_container.addClass(settings.slides_container_class); + + if (settings.stack_on_small) { + container.addClass(settings.stack_on_small_class); + } + + if (settings.navigation_arrows) { + container.append($('<a href="#"><span></span></a>').addClass(settings.prev_class)); + container.append($('<a href="#"><span></span></a>').addClass(settings.next_class)); + } + + if (settings.timer) { + timer_container = $('<div>').addClass(settings.timer_container_class); + timer_container.append('<span>'); + timer_container.append($('<div>').addClass(settings.timer_progress_class)); + timer_container.addClass(settings.timer_paused_class); + container.append(timer_container); + } + + if (settings.slide_number) { + number_container = $('<div>').addClass(settings.slide_number_class); + number_container.append('<span></span> ' + settings.slide_number_text + ' <span></span>'); + container.append(number_container); + } + + if (settings.bullets) { + bullets_container = $('<ol>').addClass(settings.bullets_container_class); + container.append(bullets_container); + bullets_container.wrap('<div class="orbit-bullets-container"></div>'); + self.slides().each(function (idx, el) { + var bullet = $('<li>').attr('data-orbit-slide', idx).on('click', self.link_bullet);; + bullets_container.append(bullet); + }); + } + + }; + + self._goto = function (next_idx, start_timer) { + // if (locked) {return false;} + if (next_idx === idx) {return false;} + if (typeof timer === 'object') {timer.restart();} + var slides = self.slides(); + + var dir = 'next'; + locked = true; + if (next_idx < idx) {dir = 'prev';} + if (next_idx >= slides.length) { + if (!settings.circular) { + return false; + } + next_idx = 0; + } else if (next_idx < 0) { + if (!settings.circular) { + return false; + } + next_idx = slides.length - 1; + } + + var current = $(slides.get(idx)); + var next = $(slides.get(next_idx)); + + current.css('zIndex', 2); + current.removeClass(settings.active_slide_class); + next.css('zIndex', 4).addClass(settings.active_slide_class); + + slides_container.trigger('before-slide-change.fndtn.orbit'); + settings.before_slide_change(); + self.update_active_link(next_idx); + + var callback = function () { + var unlock = function () { + idx = next_idx; + locked = false; + if (start_timer === true) {timer = self.create_timer(); timer.start();} + self.update_slide_number(idx); + slides_container.trigger('after-slide-change.fndtn.orbit', [{slide_number : idx, total_slides : slides.length}]); + settings.after_slide_change(idx, slides.length); + }; + if (slides_container.outerHeight() != next.outerHeight() && settings.variable_height) { + slides_container.animate({'height': next.outerHeight()}, 250, 'linear', unlock); + } else { + unlock(); + } + }; + + if (slides.length === 1) {callback(); return false;} + + var start_animation = function () { + if (dir === 'next') {animate.next(current, next, callback);} + if (dir === 'prev') {animate.prev(current, next, callback);} + }; + + if (next.outerHeight() > slides_container.outerHeight() && settings.variable_height) { + slides_container.animate({'height': next.outerHeight()}, 250, 'linear', start_animation); + } else { + start_animation(); + } + }; + + self.next = function (e) { + e.stopImmediatePropagation(); + e.preventDefault(); + self._goto(idx + 1); + }; + + self.prev = function (e) { + e.stopImmediatePropagation(); + e.preventDefault(); + self._goto(idx - 1); + }; + + self.link_custom = function (e) { + e.preventDefault(); + var link = $(this).attr('data-orbit-link'); + if ((typeof link === 'string') && (link = $.trim(link)) != '') { + var slide = container.find('[data-orbit-slide=' + link + ']'); + if (slide.index() != -1) {self._goto(slide.index());} + } + }; + + self.link_bullet = function (e) { + var index = $(this).attr('data-orbit-slide'); + if ((typeof index === 'string') && (index = $.trim(index)) != '') { + if (isNaN(parseInt(index))) { + var slide = container.find('[data-orbit-slide=' + index + ']'); + if (slide.index() != -1) {self._goto(slide.index() + 1);} + } else { + self._goto(parseInt(index)); + } + } + + } + + self.timer_callback = function () { + self._goto(idx + 1, true); + } + + self.compute_dimensions = function () { + var current = $(self.slides().get(idx)); + var h = current.outerHeight(); + if (!settings.variable_height) { + self.slides().each(function(){ + if ($(this).outerHeight() > h) { h = $(this).outerHeight(); } + }); + } + slides_container.height(h); + }; + + self.create_timer = function () { + var t = new Timer( + container.find('.' + settings.timer_container_class), + settings, + self.timer_callback + ); + return t; + }; + + self.stop_timer = function () { + if (typeof timer === 'object') { + timer.stop(); + } + }; + + self.toggle_timer = function () { + var t = container.find('.' + settings.timer_container_class); + if (t.hasClass(settings.timer_paused_class)) { + if (typeof timer === 'undefined') {timer = self.create_timer();} + timer.start(); + } else { + if (typeof timer === 'object') {timer.stop();} + } + }; + + self.init = function () { + self.build_markup(); + if (settings.timer) { + timer = self.create_timer(); + Foundation.utils.image_loaded(this.slides().children('img'), timer.start); + } + animate = new FadeAnimation(settings, slides_container); + if (settings.animation === 'slide') { + animate = new SlideAnimation(settings, slides_container); + } + + container.on('click', '.' + settings.next_class, self.next); + container.on('click', '.' + settings.prev_class, self.prev); + + if (settings.next_on_click) { + container.on('click', '.' + settings.slides_container_class + ' [data-orbit-slide]', self.link_bullet); + } + + container.on('click', self.toggle_timer); + if (settings.swipe) { + container.on('touchstart.fndtn.orbit', function (e) { + if (!e.touches) {e = e.originalEvent;} + var data = { + start_page_x : e.touches[0].pageX, + start_page_y : e.touches[0].pageY, + start_time : (new Date()).getTime(), + delta_x : 0, + is_scrolling : undefined + }; + container.data('swipe-transition', data); + e.stopPropagation(); + }) + .on('touchmove.fndtn.orbit', function (e) { + if (!e.touches) { + e = e.originalEvent; + } + // Ignore pinch/zoom events + if (e.touches.length > 1 || e.scale && e.scale !== 1) { + return; + } + + var data = container.data('swipe-transition'); + if (typeof data === 'undefined') {data = {};} + + data.delta_x = e.touches[0].pageX - data.start_page_x; + + if ( typeof data.is_scrolling === 'undefined') { + data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) ); + } + + if (!data.is_scrolling && !data.active) { + e.preventDefault(); + var direction = (data.delta_x < 0) ? (idx + 1) : (idx - 1); + data.active = true; + self._goto(direction); + } + }) + .on('touchend.fndtn.orbit', function (e) { + container.data('swipe-transition', {}); + e.stopPropagation(); + }) + } + container.on('mouseenter.fndtn.orbit', function (e) { + if (settings.timer && settings.pause_on_hover) { + self.stop_timer(); + } + }) + .on('mouseleave.fndtn.orbit', function (e) { + if (settings.timer && settings.resume_on_mouseout) { + timer.start(); + } + }); + + $(document).on('click', '[data-orbit-link]', self.link_custom); + $(window).on('load resize', self.compute_dimensions); + Foundation.utils.image_loaded(this.slides().children('img'), self.compute_dimensions); + Foundation.utils.image_loaded(this.slides().children('img'), function () { + container.prev('.' + settings.preloader_class).css('display', 'none'); + self.update_slide_number(0); + self.update_active_link(0); + slides_container.trigger('ready.fndtn.orbit'); + }); + }; + + self.init(); + }; + + var Timer = function (el, settings, callback) { + var self = this, + duration = settings.timer_speed, + progress = el.find('.' + settings.timer_progress_class), + start, + timeout, + left = -1; + + this.update_progress = function (w) { + var new_progress = progress.clone(); + new_progress.attr('style', ''); + new_progress.css('width', w + '%'); + progress.replaceWith(new_progress); + progress = new_progress; + }; + + this.restart = function () { + clearTimeout(timeout); + el.addClass(settings.timer_paused_class); + left = -1; + self.update_progress(0); + }; + + this.start = function () { + if (!el.hasClass(settings.timer_paused_class)) {return true;} + left = (left === -1) ? duration : left; + el.removeClass(settings.timer_paused_class); + start = new Date().getTime(); + progress.animate({'width' : '100%'}, left, 'linear'); + timeout = setTimeout(function () { + self.restart(); + callback(); + }, left); + el.trigger('timer-started.fndtn.orbit') + }; + + this.stop = function () { + if (el.hasClass(settings.timer_paused_class)) {return true;} + clearTimeout(timeout); + el.addClass(settings.timer_paused_class); + var end = new Date().getTime(); + left = left - (end - start); + var w = 100 - ((left / duration) * 100); + self.update_progress(w); + el.trigger('timer-stopped.fndtn.orbit'); + }; + }; + + var SlideAnimation = function (settings, container) { + var duration = settings.animation_speed; + var is_rtl = ($('html[dir=rtl]').length === 1); + var margin = is_rtl ? 'marginRight' : 'marginLeft'; + var animMargin = {}; + animMargin[margin] = '0%'; + + this.next = function (current, next, callback) { + current.animate({marginLeft : '-100%'}, duration); + next.animate(animMargin, duration, function () { + current.css(margin, '100%'); + callback(); + }); + }; + + this.prev = function (current, prev, callback) { + current.animate({marginLeft : '100%'}, duration); + prev.css(margin, '-100%'); + prev.animate(animMargin, duration, function () { + current.css(margin, '100%'); + callback(); + }); + }; + }; + + var FadeAnimation = function (settings, container) { + var duration = settings.animation_speed; + var is_rtl = ($('html[dir=rtl]').length === 1); + var margin = is_rtl ? 'marginRight' : 'marginLeft'; + + this.next = function (current, next, callback) { + next.css({'margin' : '0%', 'opacity' : '0.01'}); + next.animate({'opacity' :'1'}, duration, 'linear', function () { + current.css('margin', '100%'); + callback(); + }); + }; + + this.prev = function (current, prev, callback) { + prev.css({'margin' : '0%', 'opacity' : '0.01'}); + prev.animate({'opacity' : '1'}, duration, 'linear', function () { + current.css('margin', '100%'); + callback(); + }); + }; + }; + + Foundation.libs = Foundation.libs || {}; + + Foundation.libs.orbit = { + name : 'orbit', + + version : '5.5.2', + + settings : { + animation : 'slide', + timer_speed : 10000, + pause_on_hover : true, + resume_on_mouseout : false, + next_on_click : true, + animation_speed : 500, + stack_on_small : false, + navigation_arrows : true, + slide_number : true, + slide_number_text : 'of', + 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', + preloader_class : 'preloader', + slide_selector : '*', + 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', + bullets : true, + circular : true, + timer : true, + variable_height : false, + swipe : true, + before_slide_change : noop, + after_slide_change : noop + }, + + init : function (scope, method, options) { + var self = this; + this.bindings(method, options); + }, + + events : function (instance) { + var orbit_instance = new Orbit(this.S(instance), this.S(instance).data('orbit-init')); + this.S(instance).data(this.name + '-instance', orbit_instance); + }, + + reflow : function () { + var self = this; + + if (self.S(self.scope).is('[data-orbit]')) { + var $el = self.S(self.scope); + var instance = $el.data(self.name + '-instance'); + instance.compute_dimensions(); + } else { + self.S('[data-orbit]', self.scope).each(function (idx, el) { + var $el = self.S(el); + var opts = self.data_options($el); + var instance = $el.data(self.name + '-instance'); + instance.compute_dimensions(); + }); + } + } + }; + +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.offcanvas = { + name : 'offcanvas', + + version : '5.5.2', + + settings : { + open_method : 'move', + close_on_click : false + }, + + init : function (scope, method, options) { + this.bindings(method, options); + }, + + events : function () { + var self = this, + S = self.S, + move_class = '', + right_postfix = '', + left_postfix = ''; + + if (this.settings.open_method === 'move') { + move_class = 'move-'; + right_postfix = 'right'; + left_postfix = 'left'; + } else if (this.settings.open_method === 'overlap_single') { + move_class = 'offcanvas-overlap-'; + right_postfix = 'right'; + left_postfix = 'left'; + } else if (this.settings.open_method === 'overlap') { + move_class = 'offcanvas-overlap'; + } + + S(this.scope).off('.offcanvas') + .on('click.fndtn.offcanvas', '.left-off-canvas-toggle', function (e) { + self.click_toggle_class(e, move_class + right_postfix); + if (self.settings.open_method !== 'overlap') { + S('.left-submenu').removeClass(move_class + right_postfix); + } + $('.left-off-canvas-toggle').attr('aria-expanded', 'true'); + }) + .on('click.fndtn.offcanvas', '.left-off-canvas-menu a', function (e) { + var settings = self.get_settings(e); + var parent = S(this).parent(); + + if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) { + self.hide.call(self, move_class + right_postfix, self.get_wrapper(e)); + parent.parent().removeClass(move_class + right_postfix); + } else if (S(this).parent().hasClass('has-submenu')) { + e.preventDefault(); + S(this).siblings('.left-submenu').toggleClass(move_class + right_postfix); + } else if (parent.hasClass('back')) { + e.preventDefault(); + parent.parent().removeClass(move_class + right_postfix); + } + $('.left-off-canvas-toggle').attr('aria-expanded', 'true'); + }) + .on('click.fndtn.offcanvas', '.right-off-canvas-toggle', function (e) { + self.click_toggle_class(e, move_class + left_postfix); + if (self.settings.open_method !== 'overlap') { + S('.right-submenu').removeClass(move_class + left_postfix); + } + $('.right-off-canvas-toggle').attr('aria-expanded', 'true'); + }) + .on('click.fndtn.offcanvas', '.right-off-canvas-menu a', function (e) { + var settings = self.get_settings(e); + var parent = S(this).parent(); + + if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) { + self.hide.call(self, move_class + left_postfix, self.get_wrapper(e)); + parent.parent().removeClass(move_class + left_postfix); + } else if (S(this).parent().hasClass('has-submenu')) { + e.preventDefault(); + S(this).siblings('.right-submenu').toggleClass(move_class + left_postfix); + } else if (parent.hasClass('back')) { + e.preventDefault(); + parent.parent().removeClass(move_class + left_postfix); + } + $('.right-off-canvas-toggle').attr('aria-expanded', 'true'); + }) + .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) { + self.click_remove_class(e, move_class + left_postfix); + S('.right-submenu').removeClass(move_class + left_postfix); + if (right_postfix) { + self.click_remove_class(e, move_class + right_postfix); + S('.left-submenu').removeClass(move_class + left_postfix); + } + $('.right-off-canvas-toggle').attr('aria-expanded', 'true'); + }) + .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) { + self.click_remove_class(e, move_class + left_postfix); + $('.left-off-canvas-toggle').attr('aria-expanded', 'false'); + if (right_postfix) { + self.click_remove_class(e, move_class + right_postfix); + $('.right-off-canvas-toggle').attr('aria-expanded', 'false'); + } + }); + }, + + toggle : function (class_name, $off_canvas) { + $off_canvas = $off_canvas || this.get_wrapper(); + if ($off_canvas.is('.' + class_name)) { + this.hide(class_name, $off_canvas); + } else { + this.show(class_name, $off_canvas); + } + }, + + show : function (class_name, $off_canvas) { + $off_canvas = $off_canvas || this.get_wrapper(); + $off_canvas.trigger('open.fndtn.offcanvas'); + $off_canvas.addClass(class_name); + }, + + hide : function (class_name, $off_canvas) { + $off_canvas = $off_canvas || this.get_wrapper(); + $off_canvas.trigger('close.fndtn.offcanvas'); + $off_canvas.removeClass(class_name); + }, + + click_toggle_class : function (e, class_name) { + e.preventDefault(); + var $off_canvas = this.get_wrapper(e); + this.toggle(class_name, $off_canvas); + }, + + click_remove_class : function (e, class_name) { + e.preventDefault(); + var $off_canvas = this.get_wrapper(e); + this.hide(class_name, $off_canvas); + }, + + get_settings : function (e) { + var offcanvas = this.S(e.target).closest('[' + this.attr_name() + ']'); + return offcanvas.data(this.attr_name(true) + '-init') || this.settings; + }, + + get_wrapper : function (e) { + var $off_canvas = this.S(e ? e.target : this.scope).closest('.off-canvas-wrap'); + + if ($off_canvas.length === 0) { + $off_canvas = this.S('.off-canvas-wrap'); + } + return $off_canvas; + }, + + reflow : function () {} + }; +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.alert = { + name : 'alert', + + version : '5.5.2', + + settings : { + callback : function () {} + }, + + init : function (scope, method, options) { + this.bindings(method, options); + }, + + events : function () { + var self = this, + S = this.S; + + $(this.scope).off('.alert').on('click.fndtn.alert', '[' + this.attr_name() + '] .close', function (e) { + var alertBox = S(this).closest('[' + self.attr_name() + ']'), + settings = alertBox.data(self.attr_name(true) + '-init') || self.settings; + + e.preventDefault(); + if (Modernizr.csstransitions) { + alertBox.addClass('alert-close'); + alertBox.on('transitionend webkitTransitionEnd oTransitionEnd', function (e) { + S(this).trigger('close.fndtn.alert').remove(); + settings.callback(); + }); + } else { + alertBox.fadeOut(300, function () { + S(this).trigger('close.fndtn.alert').remove(); + settings.callback(); + }); + } + }); + }, + + reflow : function () {} + }; +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.reveal = { + name : 'reveal', + + version : '5.5.2', + + locked : false, + + settings : { + animation : 'fadeAndPop', + animation_speed : 250, + close_on_background_click : true, + close_on_esc : true, + dismiss_modal_class : 'close-reveal-modal', + multiple_opened : false, + bg_class : 'reveal-modal-bg', + root_element : 'body', + open : function(){}, + opened : function(){}, + close : function(){}, + closed : function(){}, + on_ajax_error: $.noop, + bg : $('.reveal-modal-bg'), + css : { + open : { + 'opacity' : 0, + 'visibility' : 'visible', + 'display' : 'block' + }, + close : { + 'opacity' : 1, + 'visibility' : 'hidden', + 'display' : 'none' + } + } + }, + + init : function (scope, method, options) { + $.extend(true, this.settings, method, options); + this.bindings(method, options); + }, + + events : function (scope) { + var self = this, + S = self.S; + + S(this.scope) + .off('.reveal') + .on('click.fndtn.reveal', '[' + this.add_namespace('data-reveal-id') + ']:not([disabled])', function (e) { + e.preventDefault(); + + if (!self.locked) { + var element = S(this), + ajax = element.data(self.data_attr('reveal-ajax')), + replaceContentSel = element.data(self.data_attr('reveal-replace-content')); + + self.locked = true; + + if (typeof ajax === 'undefined') { + self.open.call(self, element); + } else { + var url = ajax === true ? element.attr('href') : ajax; + self.open.call(self, element, {url : url}, { replaceContentSel : replaceContentSel }); + } + } + }); + + S(document) + .on('click.fndtn.reveal', this.close_targets(), function (e) { + e.preventDefault(); + if (!self.locked) { + var settings = S('[' + self.attr_name() + '].open').data(self.attr_name(true) + '-init') || self.settings, + bg_clicked = S(e.target)[0] === S('.' + settings.bg_class)[0]; + + if (bg_clicked) { + if (settings.close_on_background_click) { + e.stopPropagation(); + } else { + return; + } + } + + self.locked = true; + self.close.call(self, bg_clicked ? S('[' + self.attr_name() + '].open:not(.toback)') : S(this).closest('[' + self.attr_name() + ']')); + } + }); + + if (S('[' + self.attr_name() + ']', this.scope).length > 0) { + S(this.scope) + // .off('.reveal') + .on('open.fndtn.reveal', this.settings.open) + .on('opened.fndtn.reveal', this.settings.opened) + .on('opened.fndtn.reveal', this.open_video) + .on('close.fndtn.reveal', this.settings.close) + .on('closed.fndtn.reveal', this.settings.closed) + .on('closed.fndtn.reveal', this.close_video); + } else { + S(this.scope) + // .off('.reveal') + .on('open.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.open) + .on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.opened) + .on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.open_video) + .on('close.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.close) + .on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.closed) + .on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.close_video); + } + + return true; + }, + + // PATCH #3: turning on key up capture only when a reveal window is open + key_up_on : function (scope) { + var self = this; + + // PATCH #1: fixing multiple keyup event trigger from single key press + self.S('body').off('keyup.fndtn.reveal').on('keyup.fndtn.reveal', function ( event ) { + var open_modal = self.S('[' + self.attr_name() + '].open'), + settings = open_modal.data(self.attr_name(true) + '-init') || self.settings ; + // PATCH #2: making sure that the close event can be called only while unlocked, + // so that multiple keyup.fndtn.reveal events don't prevent clean closing of the reveal window. + if ( settings && event.which === 27 && settings.close_on_esc && !self.locked) { // 27 is the keycode for the Escape key + self.close.call(self, open_modal); + } + }); + + return true; + }, + + // PATCH #3: turning on key up capture only when a reveal window is open + key_up_off : function (scope) { + this.S('body').off('keyup.fndtn.reveal'); + return true; + }, + + open : function (target, ajax_settings) { + var self = this, + modal; + + if (target) { + if (typeof target.selector !== 'undefined') { + // Find the named node; only use the first one found, since the rest of the code assumes there's only one node + modal = self.S('#' + target.data(self.data_attr('reveal-id'))).first(); + } else { + modal = self.S(this.scope); + + ajax_settings = target; + } + } else { + modal = self.S(this.scope); + } + + var settings = modal.data(self.attr_name(true) + '-init'); + settings = settings || this.settings; + + + if (modal.hasClass('open') && target.attr('data-reveal-id') == modal.attr('id')) { + return self.close(modal); + } + + if (!modal.hasClass('open')) { + var open_modal = self.S('[' + self.attr_name() + '].open'); + + if (typeof modal.data('css-top') === 'undefined') { + modal.data('css-top', parseInt(modal.css('top'), 10)) + .data('offset', this.cache_offset(modal)); + } + + modal.attr('tabindex','0').attr('aria-hidden','false'); + + this.key_up_on(modal); // PATCH #3: turning on key up capture only when a reveal window is open + + // Prevent namespace event from triggering twice + modal.on('open.fndtn.reveal', function(e) { + if (e.namespace !== 'fndtn.reveal') return; + }); + + modal.on('open.fndtn.reveal').trigger('open.fndtn.reveal'); + + if (open_modal.length < 1) { + this.toggle_bg(modal, true); + } + + if (typeof ajax_settings === 'string') { + ajax_settings = { + url : ajax_settings + }; + } + + if (typeof ajax_settings === 'undefined' || !ajax_settings.url) { + if (open_modal.length > 0) { + if (settings.multiple_opened) { + self.to_back(open_modal); + } else { + self.hide(open_modal, settings.css.close); + } + } + + this.show(modal, settings.css.open); + } else { + var old_success = typeof ajax_settings.success !== 'undefined' ? ajax_settings.success : null; + $.extend(ajax_settings, { + success : function (data, textStatus, jqXHR) { + if ( $.isFunction(old_success) ) { + var result = old_success(data, textStatus, jqXHR); + if (typeof result == 'string') { + data = result; + } + } + + if (typeof options !== 'undefined' && typeof options.replaceContentSel !== 'undefined') { + modal.find(options.replaceContentSel).html(data); + } else { + modal.html(data); + } + + self.S(modal).foundation('section', 'reflow'); + self.S(modal).children().foundation(); + + if (open_modal.length > 0) { + if (settings.multiple_opened) { + self.to_back(open_modal); + } else { + self.hide(open_modal, settings.css.close); + } + } + self.show(modal, settings.css.open); + } + }); + + // check for if user initalized with error callback + if (settings.on_ajax_error !== $.noop) { + $.extend(ajax_settings, { + error : settings.on_ajax_error + }); + } + + $.ajax(ajax_settings); + } + } + self.S(window).trigger('resize'); + }, + + close : function (modal) { + var modal = modal && modal.length ? modal : this.S(this.scope), + open_modals = this.S('[' + this.attr_name() + '].open'), + settings = modal.data(this.attr_name(true) + '-init') || this.settings, + self = this; + + if (open_modals.length > 0) { + + modal.removeAttr('tabindex','0').attr('aria-hidden','true'); + + this.locked = true; + this.key_up_off(modal); // PATCH #3: turning on key up capture only when a reveal window is open + + modal.trigger('close.fndtn.reveal'); + + if ((settings.multiple_opened && open_modals.length === 1) || !settings.multiple_opened || modal.length > 1) { + self.toggle_bg(modal, false); + self.to_front(modal); + } + + if (settings.multiple_opened) { + self.hide(modal, settings.css.close, settings); + self.to_front($($.makeArray(open_modals).reverse()[1])); + } else { + self.hide(open_modals, settings.css.close, settings); + } + } + }, + + close_targets : function () { + var base = '.' + this.settings.dismiss_modal_class; + + if (this.settings.close_on_background_click) { + return base + ', .' + this.settings.bg_class; + } + + return base; + }, + + toggle_bg : function (modal, state) { + if (this.S('.' + this.settings.bg_class).length === 0) { + this.settings.bg = $('<div />', {'class': this.settings.bg_class}) + .appendTo('body').hide(); + } + + var visible = this.settings.bg.filter(':visible').length > 0; + if ( state != visible ) { + if ( state == undefined ? visible : !state ) { + this.hide(this.settings.bg); + } else { + this.show(this.settings.bg); + } + } + }, + + show : function (el, css) { + // is modal + if (css) { + var settings = el.data(this.attr_name(true) + '-init') || this.settings, + root_element = settings.root_element, + context = this; + + if (el.parent(root_element).length === 0) { + var placeholder = el.wrap('<div style="display: none;" />').parent(); + + el.on('closed.fndtn.reveal.wrapped', function () { + el.detach().appendTo(placeholder); + el.unwrap().unbind('closed.fndtn.reveal.wrapped'); + }); + + el.detach().appendTo(root_element); + } + + var animData = getAnimationData(settings.animation); + if (!animData.animate) { + this.locked = false; + } + if (animData.pop) { + css.top = $(window).scrollTop() - el.data('offset') + 'px'; + var end_css = { + top: $(window).scrollTop() + el.data('css-top') + 'px', + opacity: 1 + }; + + return setTimeout(function () { + return el + .css(css) + .animate(end_css, settings.animation_speed, 'linear', function () { + context.locked = false; + el.trigger('opened.fndtn.reveal'); + }) + .addClass('open'); + }, settings.animation_speed / 2); + } + + if (animData.fade) { + css.top = $(window).scrollTop() + el.data('css-top') + 'px'; + var end_css = {opacity: 1}; + + return setTimeout(function () { + return el + .css(css) + .animate(end_css, settings.animation_speed, 'linear', function () { + context.locked = false; + el.trigger('opened.fndtn.reveal'); + }) + .addClass('open'); + }, settings.animation_speed / 2); + } + + return el.css(css).show().css({opacity : 1}).addClass('open').trigger('opened.fndtn.reveal'); + } + + var settings = this.settings; + + // should we animate the background? + if (getAnimationData(settings.animation).fade) { + return el.fadeIn(settings.animation_speed / 2); + } + + this.locked = false; + + return el.show(); + }, + + to_back : function(el) { + el.addClass('toback'); + }, + + to_front : function(el) { + el.removeClass('toback'); + }, + + hide : function (el, css) { + // is modal + if (css) { + var settings = el.data(this.attr_name(true) + '-init'), + context = this; + settings = settings || this.settings; + + var animData = getAnimationData(settings.animation); + if (!animData.animate) { + this.locked = false; + } + if (animData.pop) { + var end_css = { + top: - $(window).scrollTop() - el.data('offset') + 'px', + opacity: 0 + }; + + return setTimeout(function () { + return el + .animate(end_css, settings.animation_speed, 'linear', function () { + context.locked = false; + el.css(css).trigger('closed.fndtn.reveal'); + }) + .removeClass('open'); + }, settings.animation_speed / 2); + } + + if (animData.fade) { + var end_css = {opacity : 0}; + + return setTimeout(function () { + return el + .animate(end_css, settings.animation_speed, 'linear', function () { + context.locked = false; + el.css(css).trigger('closed.fndtn.reveal'); + }) + .removeClass('open'); + }, settings.animation_speed / 2); + } + + return el.hide().css(css).removeClass('open').trigger('closed.fndtn.reveal'); + } + + var settings = this.settings; + + // should we animate the background? + if (getAnimationData(settings.animation).fade) { + return el.fadeOut(settings.animation_speed / 2); + } + + return el.hide(); + }, + + close_video : function (e) { + var video = $('.flex-video', e.target), + iframe = $('iframe', video); + + if (iframe.length > 0) { + iframe.attr('data-src', iframe[0].src); + iframe.attr('src', iframe.attr('src')); + video.hide(); + } + }, + + open_video : function (e) { + var video = $('.flex-video', e.target), + iframe = video.find('iframe'); + + if (iframe.length > 0) { + var data_src = iframe.attr('data-src'); + if (typeof data_src === 'string') { + iframe[0].src = iframe.attr('data-src'); + } else { + var src = iframe[0].src; + iframe[0].src = undefined; + iframe[0].src = src; + } + video.show(); + } + }, + + data_attr : function (str) { + if (this.namespace.length > 0) { + return this.namespace + '-' + str; + } + + return str; + }, + + cache_offset : function (modal) { + var offset = modal.show().height() + parseInt(modal.css('top'), 10) + modal.scrollY; + + modal.hide(); + + return offset; + }, + + off : function () { + $(this.scope).off('.fndtn.reveal'); + }, + + reflow : function () {} + }; + + /* + * getAnimationData('popAndFade') // {animate: true, pop: true, fade: true} + * getAnimationData('fade') // {animate: true, pop: false, fade: true} + * getAnimationData('pop') // {animate: true, pop: true, fade: false} + * getAnimationData('foo') // {animate: false, pop: false, fade: false} + * getAnimationData(null) // {animate: false, pop: false, fade: false} + */ + function getAnimationData(str) { + var fade = /fade/i.test(str); + var pop = /pop/i.test(str); + return { + animate : fade || pop, + pop : pop, + fade : fade + }; + } +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.interchange = { + name : 'interchange', + + version : '5.5.2', + + cache : {}, + + images_loaded : false, + nodes_loaded : false, + + settings : { + load_attr : 'interchange', + + named_queries : { + 'default' : 'only screen', + 'small' : Foundation.media_queries['small'], + 'small-only' : Foundation.media_queries['small-only'], + 'medium' : Foundation.media_queries['medium'], + 'medium-only' : Foundation.media_queries['medium-only'], + 'large' : Foundation.media_queries['large'], + 'large-only' : Foundation.media_queries['large-only'], + 'xlarge' : Foundation.media_queries['xlarge'], + 'xlarge-only' : Foundation.media_queries['xlarge-only'], + 'xxlarge' : Foundation.media_queries['xxlarge'], + 'landscape' : 'only screen and (orientation: landscape)', + 'portrait' : 'only screen and (orientation: portrait)', + 'retina' : 'only screen and (-webkit-min-device-pixel-ratio: 2),' + + 'only screen and (min--moz-device-pixel-ratio: 2),' + + 'only screen and (-o-min-device-pixel-ratio: 2/1),' + + 'only screen and (min-device-pixel-ratio: 2),' + + 'only screen and (min-resolution: 192dpi),' + + 'only screen and (min-resolution: 2dppx)' + }, + + directives : { + replace : function (el, path, trigger) { + // The trigger argument, if called within the directive, fires + // an event named after the directive on the element, passing + // any parameters along to the event that you pass to trigger. + // + // ex. trigger(), trigger([a, b, c]), or trigger(a, b, c) + // + // This allows you to bind a callback like so: + // $('#interchangeContainer').on('replace', function (e, a, b, c) { + // console.log($(this).html(), a, b, c); + // }); + + if (el !== null && /IMG/.test(el[0].nodeName)) { + var orig_path = el[0].src; + + if (new RegExp(path, 'i').test(orig_path)) { + return; + } + + el.attr("src", path); + + return trigger(el[0].src); + } + var last_path = el.data(this.data_attr + '-last-path'), + self = this; + + if (last_path == path) { + return; + } + + if (/\.(gif|jpg|jpeg|tiff|png)([?#].*)?/i.test(path)) { + $(el).css('background-image', 'url(' + path + ')'); + el.data('interchange-last-path', path); + return trigger(path); + } + + return $.get(path, function (response) { + el.html(response); + el.data(self.data_attr + '-last-path', path); + trigger(); + }); + + } + } + }, + + init : function (scope, method, options) { + Foundation.inherit(this, 'throttle random_str'); + + this.data_attr = this.set_data_attr(); + $.extend(true, this.settings, method, options); + this.bindings(method, options); + this.reflow(); + }, + + get_media_hash : function () { + var mediaHash = ''; + for (var queryName in this.settings.named_queries ) { + mediaHash += matchMedia(this.settings.named_queries[queryName]).matches.toString(); + } + return mediaHash; + }, + + events : function () { + var self = this, prevMediaHash; + + $(window) + .off('.interchange') + .on('resize.fndtn.interchange', self.throttle(function () { + var currMediaHash = self.get_media_hash(); + if (currMediaHash !== prevMediaHash) { + self.resize(); + } + prevMediaHash = currMediaHash; + }, 50)); + + return this; + }, + + resize : function () { + var cache = this.cache; + + if (!this.images_loaded || !this.nodes_loaded) { + setTimeout($.proxy(this.resize, this), 50); + return; + } + + for (var uuid in cache) { + if (cache.hasOwnProperty(uuid)) { + var passed = this.results(uuid, cache[uuid]); + if (passed) { + this.settings.directives[passed + .scenario[1]].call(this, passed.el, passed.scenario[0], (function (passed) { + if (arguments[0] instanceof Array) { + var args = arguments[0]; + } else { + var args = Array.prototype.slice.call(arguments, 0); + } + + return function() { + passed.el.trigger(passed.scenario[1], args); + } + }(passed))); + } + } + } + + }, + + results : function (uuid, scenarios) { + var count = scenarios.length; + + if (count > 0) { + var el = this.S('[' + this.add_namespace('data-uuid') + '="' + uuid + '"]'); + + while (count--) { + var mq, rule = scenarios[count][2]; + if (this.settings.named_queries.hasOwnProperty(rule)) { + mq = matchMedia(this.settings.named_queries[rule]); + } else { + mq = matchMedia(rule); + } + if (mq.matches) { + return {el : el, scenario : scenarios[count]}; + } + } + } + + return false; + }, + + load : function (type, force_update) { + if (typeof this['cached_' + type] === 'undefined' || force_update) { + this['update_' + type](); + } + + return this['cached_' + type]; + }, + + update_images : function () { + var images = this.S('img[' + this.data_attr + ']'), + count = images.length, + i = count, + loaded_count = 0, + data_attr = this.data_attr; + + this.cache = {}; + this.cached_images = []; + this.images_loaded = (count === 0); + + while (i--) { + loaded_count++; + if (images[i]) { + var str = images[i].getAttribute(data_attr) || ''; + + if (str.length > 0) { + this.cached_images.push(images[i]); + } + } + + if (loaded_count === count) { + this.images_loaded = true; + this.enhance('images'); + } + } + + return this; + }, + + update_nodes : function () { + var nodes = this.S('[' + this.data_attr + ']').not('img'), + count = nodes.length, + i = count, + loaded_count = 0, + data_attr = this.data_attr; + + this.cached_nodes = []; + this.nodes_loaded = (count === 0); + + while (i--) { + loaded_count++; + var str = nodes[i].getAttribute(data_attr) || ''; + + if (str.length > 0) { + this.cached_nodes.push(nodes[i]); + } + + if (loaded_count === count) { + this.nodes_loaded = true; + this.enhance('nodes'); + } + } + + return this; + }, + + enhance : function (type) { + var i = this['cached_' + type].length; + + while (i--) { + this.object($(this['cached_' + type][i])); + } + + return $(window).trigger('resize.fndtn.interchange'); + }, + + convert_directive : function (directive) { + + var trimmed = this.trim(directive); + + if (trimmed.length > 0) { + return trimmed; + } + + return 'replace'; + }, + + parse_scenario : function (scenario) { + // This logic had to be made more complex since some users were using commas in the url path + // So we cannot simply just split on a comma + + var directive_match = scenario[0].match(/(.+),\s*(\w+)\s*$/), + // getting the mq has gotten a bit complicated since we started accounting for several use cases + // of URLs. For now we'll continue to match these scenarios, but we may consider having these scenarios + // as nested objects or arrays in F6. + // regex: match everything before close parenthesis for mq + media_query = scenario[1].match(/(.*)\)/); + + if (directive_match) { + var path = directive_match[1], + directive = directive_match[2]; + + } else { + var cached_split = scenario[0].split(/,\s*$/), + path = cached_split[0], + directive = ''; + } + + return [this.trim(path), this.convert_directive(directive), this.trim(media_query[1])]; + }, + + object : function (el) { + var raw_arr = this.parse_data_attr(el), + scenarios = [], + i = raw_arr.length; + + if (i > 0) { + while (i--) { + // split array between comma delimited content and mq + // regex: comma, optional space, open parenthesis + var scenario = raw_arr[i].split(/,\s?\(/); + + if (scenario.length > 1) { + var params = this.parse_scenario(scenario); + scenarios.push(params); + } + } + } + + return this.store(el, scenarios); + }, + + store : function (el, scenarios) { + var uuid = this.random_str(), + current_uuid = el.data(this.add_namespace('uuid', true)); + + if (this.cache[current_uuid]) { + return this.cache[current_uuid]; + } + + el.attr(this.add_namespace('data-uuid'), uuid); + return this.cache[uuid] = scenarios; + }, + + trim : function (str) { + + if (typeof str === 'string') { + return $.trim(str); + } + + return str; + }, + + set_data_attr : function (init) { + if (init) { + if (this.namespace.length > 0) { + return this.namespace + '-' + this.settings.load_attr; + } + + return this.settings.load_attr; + } + + if (this.namespace.length > 0) { + return 'data-' + this.namespace + '-' + this.settings.load_attr; + } + + return 'data-' + this.settings.load_attr; + }, + + parse_data_attr : function (el) { + var raw = el.attr(this.attr_name()).split(/\[(.*?)\]/), + i = raw.length, + output = []; + + while (i--) { + if (raw[i].replace(/[\W\d]+/, '').length > 4) { + output.push(raw[i]); + } + } + + return output; + }, + + reflow : function () { + this.load('images', true); + this.load('nodes', true); + } + + }; + +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs['magellan-expedition'] = { + name : 'magellan-expedition', + + version : '5.5.2', + + settings : { + active_class : 'active', + threshold : 0, // pixels from the top of the expedition for it to become fixes + destination_threshold : 20, // pixels from the top of destination for it to be considered active + throttle_delay : 30, // calculation throttling to increase framerate + fixed_top : 0, // top distance in pixels assigend to the fixed element on scroll + offset_by_height : true, // whether to offset the destination by the expedition height. Usually you want this to be true, unless your expedition is on the side. + duration : 700, // animation duration time + easing : 'swing' // animation easing + }, + + init : function (scope, method, options) { + Foundation.inherit(this, 'throttle'); + this.bindings(method, options); + }, + + events : function () { + var self = this, + S = self.S, + settings = self.settings; + + // initialize expedition offset + self.set_expedition_position(); + + S(self.scope) + .off('.magellan') + .on('click.fndtn.magellan', '[' + self.add_namespace('data-magellan-arrival') + '] a[href*=#]', function (e) { + var sameHost = ((this.hostname === location.hostname) || !this.hostname), + samePath = self.filterPathname(location.pathname) === self.filterPathname(this.pathname), + testHash = this.hash.replace(/(:|\.|\/)/g, '\\$1'), + anchor = this; + + if (sameHost && samePath && testHash) { + e.preventDefault(); + var expedition = $(this).closest('[' + self.attr_name() + ']'), + settings = expedition.data('magellan-expedition-init'), + hash = this.hash.split('#').join(''), + target = $('a[name="' + hash + '"]'); + + if (target.length === 0) { + target = $('#' + hash); + + } + + // Account for expedition height if fixed position + var scroll_top = target.offset().top - settings.destination_threshold + 1; + if (settings.offset_by_height) { + scroll_top = scroll_top - expedition.outerHeight(); + } + $('html, body').stop().animate({ + 'scrollTop' : scroll_top + }, settings.duration, settings.easing, function () { + if (history.pushState) { + history.pushState(null, null, anchor.pathname + '#' + hash); + } + else { + location.hash = anchor.pathname + '#' + hash; + } + }); + } + }) + .on('scroll.fndtn.magellan', self.throttle(this.check_for_arrivals.bind(this), settings.throttle_delay)); + }, + + check_for_arrivals : function () { + var self = this; + self.update_arrivals(); + self.update_expedition_positions(); + }, + + set_expedition_position : function () { + var self = this; + $('[' + this.attr_name() + '=fixed]', self.scope).each(function (idx, el) { + var expedition = $(this), + settings = expedition.data('magellan-expedition-init'), + styles = expedition.attr('styles'), // save styles + top_offset, fixed_top; + + expedition.attr('style', ''); + top_offset = expedition.offset().top + settings.threshold; + + //set fixed-top by attribute + fixed_top = parseInt(expedition.data('magellan-fixed-top')); + if (!isNaN(fixed_top)) { + self.settings.fixed_top = fixed_top; + } + + expedition.data(self.data_attr('magellan-top-offset'), top_offset); + expedition.attr('style', styles); + }); + }, + + update_expedition_positions : function () { + var self = this, + window_top_offset = $(window).scrollTop(); + + $('[' + this.attr_name() + '=fixed]', self.scope).each(function () { + var expedition = $(this), + settings = expedition.data('magellan-expedition-init'), + styles = expedition.attr('style'), // save styles + top_offset = expedition.data('magellan-top-offset'); + + //scroll to the top distance + if (window_top_offset + self.settings.fixed_top >= top_offset) { + // Placeholder allows height calculations to be consistent even when + // appearing to switch between fixed/non-fixed placement + var placeholder = expedition.prev('[' + self.add_namespace('data-magellan-expedition-clone') + ']'); + if (placeholder.length === 0) { + placeholder = expedition.clone(); + placeholder.removeAttr(self.attr_name()); + placeholder.attr(self.add_namespace('data-magellan-expedition-clone'), ''); + expedition.before(placeholder); + } + expedition.css({position :'fixed', top : settings.fixed_top}).addClass('fixed'); + } else { + expedition.prev('[' + self.add_namespace('data-magellan-expedition-clone') + ']').remove(); + expedition.attr('style', styles).css('position', '').css('top', '').removeClass('fixed'); + } + }); + }, + + update_arrivals : function () { + var self = this, + window_top_offset = $(window).scrollTop(); + + $('[' + this.attr_name() + ']', self.scope).each(function () { + var expedition = $(this), + settings = expedition.data(self.attr_name(true) + '-init'), + offsets = self.offsets(expedition, window_top_offset), + arrivals = expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']'), + active_item = false; + offsets.each(function (idx, item) { + if (item.viewport_offset >= item.top_offset) { + var arrivals = expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']'); + arrivals.not(item.arrival).removeClass(settings.active_class); + item.arrival.addClass(settings.active_class); + active_item = true; + return true; + } + }); + + if (!active_item) { + arrivals.removeClass(settings.active_class); + } + }); + }, + + offsets : function (expedition, window_offset) { + var self = this, + settings = expedition.data(self.attr_name(true) + '-init'), + viewport_offset = window_offset; + + return expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']').map(function (idx, el) { + var name = $(this).data(self.data_attr('magellan-arrival')), + dest = $('[' + self.add_namespace('data-magellan-destination') + '=' + name + ']'); + if (dest.length > 0) { + var top_offset = dest.offset().top - settings.destination_threshold; + if (settings.offset_by_height) { + top_offset = top_offset - expedition.outerHeight(); + } + top_offset = Math.floor(top_offset); + return { + destination : dest, + arrival : $(this), + top_offset : top_offset, + viewport_offset : viewport_offset + } + } + }).sort(function (a, b) { + if (a.top_offset < b.top_offset) { + return -1; + } + if (a.top_offset > b.top_offset) { + return 1; + } + return 0; + }); + }, + + data_attr : function (str) { + if (this.namespace.length > 0) { + return this.namespace + '-' + str; + } + + return str; + }, + + off : function () { + this.S(this.scope).off('.magellan'); + this.S(window).off('.magellan'); + }, + + filterPathname : function (pathname) { + pathname = pathname || ''; + return pathname + .replace(/^\//,'') + .replace(/(?:index|default).[a-zA-Z]{3,4}$/,'') + .replace(/\/$/,''); + }, + + reflow : function () { + var self = this; + // remove placeholder expeditions used for height calculation purposes + $('[' + self.add_namespace('data-magellan-expedition-clone') + ']', self.scope).remove(); + } + }; +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.accordion = { + name : 'accordion', + + version : '5.5.2', + + settings : { + content_class : 'content', + active_class : 'active', + multi_expand : false, + toggleable : true, + callback : function () {} + }, + + init : function (scope, method, options) { + this.bindings(method, options); + }, + + events : function (instance) { + var self = this; + var S = this.S; + self.create(this.S(instance)); + + S(this.scope) + .off('.fndtn.accordion') + .on('click.fndtn.accordion', '[' + this.attr_name() + '] > dd > a, [' + this.attr_name() + '] > li > a', function (e) { + var accordion = S(this).closest('[' + self.attr_name() + ']'), + groupSelector = self.attr_name() + '=' + accordion.attr(self.attr_name()), + settings = accordion.data(self.attr_name(true) + '-init') || self.settings, + target = S('#' + this.href.split('#')[1]), + aunts = $('> dd, > li', accordion), + siblings = aunts.children('.' + settings.content_class), + active_content = siblings.filter('.' + settings.active_class); + + e.preventDefault(); + + if (accordion.attr(self.attr_name())) { + siblings = siblings.add('[' + groupSelector + '] dd > ' + '.' + settings.content_class + ', [' + groupSelector + '] li > ' + '.' + settings.content_class); + aunts = aunts.add('[' + groupSelector + '] dd, [' + groupSelector + '] li'); + } + + if (settings.toggleable && target.is(active_content)) { + target.parent('dd, li').toggleClass(settings.active_class, false); + target.toggleClass(settings.active_class, false); + S(this).attr('aria-expanded', function(i, attr){ + return attr === 'true' ? 'false' : 'true'; + }); + settings.callback(target); + target.triggerHandler('toggled', [accordion]); + accordion.triggerHandler('toggled', [target]); + return; + } + + if (!settings.multi_expand) { + siblings.removeClass(settings.active_class); + aunts.removeClass(settings.active_class); + aunts.children('a').attr('aria-expanded','false'); + } + + target.addClass(settings.active_class).parent().addClass(settings.active_class); + settings.callback(target); + target.triggerHandler('toggled', [accordion]); + accordion.triggerHandler('toggled', [target]); + S(this).attr('aria-expanded','true'); + }); + }, + + create: function($instance) { + var self = this, + accordion = $instance, + aunts = $('> .accordion-navigation', accordion), + settings = accordion.data(self.attr_name(true) + '-init') || self.settings; + + aunts.children('a').attr('aria-expanded','false'); + aunts.has('.' + settings.content_class + '.' + settings.active_class).children('a').attr('aria-expanded','true'); + + if (settings.multi_expand) { + $instance.attr('aria-multiselectable','true'); + } + }, + + off : function () {}, + + reflow : function () {} + }; +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.topbar = { + name : 'topbar', + + version : '5.5.2', + + settings : { + index : 0, + start_offset : 0, + sticky_class : 'sticky', + custom_back_text : true, + back_text : 'Back', + mobile_show_parent_link : true, + is_hover : true, + scrolltop : true, // jump to top when sticky nav menu toggle is clicked + sticky_on : 'all', + dropdown_autoclose: true + }, + + init : function (section, method, options) { + Foundation.inherit(this, 'add_custom_rule register_media throttle'); + var self = this; + + self.register_media('topbar', 'foundation-mq-topbar'); + + this.bindings(method, options); + + self.S('[' + this.attr_name() + ']', this.scope).each(function () { + var topbar = $(this), + settings = topbar.data(self.attr_name(true) + '-init'), + section = self.S('section, .top-bar-section', this); + topbar.data('index', 0); + var topbarContainer = topbar.parent(); + if (topbarContainer.hasClass('fixed') || self.is_sticky(topbar, topbarContainer, settings) ) { + self.settings.sticky_class = settings.sticky_class; + self.settings.sticky_topbar = topbar; + topbar.data('height', topbarContainer.outerHeight()); + topbar.data('stickyoffset', topbarContainer.offset().top); + } else { + topbar.data('height', topbar.outerHeight()); + } + + if (!settings.assembled) { + self.assemble(topbar); + } + + if (settings.is_hover) { + self.S('.has-dropdown', topbar).addClass('not-click'); + } else { + self.S('.has-dropdown', topbar).removeClass('not-click'); + } + + // Pad body when sticky (scrolled) or fixed. + self.add_custom_rule('.f-topbar-fixed { padding-top: ' + topbar.data('height') + 'px }'); + + if (topbarContainer.hasClass('fixed')) { + self.S('body').addClass('f-topbar-fixed'); + } + }); + + }, + + is_sticky : function (topbar, topbarContainer, settings) { + var sticky = topbarContainer.hasClass(settings.sticky_class); + var smallMatch = matchMedia(Foundation.media_queries.small).matches; + var medMatch = matchMedia(Foundation.media_queries.medium).matches; + var lrgMatch = matchMedia(Foundation.media_queries.large).matches; + + if (sticky && settings.sticky_on === 'all') { + return true; + } + if (sticky && this.small() && settings.sticky_on.indexOf('small') !== -1) { + if (smallMatch && !medMatch && !lrgMatch) { return true; } + } + if (sticky && this.medium() && settings.sticky_on.indexOf('medium') !== -1) { + if (smallMatch && medMatch && !lrgMatch) { return true; } + } + if (sticky && this.large() && settings.sticky_on.indexOf('large') !== -1) { + if (smallMatch && medMatch && lrgMatch) { return true; } + } + + return false; + }, + + toggle : function (toggleEl) { + var self = this, + topbar; + + if (toggleEl) { + topbar = self.S(toggleEl).closest('[' + this.attr_name() + ']'); + } else { + topbar = self.S('[' + this.attr_name() + ']'); + } + + var settings = topbar.data(this.attr_name(true) + '-init'); + + var section = self.S('section, .top-bar-section', topbar); + + if (self.breakpoint()) { + if (!self.rtl) { + section.css({left : '0%'}); + $('>.name', section).css({left : '100%'}); + } else { + section.css({right : '0%'}); + $('>.name', section).css({right : '100%'}); + } + + self.S('li.moved', section).removeClass('moved'); + topbar.data('index', 0); + + topbar + .toggleClass('expanded') + .css('height', ''); + } + + if (settings.scrolltop) { + if (!topbar.hasClass('expanded')) { + if (topbar.hasClass('fixed')) { + topbar.parent().addClass('fixed'); + topbar.removeClass('fixed'); + self.S('body').addClass('f-topbar-fixed'); + } + } else if (topbar.parent().hasClass('fixed')) { + if (settings.scrolltop) { + topbar.parent().removeClass('fixed'); + topbar.addClass('fixed'); + self.S('body').removeClass('f-topbar-fixed'); + + window.scrollTo(0, 0); + } else { + topbar.parent().removeClass('expanded'); + } + } + } else { + if (self.is_sticky(topbar, topbar.parent(), settings)) { + topbar.parent().addClass('fixed'); + } + + if (topbar.parent().hasClass('fixed')) { + if (!topbar.hasClass('expanded')) { + topbar.removeClass('fixed'); + topbar.parent().removeClass('expanded'); + self.update_sticky_positioning(); + } else { + topbar.addClass('fixed'); + topbar.parent().addClass('expanded'); + self.S('body').addClass('f-topbar-fixed'); + } + } + } + }, + + timer : null, + + events : function (bar) { + var self = this, + S = this.S; + + S(this.scope) + .off('.topbar') + .on('click.fndtn.topbar', '[' + this.attr_name() + '] .toggle-topbar', function (e) { + e.preventDefault(); + self.toggle(this); + }) + .on('click.fndtn.topbar contextmenu.fndtn.topbar', '.top-bar .top-bar-section li a[href^="#"],[' + this.attr_name() + '] .top-bar-section li a[href^="#"]', function (e) { + var li = $(this).closest('li'), + topbar = li.closest('[' + self.attr_name() + ']'), + settings = topbar.data(self.attr_name(true) + '-init'); + + if (settings.dropdown_autoclose && settings.is_hover) { + var hoverLi = $(this).closest('.hover'); + hoverLi.removeClass('hover'); + } + if (self.breakpoint() && !li.hasClass('back') && !li.hasClass('has-dropdown')) { + self.toggle(); + } + + }) + .on('click.fndtn.topbar', '[' + this.attr_name() + '] li.has-dropdown', function (e) { + var li = S(this), + target = S(e.target), + topbar = li.closest('[' + self.attr_name() + ']'), + settings = topbar.data(self.attr_name(true) + '-init'); + + if (target.data('revealId')) { + self.toggle(); + return; + } + + if (self.breakpoint()) { + return; + } + + if (settings.is_hover && !Modernizr.touch) { + return; + } + + e.stopImmediatePropagation(); + + if (li.hasClass('hover')) { + li + .removeClass('hover') + .find('li') + .removeClass('hover'); + + li.parents('li.hover') + .removeClass('hover'); + } else { + li.addClass('hover'); + + $(li).siblings().removeClass('hover'); + + if (target[0].nodeName === 'A' && target.parent().hasClass('has-dropdown')) { + e.preventDefault(); + } + } + }) + .on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown>a', function (e) { + if (self.breakpoint()) { + + e.preventDefault(); + + var $this = S(this), + topbar = $this.closest('[' + self.attr_name() + ']'), + section = topbar.find('section, .top-bar-section'), + dropdownHeight = $this.next('.dropdown').outerHeight(), + $selectedLi = $this.closest('li'); + + topbar.data('index', topbar.data('index') + 1); + $selectedLi.addClass('moved'); + + if (!self.rtl) { + section.css({left : -(100 * topbar.data('index')) + '%'}); + section.find('>.name').css({left : 100 * topbar.data('index') + '%'}); + } else { + section.css({right : -(100 * topbar.data('index')) + '%'}); + section.find('>.name').css({right : 100 * topbar.data('index') + '%'}); + } + + topbar.css('height', $this.siblings('ul').outerHeight(true) + topbar.data('height')); + } + }); + + S(window).off('.topbar').on('resize.fndtn.topbar', self.throttle(function () { + self.resize.call(self); + }, 50)).trigger('resize.fndtn.topbar').load(function () { + // Ensure that the offset is calculated after all of the pages resources have loaded + S(this).trigger('resize.fndtn.topbar'); + }); + + S('body').off('.topbar').on('click.fndtn.topbar', function (e) { + var parent = S(e.target).closest('li').closest('li.hover'); + + if (parent.length > 0) { + return; + } + + S('[' + self.attr_name() + '] li.hover').removeClass('hover'); + }); + + // Go up a level on Click + S(this.scope).on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown .back', function (e) { + e.preventDefault(); + + var $this = S(this), + topbar = $this.closest('[' + self.attr_name() + ']'), + section = topbar.find('section, .top-bar-section'), + settings = topbar.data(self.attr_name(true) + '-init'), + $movedLi = $this.closest('li.moved'), + $previousLevelUl = $movedLi.parent(); + + topbar.data('index', topbar.data('index') - 1); + + if (!self.rtl) { + section.css({left : -(100 * topbar.data('index')) + '%'}); + section.find('>.name').css({left : 100 * topbar.data('index') + '%'}); + } else { + section.css({right : -(100 * topbar.data('index')) + '%'}); + section.find('>.name').css({right : 100 * topbar.data('index') + '%'}); + } + + if (topbar.data('index') === 0) { + topbar.css('height', ''); + } else { + topbar.css('height', $previousLevelUl.outerHeight(true) + topbar.data('height')); + } + + setTimeout(function () { + $movedLi.removeClass('moved'); + }, 300); + }); + + // Show dropdown menus when their items are focused + S(this.scope).find('.dropdown a') + .focus(function () { + $(this).parents('.has-dropdown').addClass('hover'); + }) + .blur(function () { + $(this).parents('.has-dropdown').removeClass('hover'); + }); + }, + + resize : function () { + var self = this; + self.S('[' + this.attr_name() + ']').each(function () { + var topbar = self.S(this), + settings = topbar.data(self.attr_name(true) + '-init'); + + var stickyContainer = topbar.parent('.' + self.settings.sticky_class); + var stickyOffset; + + if (!self.breakpoint()) { + var doToggle = topbar.hasClass('expanded'); + topbar + .css('height', '') + .removeClass('expanded') + .find('li') + .removeClass('hover'); + + if (doToggle) { + self.toggle(topbar); + } + } + + if (self.is_sticky(topbar, stickyContainer, settings)) { + if (stickyContainer.hasClass('fixed')) { + // Remove the fixed to allow for correct calculation of the offset. + stickyContainer.removeClass('fixed'); + + stickyOffset = stickyContainer.offset().top; + if (self.S(document.body).hasClass('f-topbar-fixed')) { + stickyOffset -= topbar.data('height'); + } + + topbar.data('stickyoffset', stickyOffset); + stickyContainer.addClass('fixed'); + } else { + stickyOffset = stickyContainer.offset().top; + topbar.data('stickyoffset', stickyOffset); + } + } + + }); + }, + + breakpoint : function () { + return !matchMedia(Foundation.media_queries['topbar']).matches; + }, + + small : function () { + return matchMedia(Foundation.media_queries['small']).matches; + }, + + medium : function () { + return matchMedia(Foundation.media_queries['medium']).matches; + }, + + large : function () { + return matchMedia(Foundation.media_queries['large']).matches; + }, + + assemble : function (topbar) { + var self = this, + settings = topbar.data(this.attr_name(true) + '-init'), + section = self.S('section, .top-bar-section', topbar); + + // Pull element out of the DOM for manipulation + section.detach(); + + self.S('.has-dropdown>a', section).each(function () { + var $link = self.S(this), + $dropdown = $link.siblings('.dropdown'), + url = $link.attr('href'), + $titleLi; + + if (!$dropdown.find('.title.back').length) { + + if (settings.mobile_show_parent_link == true && url) { + $titleLi = $('<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5></li><li class="parent-link hide-for-medium-up"><a class="parent-link js-generated" href="' + url + '">' + $link.html() +'</a></li>'); + } else { + $titleLi = $('<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5>'); + } + + // Copy link to subnav + if (settings.custom_back_text == true) { + $('h5>a', $titleLi).html(settings.back_text); + } else { + $('h5>a', $titleLi).html('« ' + $link.html()); + } + $dropdown.prepend($titleLi); + } + }); + + // Put element back in the DOM + section.appendTo(topbar); + + // check for sticky + this.sticky(); + + this.assembled(topbar); + }, + + assembled : function (topbar) { + topbar.data(this.attr_name(true), $.extend({}, topbar.data(this.attr_name(true)), {assembled : true})); + }, + + height : function (ul) { + var total = 0, + self = this; + + $('> li', ul).each(function () { + total += self.S(this).outerHeight(true); + }); + + return total; + }, + + sticky : function () { + var self = this; + + this.S(window).on('scroll', function () { + self.update_sticky_positioning(); + }); + }, + + update_sticky_positioning : function () { + var klass = '.' + this.settings.sticky_class, + $window = this.S(window), + self = this; + + if (self.settings.sticky_topbar && self.is_sticky(this.settings.sticky_topbar,this.settings.sticky_topbar.parent(), this.settings)) { + var distance = this.settings.sticky_topbar.data('stickyoffset') + this.settings.start_offset; + if (!self.S(klass).hasClass('expanded')) { + if ($window.scrollTop() > (distance)) { + if (!self.S(klass).hasClass('fixed')) { + self.S(klass).addClass('fixed'); + self.S('body').addClass('f-topbar-fixed'); + } + } else if ($window.scrollTop() <= distance) { + if (self.S(klass).hasClass('fixed')) { + self.S(klass).removeClass('fixed'); + self.S('body').removeClass('f-topbar-fixed'); + } + } + } + } + }, + + off : function () { + this.S(this.scope).off('.fndtn.topbar'); + this.S(window).off('.fndtn.topbar'); + }, + + reflow : function () {} + }; +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.tab = { + name : 'tab', + + version : '5.5.2', + + settings : { + active_class : 'active', + callback : function () {}, + deep_linking : false, + scroll_to_content : true, + is_hover : false + }, + + default_tab_hashes : [], + + init : function (scope, method, options) { + var self = this, + S = this.S; + + // Store the default active tabs which will be referenced when the + // location hash is absent, as in the case of navigating the tabs and + // returning to the first viewing via the browser Back button. + S('[' + this.attr_name() + '] > .active > a', this.scope).each(function () { + self.default_tab_hashes.push(this.hash); + }); + + // store the initial href, which is used to allow correct behaviour of the + // browser back button when deep linking is turned on. + self.entry_location = window.location.href; + + this.bindings(method, options); + this.handle_location_hash_change(); + }, + + events : function () { + var self = this, + S = this.S; + + var usual_tab_behavior = function (e, target) { + var settings = S(target).closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init'); + if (!settings.is_hover || Modernizr.touch) { + e.preventDefault(); + e.stopPropagation(); + self.toggle_active_tab(S(target).parent()); + } + }; + + S(this.scope) + .off('.tab') + // Key event: focus/tab key + .on('keydown.fndtn.tab', '[' + this.attr_name() + '] > * > a', function(e) { + var el = this; + var keyCode = e.keyCode || e.which; + // if user pressed tab key + if (keyCode == 9) { + e.preventDefault(); + // TODO: Change usual_tab_behavior into accessibility function? + usual_tab_behavior(e, el); + } + }) + // Click event: tab title + .on('click.fndtn.tab', '[' + this.attr_name() + '] > * > a', function(e) { + var el = this; + usual_tab_behavior(e, el); + }) + // Hover event: tab title + .on('mouseenter.fndtn.tab', '[' + this.attr_name() + '] > * > a', function (e) { + var settings = S(this).closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init'); + if (settings.is_hover) { + self.toggle_active_tab(S(this).parent()); + } + }); + + // Location hash change event + S(window).on('hashchange.fndtn.tab', function (e) { + e.preventDefault(); + self.handle_location_hash_change(); + }); + }, + + handle_location_hash_change : function () { + + var self = this, + S = this.S; + + S('[' + this.attr_name() + ']', this.scope).each(function () { + var settings = S(this).data(self.attr_name(true) + '-init'); + if (settings.deep_linking) { + // Match the location hash to a label + var hash; + if (settings.scroll_to_content) { + hash = self.scope.location.hash; + } else { + // prefix the hash to prevent anchor scrolling + hash = self.scope.location.hash.replace('fndtn-', ''); + } + if (hash != '') { + // Check whether the location hash references a tab content div or + // another element on the page (inside or outside the tab content div) + var hash_element = S(hash); + if (hash_element.hasClass('content') && hash_element.parent().hasClass('tabs-content')) { + // Tab content div + self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=' + hash + ']').parent()); + } else { + // Not the tab content div. If inside the tab content, find the + // containing tab and toggle it as active. + var hash_tab_container_id = hash_element.closest('.content').attr('id'); + if (hash_tab_container_id != undefined) { + self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=#' + hash_tab_container_id + ']').parent(), hash); + } + } + } else { + // Reference the default tab hashes which were initialized in the init function + for (var ind = 0; ind < self.default_tab_hashes.length; ind++) { + self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=' + self.default_tab_hashes[ind] + ']').parent()); + } + } + } + }); + }, + + toggle_active_tab : function (tab, location_hash) { + var self = this, + S = self.S, + tabs = tab.closest('[' + this.attr_name() + ']'), + tab_link = tab.find('a'), + anchor = tab.children('a').first(), + target_hash = '#' + anchor.attr('href').split('#')[1], + target = S(target_hash), + siblings = tab.siblings(), + settings = tabs.data(this.attr_name(true) + '-init'), + interpret_keyup_action = function (e) { + // Light modification of Heydon Pickering's Practical ARIA Examples: http://heydonworks.com/practical_aria_examples/js/a11y.js + + // define current, previous and next (possible) tabs + + var $original = $(this); + var $prev = $(this).parents('li').prev().children('[role="tab"]'); + var $next = $(this).parents('li').next().children('[role="tab"]'); + var $target; + + // find the direction (prev or next) + + switch (e.keyCode) { + case 37: + $target = $prev; + break; + case 39: + $target = $next; + break; + default: + $target = false + break; + } + + if ($target.length) { + $original.attr({ + 'tabindex' : '-1', + 'aria-selected' : null + }); + $target.attr({ + 'tabindex' : '0', + 'aria-selected' : true + }).focus(); + } + + // Hide panels + + $('[role="tabpanel"]') + .attr('aria-hidden', 'true'); + + // Show panel which corresponds to target + + $('#' + $(document.activeElement).attr('href').substring(1)) + .attr('aria-hidden', null); + + }, + go_to_hash = function(hash) { + // This function allows correct behaviour of the browser's back button when deep linking is enabled. Without it + // the user would get continually redirected to the default hash. + var is_entry_location = window.location.href === self.entry_location, + default_hash = settings.scroll_to_content ? self.default_tab_hashes[0] : is_entry_location ? window.location.hash :'fndtn-' + self.default_tab_hashes[0].replace('#', '') + + if (!(is_entry_location && hash === default_hash)) { + window.location.hash = hash; + } + }; + + // allow usage of data-tab-content attribute instead of href + if (anchor.data('tab-content')) { + target_hash = '#' + anchor.data('tab-content').split('#')[1]; + target = S(target_hash); + } + + if (settings.deep_linking) { + + if (settings.scroll_to_content) { + + // retain current hash to scroll to content + go_to_hash(location_hash || target_hash); + + if (location_hash == undefined || location_hash == target_hash) { + tab.parent()[0].scrollIntoView(); + } else { + S(target_hash)[0].scrollIntoView(); + } + } else { + // prefix the hashes so that the browser doesn't scroll down + if (location_hash != undefined) { + go_to_hash('fndtn-' + location_hash.replace('#', '')); + } else { + go_to_hash('fndtn-' + target_hash.replace('#', '')); + } + } + } + + // WARNING: The activation and deactivation of the tab content must + // occur after the deep linking in order to properly refresh the browser + // window (notably in Chrome). + // Clean up multiple attr instances to done once + tab.addClass(settings.active_class).triggerHandler('opened'); + tab_link.attr({'aria-selected' : 'true', tabindex : 0}); + siblings.removeClass(settings.active_class) + siblings.find('a').attr({'aria-selected' : 'false', tabindex : -1}); + target.siblings().removeClass(settings.active_class).attr({'aria-hidden' : 'true', tabindex : -1}); + target.addClass(settings.active_class).attr('aria-hidden', 'false').removeAttr('tabindex'); + settings.callback(tab); + target.triggerHandler('toggled', [target]); + tabs.triggerHandler('toggled', [tab]); + + tab_link.off('keydown').on('keydown', interpret_keyup_action ); + }, + + data_attr : function (str) { + if (this.namespace.length > 0) { + return this.namespace + '-' + str; + } + + return str; + }, + + off : function () {}, + + reflow : function () {} + }; +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.abide = { + name : 'abide', + + version : '5.5.2', + + settings : { + live_validate : true, + validate_on_blur : true, + // validate_on: 'tab', // tab (when user tabs between fields), change (input changes), manual (call custom events) + focus_on_invalid : true, + error_labels : true, // labels with a for="inputId" will recieve an `error` class + error_class : 'error', + timeout : 1000, + patterns : { + alpha : /^[a-zA-Z]+$/, + alpha_numeric : /^[a-zA-Z0-9]+$/, + integer : /^[-+]?\d+$/, + number : /^[-+]?\d*(?:[\.\,]\d+)?$/, + + // amex, visa, diners + card : /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/, + cvv : /^([0-9]){3,4}$/, + + // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address + email : /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/, + + // http://blogs.lse.ac.uk/lti/2008/04/23/a-regular-expression-to-match-any-url/ + url: /^(https?|ftp|file|ssh):\/\/([-;:&=\+\$,\w]+@{1})?([-A-Za-z0-9\.]+)+:?(\d+)?((\/[-\+~%\/\.\w]+)?\??([-\+=&;%@\.\w]+)?#?([\w]+)?)?/, + // abc.de + domain : /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/, + + datetime : /^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/, + // YYYY-MM-DD + date : /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/, + // HH:MM:SS + time : /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/, + dateISO : /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/, + // MM/DD/YYYY + month_day_year : /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/, + // DD/MM/YYYY + day_month_year : /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/, + + // #FFF or #FFFFFF + color : /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/ + }, + validators : { + equalTo : function (el, required, parent) { + var from = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value, + to = el.value, + valid = (from === to); + + return valid; + } + } + }, + + timer : null, + + init : function (scope, method, options) { + this.bindings(method, options); + }, + + events : function (scope) { + var self = this, + form = self.S(scope).attr('novalidate', 'novalidate'), + settings = form.data(this.attr_name(true) + '-init') || {}; + + this.invalid_attr = this.add_namespace('data-invalid'); + + function validate(originalSelf, e) { + clearTimeout(self.timer); + self.timer = setTimeout(function () { + self.validate([originalSelf], e); + }.bind(originalSelf), settings.timeout); + } + + + form + .off('.abide') + .on('submit.fndtn.abide', function (e) { + var is_ajax = /ajax/i.test(self.S(this).attr(self.attr_name())); + return self.validate(self.S(this).find('input, textarea, select').not(":hidden, [data-abide-ignore]").get(), e, is_ajax); + }) + .on('validate.fndtn.abide', function (e) { + if (settings.validate_on === 'manual') { + self.validate([e.target], e); + } + }) + .on('reset', function (e) { + return self.reset($(this), e); + }) + .find('input, textarea, select').not(":hidden, [data-abide-ignore]") + .off('.abide') + .on('blur.fndtn.abide change.fndtn.abide', function (e) { + // old settings fallback + // will be deprecated with F6 release + if (settings.validate_on_blur && settings.validate_on_blur === true) { + validate(this, e); + } + // new settings combining validate options into one setting + if (settings.validate_on === 'change') { + validate(this, e); + } + }) + .on('keydown.fndtn.abide', function (e) { + // old settings fallback + // will be deprecated with F6 release + if (settings.live_validate && settings.live_validate === true && e.which != 9) { + validate(this, e); + } + // new settings combining validate options into one setting + if (settings.validate_on === 'tab' && e.which === 9) { + validate(this, e); + } + else if (settings.validate_on === 'change') { + validate(this, e); + } + }) + .on('focus', function (e) { + if (navigator.userAgent.match(/iPad|iPhone|Android|BlackBerry|Windows Phone|webOS/i)) { + $('html, body').animate({ + scrollTop: $(e.target).offset().top + }, 100); + } + }); + }, + + reset : function (form, e) { + var self = this; + form.removeAttr(self.invalid_attr); + + $('[' + self.invalid_attr + ']', form).removeAttr(self.invalid_attr); + $('.' + self.settings.error_class, form).not('small').removeClass(self.settings.error_class); + $(':input', form).not(':button, :submit, :reset, :hidden, [data-abide-ignore]').val('').removeAttr(self.invalid_attr); + }, + + validate : function (els, e, is_ajax) { + var validations = this.parse_patterns(els), + validation_count = validations.length, + form = this.S(els[0]).closest('form'), + submit_event = /submit/.test(e.type); + + // Has to count up to make sure the focus gets applied to the top error + for (var i = 0; i < validation_count; i++) { + if (!validations[i] && (submit_event || is_ajax)) { + if (this.settings.focus_on_invalid) { + els[i].focus(); + } + form.trigger('invalid.fndtn.abide'); + this.S(els[i]).closest('form').attr(this.invalid_attr, ''); + return false; + } + } + + if (submit_event || is_ajax) { + form.trigger('valid.fndtn.abide'); + } + + form.removeAttr(this.invalid_attr); + + if (is_ajax) { + return false; + } + + return true; + }, + + parse_patterns : function (els) { + var i = els.length, + el_patterns = []; + + while (i--) { + el_patterns.push(this.pattern(els[i])); + } + + return this.check_validation_and_apply_styles(el_patterns); + }, + + pattern : function (el) { + var type = el.getAttribute('type'), + required = typeof el.getAttribute('required') === 'string'; + + var pattern = el.getAttribute('pattern') || ''; + + if (this.settings.patterns.hasOwnProperty(pattern) && pattern.length > 0) { + return [el, this.settings.patterns[pattern], required]; + } else if (pattern.length > 0) { + return [el, new RegExp(pattern), required]; + } + + if (this.settings.patterns.hasOwnProperty(type)) { + return [el, this.settings.patterns[type], required]; + } + + pattern = /.*/; + + return [el, pattern, required]; + }, + + // TODO: Break this up into smaller methods, getting hard to read. + check_validation_and_apply_styles : function (el_patterns) { + var i = el_patterns.length, + validations = [], + form = this.S(el_patterns[0][0]).closest('[data-' + this.attr_name(true) + ']'), + settings = form.data(this.attr_name(true) + '-init') || {}; + while (i--) { + var el = el_patterns[i][0], + required = el_patterns[i][2], + value = el.value.trim(), + direct_parent = this.S(el).parent(), + validator = el.getAttribute(this.add_namespace('data-abide-validator')), + is_radio = el.type === 'radio', + is_checkbox = el.type === 'checkbox', + label = this.S('label[for="' + el.getAttribute('id') + '"]'), + valid_length = (required) ? (el.value.length > 0) : true, + el_validations = []; + + var parent, valid; + + // support old way to do equalTo validations + if (el.getAttribute(this.add_namespace('data-equalto'))) { validator = 'equalTo' } + + if (!direct_parent.is('label')) { + parent = direct_parent; + } else { + parent = direct_parent.parent(); + } + + if (is_radio && required) { + el_validations.push(this.valid_radio(el, required)); + } else if (is_checkbox && required) { + el_validations.push(this.valid_checkbox(el, required)); + + } else if (validator) { + // Validate using each of the specified (space-delimited) validators. + var validators = validator.split(' '); + var last_valid = true, all_valid = true; + for (var iv = 0; iv < validators.length; iv++) { + valid = this.settings.validators[validators[iv]].apply(this, [el, required, parent]) + el_validations.push(valid); + all_valid = valid && last_valid; + last_valid = valid; + } + if (all_valid) { + this.S(el).removeAttr(this.invalid_attr); + parent.removeClass('error'); + if (label.length > 0 && this.settings.error_labels) { + label.removeClass(this.settings.error_class).removeAttr('role'); + } + $(el).triggerHandler('valid'); + } else { + this.S(el).attr(this.invalid_attr, ''); + parent.addClass('error'); + if (label.length > 0 && this.settings.error_labels) { + label.addClass(this.settings.error_class).attr('role', 'alert'); + } + $(el).triggerHandler('invalid'); + } + } else { + + if (el_patterns[i][1].test(value) && valid_length || + !required && el.value.length < 1 || $(el).attr('disabled')) { + el_validations.push(true); + } else { + el_validations.push(false); + } + + el_validations = [el_validations.every(function (valid) {return valid;})]; + if (el_validations[0]) { + this.S(el).removeAttr(this.invalid_attr); + el.setAttribute('aria-invalid', 'false'); + el.removeAttribute('aria-describedby'); + parent.removeClass(this.settings.error_class); + if (label.length > 0 && this.settings.error_labels) { + label.removeClass(this.settings.error_class).removeAttr('role'); + } + $(el).triggerHandler('valid'); + } else { + this.S(el).attr(this.invalid_attr, ''); + el.setAttribute('aria-invalid', 'true'); + + // Try to find the error associated with the input + var errorElem = parent.find('small.' + this.settings.error_class, 'span.' + this.settings.error_class); + var errorID = errorElem.length > 0 ? errorElem[0].id : ''; + if (errorID.length > 0) { + el.setAttribute('aria-describedby', errorID); + } + + // el.setAttribute('aria-describedby', $(el).find('.error')[0].id); + parent.addClass(this.settings.error_class); + if (label.length > 0 && this.settings.error_labels) { + label.addClass(this.settings.error_class).attr('role', 'alert'); + } + $(el).triggerHandler('invalid'); + } + } + validations = validations.concat(el_validations); + } + return validations; + }, + + valid_checkbox : function (el, required) { + var el = this.S(el), + valid = (el.is(':checked') || !required || el.get(0).getAttribute('disabled')); + + if (valid) { + el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class); + $(el).triggerHandler('valid'); + } else { + el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class); + $(el).triggerHandler('invalid'); + } + + return valid; + }, + + valid_radio : function (el, required) { + var name = el.getAttribute('name'), + group = this.S(el).closest('[data-' + this.attr_name(true) + ']').find("[name='" + name + "']"), + count = group.length, + valid = false, + disabled = false; + + // Has to count up to make sure the focus gets applied to the top error + for (var i=0; i < count; i++) { + if( group[i].getAttribute('disabled') ){ + disabled=true; + valid=true; + } else { + if (group[i].checked){ + valid = true; + } else { + if( disabled ){ + valid = false; + } + } + } + } + + // Has to count up to make sure the focus gets applied to the top error + for (var i = 0; i < count; i++) { + if (valid) { + this.S(group[i]).removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class); + $(group[i]).triggerHandler('valid'); + } else { + this.S(group[i]).attr(this.invalid_attr, '').parent().addClass(this.settings.error_class); + $(group[i]).triggerHandler('invalid'); + } + } + + return valid; + }, + + valid_equal : function (el, required, parent) { + var from = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value, + to = el.value, + valid = (from === to); + + if (valid) { + this.S(el).removeAttr(this.invalid_attr); + parent.removeClass(this.settings.error_class); + if (label.length > 0 && settings.error_labels) { + label.removeClass(this.settings.error_class); + } + } else { + this.S(el).attr(this.invalid_attr, ''); + parent.addClass(this.settings.error_class); + if (label.length > 0 && settings.error_labels) { + label.addClass(this.settings.error_class); + } + } + + return valid; + }, + + valid_oneof : function (el, required, parent, doNotValidateOthers) { + var el = this.S(el), + others = this.S('[' + this.add_namespace('data-oneof') + ']'), + valid = others.filter(':checked').length > 0; + + if (valid) { + el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class); + } else { + el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class); + } + + if (!doNotValidateOthers) { + var _this = this; + others.each(function () { + _this.valid_oneof.call(_this, this, null, null, true); + }); + } + + return valid; + }, + + reflow : function(scope, options) { + var self = this, + form = self.S('[' + this.attr_name() + ']').attr('novalidate', 'novalidate'); + self.S(form).each(function (idx, el) { + self.events(el); + }); + } + }; +}(jQuery, window, window.document)); +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.tooltip = { + name : 'tooltip', + + version : '5.5.2', + + settings : { + additional_inheritable_classes : [], + tooltip_class : '.tooltip', + append_to : 'body', + touch_close_text : 'Tap To Close', + disable_for_touch : false, + hover_delay : 200, + show_on : 'all', + tip_template : function (selector, content) { + return '<span data-selector="' + selector + '" id="' + selector + '" class="' + + Foundation.libs.tooltip.settings.tooltip_class.substring(1) + + '" role="tooltip">' + content + '<span class="nub"></span></span>'; + } + }, + + cache : {}, + + init : function (scope, method, options) { + Foundation.inherit(this, 'random_str'); + this.bindings(method, options); + }, + + should_show : function (target, tip) { + var settings = $.extend({}, this.settings, this.data_options(target)); + + if (settings.show_on === 'all') { + return true; + } else if (this.small() && settings.show_on === 'small') { + return true; + } else if (this.medium() && settings.show_on === 'medium') { + return true; + } else if (this.large() && settings.show_on === 'large') { + return true; + } + return false; + }, + + medium : function () { + return matchMedia(Foundation.media_queries['medium']).matches; + }, + + large : function () { + return matchMedia(Foundation.media_queries['large']).matches; + }, + + events : function (instance) { + var self = this, + S = self.S; + + self.create(this.S(instance)); + + function _startShow(elt, $this, immediate) { + if (elt.timer) { + return; + } + + if (immediate) { + elt.timer = null; + self.showTip($this); + } else { + elt.timer = setTimeout(function () { + elt.timer = null; + self.showTip($this); + }.bind(elt), self.settings.hover_delay); + } + } + + function _startHide(elt, $this) { + if (elt.timer) { + clearTimeout(elt.timer); + elt.timer = null; + } + + self.hide($this); + } + + $(this.scope) + .off('.tooltip') + .on('mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', + '[' + this.attr_name() + ']', function (e) { + var $this = S(this), + settings = $.extend({}, self.settings, self.data_options($this)), + is_touch = false; + + if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type) && S(e.target).is('a')) { + return false; + } + + if (/mouse/i.test(e.type) && self.ie_touch(e)) { + return false; + } + + if ($this.hasClass('open')) { + if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) { + e.preventDefault(); + } + self.hide($this); + } else { + if (settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) { + return; + } else if (!settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) { + e.preventDefault(); + S(settings.tooltip_class + '.open').hide(); + is_touch = true; + // close other open tooltips on touch + if ($('.open[' + self.attr_name() + ']').length > 0) { + var prevOpen = S($('.open[' + self.attr_name() + ']')[0]); + self.hide(prevOpen); + } + } + + if (/enter|over/i.test(e.type)) { + _startShow(this, $this); + + } else if (e.type === 'mouseout' || e.type === 'mouseleave') { + _startHide(this, $this); + } else { + _startShow(this, $this, true); + } + } + }) + .on('mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', '[' + this.attr_name() + '].open', function (e) { + if (/mouse/i.test(e.type) && self.ie_touch(e)) { + return false; + } + + if ($(this).data('tooltip-open-event-type') == 'touch' && e.type == 'mouseleave') { + return; + } else if ($(this).data('tooltip-open-event-type') == 'mouse' && /MSPointerDown|touchstart/i.test(e.type)) { + self.convert_to_touch($(this)); + } else { + _startHide(this, $(this)); + } + }) + .on('DOMNodeRemoved DOMAttrModified', '[' + this.attr_name() + ']:not(a)', function (e) { + _startHide(this, S(this)); + }); + }, + + ie_touch : function (e) { + // How do I distinguish between IE11 and Windows Phone 8????? + return false; + }, + + showTip : function ($target) { + var $tip = this.getTip($target); + if (this.should_show($target, $tip)) { + return this.show($target); + } + return; + }, + + getTip : function ($target) { + var selector = this.selector($target), + settings = $.extend({}, this.settings, this.data_options($target)), + tip = null; + + if (selector) { + tip = this.S('span[data-selector="' + selector + '"]' + settings.tooltip_class); + } + + return (typeof tip === 'object') ? tip : false; + }, + + selector : function ($target) { + var dataSelector = $target.attr(this.attr_name()) || $target.attr('data-selector'); + + if (typeof dataSelector != 'string') { + dataSelector = this.random_str(6); + $target + .attr('data-selector', dataSelector) + .attr('aria-describedby', dataSelector); + } + + return dataSelector; + }, + + create : function ($target) { + var self = this, + settings = $.extend({}, this.settings, this.data_options($target)), + tip_template = this.settings.tip_template; + + if (typeof settings.tip_template === 'string' && window.hasOwnProperty(settings.tip_template)) { + tip_template = window[settings.tip_template]; + } + + var $tip = $(tip_template(this.selector($target), $('<div></div>').html($target.attr('title')).html())), + classes = this.inheritable_classes($target); + + $tip.addClass(classes).appendTo(settings.append_to); + + if (Modernizr.touch) { + $tip.append('<span class="tap-to-close">' + settings.touch_close_text + '</span>'); + $tip.on('touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', function (e) { + self.hide($target); + }); + } + + $target.removeAttr('title').attr('title', ''); + }, + + reposition : function (target, tip, classes) { + var width, nub, nubHeight, nubWidth, column, objPos; + + tip.css('visibility', 'hidden').show(); + + width = target.data('width'); + nub = tip.children('.nub'); + nubHeight = nub.outerHeight(); + nubWidth = nub.outerHeight(); + + if (this.small()) { + tip.css({'width' : '100%'}); + } else { + tip.css({'width' : (width) ? width : 'auto'}); + } + + objPos = function (obj, top, right, bottom, left, width) { + return obj.css({ + 'top' : (top) ? top : 'auto', + 'bottom' : (bottom) ? bottom : 'auto', + 'left' : (left) ? left : 'auto', + 'right' : (right) ? right : 'auto' + }).end(); + }; + + objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', target.offset().left); + + if (this.small()) { + objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', 12.5, $(this.scope).width()); + tip.addClass('tip-override'); + objPos(nub, -nubHeight, 'auto', 'auto', target.offset().left); + } else { + var left = target.offset().left; + if (Foundation.rtl) { + nub.addClass('rtl'); + left = target.offset().left + target.outerWidth() - tip.outerWidth(); + } + + objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', left); + // reset nub from small styles, if they've been applied + if (nub.attr('style')) { + nub.removeAttr('style'); + } + + tip.removeClass('tip-override'); + if (classes && classes.indexOf('tip-top') > -1) { + if (Foundation.rtl) { + nub.addClass('rtl'); + } + objPos(tip, (target.offset().top - tip.outerHeight()), 'auto', 'auto', left) + .removeClass('tip-override'); + } else if (classes && classes.indexOf('tip-left') > -1) { + objPos(tip, (target.offset().top + (target.outerHeight() / 2) - (tip.outerHeight() / 2)), 'auto', 'auto', (target.offset().left - tip.outerWidth() - nubHeight)) + .removeClass('tip-override'); + nub.removeClass('rtl'); + } else if (classes && classes.indexOf('tip-right') > -1) { + objPos(tip, (target.offset().top + (target.outerHeight() / 2) - (tip.outerHeight() / 2)), 'auto', 'auto', (target.offset().left + target.outerWidth() + nubHeight)) + .removeClass('tip-override'); + nub.removeClass('rtl'); + } + } + + tip.css('visibility', 'visible').hide(); + }, + + small : function () { + return matchMedia(Foundation.media_queries.small).matches && + !matchMedia(Foundation.media_queries.medium).matches; + }, + + inheritable_classes : function ($target) { + var settings = $.extend({}, this.settings, this.data_options($target)), + inheritables = ['tip-top', 'tip-left', 'tip-bottom', 'tip-right', 'radius', 'round'].concat(settings.additional_inheritable_classes), + classes = $target.attr('class'), + filtered = classes ? $.map(classes.split(' '), function (el, i) { + if ($.inArray(el, inheritables) !== -1) { + return el; + } + }).join(' ') : ''; + + return $.trim(filtered); + }, + + convert_to_touch : function ($target) { + var self = this, + $tip = self.getTip($target), + settings = $.extend({}, self.settings, self.data_options($target)); + + if ($tip.find('.tap-to-close').length === 0) { + $tip.append('<span class="tap-to-close">' + settings.touch_close_text + '</span>'); + $tip.on('click.fndtn.tooltip.tapclose touchstart.fndtn.tooltip.tapclose MSPointerDown.fndtn.tooltip.tapclose', function (e) { + self.hide($target); + }); + } + + $target.data('tooltip-open-event-type', 'touch'); + }, + + show : function ($target) { + var $tip = this.getTip($target); + + if ($target.data('tooltip-open-event-type') == 'touch') { + this.convert_to_touch($target); + } + + this.reposition($target, $tip, $target.attr('class')); + $target.addClass('open'); + $tip.fadeIn(150); + }, + + hide : function ($target) { + var $tip = this.getTip($target); + $tip.fadeOut(150, function () { + $tip.find('.tap-to-close').remove(); + $tip.off('click.fndtn.tooltip.tapclose MSPointerDown.fndtn.tapclose'); + $target.removeClass('open'); + }); + }, + + off : function () { + var self = this; + this.S(this.scope).off('.fndtn.tooltip'); + this.S(this.settings.tooltip_class).each(function (i) { + $('[' + self.attr_name() + ']').eq(i).attr('title', $(this).text()); + }).remove(); + }, + + reflow : function () {} + }; +}(jQuery, window, window.document)); diff --git a/library/foundation/js/foundation/foundation.abide.js b/library/foundation/js/foundation/foundation.abide.js new file mode 100644 index 000000000..c84960c2c --- /dev/null +++ b/library/foundation/js/foundation/foundation.abide.js @@ -0,0 +1,408 @@ +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.abide = { + name : 'abide', + + version : '5.5.2', + + settings : { + live_validate : true, + validate_on_blur : true, + // validate_on: 'tab', // tab (when user tabs between fields), change (input changes), manual (call custom events) + focus_on_invalid : true, + error_labels : true, // labels with a for="inputId" will recieve an `error` class + error_class : 'error', + timeout : 1000, + patterns : { + alpha : /^[a-zA-Z]+$/, + alpha_numeric : /^[a-zA-Z0-9]+$/, + integer : /^[-+]?\d+$/, + number : /^[-+]?\d*(?:[\.\,]\d+)?$/, + + // amex, visa, diners + card : /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/, + cvv : /^([0-9]){3,4}$/, + + // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address + email : /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/, + + // http://blogs.lse.ac.uk/lti/2008/04/23/a-regular-expression-to-match-any-url/ + url: /^(https?|ftp|file|ssh):\/\/([-;:&=\+\$,\w]+@{1})?([-A-Za-z0-9\.]+)+:?(\d+)?((\/[-\+~%\/\.\w]+)?\??([-\+=&;%@\.\w]+)?#?([\w]+)?)?/, + // abc.de + domain : /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/, + + datetime : /^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/, + // YYYY-MM-DD + date : /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/, + // HH:MM:SS + time : /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/, + dateISO : /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/, + // MM/DD/YYYY + month_day_year : /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/, + // DD/MM/YYYY + day_month_year : /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/, + + // #FFF or #FFFFFF + color : /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/ + }, + validators : { + equalTo : function (el, required, parent) { + var from = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value, + to = el.value, + valid = (from === to); + + return valid; + } + } + }, + + timer : null, + + init : function (scope, method, options) { + this.bindings(method, options); + }, + + events : function (scope) { + var self = this, + form = self.S(scope).attr('novalidate', 'novalidate'), + settings = form.data(this.attr_name(true) + '-init') || {}; + + this.invalid_attr = this.add_namespace('data-invalid'); + + function validate(originalSelf, e) { + clearTimeout(self.timer); + self.timer = setTimeout(function () { + self.validate([originalSelf], e); + }.bind(originalSelf), settings.timeout); + } + + + form + .off('.abide') + .on('submit.fndtn.abide', function (e) { + var is_ajax = /ajax/i.test(self.S(this).attr(self.attr_name())); + return self.validate(self.S(this).find('input, textarea, select').not(":hidden, [data-abide-ignore]").get(), e, is_ajax); + }) + .on('validate.fndtn.abide', function (e) { + if (settings.validate_on === 'manual') { + self.validate([e.target], e); + } + }) + .on('reset', function (e) { + return self.reset($(this), e); + }) + .find('input, textarea, select').not(":hidden, [data-abide-ignore]") + .off('.abide') + .on('blur.fndtn.abide change.fndtn.abide', function (e) { + // old settings fallback + // will be deprecated with F6 release + if (settings.validate_on_blur && settings.validate_on_blur === true) { + validate(this, e); + } + // new settings combining validate options into one setting + if (settings.validate_on === 'change') { + validate(this, e); + } + }) + .on('keydown.fndtn.abide', function (e) { + // old settings fallback + // will be deprecated with F6 release + if (settings.live_validate && settings.live_validate === true && e.which != 9) { + validate(this, e); + } + // new settings combining validate options into one setting + if (settings.validate_on === 'tab' && e.which === 9) { + validate(this, e); + } + else if (settings.validate_on === 'change') { + validate(this, e); + } + }) + .on('focus', function (e) { + if (navigator.userAgent.match(/iPad|iPhone|Android|BlackBerry|Windows Phone|webOS/i)) { + $('html, body').animate({ + scrollTop: $(e.target).offset().top + }, 100); + } + }); + }, + + reset : function (form, e) { + var self = this; + form.removeAttr(self.invalid_attr); + + $('[' + self.invalid_attr + ']', form).removeAttr(self.invalid_attr); + $('.' + self.settings.error_class, form).not('small').removeClass(self.settings.error_class); + $(':input', form).not(':button, :submit, :reset, :hidden, [data-abide-ignore]').val('').removeAttr(self.invalid_attr); + }, + + validate : function (els, e, is_ajax) { + var validations = this.parse_patterns(els), + validation_count = validations.length, + form = this.S(els[0]).closest('form'), + submit_event = /submit/.test(e.type); + + // Has to count up to make sure the focus gets applied to the top error + for (var i = 0; i < validation_count; i++) { + if (!validations[i] && (submit_event || is_ajax)) { + if (this.settings.focus_on_invalid) { + els[i].focus(); + } + form.trigger('invalid.fndtn.abide'); + this.S(els[i]).closest('form').attr(this.invalid_attr, ''); + return false; + } + } + + if (submit_event || is_ajax) { + form.trigger('valid.fndtn.abide'); + } + + form.removeAttr(this.invalid_attr); + + if (is_ajax) { + return false; + } + + return true; + }, + + parse_patterns : function (els) { + var i = els.length, + el_patterns = []; + + while (i--) { + el_patterns.push(this.pattern(els[i])); + } + + return this.check_validation_and_apply_styles(el_patterns); + }, + + pattern : function (el) { + var type = el.getAttribute('type'), + required = typeof el.getAttribute('required') === 'string'; + + var pattern = el.getAttribute('pattern') || ''; + + if (this.settings.patterns.hasOwnProperty(pattern) && pattern.length > 0) { + return [el, this.settings.patterns[pattern], required]; + } else if (pattern.length > 0) { + return [el, new RegExp(pattern), required]; + } + + if (this.settings.patterns.hasOwnProperty(type)) { + return [el, this.settings.patterns[type], required]; + } + + pattern = /.*/; + + return [el, pattern, required]; + }, + + // TODO: Break this up into smaller methods, getting hard to read. + check_validation_and_apply_styles : function (el_patterns) { + var i = el_patterns.length, + validations = [], + form = this.S(el_patterns[0][0]).closest('[data-' + this.attr_name(true) + ']'), + settings = form.data(this.attr_name(true) + '-init') || {}; + while (i--) { + var el = el_patterns[i][0], + required = el_patterns[i][2], + value = el.value.trim(), + direct_parent = this.S(el).parent(), + validator = el.getAttribute(this.add_namespace('data-abide-validator')), + is_radio = el.type === 'radio', + is_checkbox = el.type === 'checkbox', + label = this.S('label[for="' + el.getAttribute('id') + '"]'), + valid_length = (required) ? (el.value.length > 0) : true, + el_validations = []; + + var parent, valid; + + // support old way to do equalTo validations + if (el.getAttribute(this.add_namespace('data-equalto'))) { validator = 'equalTo' } + + if (!direct_parent.is('label')) { + parent = direct_parent; + } else { + parent = direct_parent.parent(); + } + + if (is_radio && required) { + el_validations.push(this.valid_radio(el, required)); + } else if (is_checkbox && required) { + el_validations.push(this.valid_checkbox(el, required)); + + } else if (validator) { + // Validate using each of the specified (space-delimited) validators. + var validators = validator.split(' '); + var last_valid = true, all_valid = true; + for (var iv = 0; iv < validators.length; iv++) { + valid = this.settings.validators[validators[iv]].apply(this, [el, required, parent]) + el_validations.push(valid); + all_valid = valid && last_valid; + last_valid = valid; + } + if (all_valid) { + this.S(el).removeAttr(this.invalid_attr); + parent.removeClass('error'); + if (label.length > 0 && this.settings.error_labels) { + label.removeClass(this.settings.error_class).removeAttr('role'); + } + $(el).triggerHandler('valid'); + } else { + this.S(el).attr(this.invalid_attr, ''); + parent.addClass('error'); + if (label.length > 0 && this.settings.error_labels) { + label.addClass(this.settings.error_class).attr('role', 'alert'); + } + $(el).triggerHandler('invalid'); + } + } else { + + if (el_patterns[i][1].test(value) && valid_length || + !required && el.value.length < 1 || $(el).attr('disabled')) { + el_validations.push(true); + } else { + el_validations.push(false); + } + + el_validations = [el_validations.every(function (valid) {return valid;})]; + if (el_validations[0]) { + this.S(el).removeAttr(this.invalid_attr); + el.setAttribute('aria-invalid', 'false'); + el.removeAttribute('aria-describedby'); + parent.removeClass(this.settings.error_class); + if (label.length > 0 && this.settings.error_labels) { + label.removeClass(this.settings.error_class).removeAttr('role'); + } + $(el).triggerHandler('valid'); + } else { + this.S(el).attr(this.invalid_attr, ''); + el.setAttribute('aria-invalid', 'true'); + + // Try to find the error associated with the input + var errorElem = parent.find('small.' + this.settings.error_class, 'span.' + this.settings.error_class); + var errorID = errorElem.length > 0 ? errorElem[0].id : ''; + if (errorID.length > 0) { + el.setAttribute('aria-describedby', errorID); + } + + // el.setAttribute('aria-describedby', $(el).find('.error')[0].id); + parent.addClass(this.settings.error_class); + if (label.length > 0 && this.settings.error_labels) { + label.addClass(this.settings.error_class).attr('role', 'alert'); + } + $(el).triggerHandler('invalid'); + } + } + validations = validations.concat(el_validations); + } + return validations; + }, + + valid_checkbox : function (el, required) { + var el = this.S(el), + valid = (el.is(':checked') || !required || el.get(0).getAttribute('disabled')); + + if (valid) { + el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class); + $(el).triggerHandler('valid'); + } else { + el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class); + $(el).triggerHandler('invalid'); + } + + return valid; + }, + + valid_radio : function (el, required) { + var name = el.getAttribute('name'), + group = this.S(el).closest('[data-' + this.attr_name(true) + ']').find("[name='" + name + "']"), + count = group.length, + valid = false, + disabled = false; + + // Has to count up to make sure the focus gets applied to the top error + for (var i=0; i < count; i++) { + if( group[i].getAttribute('disabled') ){ + disabled=true; + valid=true; + } else { + if (group[i].checked){ + valid = true; + } else { + if( disabled ){ + valid = false; + } + } + } + } + + // Has to count up to make sure the focus gets applied to the top error + for (var i = 0; i < count; i++) { + if (valid) { + this.S(group[i]).removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class); + $(group[i]).triggerHandler('valid'); + } else { + this.S(group[i]).attr(this.invalid_attr, '').parent().addClass(this.settings.error_class); + $(group[i]).triggerHandler('invalid'); + } + } + + return valid; + }, + + valid_equal : function (el, required, parent) { + var from = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value, + to = el.value, + valid = (from === to); + + if (valid) { + this.S(el).removeAttr(this.invalid_attr); + parent.removeClass(this.settings.error_class); + if (label.length > 0 && settings.error_labels) { + label.removeClass(this.settings.error_class); + } + } else { + this.S(el).attr(this.invalid_attr, ''); + parent.addClass(this.settings.error_class); + if (label.length > 0 && settings.error_labels) { + label.addClass(this.settings.error_class); + } + } + + return valid; + }, + + valid_oneof : function (el, required, parent, doNotValidateOthers) { + var el = this.S(el), + others = this.S('[' + this.add_namespace('data-oneof') + ']'), + valid = others.filter(':checked').length > 0; + + if (valid) { + el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class); + } else { + el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class); + } + + if (!doNotValidateOthers) { + var _this = this; + others.each(function () { + _this.valid_oneof.call(_this, this, null, null, true); + }); + } + + return valid; + }, + + reflow : function(scope, options) { + var self = this, + form = self.S('[' + this.attr_name() + ']').attr('novalidate', 'novalidate'); + self.S(form).each(function (idx, el) { + self.events(el); + }); + } + }; +}(jQuery, window, window.document)); diff --git a/library/foundation/js/foundation/foundation.accordion.js b/library/foundation/js/foundation/foundation.accordion.js new file mode 100644 index 000000000..898ae8510 --- /dev/null +++ b/library/foundation/js/foundation/foundation.accordion.js @@ -0,0 +1,88 @@ +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.accordion = { + name : 'accordion', + + version : '5.5.2', + + settings : { + content_class : 'content', + active_class : 'active', + multi_expand : false, + toggleable : true, + callback : function () {} + }, + + init : function (scope, method, options) { + this.bindings(method, options); + }, + + events : function (instance) { + var self = this; + var S = this.S; + self.create(this.S(instance)); + + S(this.scope) + .off('.fndtn.accordion') + .on('click.fndtn.accordion', '[' + this.attr_name() + '] > dd > a, [' + this.attr_name() + '] > li > a', function (e) { + var accordion = S(this).closest('[' + self.attr_name() + ']'), + groupSelector = self.attr_name() + '=' + accordion.attr(self.attr_name()), + settings = accordion.data(self.attr_name(true) + '-init') || self.settings, + target = S('#' + this.href.split('#')[1]), + aunts = $('> dd, > li', accordion), + siblings = aunts.children('.' + settings.content_class), + active_content = siblings.filter('.' + settings.active_class); + + e.preventDefault(); + + if (accordion.attr(self.attr_name())) { + siblings = siblings.add('[' + groupSelector + '] dd > ' + '.' + settings.content_class + ', [' + groupSelector + '] li > ' + '.' + settings.content_class); + aunts = aunts.add('[' + groupSelector + '] dd, [' + groupSelector + '] li'); + } + + if (settings.toggleable && target.is(active_content)) { + target.parent('dd, li').toggleClass(settings.active_class, false); + target.toggleClass(settings.active_class, false); + S(this).attr('aria-expanded', function(i, attr){ + return attr === 'true' ? 'false' : 'true'; + }); + settings.callback(target); + target.triggerHandler('toggled', [accordion]); + accordion.triggerHandler('toggled', [target]); + return; + } + + if (!settings.multi_expand) { + siblings.removeClass(settings.active_class); + aunts.removeClass(settings.active_class); + aunts.children('a').attr('aria-expanded','false'); + } + + target.addClass(settings.active_class).parent().addClass(settings.active_class); + settings.callback(target); + target.triggerHandler('toggled', [accordion]); + accordion.triggerHandler('toggled', [target]); + S(this).attr('aria-expanded','true'); + }); + }, + + create: function($instance) { + var self = this, + accordion = $instance, + aunts = $('> .accordion-navigation', accordion), + settings = accordion.data(self.attr_name(true) + '-init') || self.settings; + + aunts.children('a').attr('aria-expanded','false'); + aunts.has('.' + settings.content_class + '.' + settings.active_class).children('a').attr('aria-expanded','true'); + + if (settings.multi_expand) { + $instance.attr('aria-multiselectable','true'); + } + }, + + off : function () {}, + + reflow : function () {} + }; +}(jQuery, window, window.document)); diff --git a/library/foundation/js/foundation/foundation.alert.js b/library/foundation/js/foundation/foundation.alert.js new file mode 100644 index 000000000..c37f950ac --- /dev/null +++ b/library/foundation/js/foundation/foundation.alert.js @@ -0,0 +1,43 @@ +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.alert = { + name : 'alert', + + version : '5.5.2', + + settings : { + callback : function () {} + }, + + init : function (scope, method, options) { + this.bindings(method, options); + }, + + events : function () { + var self = this, + S = this.S; + + $(this.scope).off('.alert').on('click.fndtn.alert', '[' + this.attr_name() + '] .close', function (e) { + var alertBox = S(this).closest('[' + self.attr_name() + ']'), + settings = alertBox.data(self.attr_name(true) + '-init') || self.settings; + + e.preventDefault(); + if (Modernizr.csstransitions) { + alertBox.addClass('alert-close'); + alertBox.on('transitionend webkitTransitionEnd oTransitionEnd', function (e) { + S(this).trigger('close.fndtn.alert').remove(); + settings.callback(); + }); + } else { + alertBox.fadeOut(300, function () { + S(this).trigger('close.fndtn.alert').remove(); + settings.callback(); + }); + } + }); + }, + + reflow : function () {} + }; +}(jQuery, window, window.document)); diff --git a/library/foundation/js/foundation/foundation.clearing.js b/library/foundation/js/foundation/foundation.clearing.js new file mode 100644 index 000000000..78fe36443 --- /dev/null +++ b/library/foundation/js/foundation/foundation.clearing.js @@ -0,0 +1,586 @@ +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.clearing = { + name : 'clearing', + + version : '5.5.2', + + settings : { + templates : { + viewing : '<a href="#" class="clearing-close">×</a>' + + '<div class="visible-img" style="display: none"><div class="clearing-touch-label"></div><img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />' + + '<p class="clearing-caption"></p><a href="#" class="clearing-main-prev"><span></span></a>' + + '<a href="#" class="clearing-main-next"><span></span></a></div>' + + '<img class="clearing-preload-next" style="display: none" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />' + + '<img class="clearing-preload-prev" style="display: none" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />' + }, + + // comma delimited list of selectors that, on click, will close clearing, + // add 'div.clearing-blackout, div.visible-img' to close on background click + close_selectors : '.clearing-close, div.clearing-blackout', + + // Default to the entire li element. + open_selectors : '', + + // Image will be skipped in carousel. + skip_selector : '', + + touch_label : '', + + // event initializers and locks + init : false, + locked : false + }, + + init : function (scope, method, options) { + var self = this; + Foundation.inherit(this, 'throttle image_loaded'); + + this.bindings(method, options); + + if (self.S(this.scope).is('[' + this.attr_name() + ']')) { + this.assemble(self.S('li', this.scope)); + } else { + self.S('[' + this.attr_name() + ']', this.scope).each(function () { + self.assemble(self.S('li', this)); + }); + } + }, + + events : function (scope) { + var self = this, + S = self.S, + $scroll_container = $('.scroll-container'); + + if ($scroll_container.length > 0) { + this.scope = $scroll_container; + } + + S(this.scope) + .off('.clearing') + .on('click.fndtn.clearing', 'ul[' + this.attr_name() + '] li ' + this.settings.open_selectors, + function (e, current, target) { + var current = current || S(this), + target = target || current, + next = current.next('li'), + settings = current.closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init'), + image = S(e.target); + + e.preventDefault(); + + if (!settings) { + self.init(); + settings = current.closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init'); + } + + // if clearing is open and the current image is + // clicked, go to the next image in sequence + if (target.hasClass('visible') && + current[0] === target[0] && + next.length > 0 && self.is_open(current)) { + target = next; + image = S('img', target); + } + + // set current and target to the clicked li if not otherwise defined. + self.open(image, current, target); + self.update_paddles(target); + }) + + .on('click.fndtn.clearing', '.clearing-main-next', + function (e) { self.nav(e, 'next') }) + .on('click.fndtn.clearing', '.clearing-main-prev', + function (e) { self.nav(e, 'prev') }) + .on('click.fndtn.clearing', this.settings.close_selectors, + function (e) { Foundation.libs.clearing.close(e, this) }); + + $(document).on('keydown.fndtn.clearing', + function (e) { self.keydown(e) }); + + S(window).off('.clearing').on('resize.fndtn.clearing', + function () { self.resize() }); + + this.swipe_events(scope); + }, + + swipe_events : function (scope) { + var self = this, + S = self.S; + + S(this.scope) + .on('touchstart.fndtn.clearing', '.visible-img', function (e) { + if (!e.touches) { e = e.originalEvent; } + var data = { + start_page_x : e.touches[0].pageX, + start_page_y : e.touches[0].pageY, + start_time : (new Date()).getTime(), + delta_x : 0, + is_scrolling : undefined + }; + + S(this).data('swipe-transition', data); + e.stopPropagation(); + }) + .on('touchmove.fndtn.clearing', '.visible-img', function (e) { + if (!e.touches) { + e = e.originalEvent; + } + // Ignore pinch/zoom events + if (e.touches.length > 1 || e.scale && e.scale !== 1) { + return; + } + + var data = S(this).data('swipe-transition'); + + if (typeof data === 'undefined') { + data = {}; + } + + data.delta_x = e.touches[0].pageX - data.start_page_x; + + if (Foundation.rtl) { + data.delta_x = -data.delta_x; + } + + if (typeof data.is_scrolling === 'undefined') { + data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) ); + } + + if (!data.is_scrolling && !data.active) { + e.preventDefault(); + var direction = (data.delta_x < 0) ? 'next' : 'prev'; + data.active = true; + self.nav(e, direction); + } + }) + .on('touchend.fndtn.clearing', '.visible-img', function (e) { + S(this).data('swipe-transition', {}); + e.stopPropagation(); + }); + }, + + assemble : function ($li) { + var $el = $li.parent(); + + if ($el.parent().hasClass('carousel')) { + return; + } + + $el.after('<div id="foundationClearingHolder"></div>'); + + var grid = $el.detach(), + grid_outerHTML = ''; + + if (grid[0] == null) { + return; + } else { + grid_outerHTML = grid[0].outerHTML; + } + + var holder = this.S('#foundationClearingHolder'), + settings = $el.data(this.attr_name(true) + '-init'), + data = { + grid : '<div class="carousel">' + grid_outerHTML + '</div>', + viewing : settings.templates.viewing + }, + wrapper = '<div class="clearing-assembled"><div>' + data.viewing + + data.grid + '</div></div>', + touch_label = this.settings.touch_label; + + if (Modernizr.touch) { + wrapper = $(wrapper).find('.clearing-touch-label').html(touch_label).end(); + } + + holder.after(wrapper).remove(); + }, + + open : function ($image, current, target) { + var self = this, + body = $(document.body), + root = target.closest('.clearing-assembled'), + container = self.S('div', root).first(), + visible_image = self.S('.visible-img', container), + image = self.S('img', visible_image).not($image), + label = self.S('.clearing-touch-label', container), + error = false, + loaded = {}; + + // Event to disable scrolling on touch devices when Clearing is activated + $('body').on('touchmove', function (e) { + e.preventDefault(); + }); + + image.error(function () { + error = true; + }); + + function startLoad() { + setTimeout(function () { + this.image_loaded(image, function () { + if (image.outerWidth() === 1 && !error) { + startLoad.call(this); + } else { + cb.call(this, image); + } + }.bind(this)); + }.bind(this), 100); + } + + function cb (image) { + var $image = $(image); + $image.css('visibility', 'visible'); + $image.trigger('imageVisible'); + // toggle the gallery + body.css('overflow', 'hidden'); + root.addClass('clearing-blackout'); + container.addClass('clearing-container'); + visible_image.show(); + this.fix_height(target) + .caption(self.S('.clearing-caption', visible_image), self.S('img', target)) + .center_and_label(image, label) + .shift(current, target, function () { + target.closest('li').siblings().removeClass('visible'); + target.closest('li').addClass('visible'); + }); + visible_image.trigger('opened.fndtn.clearing') + } + + if (!this.locked()) { + visible_image.trigger('open.fndtn.clearing'); + // set the image to the selected thumbnail + loaded = this.load($image); + if (loaded.interchange) { + image + .attr('data-interchange', loaded.interchange) + .foundation('interchange', 'reflow'); + } else { + image + .attr('src', loaded.src) + .attr('data-interchange', ''); + } + image.css('visibility', 'hidden'); + + startLoad.call(this); + } + }, + + close : function (e, el) { + e.preventDefault(); + + var root = (function (target) { + if (/blackout/.test(target.selector)) { + return target; + } else { + return target.closest('.clearing-blackout'); + } + }($(el))), + body = $(document.body), container, visible_image; + + if (el === e.target && root) { + body.css('overflow', ''); + container = $('div', root).first(); + visible_image = $('.visible-img', container); + visible_image.trigger('close.fndtn.clearing'); + this.settings.prev_index = 0; + $('ul[' + this.attr_name() + ']', root) + .attr('style', '').closest('.clearing-blackout') + .removeClass('clearing-blackout'); + container.removeClass('clearing-container'); + visible_image.hide(); + visible_image.trigger('closed.fndtn.clearing'); + } + + // Event to re-enable scrolling on touch devices + $('body').off('touchmove'); + + return false; + }, + + is_open : function (current) { + return current.parent().prop('style').length > 0; + }, + + keydown : function (e) { + var clearing = $('.clearing-blackout ul[' + this.attr_name() + ']'), + NEXT_KEY = this.rtl ? 37 : 39, + PREV_KEY = this.rtl ? 39 : 37, + ESC_KEY = 27; + + if (e.which === NEXT_KEY) { + this.go(clearing, 'next'); + } + if (e.which === PREV_KEY) { + this.go(clearing, 'prev'); + } + if (e.which === ESC_KEY) { + this.S('a.clearing-close').trigger('click.fndtn.clearing'); + } + }, + + nav : function (e, direction) { + var clearing = $('ul[' + this.attr_name() + ']', '.clearing-blackout'); + + e.preventDefault(); + this.go(clearing, direction); + }, + + resize : function () { + var image = $('img', '.clearing-blackout .visible-img'), + label = $('.clearing-touch-label', '.clearing-blackout'); + + if (image.length) { + this.center_and_label(image, label); + image.trigger('resized.fndtn.clearing') + } + }, + + // visual adjustments + fix_height : function (target) { + var lis = target.parent().children(), + self = this; + + lis.each(function () { + var li = self.S(this), + image = li.find('img'); + + if (li.height() > image.outerHeight()) { + li.addClass('fix-height'); + } + }) + .closest('ul') + .width(lis.length * 100 + '%'); + + return this; + }, + + update_paddles : function (target) { + target = target.closest('li'); + var visible_image = target + .closest('.carousel') + .siblings('.visible-img'); + + if (target.next().length > 0) { + this.S('.clearing-main-next', visible_image).removeClass('disabled'); + } else { + this.S('.clearing-main-next', visible_image).addClass('disabled'); + } + + if (target.prev().length > 0) { + this.S('.clearing-main-prev', visible_image).removeClass('disabled'); + } else { + this.S('.clearing-main-prev', visible_image).addClass('disabled'); + } + }, + + center_and_label : function (target, label) { + if (!this.rtl && label.length > 0) { + label.css({ + marginLeft : -(label.outerWidth() / 2), + marginTop : -(target.outerHeight() / 2)-label.outerHeight()-10 + }); + } else { + label.css({ + marginRight : -(label.outerWidth() / 2), + marginTop : -(target.outerHeight() / 2)-label.outerHeight()-10, + left: 'auto', + right: '50%' + }); + } + return this; + }, + + // image loading and preloading + + load : function ($image) { + var href, + interchange, + closest_a; + + if ($image[0].nodeName === 'A') { + href = $image.attr('href'); + interchange = $image.data('clearing-interchange'); + } else { + closest_a = $image.closest('a'); + href = closest_a.attr('href'); + interchange = closest_a.data('clearing-interchange'); + } + + this.preload($image); + + return { + 'src': href ? href : $image.attr('src'), + 'interchange': href ? interchange : $image.data('clearing-interchange') + } + }, + + preload : function ($image) { + this + .img($image.closest('li').next(), 'next') + .img($image.closest('li').prev(), 'prev'); + }, + + img : function (img, sibling_type) { + if (img.length) { + var preload_img = $('.clearing-preload-' + sibling_type), + new_a = this.S('a', img), + src, + interchange, + image; + + if (new_a.length) { + src = new_a.attr('href'); + interchange = new_a.data('clearing-interchange'); + } else { + image = this.S('img', img); + src = image.attr('src'); + interchange = image.data('clearing-interchange'); + } + + if (interchange) { + preload_img.attr('data-interchange', interchange); + } else { + preload_img.attr('src', src); + preload_img.attr('data-interchange', ''); + } + } + return this; + }, + + // image caption + + caption : function (container, $image) { + var caption = $image.attr('data-caption'); + + if (caption) { + container + .html(caption) + .show(); + } else { + container + .text('') + .hide(); + } + return this; + }, + + // directional methods + + go : function ($ul, direction) { + var current = this.S('.visible', $ul), + target = current[direction](); + + // Check for skip selector. + if (this.settings.skip_selector && target.find(this.settings.skip_selector).length != 0) { + target = target[direction](); + } + + if (target.length) { + this.S('img', target) + .trigger('click.fndtn.clearing', [current, target]) + .trigger('change.fndtn.clearing'); + } + }, + + shift : function (current, target, callback) { + var clearing = target.parent(), + old_index = this.settings.prev_index || target.index(), + direction = this.direction(clearing, current, target), + dir = this.rtl ? 'right' : 'left', + left = parseInt(clearing.css('left'), 10), + width = target.outerWidth(), + skip_shift; + + var dir_obj = {}; + + // we use jQuery animate instead of CSS transitions because we + // need a callback to unlock the next animation + // needs support for RTL ** + if (target.index() !== old_index && !/skip/.test(direction)) { + if (/left/.test(direction)) { + this.lock(); + dir_obj[dir] = left + width; + clearing.animate(dir_obj, 300, this.unlock()); + } else if (/right/.test(direction)) { + this.lock(); + dir_obj[dir] = left - width; + clearing.animate(dir_obj, 300, this.unlock()); + } + } else if (/skip/.test(direction)) { + // the target image is not adjacent to the current image, so + // do we scroll right or not + skip_shift = target.index() - this.settings.up_count; + this.lock(); + + if (skip_shift > 0) { + dir_obj[dir] = -(skip_shift * width); + clearing.animate(dir_obj, 300, this.unlock()); + } else { + dir_obj[dir] = 0; + clearing.animate(dir_obj, 300, this.unlock()); + } + } + + callback(); + }, + + direction : function ($el, current, target) { + var lis = this.S('li', $el), + li_width = lis.outerWidth() + (lis.outerWidth() / 4), + up_count = Math.floor(this.S('.clearing-container').outerWidth() / li_width) - 1, + target_index = lis.index(target), + response; + + this.settings.up_count = up_count; + + if (this.adjacent(this.settings.prev_index, target_index)) { + if ((target_index > up_count) && target_index > this.settings.prev_index) { + response = 'right'; + } else if ((target_index > up_count - 1) && target_index <= this.settings.prev_index) { + response = 'left'; + } else { + response = false; + } + } else { + response = 'skip'; + } + + this.settings.prev_index = target_index; + + return response; + }, + + adjacent : function (current_index, target_index) { + for (var i = target_index + 1; i >= target_index - 1; i--) { + if (i === current_index) { + return true; + } + } + return false; + }, + + // lock management + + lock : function () { + this.settings.locked = true; + }, + + unlock : function () { + this.settings.locked = false; + }, + + locked : function () { + return this.settings.locked; + }, + + off : function () { + this.S(this.scope).off('.fndtn.clearing'); + this.S(window).off('.fndtn.clearing'); + }, + + reflow : function () { + this.init(); + } + }; + +}(jQuery, window, window.document)); diff --git a/library/foundation/js/foundation/foundation.dropdown.js b/library/foundation/js/foundation/foundation.dropdown.js new file mode 100644 index 000000000..5c2e5bb33 --- /dev/null +++ b/library/foundation/js/foundation/foundation.dropdown.js @@ -0,0 +1,463 @@ +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.dropdown = { + name : 'dropdown', + + version : '5.5.2', + + settings : { + active_class : 'open', + disabled_class : 'disabled', + mega_class : 'mega', + align : 'bottom', + is_hover : false, + hover_timeout : 150, + opened : function () {}, + closed : function () {} + }, + + init : function (scope, method, options) { + Foundation.inherit(this, 'throttle'); + + $.extend(true, this.settings, method, options); + this.bindings(method, options); + }, + + events : function (scope) { + var self = this, + S = self.S; + + S(this.scope) + .off('.dropdown') + .on('click.fndtn.dropdown', '[' + this.attr_name() + ']', function (e) { + var settings = S(this).data(self.attr_name(true) + '-init') || self.settings; + if (!settings.is_hover || Modernizr.touch) { + e.preventDefault(); + if (S(this).parent('[data-reveal-id]').length) { + e.stopPropagation(); + } + self.toggle($(this)); + } + }) + .on('mouseenter.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) { + var $this = S(this), + dropdown, + target; + + clearTimeout(self.timeout); + + if ($this.data(self.data_attr())) { + dropdown = S('#' + $this.data(self.data_attr())); + target = $this; + } else { + dropdown = $this; + target = S('[' + self.attr_name() + '="' + dropdown.attr('id') + '"]'); + } + + var settings = target.data(self.attr_name(true) + '-init') || self.settings; + + if (S(e.currentTarget).data(self.data_attr()) && settings.is_hover) { + self.closeall.call(self); + } + + if (settings.is_hover) { + self.open.apply(self, [dropdown, target]); + } + }) + .on('mouseleave.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) { + var $this = S(this); + var settings; + + if ($this.data(self.data_attr())) { + settings = $this.data(self.data_attr(true) + '-init') || self.settings; + } else { + var target = S('[' + self.attr_name() + '="' + S(this).attr('id') + '"]'), + settings = target.data(self.attr_name(true) + '-init') || self.settings; + } + + self.timeout = setTimeout(function () { + if ($this.data(self.data_attr())) { + if (settings.is_hover) { + self.close.call(self, S('#' + $this.data(self.data_attr()))); + } + } else { + if (settings.is_hover) { + self.close.call(self, $this); + } + } + }.bind(this), settings.hover_timeout); + }) + .on('click.fndtn.dropdown', function (e) { + var parent = S(e.target).closest('[' + self.attr_name() + '-content]'); + var links = parent.find('a'); + + if (links.length > 0 && parent.attr('aria-autoclose') !== 'false') { + self.close.call(self, S('[' + self.attr_name() + '-content]')); + } + + if (e.target !== document && !$.contains(document.documentElement, e.target)) { + return; + } + + if (S(e.target).closest('[' + self.attr_name() + ']').length > 0) { + return; + } + + if (!(S(e.target).data('revealId')) && + (parent.length > 0 && (S(e.target).is('[' + self.attr_name() + '-content]') || + $.contains(parent.first()[0], e.target)))) { + e.stopPropagation(); + return; + } + + self.close.call(self, S('[' + self.attr_name() + '-content]')); + }) + .on('opened.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () { + self.settings.opened.call(this); + }) + .on('closed.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () { + self.settings.closed.call(this); + }); + + S(window) + .off('.dropdown') + .on('resize.fndtn.dropdown', self.throttle(function () { + self.resize.call(self); + }, 50)); + + this.resize(); + }, + + close : function (dropdown) { + var self = this; + dropdown.each(function (idx) { + var original_target = $('[' + self.attr_name() + '=' + dropdown[idx].id + ']') || $('aria-controls=' + dropdown[idx].id + ']'); + original_target.attr('aria-expanded', 'false'); + if (self.S(this).hasClass(self.settings.active_class)) { + self.S(this) + .css(Foundation.rtl ? 'right' : 'left', '-99999px') + .attr('aria-hidden', 'true') + .removeClass(self.settings.active_class) + .prev('[' + self.attr_name() + ']') + .removeClass(self.settings.active_class) + .removeData('target'); + + self.S(this).trigger('closed.fndtn.dropdown', [dropdown]); + } + }); + dropdown.removeClass('f-open-' + this.attr_name(true)); + }, + + closeall : function () { + var self = this; + $.each(self.S('.f-open-' + this.attr_name(true)), function () { + self.close.call(self, self.S(this)); + }); + }, + + open : function (dropdown, target) { + this + .css(dropdown + .addClass(this.settings.active_class), target); + dropdown.prev('[' + this.attr_name() + ']').addClass(this.settings.active_class); + dropdown.data('target', target.get(0)).trigger('opened.fndtn.dropdown', [dropdown, target]); + dropdown.attr('aria-hidden', 'false'); + target.attr('aria-expanded', 'true'); + dropdown.focus(); + dropdown.addClass('f-open-' + this.attr_name(true)); + }, + + data_attr : function () { + if (this.namespace.length > 0) { + return this.namespace + '-' + this.name; + } + + return this.name; + }, + + toggle : function (target) { + if (target.hasClass(this.settings.disabled_class)) { + return; + } + var dropdown = this.S('#' + target.data(this.data_attr())); + if (dropdown.length === 0) { + // No dropdown found, not continuing + return; + } + + this.close.call(this, this.S('[' + this.attr_name() + '-content]').not(dropdown)); + + if (dropdown.hasClass(this.settings.active_class)) { + this.close.call(this, dropdown); + if (dropdown.data('target') !== target.get(0)) { + this.open.call(this, dropdown, target); + } + } else { + this.open.call(this, dropdown, target); + } + }, + + resize : function () { + var dropdown = this.S('[' + this.attr_name() + '-content].open'); + var target = $(dropdown.data("target")); + + if (dropdown.length && target.length) { + this.css(dropdown, target); + } + }, + + css : function (dropdown, target) { + var left_offset = Math.max((target.width() - dropdown.width()) / 2, 8), + settings = target.data(this.attr_name(true) + '-init') || this.settings, + parentOverflow = dropdown.parent().css('overflow-y') || dropdown.parent().css('overflow'); + + this.clear_idx(); + + + + if (this.small()) { + var p = this.dirs.bottom.call(dropdown, target, settings); + + dropdown.attr('style', '').removeClass('drop-left drop-right drop-top').css({ + position : 'absolute', + width : '95%', + 'max-width' : 'none', + top : p.top + }); + + dropdown.css(Foundation.rtl ? 'right' : 'left', left_offset); + } + // detect if dropdown is in an overflow container + else if (parentOverflow !== 'visible') { + var offset = target[0].offsetTop + target[0].offsetHeight; + + dropdown.attr('style', '').css({ + position : 'absolute', + top : offset + }); + + dropdown.css(Foundation.rtl ? 'right' : 'left', left_offset); + } + else { + + this.style(dropdown, target, settings); + } + + return dropdown; + }, + + style : function (dropdown, target, settings) { + var css = $.extend({position : 'absolute'}, + this.dirs[settings.align].call(dropdown, target, settings)); + + dropdown.attr('style', '').css(css); + }, + + // return CSS property object + // `this` is the dropdown + dirs : { + // Calculate target offset + _base : function (t) { + var o_p = this.offsetParent(), + o = o_p.offset(), + p = t.offset(); + + p.top -= o.top; + p.left -= o.left; + + //set some flags on the p object to pass along + p.missRight = false; + p.missTop = false; + p.missLeft = false; + p.leftRightFlag = false; + + //lets see if the panel will be off the screen + //get the actual width of the page and store it + var actualBodyWidth; + if (document.getElementsByClassName('row')[0]) { + actualBodyWidth = document.getElementsByClassName('row')[0].clientWidth; + } else { + actualBodyWidth = window.innerWidth; + } + + var actualMarginWidth = (window.innerWidth - actualBodyWidth) / 2; + var actualBoundary = actualBodyWidth; + + if (!this.hasClass('mega')) { + //miss top + if (t.offset().top <= this.outerHeight()) { + p.missTop = true; + actualBoundary = window.innerWidth - actualMarginWidth; + p.leftRightFlag = true; + } + + //miss right + if (t.offset().left + this.outerWidth() > t.offset().left + actualMarginWidth && t.offset().left - actualMarginWidth > this.outerWidth()) { + p.missRight = true; + p.missLeft = false; + } + + //miss left + if (t.offset().left - this.outerWidth() <= 0) { + p.missLeft = true; + p.missRight = false; + } + } + + return p; + }, + + top : function (t, s) { + var self = Foundation.libs.dropdown, + p = self.dirs._base.call(this, t); + + this.addClass('drop-top'); + + if (p.missTop == true) { + p.top = p.top + t.outerHeight() + this.outerHeight(); + this.removeClass('drop-top'); + } + + if (p.missRight == true) { + p.left = p.left - this.outerWidth() + t.outerWidth(); + } + + if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) { + self.adjust_pip(this, t, s, p); + } + + if (Foundation.rtl) { + return {left : p.left - this.outerWidth() + t.outerWidth(), + top : p.top - this.outerHeight()}; + } + + return {left : p.left, top : p.top - this.outerHeight()}; + }, + + bottom : function (t, s) { + var self = Foundation.libs.dropdown, + p = self.dirs._base.call(this, t); + + if (p.missRight == true) { + p.left = p.left - this.outerWidth() + t.outerWidth(); + } + + if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) { + self.adjust_pip(this, t, s, p); + } + + if (self.rtl) { + return {left : p.left - this.outerWidth() + t.outerWidth(), top : p.top + t.outerHeight()}; + } + + return {left : p.left, top : p.top + t.outerHeight()}; + }, + + left : function (t, s) { + var p = Foundation.libs.dropdown.dirs._base.call(this, t); + + this.addClass('drop-left'); + + if (p.missLeft == true) { + p.left = p.left + this.outerWidth(); + p.top = p.top + t.outerHeight(); + this.removeClass('drop-left'); + } + + return {left : p.left - this.outerWidth(), top : p.top}; + }, + + right : function (t, s) { + var p = Foundation.libs.dropdown.dirs._base.call(this, t); + + this.addClass('drop-right'); + + if (p.missRight == true) { + p.left = p.left - this.outerWidth(); + p.top = p.top + t.outerHeight(); + this.removeClass('drop-right'); + } else { + p.triggeredRight = true; + } + + var self = Foundation.libs.dropdown; + + if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) { + self.adjust_pip(this, t, s, p); + } + + return {left : p.left + t.outerWidth(), top : p.top}; + } + }, + + // Insert rule to style psuedo elements + adjust_pip : function (dropdown, target, settings, position) { + var sheet = Foundation.stylesheet, + pip_offset_base = 8; + + if (dropdown.hasClass(settings.mega_class)) { + pip_offset_base = position.left + (target.outerWidth() / 2) - 8; + } else if (this.small()) { + pip_offset_base += position.left - 8; + } + + this.rule_idx = sheet.cssRules.length; + + //default + var sel_before = '.f-dropdown.open:before', + sel_after = '.f-dropdown.open:after', + css_before = 'left: ' + pip_offset_base + 'px;', + css_after = 'left: ' + (pip_offset_base - 1) + 'px;'; + + if (position.missRight == true) { + pip_offset_base = dropdown.outerWidth() - 23; + sel_before = '.f-dropdown.open:before', + sel_after = '.f-dropdown.open:after', + css_before = 'left: ' + pip_offset_base + 'px;', + css_after = 'left: ' + (pip_offset_base - 1) + 'px;'; + } + + //just a case where right is fired, but its not missing right + if (position.triggeredRight == true) { + sel_before = '.f-dropdown.open:before', + sel_after = '.f-dropdown.open:after', + css_before = 'left:-12px;', + css_after = 'left:-14px;'; + } + + if (sheet.insertRule) { + sheet.insertRule([sel_before, '{', css_before, '}'].join(' '), this.rule_idx); + sheet.insertRule([sel_after, '{', css_after, '}'].join(' '), this.rule_idx + 1); + } else { + sheet.addRule(sel_before, css_before, this.rule_idx); + sheet.addRule(sel_after, css_after, this.rule_idx + 1); + } + }, + + // Remove old dropdown rule index + clear_idx : function () { + var sheet = Foundation.stylesheet; + + if (typeof this.rule_idx !== 'undefined') { + sheet.deleteRule(this.rule_idx); + sheet.deleteRule(this.rule_idx); + delete this.rule_idx; + } + }, + + small : function () { + return matchMedia(Foundation.media_queries.small).matches && + !matchMedia(Foundation.media_queries.medium).matches; + }, + + off : function () { + this.S(this.scope).off('.fndtn.dropdown'); + this.S('html, body').off('.fndtn.dropdown'); + this.S(window).off('.fndtn.dropdown'); + this.S('[data-dropdown-content]').off('.fndtn.dropdown'); + }, + + reflow : function () {} + }; +}(jQuery, window, window.document)); diff --git a/library/foundation/js/foundation/foundation.equalizer.js b/library/foundation/js/foundation/foundation.equalizer.js new file mode 100644 index 000000000..23ab1052c --- /dev/null +++ b/library/foundation/js/foundation/foundation.equalizer.js @@ -0,0 +1,104 @@ +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.equalizer = { + name : 'equalizer', + + version : '5.5.2', + + settings : { + use_tallest : true, + before_height_change : $.noop, + after_height_change : $.noop, + equalize_on_stack : false, + act_on_hidden_el: false + }, + + init : function (scope, method, options) { + Foundation.inherit(this, 'image_loaded'); + this.bindings(method, options); + this.reflow(); + }, + + events : function () { + this.S(window).off('.equalizer').on('resize.fndtn.equalizer', function (e) { + this.reflow(); + }.bind(this)); + }, + + equalize : function (equalizer) { + var isStacked = false, + group = equalizer.data('equalizer'), + settings = equalizer.data(this.attr_name(true)+'-init') || this.settings, + vals, + firstTopOffset; + + if (settings.act_on_hidden_el) { + vals = group ? equalizer.find('['+this.attr_name()+'-watch="'+group+'"]') : equalizer.find('['+this.attr_name()+'-watch]'); + } + else { + vals = group ? equalizer.find('['+this.attr_name()+'-watch="'+group+'"]:visible') : equalizer.find('['+this.attr_name()+'-watch]:visible'); + } + + if (vals.length === 0) { + return; + } + + settings.before_height_change(); + equalizer.trigger('before-height-change.fndth.equalizer'); + vals.height('inherit'); + + if (settings.equalize_on_stack === false) { + firstTopOffset = vals.first().offset().top; + vals.each(function () { + if ($(this).offset().top !== firstTopOffset) { + isStacked = true; + return false; + } + }); + if (isStacked) { + return; + } + } + + var heights = vals.map(function () { return $(this).outerHeight(false) }).get(); + + if (settings.use_tallest) { + var max = Math.max.apply(null, heights); + vals.css('height', max); + } else { + var min = Math.min.apply(null, heights); + vals.css('height', min); + } + + settings.after_height_change(); + equalizer.trigger('after-height-change.fndtn.equalizer'); + }, + + reflow : function () { + var self = this; + + this.S('[' + this.attr_name() + ']', this.scope).each(function () { + var $eq_target = $(this), + media_query = $eq_target.data('equalizer-mq'), + ignore_media_query = true; + + if (media_query) { + media_query = 'is_' + media_query.replace(/-/g, '_'); + if (Foundation.utils.hasOwnProperty(media_query)) { + ignore_media_query = false; + } + } + + self.image_loaded(self.S('img', this), function () { + if (ignore_media_query || Foundation.utils[media_query]()) { + self.equalize($eq_target) + } else { + var vals = $eq_target.find('[' + self.attr_name() + '-watch]:visible'); + vals.css('height', 'auto'); + } + }); + }); + } + }; +})(jQuery, window, window.document); diff --git a/library/foundation/js/foundation/foundation.interchange.js b/library/foundation/js/foundation/foundation.interchange.js new file mode 100644 index 000000000..7ec2ad1b4 --- /dev/null +++ b/library/foundation/js/foundation/foundation.interchange.js @@ -0,0 +1,359 @@ +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.interchange = { + name : 'interchange', + + version : '5.5.2', + + cache : {}, + + images_loaded : false, + nodes_loaded : false, + + settings : { + load_attr : 'interchange', + + named_queries : { + 'default' : 'only screen', + 'small' : Foundation.media_queries['small'], + 'small-only' : Foundation.media_queries['small-only'], + 'medium' : Foundation.media_queries['medium'], + 'medium-only' : Foundation.media_queries['medium-only'], + 'large' : Foundation.media_queries['large'], + 'large-only' : Foundation.media_queries['large-only'], + 'xlarge' : Foundation.media_queries['xlarge'], + 'xlarge-only' : Foundation.media_queries['xlarge-only'], + 'xxlarge' : Foundation.media_queries['xxlarge'], + 'landscape' : 'only screen and (orientation: landscape)', + 'portrait' : 'only screen and (orientation: portrait)', + 'retina' : 'only screen and (-webkit-min-device-pixel-ratio: 2),' + + 'only screen and (min--moz-device-pixel-ratio: 2),' + + 'only screen and (-o-min-device-pixel-ratio: 2/1),' + + 'only screen and (min-device-pixel-ratio: 2),' + + 'only screen and (min-resolution: 192dpi),' + + 'only screen and (min-resolution: 2dppx)' + }, + + directives : { + replace : function (el, path, trigger) { + // The trigger argument, if called within the directive, fires + // an event named after the directive on the element, passing + // any parameters along to the event that you pass to trigger. + // + // ex. trigger(), trigger([a, b, c]), or trigger(a, b, c) + // + // This allows you to bind a callback like so: + // $('#interchangeContainer').on('replace', function (e, a, b, c) { + // console.log($(this).html(), a, b, c); + // }); + + if (el !== null && /IMG/.test(el[0].nodeName)) { + var orig_path = el[0].src; + + if (new RegExp(path, 'i').test(orig_path)) { + return; + } + + el.attr("src", path); + + return trigger(el[0].src); + } + var last_path = el.data(this.data_attr + '-last-path'), + self = this; + + if (last_path == path) { + return; + } + + if (/\.(gif|jpg|jpeg|tiff|png)([?#].*)?/i.test(path)) { + $(el).css('background-image', 'url(' + path + ')'); + el.data('interchange-last-path', path); + return trigger(path); + } + + return $.get(path, function (response) { + el.html(response); + el.data(self.data_attr + '-last-path', path); + trigger(); + }); + + } + } + }, + + init : function (scope, method, options) { + Foundation.inherit(this, 'throttle random_str'); + + this.data_attr = this.set_data_attr(); + $.extend(true, this.settings, method, options); + this.bindings(method, options); + this.reflow(); + }, + + get_media_hash : function () { + var mediaHash = ''; + for (var queryName in this.settings.named_queries ) { + mediaHash += matchMedia(this.settings.named_queries[queryName]).matches.toString(); + } + return mediaHash; + }, + + events : function () { + var self = this, prevMediaHash; + + $(window) + .off('.interchange') + .on('resize.fndtn.interchange', self.throttle(function () { + var currMediaHash = self.get_media_hash(); + if (currMediaHash !== prevMediaHash) { + self.resize(); + } + prevMediaHash = currMediaHash; + }, 50)); + + return this; + }, + + resize : function () { + var cache = this.cache; + + if (!this.images_loaded || !this.nodes_loaded) { + setTimeout($.proxy(this.resize, this), 50); + return; + } + + for (var uuid in cache) { + if (cache.hasOwnProperty(uuid)) { + var passed = this.results(uuid, cache[uuid]); + if (passed) { + this.settings.directives[passed + .scenario[1]].call(this, passed.el, passed.scenario[0], (function (passed) { + if (arguments[0] instanceof Array) { + var args = arguments[0]; + } else { + var args = Array.prototype.slice.call(arguments, 0); + } + + return function() { + passed.el.trigger(passed.scenario[1], args); + } + }(passed))); + } + } + } + + }, + + results : function (uuid, scenarios) { + var count = scenarios.length; + + if (count > 0) { + var el = this.S('[' + this.add_namespace('data-uuid') + '="' + uuid + '"]'); + + while (count--) { + var mq, rule = scenarios[count][2]; + if (this.settings.named_queries.hasOwnProperty(rule)) { + mq = matchMedia(this.settings.named_queries[rule]); + } else { + mq = matchMedia(rule); + } + if (mq.matches) { + return {el : el, scenario : scenarios[count]}; + } + } + } + + return false; + }, + + load : function (type, force_update) { + if (typeof this['cached_' + type] === 'undefined' || force_update) { + this['update_' + type](); + } + + return this['cached_' + type]; + }, + + update_images : function () { + var images = this.S('img[' + this.data_attr + ']'), + count = images.length, + i = count, + loaded_count = 0, + data_attr = this.data_attr; + + this.cache = {}; + this.cached_images = []; + this.images_loaded = (count === 0); + + while (i--) { + loaded_count++; + if (images[i]) { + var str = images[i].getAttribute(data_attr) || ''; + + if (str.length > 0) { + this.cached_images.push(images[i]); + } + } + + if (loaded_count === count) { + this.images_loaded = true; + this.enhance('images'); + } + } + + return this; + }, + + update_nodes : function () { + var nodes = this.S('[' + this.data_attr + ']').not('img'), + count = nodes.length, + i = count, + loaded_count = 0, + data_attr = this.data_attr; + + this.cached_nodes = []; + this.nodes_loaded = (count === 0); + + while (i--) { + loaded_count++; + var str = nodes[i].getAttribute(data_attr) || ''; + + if (str.length > 0) { + this.cached_nodes.push(nodes[i]); + } + + if (loaded_count === count) { + this.nodes_loaded = true; + this.enhance('nodes'); + } + } + + return this; + }, + + enhance : function (type) { + var i = this['cached_' + type].length; + + while (i--) { + this.object($(this['cached_' + type][i])); + } + + return $(window).trigger('resize.fndtn.interchange'); + }, + + convert_directive : function (directive) { + + var trimmed = this.trim(directive); + + if (trimmed.length > 0) { + return trimmed; + } + + return 'replace'; + }, + + parse_scenario : function (scenario) { + // This logic had to be made more complex since some users were using commas in the url path + // So we cannot simply just split on a comma + + var directive_match = scenario[0].match(/(.+),\s*(\w+)\s*$/), + // getting the mq has gotten a bit complicated since we started accounting for several use cases + // of URLs. For now we'll continue to match these scenarios, but we may consider having these scenarios + // as nested objects or arrays in F6. + // regex: match everything before close parenthesis for mq + media_query = scenario[1].match(/(.*)\)/); + + if (directive_match) { + var path = directive_match[1], + directive = directive_match[2]; + + } else { + var cached_split = scenario[0].split(/,\s*$/), + path = cached_split[0], + directive = ''; + } + + return [this.trim(path), this.convert_directive(directive), this.trim(media_query[1])]; + }, + + object : function (el) { + var raw_arr = this.parse_data_attr(el), + scenarios = [], + i = raw_arr.length; + + if (i > 0) { + while (i--) { + // split array between comma delimited content and mq + // regex: comma, optional space, open parenthesis + var scenario = raw_arr[i].split(/,\s?\(/); + + if (scenario.length > 1) { + var params = this.parse_scenario(scenario); + scenarios.push(params); + } + } + } + + return this.store(el, scenarios); + }, + + store : function (el, scenarios) { + var uuid = this.random_str(), + current_uuid = el.data(this.add_namespace('uuid', true)); + + if (this.cache[current_uuid]) { + return this.cache[current_uuid]; + } + + el.attr(this.add_namespace('data-uuid'), uuid); + return this.cache[uuid] = scenarios; + }, + + trim : function (str) { + + if (typeof str === 'string') { + return $.trim(str); + } + + return str; + }, + + set_data_attr : function (init) { + if (init) { + if (this.namespace.length > 0) { + return this.namespace + '-' + this.settings.load_attr; + } + + return this.settings.load_attr; + } + + if (this.namespace.length > 0) { + return 'data-' + this.namespace + '-' + this.settings.load_attr; + } + + return 'data-' + this.settings.load_attr; + }, + + parse_data_attr : function (el) { + var raw = el.attr(this.attr_name()).split(/\[(.*?)\]/), + i = raw.length, + output = []; + + while (i--) { + if (raw[i].replace(/[\W\d]+/, '').length > 4) { + output.push(raw[i]); + } + } + + return output; + }, + + reflow : function () { + this.load('images', true); + this.load('nodes', true); + } + + }; + +}(jQuery, window, window.document)); diff --git a/library/foundation/js/foundation/foundation.joyride.js b/library/foundation/js/foundation/foundation.joyride.js new file mode 100644 index 000000000..5433bf797 --- /dev/null +++ b/library/foundation/js/foundation/foundation.joyride.js @@ -0,0 +1,932 @@ +;(function ($, window, document, undefined) { + 'use strict'; + + var Modernizr = Modernizr || false; + + Foundation.libs.joyride = { + name : 'joyride', + + version : '5.5.2', + + defaults : { + expose : false, // turn on or off the expose feature + modal : true, // Whether to cover page with modal during the tour + keyboard : true, // enable left, right and esc keystrokes + tip_location : 'bottom', // 'top' or 'bottom' in relation to parent + nub_position : 'auto', // override on a per tooltip bases + scroll_speed : 1500, // Page scrolling speed in milliseconds, 0 = no scroll animation + scroll_animation : 'linear', // supports 'swing' and 'linear', extend with jQuery UI. + timer : 0, // 0 = no timer , all other numbers = timer in milliseconds + start_timer_on_click : true, // true or false - true requires clicking the first button start the timer + start_offset : 0, // the index of the tooltip you want to start on (index of the li) + next_button : true, // true or false to control whether a next button is used + prev_button : true, // true or false to control whether a prev button is used + tip_animation : 'fade', // 'pop' or 'fade' in each tip + pause_after : [], // array of indexes where to pause the tour after + exposed : [], // array of expose elements + tip_animation_fade_speed : 300, // when tipAnimation = 'fade' this is speed in milliseconds for the transition + cookie_monster : false, // true or false to control whether cookies are used + cookie_name : 'joyride', // Name the cookie you'll use + cookie_domain : false, // Will this cookie be attached to a domain, ie. '.notableapp.com' + cookie_expires : 365, // set when you would like the cookie to expire. + tip_container : 'body', // Where will the tip be attached + abort_on_close : true, // When true, the close event will not fire any callback + tip_location_patterns : { + top : ['bottom'], + bottom : [], // bottom should not need to be repositioned + left : ['right', 'top', 'bottom'], + right : ['left', 'top', 'bottom'] + }, + post_ride_callback : function () {}, // A method to call once the tour closes (canceled or complete) + post_step_callback : function () {}, // A method to call after each step + pre_step_callback : function () {}, // A method to call before each step + pre_ride_callback : function () {}, // A method to call before the tour starts (passed index, tip, and cloned exposed element) + post_expose_callback : function () {}, // A method to call after an element has been exposed + template : { // HTML segments for tip layout + link : '<a href="#close" class="joyride-close-tip">×</a>', + timer : '<div class="joyride-timer-indicator-wrap"><span class="joyride-timer-indicator"></span></div>', + tip : '<div class="joyride-tip-guide"><span class="joyride-nub"></span></div>', + wrapper : '<div class="joyride-content-wrapper"></div>', + button : '<a href="#" class="small button joyride-next-tip"></a>', + prev_button : '<a href="#" class="small button joyride-prev-tip"></a>', + modal : '<div class="joyride-modal-bg"></div>', + expose : '<div class="joyride-expose-wrapper"></div>', + expose_cover : '<div class="joyride-expose-cover"></div>' + }, + expose_add_class : '' // One or more space-separated class names to be added to exposed element + }, + + init : function (scope, method, options) { + Foundation.inherit(this, 'throttle random_str'); + + this.settings = this.settings || $.extend({}, this.defaults, (options || method)); + + this.bindings(method, options) + }, + + go_next : function () { + if (this.settings.$li.next().length < 1) { + this.end(); + } else if (this.settings.timer > 0) { + clearTimeout(this.settings.automate); + this.hide(); + this.show(); + this.startTimer(); + } else { + this.hide(); + this.show(); + } + }, + + go_prev : function () { + if (this.settings.$li.prev().length < 1) { + // Do nothing if there are no prev element + } else if (this.settings.timer > 0) { + clearTimeout(this.settings.automate); + this.hide(); + this.show(null, true); + this.startTimer(); + } else { + this.hide(); + this.show(null, true); + } + }, + + events : function () { + var self = this; + + $(this.scope) + .off('.joyride') + .on('click.fndtn.joyride', '.joyride-next-tip, .joyride-modal-bg', function (e) { + e.preventDefault(); + this.go_next() + }.bind(this)) + .on('click.fndtn.joyride', '.joyride-prev-tip', function (e) { + e.preventDefault(); + this.go_prev(); + }.bind(this)) + + .on('click.fndtn.joyride', '.joyride-close-tip', function (e) { + e.preventDefault(); + this.end(this.settings.abort_on_close); + }.bind(this)) + + .on('keyup.fndtn.joyride', function (e) { + // Don't do anything if keystrokes are disabled + // or if the joyride is not being shown + if (!this.settings.keyboard || !this.settings.riding) { + return; + } + + switch (e.which) { + case 39: // right arrow + e.preventDefault(); + this.go_next(); + break; + case 37: // left arrow + e.preventDefault(); + this.go_prev(); + break; + case 27: // escape + e.preventDefault(); + this.end(this.settings.abort_on_close); + } + }.bind(this)); + + $(window) + .off('.joyride') + .on('resize.fndtn.joyride', self.throttle(function () { + if ($('[' + self.attr_name() + ']').length > 0 && self.settings.$next_tip && self.settings.riding) { + if (self.settings.exposed.length > 0) { + var $els = $(self.settings.exposed); + + $els.each(function () { + var $this = $(this); + self.un_expose($this); + self.expose($this); + }); + } + + if (self.is_phone()) { + self.pos_phone(); + } else { + self.pos_default(false); + } + } + }, 100)); + }, + + start : function () { + var self = this, + $this = $('[' + this.attr_name() + ']', this.scope), + integer_settings = ['timer', 'scrollSpeed', 'startOffset', 'tipAnimationFadeSpeed', 'cookieExpires'], + int_settings_count = integer_settings.length; + + if (!$this.length > 0) { + return; + } + + if (!this.settings.init) { + this.events(); + } + + this.settings = $this.data(this.attr_name(true) + '-init'); + + // non configureable settings + this.settings.$content_el = $this; + this.settings.$body = $(this.settings.tip_container); + this.settings.body_offset = $(this.settings.tip_container).position(); + this.settings.$tip_content = this.settings.$content_el.find('> li'); + this.settings.paused = false; + this.settings.attempts = 0; + this.settings.riding = true; + + // can we create cookies? + if (typeof $.cookie !== 'function') { + this.settings.cookie_monster = false; + } + + // generate the tips and insert into dom. + if (!this.settings.cookie_monster || this.settings.cookie_monster && !$.cookie(this.settings.cookie_name)) { + this.settings.$tip_content.each(function (index) { + var $this = $(this); + this.settings = $.extend({}, self.defaults, self.data_options($this)); + + // Make sure that settings parsed from data_options are integers where necessary + var i = int_settings_count; + while (i--) { + self.settings[integer_settings[i]] = parseInt(self.settings[integer_settings[i]], 10); + } + self.create({$li : $this, index : index}); + }); + + // show first tip + if (!this.settings.start_timer_on_click && this.settings.timer > 0) { + this.show('init'); + this.startTimer(); + } else { + this.show('init'); + } + + } + }, + + resume : function () { + this.set_li(); + this.show(); + }, + + tip_template : function (opts) { + var $blank, content; + + opts.tip_class = opts.tip_class || ''; + + $blank = $(this.settings.template.tip).addClass(opts.tip_class); + content = $.trim($(opts.li).html()) + + this.prev_button_text(opts.prev_button_text, opts.index) + + this.button_text(opts.button_text) + + this.settings.template.link + + this.timer_instance(opts.index); + + $blank.append($(this.settings.template.wrapper)); + $blank.first().attr(this.add_namespace('data-index'), opts.index); + $('.joyride-content-wrapper', $blank).append(content); + + return $blank[0]; + }, + + timer_instance : function (index) { + var txt; + + if ((index === 0 && this.settings.start_timer_on_click && this.settings.timer > 0) || this.settings.timer === 0) { + txt = ''; + } else { + txt = $(this.settings.template.timer)[0].outerHTML; + } + return txt; + }, + + button_text : function (txt) { + if (this.settings.tip_settings.next_button) { + txt = $.trim(txt) || 'Next'; + txt = $(this.settings.template.button).append(txt)[0].outerHTML; + } else { + txt = ''; + } + return txt; + }, + + prev_button_text : function (txt, idx) { + if (this.settings.tip_settings.prev_button) { + txt = $.trim(txt) || 'Previous'; + + // Add the disabled class to the button if it's the first element + if (idx == 0) { + txt = $(this.settings.template.prev_button).append(txt).addClass('disabled')[0].outerHTML; + } else { + txt = $(this.settings.template.prev_button).append(txt)[0].outerHTML; + } + } else { + txt = ''; + } + return txt; + }, + + create : function (opts) { + this.settings.tip_settings = $.extend({}, this.settings, this.data_options(opts.$li)); + var buttonText = opts.$li.attr(this.add_namespace('data-button')) || opts.$li.attr(this.add_namespace('data-text')), + prevButtonText = opts.$li.attr(this.add_namespace('data-button-prev')) || opts.$li.attr(this.add_namespace('data-prev-text')), + tipClass = opts.$li.attr('class'), + $tip_content = $(this.tip_template({ + tip_class : tipClass, + index : opts.index, + button_text : buttonText, + prev_button_text : prevButtonText, + li : opts.$li + })); + + $(this.settings.tip_container).append($tip_content); + }, + + show : function (init, is_prev) { + var $timer = null; + + // are we paused? + if (this.settings.$li === undefined || ($.inArray(this.settings.$li.index(), this.settings.pause_after) === -1)) { + + // don't go to the next li if the tour was paused + if (this.settings.paused) { + this.settings.paused = false; + } else { + this.set_li(init, is_prev); + } + + this.settings.attempts = 0; + + if (this.settings.$li.length && this.settings.$target.length > 0) { + if (init) { //run when we first start + this.settings.pre_ride_callback(this.settings.$li.index(), this.settings.$next_tip); + if (this.settings.modal) { + this.show_modal(); + } + } + + this.settings.pre_step_callback(this.settings.$li.index(), this.settings.$next_tip); + + if (this.settings.modal && this.settings.expose) { + this.expose(); + } + + this.settings.tip_settings = $.extend({}, this.settings, this.data_options(this.settings.$li)); + + this.settings.timer = parseInt(this.settings.timer, 10); + + this.settings.tip_settings.tip_location_pattern = this.settings.tip_location_patterns[this.settings.tip_settings.tip_location]; + + // scroll and hide bg if not modal + if (!/body/i.test(this.settings.$target.selector)) { + var joyridemodalbg = $('.joyride-modal-bg'); + if (/pop/i.test(this.settings.tipAnimation)) { + joyridemodalbg.hide(); + } else { + joyridemodalbg.fadeOut(this.settings.tipAnimationFadeSpeed); + } + this.scroll_to(); + } + + if (this.is_phone()) { + this.pos_phone(true); + } else { + this.pos_default(true); + } + + $timer = this.settings.$next_tip.find('.joyride-timer-indicator'); + + if (/pop/i.test(this.settings.tip_animation)) { + + $timer.width(0); + + if (this.settings.timer > 0) { + + this.settings.$next_tip.show(); + + setTimeout(function () { + $timer.animate({ + width : $timer.parent().width() + }, this.settings.timer, 'linear'); + }.bind(this), this.settings.tip_animation_fade_speed); + + } else { + this.settings.$next_tip.show(); + + } + + } else if (/fade/i.test(this.settings.tip_animation)) { + + $timer.width(0); + + if (this.settings.timer > 0) { + + this.settings.$next_tip + .fadeIn(this.settings.tip_animation_fade_speed) + .show(); + + setTimeout(function () { + $timer.animate({ + width : $timer.parent().width() + }, this.settings.timer, 'linear'); + }.bind(this), this.settings.tip_animation_fade_speed); + + } else { + this.settings.$next_tip.fadeIn(this.settings.tip_animation_fade_speed); + } + } + + this.settings.$current_tip = this.settings.$next_tip; + + // skip non-existant targets + } else if (this.settings.$li && this.settings.$target.length < 1) { + + this.show(init, is_prev); + + } else { + + this.end(); + + } + } else { + + this.settings.paused = true; + + } + + }, + + is_phone : function () { + return matchMedia(Foundation.media_queries.small).matches && + !matchMedia(Foundation.media_queries.medium).matches; + }, + + hide : function () { + if (this.settings.modal && this.settings.expose) { + this.un_expose(); + } + + if (!this.settings.modal) { + $('.joyride-modal-bg').hide(); + } + + // Prevent scroll bouncing...wait to remove from layout + this.settings.$current_tip.css('visibility', 'hidden'); + setTimeout($.proxy(function () { + this.hide(); + this.css('visibility', 'visible'); + }, this.settings.$current_tip), 0); + this.settings.post_step_callback(this.settings.$li.index(), + this.settings.$current_tip); + }, + + set_li : function (init, is_prev) { + if (init) { + this.settings.$li = this.settings.$tip_content.eq(this.settings.start_offset); + this.set_next_tip(); + this.settings.$current_tip = this.settings.$next_tip; + } else { + if (is_prev) { + this.settings.$li = this.settings.$li.prev(); + } else { + this.settings.$li = this.settings.$li.next(); + } + this.set_next_tip(); + } + + this.set_target(); + }, + + set_next_tip : function () { + this.settings.$next_tip = $('.joyride-tip-guide').eq(this.settings.$li.index()); + this.settings.$next_tip.data('closed', ''); + }, + + set_target : function () { + var cl = this.settings.$li.attr(this.add_namespace('data-class')), + id = this.settings.$li.attr(this.add_namespace('data-id')), + $sel = function () { + if (id) { + return $(document.getElementById(id)); + } else if (cl) { + return $('.' + cl).first(); + } else { + return $('body'); + } + }; + + this.settings.$target = $sel(); + }, + + scroll_to : function () { + var window_half, tipOffset; + + window_half = $(window).height() / 2; + tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight()); + + if (tipOffset != 0) { + $('html, body').stop().animate({ + scrollTop : tipOffset + }, this.settings.scroll_speed, 'swing'); + } + }, + + paused : function () { + return ($.inArray((this.settings.$li.index() + 1), this.settings.pause_after) === -1); + }, + + restart : function () { + this.hide(); + this.settings.$li = undefined; + this.show('init'); + }, + + pos_default : function (init) { + var $nub = this.settings.$next_tip.find('.joyride-nub'), + nub_width = Math.ceil($nub.outerWidth() / 2), + nub_height = Math.ceil($nub.outerHeight() / 2), + toggle = init || false; + + // tip must not be "display: none" to calculate position + if (toggle) { + this.settings.$next_tip.css('visibility', 'hidden'); + this.settings.$next_tip.show(); + } + + if (!/body/i.test(this.settings.$target.selector)) { + var topAdjustment = this.settings.tip_settings.tipAdjustmentY ? parseInt(this.settings.tip_settings.tipAdjustmentY) : 0, + leftAdjustment = this.settings.tip_settings.tipAdjustmentX ? parseInt(this.settings.tip_settings.tipAdjustmentX) : 0; + + if (this.bottom()) { + if (this.rtl) { + this.settings.$next_tip.css({ + top : (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment), + left : this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth() + leftAdjustment}); + } else { + this.settings.$next_tip.css({ + top : (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment), + left : this.settings.$target.offset().left + leftAdjustment}); + } + + this.nub_position($nub, this.settings.tip_settings.nub_position, 'top'); + + } else if (this.top()) { + if (this.rtl) { + this.settings.$next_tip.css({ + top : (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment), + left : this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth()}); + } else { + this.settings.$next_tip.css({ + top : (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment), + left : this.settings.$target.offset().left + leftAdjustment}); + } + + this.nub_position($nub, this.settings.tip_settings.nub_position, 'bottom'); + + } else if (this.right()) { + + this.settings.$next_tip.css({ + top : this.settings.$target.offset().top + topAdjustment, + left : (this.settings.$target.outerWidth() + this.settings.$target.offset().left + nub_width + leftAdjustment)}); + + this.nub_position($nub, this.settings.tip_settings.nub_position, 'left'); + + } else if (this.left()) { + + this.settings.$next_tip.css({ + top : this.settings.$target.offset().top + topAdjustment, + left : (this.settings.$target.offset().left - this.settings.$next_tip.outerWidth() - nub_width + leftAdjustment)}); + + this.nub_position($nub, this.settings.tip_settings.nub_position, 'right'); + + } + + if (!this.visible(this.corners(this.settings.$next_tip)) && this.settings.attempts < this.settings.tip_settings.tip_location_pattern.length) { + + $nub.removeClass('bottom') + .removeClass('top') + .removeClass('right') + .removeClass('left'); + + this.settings.tip_settings.tip_location = this.settings.tip_settings.tip_location_pattern[this.settings.attempts]; + + this.settings.attempts++; + + this.pos_default(); + + } + + } else if (this.settings.$li.length) { + + this.pos_modal($nub); + + } + + if (toggle) { + this.settings.$next_tip.hide(); + this.settings.$next_tip.css('visibility', 'visible'); + } + + }, + + pos_phone : function (init) { + var tip_height = this.settings.$next_tip.outerHeight(), + tip_offset = this.settings.$next_tip.offset(), + target_height = this.settings.$target.outerHeight(), + $nub = $('.joyride-nub', this.settings.$next_tip), + nub_height = Math.ceil($nub.outerHeight() / 2), + toggle = init || false; + + $nub.removeClass('bottom') + .removeClass('top') + .removeClass('right') + .removeClass('left'); + + if (toggle) { + this.settings.$next_tip.css('visibility', 'hidden'); + this.settings.$next_tip.show(); + } + + if (!/body/i.test(this.settings.$target.selector)) { + + if (this.top()) { + + this.settings.$next_tip.offset({top : this.settings.$target.offset().top - tip_height - nub_height}); + $nub.addClass('bottom'); + + } else { + + this.settings.$next_tip.offset({top : this.settings.$target.offset().top + target_height + nub_height}); + $nub.addClass('top'); + + } + + } else if (this.settings.$li.length) { + this.pos_modal($nub); + } + + if (toggle) { + this.settings.$next_tip.hide(); + this.settings.$next_tip.css('visibility', 'visible'); + } + }, + + pos_modal : function ($nub) { + this.center(); + $nub.hide(); + + this.show_modal(); + }, + + show_modal : function () { + if (!this.settings.$next_tip.data('closed')) { + var joyridemodalbg = $('.joyride-modal-bg'); + if (joyridemodalbg.length < 1) { + var joyridemodalbg = $(this.settings.template.modal); + joyridemodalbg.appendTo('body'); + } + + if (/pop/i.test(this.settings.tip_animation)) { + joyridemodalbg.show(); + } else { + joyridemodalbg.fadeIn(this.settings.tip_animation_fade_speed); + } + } + }, + + expose : function () { + var expose, + exposeCover, + el, + origCSS, + origClasses, + randId = 'expose-' + this.random_str(6); + + if (arguments.length > 0 && arguments[0] instanceof $) { + el = arguments[0]; + } else if (this.settings.$target && !/body/i.test(this.settings.$target.selector)) { + el = this.settings.$target; + } else { + return false; + } + + if (el.length < 1) { + if (window.console) { + console.error('element not valid', el); + } + return false; + } + + expose = $(this.settings.template.expose); + this.settings.$body.append(expose); + expose.css({ + top : el.offset().top, + left : el.offset().left, + width : el.outerWidth(true), + height : el.outerHeight(true) + }); + + exposeCover = $(this.settings.template.expose_cover); + + origCSS = { + zIndex : el.css('z-index'), + position : el.css('position') + }; + + origClasses = el.attr('class') == null ? '' : el.attr('class'); + + el.css('z-index', parseInt(expose.css('z-index')) + 1); + + if (origCSS.position == 'static') { + el.css('position', 'relative'); + } + + el.data('expose-css', origCSS); + el.data('orig-class', origClasses); + el.attr('class', origClasses + ' ' + this.settings.expose_add_class); + + exposeCover.css({ + top : el.offset().top, + left : el.offset().left, + width : el.outerWidth(true), + height : el.outerHeight(true) + }); + + if (this.settings.modal) { + this.show_modal(); + } + + this.settings.$body.append(exposeCover); + expose.addClass(randId); + exposeCover.addClass(randId); + el.data('expose', randId); + this.settings.post_expose_callback(this.settings.$li.index(), this.settings.$next_tip, el); + this.add_exposed(el); + }, + + un_expose : function () { + var exposeId, + el, + expose, + origCSS, + origClasses, + clearAll = false; + + if (arguments.length > 0 && arguments[0] instanceof $) { + el = arguments[0]; + } else if (this.settings.$target && !/body/i.test(this.settings.$target.selector)) { + el = this.settings.$target; + } else { + return false; + } + + if (el.length < 1) { + if (window.console) { + console.error('element not valid', el); + } + return false; + } + + exposeId = el.data('expose'); + expose = $('.' + exposeId); + + if (arguments.length > 1) { + clearAll = arguments[1]; + } + + if (clearAll === true) { + $('.joyride-expose-wrapper,.joyride-expose-cover').remove(); + } else { + expose.remove(); + } + + origCSS = el.data('expose-css'); + + if (origCSS.zIndex == 'auto') { + el.css('z-index', ''); + } else { + el.css('z-index', origCSS.zIndex); + } + + if (origCSS.position != el.css('position')) { + if (origCSS.position == 'static') {// this is default, no need to set it. + el.css('position', ''); + } else { + el.css('position', origCSS.position); + } + } + + origClasses = el.data('orig-class'); + el.attr('class', origClasses); + el.removeData('orig-classes'); + + el.removeData('expose'); + el.removeData('expose-z-index'); + this.remove_exposed(el); + }, + + add_exposed : function (el) { + this.settings.exposed = this.settings.exposed || []; + if (el instanceof $ || typeof el === 'object') { + this.settings.exposed.push(el[0]); + } else if (typeof el == 'string') { + this.settings.exposed.push(el); + } + }, + + remove_exposed : function (el) { + var search, i; + if (el instanceof $) { + search = el[0] + } else if (typeof el == 'string') { + search = el; + } + + this.settings.exposed = this.settings.exposed || []; + i = this.settings.exposed.length; + + while (i--) { + if (this.settings.exposed[i] == search) { + this.settings.exposed.splice(i, 1); + return; + } + } + }, + + center : function () { + var $w = $(window); + + this.settings.$next_tip.css({ + top : ((($w.height() - this.settings.$next_tip.outerHeight()) / 2) + $w.scrollTop()), + left : ((($w.width() - this.settings.$next_tip.outerWidth()) / 2) + $w.scrollLeft()) + }); + + return true; + }, + + bottom : function () { + return /bottom/i.test(this.settings.tip_settings.tip_location); + }, + + top : function () { + return /top/i.test(this.settings.tip_settings.tip_location); + }, + + right : function () { + return /right/i.test(this.settings.tip_settings.tip_location); + }, + + left : function () { + return /left/i.test(this.settings.tip_settings.tip_location); + }, + + corners : function (el) { + var w = $(window), + window_half = w.height() / 2, + //using this to calculate since scroll may not have finished yet. + tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight()), + right = w.width() + w.scrollLeft(), + offsetBottom = w.height() + tipOffset, + bottom = w.height() + w.scrollTop(), + top = w.scrollTop(); + + if (tipOffset < top) { + if (tipOffset < 0) { + top = 0; + } else { + top = tipOffset; + } + } + + if (offsetBottom > bottom) { + bottom = offsetBottom; + } + + return [ + el.offset().top < top, + right < el.offset().left + el.outerWidth(), + bottom < el.offset().top + el.outerHeight(), + w.scrollLeft() > el.offset().left + ]; + }, + + visible : function (hidden_corners) { + var i = hidden_corners.length; + + while (i--) { + if (hidden_corners[i]) { + return false; + } + } + + return true; + }, + + nub_position : function (nub, pos, def) { + if (pos === 'auto') { + nub.addClass(def); + } else { + nub.addClass(pos); + } + }, + + startTimer : function () { + if (this.settings.$li.length) { + this.settings.automate = setTimeout(function () { + this.hide(); + this.show(); + this.startTimer(); + }.bind(this), this.settings.timer); + } else { + clearTimeout(this.settings.automate); + } + }, + + end : function (abort) { + if (this.settings.cookie_monster) { + $.cookie(this.settings.cookie_name, 'ridden', {expires : this.settings.cookie_expires, domain : this.settings.cookie_domain}); + } + + if (this.settings.timer > 0) { + clearTimeout(this.settings.automate); + } + + if (this.settings.modal && this.settings.expose) { + this.un_expose(); + } + + // Unplug keystrokes listener + $(this.scope).off('keyup.joyride') + + this.settings.$next_tip.data('closed', true); + this.settings.riding = false; + + $('.joyride-modal-bg').hide(); + this.settings.$current_tip.hide(); + + if (typeof abort === 'undefined' || abort === false) { + this.settings.post_step_callback(this.settings.$li.index(), this.settings.$current_tip); + this.settings.post_ride_callback(this.settings.$li.index(), this.settings.$current_tip); + } + + $('.joyride-tip-guide').remove(); + }, + + off : function () { + $(this.scope).off('.joyride'); + $(window).off('.joyride'); + $('.joyride-close-tip, .joyride-next-tip, .joyride-modal-bg').off('.joyride'); + $('.joyride-tip-guide, .joyride-modal-bg').remove(); + clearTimeout(this.settings.automate); + this.settings = {}; + }, + + reflow : function () {} + }; +}(jQuery, window, window.document)); diff --git a/library/foundation/js/foundation/foundation.js b/library/foundation/js/foundation/foundation.js new file mode 100644 index 000000000..122ddc2f1 --- /dev/null +++ b/library/foundation/js/foundation/foundation.js @@ -0,0 +1,725 @@ +/* + * Foundation Responsive Library + * http://foundation.zurb.com + * Copyright 2014, ZURB + * Free to use under the MIT license. + * http://www.opensource.org/licenses/mit-license.php +*/ + +(function ($, window, document, undefined) { + 'use strict'; + + var header_helpers = function (class_array) { + var i = class_array.length; + var head = $('head'); + + while (i--) { + if (head.has('.' + class_array[i]).length === 0) { + head.append('<meta class="' + class_array[i] + '" />'); + } + } + }; + + header_helpers([ + 'foundation-mq-small', + 'foundation-mq-small-only', + 'foundation-mq-medium', + 'foundation-mq-medium-only', + 'foundation-mq-large', + 'foundation-mq-large-only', + 'foundation-mq-xlarge', + 'foundation-mq-xlarge-only', + 'foundation-mq-xxlarge', + 'foundation-data-attribute-namespace']); + + // Enable FastClick if present + + $(function () { + if (typeof FastClick !== 'undefined') { + // Don't attach to body if undefined + if (typeof document.body !== 'undefined') { + FastClick.attach(document.body); + } + } + }); + + // private Fast Selector wrapper, + // returns jQuery object. Only use where + // getElementById is not available. + var S = function (selector, context) { + if (typeof selector === 'string') { + if (context) { + var cont; + if (context.jquery) { + cont = context[0]; + if (!cont) { + return context; + } + } else { + cont = context; + } + return $(cont.querySelectorAll(selector)); + } + + return $(document.querySelectorAll(selector)); + } + + return $(selector, context); + }; + + // Namespace functions. + + var attr_name = function (init) { + var arr = []; + if (!init) { + arr.push('data'); + } + if (this.namespace.length > 0) { + arr.push(this.namespace); + } + arr.push(this.name); + + return arr.join('-'); + }; + + var add_namespace = function (str) { + var parts = str.split('-'), + i = parts.length, + arr = []; + + while (i--) { + if (i !== 0) { + arr.push(parts[i]); + } else { + if (this.namespace.length > 0) { + arr.push(this.namespace, parts[i]); + } else { + arr.push(parts[i]); + } + } + } + + return arr.reverse().join('-'); + }; + + // Event binding and data-options updating. + + var bindings = function (method, options) { + var self = this, + bind = function(){ + var $this = S(this), + should_bind_events = !$this.data(self.attr_name(true) + '-init'); + $this.data(self.attr_name(true) + '-init', $.extend({}, self.settings, (options || method), self.data_options($this))); + + if (should_bind_events) { + self.events(this); + } + }; + + if (S(this.scope).is('[' + this.attr_name() +']')) { + bind.call(this.scope); + } else { + S('[' + this.attr_name() +']', this.scope).each(bind); + } + // # Patch to fix #5043 to move this *after* the if/else clause in order for Backbone and similar frameworks to have improved control over event binding and data-options updating. + if (typeof method === 'string') { + return this[method].call(this, options); + } + + }; + + var single_image_loaded = function (image, callback) { + function loaded () { + callback(image[0]); + } + + function bindLoad () { + this.one('load', loaded); + + if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { + var src = this.attr( 'src' ), + param = src.match( /\?/ ) ? '&' : '?'; + + param += 'random=' + (new Date()).getTime(); + this.attr('src', src + param); + } + } + + if (!image.attr('src')) { + loaded(); + return; + } + + if (image[0].complete || image[0].readyState === 4) { + loaded(); + } else { + bindLoad.call(image); + } + }; + + /*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license */ + + window.matchMedia || (window.matchMedia = function() { + "use strict"; + + // For browsers that support matchMedium api such as IE 9 and webkit + var styleMedia = (window.styleMedia || window.media); + + // For those that don't support matchMedium + if (!styleMedia) { + var style = document.createElement('style'), + script = document.getElementsByTagName('script')[0], + info = null; + + style.type = 'text/css'; + style.id = 'matchmediajs-test'; + + script.parentNode.insertBefore(style, script); + + // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers + info = ('getComputedStyle' in window) && window.getComputedStyle(style, null) || style.currentStyle; + + styleMedia = { + matchMedium: function(media) { + var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }'; + + // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers + if (style.styleSheet) { + style.styleSheet.cssText = text; + } else { + style.textContent = text; + } + + // Test if media query is true or false + return info.width === '1px'; + } + }; + } + + return function(media) { + return { + matches: styleMedia.matchMedium(media || 'all'), + media: media || 'all' + }; + }; + }()); + + /* + * jquery.requestAnimationFrame + * https://github.com/gnarf37/jquery-requestAnimationFrame + * Requires jQuery 1.8+ + * + * Copyright (c) 2012 Corey Frang + * Licensed under the MIT license. + */ + + (function(jQuery) { + + + // requestAnimationFrame polyfill adapted from Erik Möller + // fixes from Paul Irish and Tino Zijdel + // http://paulirish.com/2011/requestanimationframe-for-smart-animating/ + // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating + + var animating, + lastTime = 0, + vendors = ['webkit', 'moz'], + requestAnimationFrame = window.requestAnimationFrame, + cancelAnimationFrame = window.cancelAnimationFrame, + jqueryFxAvailable = 'undefined' !== typeof jQuery.fx; + + for (; lastTime < vendors.length && !requestAnimationFrame; lastTime++) { + requestAnimationFrame = window[ vendors[lastTime] + 'RequestAnimationFrame' ]; + cancelAnimationFrame = cancelAnimationFrame || + window[ vendors[lastTime] + 'CancelAnimationFrame' ] || + window[ vendors[lastTime] + 'CancelRequestAnimationFrame' ]; + } + + function raf() { + if (animating) { + requestAnimationFrame(raf); + + if (jqueryFxAvailable) { + jQuery.fx.tick(); + } + } + } + + if (requestAnimationFrame) { + // use rAF + window.requestAnimationFrame = requestAnimationFrame; + window.cancelAnimationFrame = cancelAnimationFrame; + + if (jqueryFxAvailable) { + jQuery.fx.timer = function (timer) { + if (timer() && jQuery.timers.push(timer) && !animating) { + animating = true; + raf(); + } + }; + + jQuery.fx.stop = function () { + animating = false; + }; + } + } else { + // polyfill + window.requestAnimationFrame = function (callback) { + var currTime = new Date().getTime(), + timeToCall = Math.max(0, 16 - (currTime - lastTime)), + id = window.setTimeout(function () { + callback(currTime + timeToCall); + }, timeToCall); + lastTime = currTime + timeToCall; + return id; + }; + + window.cancelAnimationFrame = function (id) { + clearTimeout(id); + }; + + } + + }( $ )); + + function removeQuotes (string) { + if (typeof string === 'string' || string instanceof String) { + string = string.replace(/^['\\/"]+|(;\s?})+|['\\/"]+$/g, ''); + } + + return string; + } + + window.Foundation = { + name : 'Foundation', + + version : '5.5.2', + + media_queries : { + 'small' : S('.foundation-mq-small').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'small-only' : S('.foundation-mq-small-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'medium' : S('.foundation-mq-medium').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'medium-only' : S('.foundation-mq-medium-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'large' : S('.foundation-mq-large').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'large-only' : S('.foundation-mq-large-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'xlarge' : S('.foundation-mq-xlarge').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'xlarge-only' : S('.foundation-mq-xlarge-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''), + 'xxlarge' : S('.foundation-mq-xxlarge').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, '') + }, + + stylesheet : $('<style></style>').appendTo('head')[0].sheet, + + global : { + namespace : undefined + }, + + init : function (scope, libraries, method, options, response) { + var args = [scope, method, options, response], + responses = []; + + // check RTL + this.rtl = /rtl/i.test(S('html').attr('dir')); + + // set foundation global scope + this.scope = scope || this.scope; + + this.set_namespace(); + + if (libraries && typeof libraries === 'string' && !/reflow/i.test(libraries)) { + if (this.libs.hasOwnProperty(libraries)) { + responses.push(this.init_lib(libraries, args)); + } + } else { + for (var lib in this.libs) { + responses.push(this.init_lib(lib, libraries)); + } + } + + S(window).load(function () { + S(window) + .trigger('resize.fndtn.clearing') + .trigger('resize.fndtn.dropdown') + .trigger('resize.fndtn.equalizer') + .trigger('resize.fndtn.interchange') + .trigger('resize.fndtn.joyride') + .trigger('resize.fndtn.magellan') + .trigger('resize.fndtn.topbar') + .trigger('resize.fndtn.slider'); + }); + + return scope; + }, + + init_lib : function (lib, args) { + if (this.libs.hasOwnProperty(lib)) { + this.patch(this.libs[lib]); + + if (args && args.hasOwnProperty(lib)) { + if (typeof this.libs[lib].settings !== 'undefined') { + $.extend(true, this.libs[lib].settings, args[lib]); + } else if (typeof this.libs[lib].defaults !== 'undefined') { + $.extend(true, this.libs[lib].defaults, args[lib]); + } + return this.libs[lib].init.apply(this.libs[lib], [this.scope, args[lib]]); + } + + args = args instanceof Array ? args : new Array(args); + return this.libs[lib].init.apply(this.libs[lib], args); + } + + return function () {}; + }, + + patch : function (lib) { + lib.scope = this.scope; + lib.namespace = this.global.namespace; + lib.rtl = this.rtl; + lib['data_options'] = this.utils.data_options; + lib['attr_name'] = attr_name; + lib['add_namespace'] = add_namespace; + lib['bindings'] = bindings; + lib['S'] = this.utils.S; + }, + + inherit : function (scope, methods) { + var methods_arr = methods.split(' '), + i = methods_arr.length; + + while (i--) { + if (this.utils.hasOwnProperty(methods_arr[i])) { + scope[methods_arr[i]] = this.utils[methods_arr[i]]; + } + } + }, + + set_namespace : function () { + + // Description: + // Don't bother reading the namespace out of the meta tag + // if the namespace has been set globally in javascript + // + // Example: + // Foundation.global.namespace = 'my-namespace'; + // or make it an empty string: + // Foundation.global.namespace = ''; + // + // + + // If the namespace has not been set (is undefined), try to read it out of the meta element. + // Otherwise use the globally defined namespace, even if it's empty ('') + var namespace = ( this.global.namespace === undefined ) ? $('.foundation-data-attribute-namespace').css('font-family') : this.global.namespace; + + // Finally, if the namsepace is either undefined or false, set it to an empty string. + // Otherwise use the namespace value. + this.global.namespace = ( namespace === undefined || /false/i.test(namespace) ) ? '' : namespace; + }, + + libs : {}, + + // methods that can be inherited in libraries + utils : { + + // Description: + // Fast Selector wrapper returns jQuery object. Only use where getElementById + // is not available. + // + // Arguments: + // Selector (String): CSS selector describing the element(s) to be + // returned as a jQuery object. + // + // Scope (String): CSS selector describing the area to be searched. Default + // is document. + // + // Returns: + // Element (jQuery Object): jQuery object containing elements matching the + // selector within the scope. + S : S, + + // Description: + // Executes a function a max of once every n milliseconds + // + // Arguments: + // Func (Function): Function to be throttled. + // + // Delay (Integer): Function execution threshold in milliseconds. + // + // Returns: + // Lazy_function (Function): Function with throttling applied. + throttle : function (func, delay) { + var timer = null; + + return function () { + var context = this, args = arguments; + + if (timer == null) { + timer = setTimeout(function () { + func.apply(context, args); + timer = null; + }, delay); + } + }; + }, + + // Description: + // Executes a function when it stops being invoked for n seconds + // Modified version of _.debounce() http://underscorejs.org + // + // Arguments: + // Func (Function): Function to be debounced. + // + // Delay (Integer): Function execution threshold in milliseconds. + // + // Immediate (Bool): Whether the function should be called at the beginning + // of the delay instead of the end. Default is false. + // + // Returns: + // Lazy_function (Function): Function with debouncing applied. + debounce : function (func, delay, immediate) { + var timeout, result; + return function () { + var context = this, args = arguments; + var later = function () { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + } + }; + var callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, delay); + if (callNow) { + result = func.apply(context, args); + } + return result; + }; + }, + + // Description: + // Parses data-options attribute + // + // Arguments: + // El (jQuery Object): Element to be parsed. + // + // Returns: + // Options (Javascript Object): Contents of the element's data-options + // attribute. + data_options : function (el, data_attr_name) { + data_attr_name = data_attr_name || 'options'; + var opts = {}, ii, p, opts_arr, + data_options = function (el) { + var namespace = Foundation.global.namespace; + + if (namespace.length > 0) { + return el.data(namespace + '-' + data_attr_name); + } + + return el.data(data_attr_name); + }; + + var cached_options = data_options(el); + + if (typeof cached_options === 'object') { + return cached_options; + } + + opts_arr = (cached_options || ':').split(';'); + ii = opts_arr.length; + + function isNumber (o) { + return !isNaN (o - 0) && o !== null && o !== '' && o !== false && o !== true; + } + + function trim (str) { + if (typeof str === 'string') { + return $.trim(str); + } + return str; + } + + while (ii--) { + p = opts_arr[ii].split(':'); + p = [p[0], p.slice(1).join(':')]; + + if (/true/i.test(p[1])) { + p[1] = true; + } + if (/false/i.test(p[1])) { + p[1] = false; + } + if (isNumber(p[1])) { + if (p[1].indexOf('.') === -1) { + p[1] = parseInt(p[1], 10); + } else { + p[1] = parseFloat(p[1]); + } + } + + if (p.length === 2 && p[0].length > 0) { + opts[trim(p[0])] = trim(p[1]); + } + } + + return opts; + }, + + // Description: + // Adds JS-recognizable media queries + // + // Arguments: + // Media (String): Key string for the media query to be stored as in + // Foundation.media_queries + // + // Class (String): Class name for the generated <meta> tag + register_media : function (media, media_class) { + if (Foundation.media_queries[media] === undefined) { + $('head').append('<meta class="' + media_class + '"/>'); + Foundation.media_queries[media] = removeQuotes($('.' + media_class).css('font-family')); + } + }, + + // Description: + // Add custom CSS within a JS-defined media query + // + // Arguments: + // Rule (String): CSS rule to be appended to the document. + // + // Media (String): Optional media query string for the CSS rule to be + // nested under. + add_custom_rule : function (rule, media) { + if (media === undefined && Foundation.stylesheet) { + Foundation.stylesheet.insertRule(rule, Foundation.stylesheet.cssRules.length); + } else { + var query = Foundation.media_queries[media]; + + if (query !== undefined) { + Foundation.stylesheet.insertRule('@media ' + + Foundation.media_queries[media] + '{ ' + rule + ' }', Foundation.stylesheet.cssRules.length); + } + } + }, + + // Description: + // Performs a callback function when an image is fully loaded + // + // Arguments: + // Image (jQuery Object): Image(s) to check if loaded. + // + // Callback (Function): Function to execute when image is fully loaded. + image_loaded : function (images, callback) { + var self = this, + unloaded = images.length; + + function pictures_has_height(images) { + var pictures_number = images.length; + + for (var i = pictures_number - 1; i >= 0; i--) { + if(images.attr('height') === undefined) { + return false; + }; + }; + + return true; + } + + if (unloaded === 0 || pictures_has_height(images)) { + callback(images); + } + + images.each(function () { + single_image_loaded(self.S(this), function () { + unloaded -= 1; + if (unloaded === 0) { + callback(images); + } + }); + }); + }, + + // Description: + // Returns a random, alphanumeric string + // + // Arguments: + // Length (Integer): Length of string to be generated. Defaults to random + // integer. + // + // Returns: + // Rand (String): Pseudo-random, alphanumeric string. + random_str : function () { + if (!this.fidx) { + this.fidx = 0; + } + this.prefix = this.prefix || [(this.name || 'F'), (+new Date).toString(36)].join('-'); + + return this.prefix + (this.fidx++).toString(36); + }, + + // Description: + // Helper for window.matchMedia + // + // Arguments: + // mq (String): Media query + // + // Returns: + // (Boolean): Whether the media query passes or not + match : function (mq) { + return window.matchMedia(mq).matches; + }, + + // Description: + // Helpers for checking Foundation default media queries with JS + // + // Returns: + // (Boolean): Whether the media query passes or not + + is_small_up : function () { + return this.match(Foundation.media_queries.small); + }, + + is_medium_up : function () { + return this.match(Foundation.media_queries.medium); + }, + + is_large_up : function () { + return this.match(Foundation.media_queries.large); + }, + + is_xlarge_up : function () { + return this.match(Foundation.media_queries.xlarge); + }, + + is_xxlarge_up : function () { + return this.match(Foundation.media_queries.xxlarge); + }, + + is_small_only : function () { + return !this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up(); + }, + + is_medium_only : function () { + return this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up(); + }, + + is_large_only : function () { + return this.is_medium_up() && this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up(); + }, + + is_xlarge_only : function () { + return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && !this.is_xxlarge_up(); + }, + + is_xxlarge_only : function () { + return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && this.is_xxlarge_up(); + } + } + }; + + $.fn.foundation = function () { + var args = Array.prototype.slice.call(arguments, 0); + + return this.each(function () { + Foundation.init.apply(Foundation, [this].concat(args)); + return this; + }); + }; + +}(jQuery, window, window.document)); diff --git a/library/foundation/js/foundation/foundation.magellan.js b/library/foundation/js/foundation/foundation.magellan.js new file mode 100644 index 000000000..614923abb --- /dev/null +++ b/library/foundation/js/foundation/foundation.magellan.js @@ -0,0 +1,215 @@ +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs['magellan-expedition'] = { + name : 'magellan-expedition', + + version : '5.5.2', + + settings : { + active_class : 'active', + threshold : 0, // pixels from the top of the expedition for it to become fixes + destination_threshold : 20, // pixels from the top of destination for it to be considered active + throttle_delay : 30, // calculation throttling to increase framerate + fixed_top : 0, // top distance in pixels assigend to the fixed element on scroll + offset_by_height : true, // whether to offset the destination by the expedition height. Usually you want this to be true, unless your expedition is on the side. + duration : 700, // animation duration time + easing : 'swing' // animation easing + }, + + init : function (scope, method, options) { + Foundation.inherit(this, 'throttle'); + this.bindings(method, options); + }, + + events : function () { + var self = this, + S = self.S, + settings = self.settings; + + // initialize expedition offset + self.set_expedition_position(); + + S(self.scope) + .off('.magellan') + .on('click.fndtn.magellan', '[' + self.add_namespace('data-magellan-arrival') + '] a[href*=#]', function (e) { + var sameHost = ((this.hostname === location.hostname) || !this.hostname), + samePath = self.filterPathname(location.pathname) === self.filterPathname(this.pathname), + testHash = this.hash.replace(/(:|\.|\/)/g, '\\$1'), + anchor = this; + + if (sameHost && samePath && testHash) { + e.preventDefault(); + var expedition = $(this).closest('[' + self.attr_name() + ']'), + settings = expedition.data('magellan-expedition-init'), + hash = this.hash.split('#').join(''), + target = $('a[name="' + hash + '"]'); + + if (target.length === 0) { + target = $('#' + hash); + + } + + // Account for expedition height if fixed position + var scroll_top = target.offset().top - settings.destination_threshold + 1; + if (settings.offset_by_height) { + scroll_top = scroll_top - expedition.outerHeight(); + } + $('html, body').stop().animate({ + 'scrollTop' : scroll_top + }, settings.duration, settings.easing, function () { + if (history.pushState) { + history.pushState(null, null, anchor.pathname + '#' + hash); + } + else { + location.hash = anchor.pathname + '#' + hash; + } + }); + } + }) + .on('scroll.fndtn.magellan', self.throttle(this.check_for_arrivals.bind(this), settings.throttle_delay)); + }, + + check_for_arrivals : function () { + var self = this; + self.update_arrivals(); + self.update_expedition_positions(); + }, + + set_expedition_position : function () { + var self = this; + $('[' + this.attr_name() + '=fixed]', self.scope).each(function (idx, el) { + var expedition = $(this), + settings = expedition.data('magellan-expedition-init'), + styles = expedition.attr('styles'), // save styles + top_offset, fixed_top; + + expedition.attr('style', ''); + top_offset = expedition.offset().top + settings.threshold; + + //set fixed-top by attribute + fixed_top = parseInt(expedition.data('magellan-fixed-top')); + if (!isNaN(fixed_top)) { + self.settings.fixed_top = fixed_top; + } + + expedition.data(self.data_attr('magellan-top-offset'), top_offset); + expedition.attr('style', styles); + }); + }, + + update_expedition_positions : function () { + var self = this, + window_top_offset = $(window).scrollTop(); + + $('[' + this.attr_name() + '=fixed]', self.scope).each(function () { + var expedition = $(this), + settings = expedition.data('magellan-expedition-init'), + styles = expedition.attr('style'), // save styles + top_offset = expedition.data('magellan-top-offset'); + + //scroll to the top distance + if (window_top_offset + self.settings.fixed_top >= top_offset) { + // Placeholder allows height calculations to be consistent even when + // appearing to switch between fixed/non-fixed placement + var placeholder = expedition.prev('[' + self.add_namespace('data-magellan-expedition-clone') + ']'); + if (placeholder.length === 0) { + placeholder = expedition.clone(); + placeholder.removeAttr(self.attr_name()); + placeholder.attr(self.add_namespace('data-magellan-expedition-clone'), ''); + expedition.before(placeholder); + } + expedition.css({position :'fixed', top : settings.fixed_top}).addClass('fixed'); + } else { + expedition.prev('[' + self.add_namespace('data-magellan-expedition-clone') + ']').remove(); + expedition.attr('style', styles).css('position', '').css('top', '').removeClass('fixed'); + } + }); + }, + + update_arrivals : function () { + var self = this, + window_top_offset = $(window).scrollTop(); + + $('[' + this.attr_name() + ']', self.scope).each(function () { + var expedition = $(this), + settings = expedition.data(self.attr_name(true) + '-init'), + offsets = self.offsets(expedition, window_top_offset), + arrivals = expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']'), + active_item = false; + offsets.each(function (idx, item) { + if (item.viewport_offset >= item.top_offset) { + var arrivals = expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']'); + arrivals.not(item.arrival).removeClass(settings.active_class); + item.arrival.addClass(settings.active_class); + active_item = true; + return true; + } + }); + + if (!active_item) { + arrivals.removeClass(settings.active_class); + } + }); + }, + + offsets : function (expedition, window_offset) { + var self = this, + settings = expedition.data(self.attr_name(true) + '-init'), + viewport_offset = window_offset; + + return expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']').map(function (idx, el) { + var name = $(this).data(self.data_attr('magellan-arrival')), + dest = $('[' + self.add_namespace('data-magellan-destination') + '=' + name + ']'); + if (dest.length > 0) { + var top_offset = dest.offset().top - settings.destination_threshold; + if (settings.offset_by_height) { + top_offset = top_offset - expedition.outerHeight(); + } + top_offset = Math.floor(top_offset); + return { + destination : dest, + arrival : $(this), + top_offset : top_offset, + viewport_offset : viewport_offset + } + } + }).sort(function (a, b) { + if (a.top_offset < b.top_offset) { + return -1; + } + if (a.top_offset > b.top_offset) { + return 1; + } + return 0; + }); + }, + + data_attr : function (str) { + if (this.namespace.length > 0) { + return this.namespace + '-' + str; + } + + return str; + }, + + off : function () { + this.S(this.scope).off('.magellan'); + this.S(window).off('.magellan'); + }, + + filterPathname : function (pathname) { + pathname = pathname || ''; + return pathname + .replace(/^\//,'') + .replace(/(?:index|default).[a-zA-Z]{3,4}$/,'') + .replace(/\/$/,''); + }, + + reflow : function () { + var self = this; + // remove placeholder expeditions used for height calculation purposes + $('[' + self.add_namespace('data-magellan-expedition-clone') + ']', self.scope).remove(); + } + }; +}(jQuery, window, window.document)); diff --git a/library/foundation/js/foundation/foundation.offcanvas.js b/library/foundation/js/foundation/foundation.offcanvas.js new file mode 100644 index 000000000..e73faaf68 --- /dev/null +++ b/library/foundation/js/foundation/foundation.offcanvas.js @@ -0,0 +1,152 @@ +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.offcanvas = { + name : 'offcanvas', + + version : '5.5.2', + + settings : { + open_method : 'move', + close_on_click : false + }, + + init : function (scope, method, options) { + this.bindings(method, options); + }, + + events : function () { + var self = this, + S = self.S, + move_class = '', + right_postfix = '', + left_postfix = ''; + + if (this.settings.open_method === 'move') { + move_class = 'move-'; + right_postfix = 'right'; + left_postfix = 'left'; + } else if (this.settings.open_method === 'overlap_single') { + move_class = 'offcanvas-overlap-'; + right_postfix = 'right'; + left_postfix = 'left'; + } else if (this.settings.open_method === 'overlap') { + move_class = 'offcanvas-overlap'; + } + + S(this.scope).off('.offcanvas') + .on('click.fndtn.offcanvas', '.left-off-canvas-toggle', function (e) { + self.click_toggle_class(e, move_class + right_postfix); + if (self.settings.open_method !== 'overlap') { + S('.left-submenu').removeClass(move_class + right_postfix); + } + $('.left-off-canvas-toggle').attr('aria-expanded', 'true'); + }) + .on('click.fndtn.offcanvas', '.left-off-canvas-menu a', function (e) { + var settings = self.get_settings(e); + var parent = S(this).parent(); + + if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) { + self.hide.call(self, move_class + right_postfix, self.get_wrapper(e)); + parent.parent().removeClass(move_class + right_postfix); + } else if (S(this).parent().hasClass('has-submenu')) { + e.preventDefault(); + S(this).siblings('.left-submenu').toggleClass(move_class + right_postfix); + } else if (parent.hasClass('back')) { + e.preventDefault(); + parent.parent().removeClass(move_class + right_postfix); + } + $('.left-off-canvas-toggle').attr('aria-expanded', 'true'); + }) + .on('click.fndtn.offcanvas', '.right-off-canvas-toggle', function (e) { + self.click_toggle_class(e, move_class + left_postfix); + if (self.settings.open_method !== 'overlap') { + S('.right-submenu').removeClass(move_class + left_postfix); + } + $('.right-off-canvas-toggle').attr('aria-expanded', 'true'); + }) + .on('click.fndtn.offcanvas', '.right-off-canvas-menu a', function (e) { + var settings = self.get_settings(e); + var parent = S(this).parent(); + + if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) { + self.hide.call(self, move_class + left_postfix, self.get_wrapper(e)); + parent.parent().removeClass(move_class + left_postfix); + } else if (S(this).parent().hasClass('has-submenu')) { + e.preventDefault(); + S(this).siblings('.right-submenu').toggleClass(move_class + left_postfix); + } else if (parent.hasClass('back')) { + e.preventDefault(); + parent.parent().removeClass(move_class + left_postfix); + } + $('.right-off-canvas-toggle').attr('aria-expanded', 'true'); + }) + .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) { + self.click_remove_class(e, move_class + left_postfix); + S('.right-submenu').removeClass(move_class + left_postfix); + if (right_postfix) { + self.click_remove_class(e, move_class + right_postfix); + S('.left-submenu').removeClass(move_class + left_postfix); + } + $('.right-off-canvas-toggle').attr('aria-expanded', 'true'); + }) + .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) { + self.click_remove_class(e, move_class + left_postfix); + $('.left-off-canvas-toggle').attr('aria-expanded', 'false'); + if (right_postfix) { + self.click_remove_class(e, move_class + right_postfix); + $('.right-off-canvas-toggle').attr('aria-expanded', 'false'); + } + }); + }, + + toggle : function (class_name, $off_canvas) { + $off_canvas = $off_canvas || this.get_wrapper(); + if ($off_canvas.is('.' + class_name)) { + this.hide(class_name, $off_canvas); + } else { + this.show(class_name, $off_canvas); + } + }, + + show : function (class_name, $off_canvas) { + $off_canvas = $off_canvas || this.get_wrapper(); + $off_canvas.trigger('open.fndtn.offcanvas'); + $off_canvas.addClass(class_name); + }, + + hide : function (class_name, $off_canvas) { + $off_canvas = $off_canvas || this.get_wrapper(); + $off_canvas.trigger('close.fndtn.offcanvas'); + $off_canvas.removeClass(class_name); + }, + + click_toggle_class : function (e, class_name) { + e.preventDefault(); + var $off_canvas = this.get_wrapper(e); + this.toggle(class_name, $off_canvas); + }, + + click_remove_class : function (e, class_name) { + e.preventDefault(); + var $off_canvas = this.get_wrapper(e); + this.hide(class_name, $off_canvas); + }, + + get_settings : function (e) { + var offcanvas = this.S(e.target).closest('[' + this.attr_name() + ']'); + return offcanvas.data(this.attr_name(true) + '-init') || this.settings; + }, + + get_wrapper : function (e) { + var $off_canvas = this.S(e ? e.target : this.scope).closest('.off-canvas-wrap'); + + if ($off_canvas.length === 0) { + $off_canvas = this.S('.off-canvas-wrap'); + } + return $off_canvas; + }, + + reflow : function () {} + }; +}(jQuery, window, window.document)); diff --git a/library/foundation/js/foundation/foundation.orbit.js b/library/foundation/js/foundation/foundation.orbit.js new file mode 100644 index 000000000..51e2a0453 --- /dev/null +++ b/library/foundation/js/foundation/foundation.orbit.js @@ -0,0 +1,476 @@ +;(function ($, window, document, undefined) { + 'use strict'; + + var noop = function () {}; + + var Orbit = function (el, settings) { + // Don't reinitialize plugin + if (el.hasClass(settings.slides_container_class)) { + return this; + } + + var self = this, + container, + slides_container = el, + number_container, + bullets_container, + timer_container, + idx = 0, + animate, + timer, + locked = false, + adjust_height_after = false; + + self.slides = function () { + return slides_container.children(settings.slide_selector); + }; + + self.slides().first().addClass(settings.active_slide_class); + + self.update_slide_number = function (index) { + if (settings.slide_number) { + number_container.find('span:first').text(parseInt(index) + 1); + number_container.find('span:last').text(self.slides().length); + } + if (settings.bullets) { + bullets_container.children().removeClass(settings.bullets_active_class); + $(bullets_container.children().get(index)).addClass(settings.bullets_active_class); + } + }; + + self.update_active_link = function (index) { + var link = $('[data-orbit-link="' + self.slides().eq(index).attr('data-orbit-slide') + '"]'); + link.siblings().removeClass(settings.bullets_active_class); + link.addClass(settings.bullets_active_class); + }; + + self.build_markup = function () { + slides_container.wrap('<div class="' + settings.container_class + '"></div>'); + container = slides_container.parent(); + slides_container.addClass(settings.slides_container_class); + + if (settings.stack_on_small) { + container.addClass(settings.stack_on_small_class); + } + + if (settings.navigation_arrows) { + container.append($('<a href="#"><span></span></a>').addClass(settings.prev_class)); + container.append($('<a href="#"><span></span></a>').addClass(settings.next_class)); + } + + if (settings.timer) { + timer_container = $('<div>').addClass(settings.timer_container_class); + timer_container.append('<span>'); + timer_container.append($('<div>').addClass(settings.timer_progress_class)); + timer_container.addClass(settings.timer_paused_class); + container.append(timer_container); + } + + if (settings.slide_number) { + number_container = $('<div>').addClass(settings.slide_number_class); + number_container.append('<span></span> ' + settings.slide_number_text + ' <span></span>'); + container.append(number_container); + } + + if (settings.bullets) { + bullets_container = $('<ol>').addClass(settings.bullets_container_class); + container.append(bullets_container); + bullets_container.wrap('<div class="orbit-bullets-container"></div>'); + self.slides().each(function (idx, el) { + var bullet = $('<li>').attr('data-orbit-slide', idx).on('click', self.link_bullet);; + bullets_container.append(bullet); + }); + } + + }; + + self._goto = function (next_idx, start_timer) { + // if (locked) {return false;} + if (next_idx === idx) {return false;} + if (typeof timer === 'object') {timer.restart();} + var slides = self.slides(); + + var dir = 'next'; + locked = true; + if (next_idx < idx) {dir = 'prev';} + if (next_idx >= slides.length) { + if (!settings.circular) { + return false; + } + next_idx = 0; + } else if (next_idx < 0) { + if (!settings.circular) { + return false; + } + next_idx = slides.length - 1; + } + + var current = $(slides.get(idx)); + var next = $(slides.get(next_idx)); + + current.css('zIndex', 2); + current.removeClass(settings.active_slide_class); + next.css('zIndex', 4).addClass(settings.active_slide_class); + + slides_container.trigger('before-slide-change.fndtn.orbit'); + settings.before_slide_change(); + self.update_active_link(next_idx); + + var callback = function () { + var unlock = function () { + idx = next_idx; + locked = false; + if (start_timer === true) {timer = self.create_timer(); timer.start();} + self.update_slide_number(idx); + slides_container.trigger('after-slide-change.fndtn.orbit', [{slide_number : idx, total_slides : slides.length}]); + settings.after_slide_change(idx, slides.length); + }; + if (slides_container.outerHeight() != next.outerHeight() && settings.variable_height) { + slides_container.animate({'height': next.outerHeight()}, 250, 'linear', unlock); + } else { + unlock(); + } + }; + + if (slides.length === 1) {callback(); return false;} + + var start_animation = function () { + if (dir === 'next') {animate.next(current, next, callback);} + if (dir === 'prev') {animate.prev(current, next, callback);} + }; + + if (next.outerHeight() > slides_container.outerHeight() && settings.variable_height) { + slides_container.animate({'height': next.outerHeight()}, 250, 'linear', start_animation); + } else { + start_animation(); + } + }; + + self.next = function (e) { + e.stopImmediatePropagation(); + e.preventDefault(); + self._goto(idx + 1); + }; + + self.prev = function (e) { + e.stopImmediatePropagation(); + e.preventDefault(); + self._goto(idx - 1); + }; + + self.link_custom = function (e) { + e.preventDefault(); + var link = $(this).attr('data-orbit-link'); + if ((typeof link === 'string') && (link = $.trim(link)) != '') { + var slide = container.find('[data-orbit-slide=' + link + ']'); + if (slide.index() != -1) {self._goto(slide.index());} + } + }; + + self.link_bullet = function (e) { + var index = $(this).attr('data-orbit-slide'); + if ((typeof index === 'string') && (index = $.trim(index)) != '') { + if (isNaN(parseInt(index))) { + var slide = container.find('[data-orbit-slide=' + index + ']'); + if (slide.index() != -1) {self._goto(slide.index() + 1);} + } else { + self._goto(parseInt(index)); + } + } + + } + + self.timer_callback = function () { + self._goto(idx + 1, true); + } + + self.compute_dimensions = function () { + var current = $(self.slides().get(idx)); + var h = current.outerHeight(); + if (!settings.variable_height) { + self.slides().each(function(){ + if ($(this).outerHeight() > h) { h = $(this).outerHeight(); } + }); + } + slides_container.height(h); + }; + + self.create_timer = function () { + var t = new Timer( + container.find('.' + settings.timer_container_class), + settings, + self.timer_callback + ); + return t; + }; + + self.stop_timer = function () { + if (typeof timer === 'object') { + timer.stop(); + } + }; + + self.toggle_timer = function () { + var t = container.find('.' + settings.timer_container_class); + if (t.hasClass(settings.timer_paused_class)) { + if (typeof timer === 'undefined') {timer = self.create_timer();} + timer.start(); + } else { + if (typeof timer === 'object') {timer.stop();} + } + }; + + self.init = function () { + self.build_markup(); + if (settings.timer) { + timer = self.create_timer(); + Foundation.utils.image_loaded(this.slides().children('img'), timer.start); + } + animate = new FadeAnimation(settings, slides_container); + if (settings.animation === 'slide') { + animate = new SlideAnimation(settings, slides_container); + } + + container.on('click', '.' + settings.next_class, self.next); + container.on('click', '.' + settings.prev_class, self.prev); + + if (settings.next_on_click) { + container.on('click', '.' + settings.slides_container_class + ' [data-orbit-slide]', self.link_bullet); + } + + container.on('click', self.toggle_timer); + if (settings.swipe) { + container.on('touchstart.fndtn.orbit', function (e) { + if (!e.touches) {e = e.originalEvent;} + var data = { + start_page_x : e.touches[0].pageX, + start_page_y : e.touches[0].pageY, + start_time : (new Date()).getTime(), + delta_x : 0, + is_scrolling : undefined + }; + container.data('swipe-transition', data); + e.stopPropagation(); + }) + .on('touchmove.fndtn.orbit', function (e) { + if (!e.touches) { + e = e.originalEvent; + } + // Ignore pinch/zoom events + if (e.touches.length > 1 || e.scale && e.scale !== 1) { + return; + } + + var data = container.data('swipe-transition'); + if (typeof data === 'undefined') {data = {};} + + data.delta_x = e.touches[0].pageX - data.start_page_x; + + if ( typeof data.is_scrolling === 'undefined') { + data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) ); + } + + if (!data.is_scrolling && !data.active) { + e.preventDefault(); + var direction = (data.delta_x < 0) ? (idx + 1) : (idx - 1); + data.active = true; + self._goto(direction); + } + }) + .on('touchend.fndtn.orbit', function (e) { + container.data('swipe-transition', {}); + e.stopPropagation(); + }) + } + container.on('mouseenter.fndtn.orbit', function (e) { + if (settings.timer && settings.pause_on_hover) { + self.stop_timer(); + } + }) + .on('mouseleave.fndtn.orbit', function (e) { + if (settings.timer && settings.resume_on_mouseout) { + timer.start(); + } + }); + + $(document).on('click', '[data-orbit-link]', self.link_custom); + $(window).on('load resize', self.compute_dimensions); + Foundation.utils.image_loaded(this.slides().children('img'), self.compute_dimensions); + Foundation.utils.image_loaded(this.slides().children('img'), function () { + container.prev('.' + settings.preloader_class).css('display', 'none'); + self.update_slide_number(0); + self.update_active_link(0); + slides_container.trigger('ready.fndtn.orbit'); + }); + }; + + self.init(); + }; + + var Timer = function (el, settings, callback) { + var self = this, + duration = settings.timer_speed, + progress = el.find('.' + settings.timer_progress_class), + start, + timeout, + left = -1; + + this.update_progress = function (w) { + var new_progress = progress.clone(); + new_progress.attr('style', ''); + new_progress.css('width', w + '%'); + progress.replaceWith(new_progress); + progress = new_progress; + }; + + this.restart = function () { + clearTimeout(timeout); + el.addClass(settings.timer_paused_class); + left = -1; + self.update_progress(0); + }; + + this.start = function () { + if (!el.hasClass(settings.timer_paused_class)) {return true;} + left = (left === -1) ? duration : left; + el.removeClass(settings.timer_paused_class); + start = new Date().getTime(); + progress.animate({'width' : '100%'}, left, 'linear'); + timeout = setTimeout(function () { + self.restart(); + callback(); + }, left); + el.trigger('timer-started.fndtn.orbit') + }; + + this.stop = function () { + if (el.hasClass(settings.timer_paused_class)) {return true;} + clearTimeout(timeout); + el.addClass(settings.timer_paused_class); + var end = new Date().getTime(); + left = left - (end - start); + var w = 100 - ((left / duration) * 100); + self.update_progress(w); + el.trigger('timer-stopped.fndtn.orbit'); + }; + }; + + var SlideAnimation = function (settings, container) { + var duration = settings.animation_speed; + var is_rtl = ($('html[dir=rtl]').length === 1); + var margin = is_rtl ? 'marginRight' : 'marginLeft'; + var animMargin = {}; + animMargin[margin] = '0%'; + + this.next = function (current, next, callback) { + current.animate({marginLeft : '-100%'}, duration); + next.animate(animMargin, duration, function () { + current.css(margin, '100%'); + callback(); + }); + }; + + this.prev = function (current, prev, callback) { + current.animate({marginLeft : '100%'}, duration); + prev.css(margin, '-100%'); + prev.animate(animMargin, duration, function () { + current.css(margin, '100%'); + callback(); + }); + }; + }; + + var FadeAnimation = function (settings, container) { + var duration = settings.animation_speed; + var is_rtl = ($('html[dir=rtl]').length === 1); + var margin = is_rtl ? 'marginRight' : 'marginLeft'; + + this.next = function (current, next, callback) { + next.css({'margin' : '0%', 'opacity' : '0.01'}); + next.animate({'opacity' :'1'}, duration, 'linear', function () { + current.css('margin', '100%'); + callback(); + }); + }; + + this.prev = function (current, prev, callback) { + prev.css({'margin' : '0%', 'opacity' : '0.01'}); + prev.animate({'opacity' : '1'}, duration, 'linear', function () { + current.css('margin', '100%'); + callback(); + }); + }; + }; + + Foundation.libs = Foundation.libs || {}; + + Foundation.libs.orbit = { + name : 'orbit', + + version : '5.5.2', + + settings : { + animation : 'slide', + timer_speed : 10000, + pause_on_hover : true, + resume_on_mouseout : false, + next_on_click : true, + animation_speed : 500, + stack_on_small : false, + navigation_arrows : true, + slide_number : true, + slide_number_text : 'of', + 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', + preloader_class : 'preloader', + slide_selector : '*', + 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', + bullets : true, + circular : true, + timer : true, + variable_height : false, + swipe : true, + before_slide_change : noop, + after_slide_change : noop + }, + + init : function (scope, method, options) { + var self = this; + this.bindings(method, options); + }, + + events : function (instance) { + var orbit_instance = new Orbit(this.S(instance), this.S(instance).data('orbit-init')); + this.S(instance).data(this.name + '-instance', orbit_instance); + }, + + reflow : function () { + var self = this; + + if (self.S(self.scope).is('[data-orbit]')) { + var $el = self.S(self.scope); + var instance = $el.data(self.name + '-instance'); + instance.compute_dimensions(); + } else { + self.S('[data-orbit]', self.scope).each(function (idx, el) { + var $el = self.S(el); + var opts = self.data_options($el); + var instance = $el.data(self.name + '-instance'); + instance.compute_dimensions(); + }); + } + } + }; + +}(jQuery, window, window.document)); diff --git a/library/foundation/js/foundation/foundation.reveal.js b/library/foundation/js/foundation/foundation.reveal.js new file mode 100644 index 000000000..f049f8049 --- /dev/null +++ b/library/foundation/js/foundation/foundation.reveal.js @@ -0,0 +1,498 @@ +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.reveal = { + name : 'reveal', + + version : '5.5.2', + + locked : false, + + settings : { + animation : 'fadeAndPop', + animation_speed : 250, + close_on_background_click : true, + close_on_esc : true, + dismiss_modal_class : 'close-reveal-modal', + multiple_opened : false, + bg_class : 'reveal-modal-bg', + root_element : 'body', + open : function(){}, + opened : function(){}, + close : function(){}, + closed : function(){}, + on_ajax_error: $.noop, + bg : $('.reveal-modal-bg'), + css : { + open : { + 'opacity' : 0, + 'visibility' : 'visible', + 'display' : 'block' + }, + close : { + 'opacity' : 1, + 'visibility' : 'hidden', + 'display' : 'none' + } + } + }, + + init : function (scope, method, options) { + $.extend(true, this.settings, method, options); + this.bindings(method, options); + }, + + events : function (scope) { + var self = this, + S = self.S; + + S(this.scope) + .off('.reveal') + .on('click.fndtn.reveal', '[' + this.add_namespace('data-reveal-id') + ']:not([disabled])', function (e) { + e.preventDefault(); + + if (!self.locked) { + var element = S(this), + ajax = element.data(self.data_attr('reveal-ajax')), + replaceContentSel = element.data(self.data_attr('reveal-replace-content')); + + self.locked = true; + + if (typeof ajax === 'undefined') { + self.open.call(self, element); + } else { + var url = ajax === true ? element.attr('href') : ajax; + self.open.call(self, element, {url : url}, { replaceContentSel : replaceContentSel }); + } + } + }); + + S(document) + .on('click.fndtn.reveal', this.close_targets(), function (e) { + e.preventDefault(); + if (!self.locked) { + var settings = S('[' + self.attr_name() + '].open').data(self.attr_name(true) + '-init') || self.settings, + bg_clicked = S(e.target)[0] === S('.' + settings.bg_class)[0]; + + if (bg_clicked) { + if (settings.close_on_background_click) { + e.stopPropagation(); + } else { + return; + } + } + + self.locked = true; + self.close.call(self, bg_clicked ? S('[' + self.attr_name() + '].open:not(.toback)') : S(this).closest('[' + self.attr_name() + ']')); + } + }); + + if (S('[' + self.attr_name() + ']', this.scope).length > 0) { + S(this.scope) + // .off('.reveal') + .on('open.fndtn.reveal', this.settings.open) + .on('opened.fndtn.reveal', this.settings.opened) + .on('opened.fndtn.reveal', this.open_video) + .on('close.fndtn.reveal', this.settings.close) + .on('closed.fndtn.reveal', this.settings.closed) + .on('closed.fndtn.reveal', this.close_video); + } else { + S(this.scope) + // .off('.reveal') + .on('open.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.open) + .on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.opened) + .on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.open_video) + .on('close.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.close) + .on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.closed) + .on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.close_video); + } + + return true; + }, + + // PATCH #3: turning on key up capture only when a reveal window is open + key_up_on : function (scope) { + var self = this; + + // PATCH #1: fixing multiple keyup event trigger from single key press + self.S('body').off('keyup.fndtn.reveal').on('keyup.fndtn.reveal', function ( event ) { + var open_modal = self.S('[' + self.attr_name() + '].open'), + settings = open_modal.data(self.attr_name(true) + '-init') || self.settings ; + // PATCH #2: making sure that the close event can be called only while unlocked, + // so that multiple keyup.fndtn.reveal events don't prevent clean closing of the reveal window. + if ( settings && event.which === 27 && settings.close_on_esc && !self.locked) { // 27 is the keycode for the Escape key + self.close.call(self, open_modal); + } + }); + + return true; + }, + + // PATCH #3: turning on key up capture only when a reveal window is open + key_up_off : function (scope) { + this.S('body').off('keyup.fndtn.reveal'); + return true; + }, + + open : function (target, ajax_settings) { + var self = this, + modal; + + if (target) { + if (typeof target.selector !== 'undefined') { + // Find the named node; only use the first one found, since the rest of the code assumes there's only one node + modal = self.S('#' + target.data(self.data_attr('reveal-id'))).first(); + } else { + modal = self.S(this.scope); + + ajax_settings = target; + } + } else { + modal = self.S(this.scope); + } + + var settings = modal.data(self.attr_name(true) + '-init'); + settings = settings || this.settings; + + + if (modal.hasClass('open') && target.attr('data-reveal-id') == modal.attr('id')) { + return self.close(modal); + } + + if (!modal.hasClass('open')) { + var open_modal = self.S('[' + self.attr_name() + '].open'); + + if (typeof modal.data('css-top') === 'undefined') { + modal.data('css-top', parseInt(modal.css('top'), 10)) + .data('offset', this.cache_offset(modal)); + } + + modal.attr('tabindex','0').attr('aria-hidden','false'); + + this.key_up_on(modal); // PATCH #3: turning on key up capture only when a reveal window is open + + // Prevent namespace event from triggering twice + modal.on('open.fndtn.reveal', function(e) { + if (e.namespace !== 'fndtn.reveal') return; + }); + + modal.on('open.fndtn.reveal').trigger('open.fndtn.reveal'); + + if (open_modal.length < 1) { + this.toggle_bg(modal, true); + } + + if (typeof ajax_settings === 'string') { + ajax_settings = { + url : ajax_settings + }; + } + + if (typeof ajax_settings === 'undefined' || !ajax_settings.url) { + if (open_modal.length > 0) { + if (settings.multiple_opened) { + self.to_back(open_modal); + } else { + self.hide(open_modal, settings.css.close); + } + } + + this.show(modal, settings.css.open); + } else { + var old_success = typeof ajax_settings.success !== 'undefined' ? ajax_settings.success : null; + $.extend(ajax_settings, { + success : function (data, textStatus, jqXHR) { + if ( $.isFunction(old_success) ) { + var result = old_success(data, textStatus, jqXHR); + if (typeof result == 'string') { + data = result; + } + } + + if (typeof options !== 'undefined' && typeof options.replaceContentSel !== 'undefined') { + modal.find(options.replaceContentSel).html(data); + } else { + modal.html(data); + } + + self.S(modal).foundation('section', 'reflow'); + self.S(modal).children().foundation(); + + if (open_modal.length > 0) { + if (settings.multiple_opened) { + self.to_back(open_modal); + } else { + self.hide(open_modal, settings.css.close); + } + } + self.show(modal, settings.css.open); + } + }); + + // check for if user initalized with error callback + if (settings.on_ajax_error !== $.noop) { + $.extend(ajax_settings, { + error : settings.on_ajax_error + }); + } + + $.ajax(ajax_settings); + } + } + self.S(window).trigger('resize'); + }, + + close : function (modal) { + var modal = modal && modal.length ? modal : this.S(this.scope), + open_modals = this.S('[' + this.attr_name() + '].open'), + settings = modal.data(this.attr_name(true) + '-init') || this.settings, + self = this; + + if (open_modals.length > 0) { + + modal.removeAttr('tabindex','0').attr('aria-hidden','true'); + + this.locked = true; + this.key_up_off(modal); // PATCH #3: turning on key up capture only when a reveal window is open + + modal.trigger('close.fndtn.reveal'); + + if ((settings.multiple_opened && open_modals.length === 1) || !settings.multiple_opened || modal.length > 1) { + self.toggle_bg(modal, false); + self.to_front(modal); + } + + if (settings.multiple_opened) { + self.hide(modal, settings.css.close, settings); + self.to_front($($.makeArray(open_modals).reverse()[1])); + } else { + self.hide(open_modals, settings.css.close, settings); + } + } + }, + + close_targets : function () { + var base = '.' + this.settings.dismiss_modal_class; + + if (this.settings.close_on_background_click) { + return base + ', .' + this.settings.bg_class; + } + + return base; + }, + + toggle_bg : function (modal, state) { + if (this.S('.' + this.settings.bg_class).length === 0) { + this.settings.bg = $('<div />', {'class': this.settings.bg_class}) + .appendTo('body').hide(); + } + + var visible = this.settings.bg.filter(':visible').length > 0; + if ( state != visible ) { + if ( state == undefined ? visible : !state ) { + this.hide(this.settings.bg); + } else { + this.show(this.settings.bg); + } + } + }, + + show : function (el, css) { + // is modal + if (css) { + var settings = el.data(this.attr_name(true) + '-init') || this.settings, + root_element = settings.root_element, + context = this; + + if (el.parent(root_element).length === 0) { + var placeholder = el.wrap('<div style="display: none;" />').parent(); + + el.on('closed.fndtn.reveal.wrapped', function () { + el.detach().appendTo(placeholder); + el.unwrap().unbind('closed.fndtn.reveal.wrapped'); + }); + + el.detach().appendTo(root_element); + } + + var animData = getAnimationData(settings.animation); + if (!animData.animate) { + this.locked = false; + } + if (animData.pop) { + css.top = $(window).scrollTop() - el.data('offset') + 'px'; + var end_css = { + top: $(window).scrollTop() + el.data('css-top') + 'px', + opacity: 1 + }; + + return setTimeout(function () { + return el + .css(css) + .animate(end_css, settings.animation_speed, 'linear', function () { + context.locked = false; + el.trigger('opened.fndtn.reveal'); + }) + .addClass('open'); + }, settings.animation_speed / 2); + } + + if (animData.fade) { + css.top = $(window).scrollTop() + el.data('css-top') + 'px'; + var end_css = {opacity: 1}; + + return setTimeout(function () { + return el + .css(css) + .animate(end_css, settings.animation_speed, 'linear', function () { + context.locked = false; + el.trigger('opened.fndtn.reveal'); + }) + .addClass('open'); + }, settings.animation_speed / 2); + } + + return el.css(css).show().css({opacity : 1}).addClass('open').trigger('opened.fndtn.reveal'); + } + + var settings = this.settings; + + // should we animate the background? + if (getAnimationData(settings.animation).fade) { + return el.fadeIn(settings.animation_speed / 2); + } + + this.locked = false; + + return el.show(); + }, + + to_back : function(el) { + el.addClass('toback'); + }, + + to_front : function(el) { + el.removeClass('toback'); + }, + + hide : function (el, css) { + // is modal + if (css) { + var settings = el.data(this.attr_name(true) + '-init'), + context = this; + settings = settings || this.settings; + + var animData = getAnimationData(settings.animation); + if (!animData.animate) { + this.locked = false; + } + if (animData.pop) { + var end_css = { + top: - $(window).scrollTop() - el.data('offset') + 'px', + opacity: 0 + }; + + return setTimeout(function () { + return el + .animate(end_css, settings.animation_speed, 'linear', function () { + context.locked = false; + el.css(css).trigger('closed.fndtn.reveal'); + }) + .removeClass('open'); + }, settings.animation_speed / 2); + } + + if (animData.fade) { + var end_css = {opacity : 0}; + + return setTimeout(function () { + return el + .animate(end_css, settings.animation_speed, 'linear', function () { + context.locked = false; + el.css(css).trigger('closed.fndtn.reveal'); + }) + .removeClass('open'); + }, settings.animation_speed / 2); + } + + return el.hide().css(css).removeClass('open').trigger('closed.fndtn.reveal'); + } + + var settings = this.settings; + + // should we animate the background? + if (getAnimationData(settings.animation).fade) { + return el.fadeOut(settings.animation_speed / 2); + } + + return el.hide(); + }, + + close_video : function (e) { + var video = $('.flex-video', e.target), + iframe = $('iframe', video); + + if (iframe.length > 0) { + iframe.attr('data-src', iframe[0].src); + iframe.attr('src', iframe.attr('src')); + video.hide(); + } + }, + + open_video : function (e) { + var video = $('.flex-video', e.target), + iframe = video.find('iframe'); + + if (iframe.length > 0) { + var data_src = iframe.attr('data-src'); + if (typeof data_src === 'string') { + iframe[0].src = iframe.attr('data-src'); + } else { + var src = iframe[0].src; + iframe[0].src = undefined; + iframe[0].src = src; + } + video.show(); + } + }, + + data_attr : function (str) { + if (this.namespace.length > 0) { + return this.namespace + '-' + str; + } + + return str; + }, + + cache_offset : function (modal) { + var offset = modal.show().height() + parseInt(modal.css('top'), 10) + modal.scrollY; + + modal.hide(); + + return offset; + }, + + off : function () { + $(this.scope).off('.fndtn.reveal'); + }, + + reflow : function () {} + }; + + /* + * getAnimationData('popAndFade') // {animate: true, pop: true, fade: true} + * getAnimationData('fade') // {animate: true, pop: false, fade: true} + * getAnimationData('pop') // {animate: true, pop: true, fade: false} + * getAnimationData('foo') // {animate: false, pop: false, fade: false} + * getAnimationData(null) // {animate: false, pop: false, fade: false} + */ + function getAnimationData(str) { + var fade = /fade/i.test(str); + var pop = /pop/i.test(str); + return { + animate : fade || pop, + pop : pop, + fade : fade + }; + } +}(jQuery, window, window.document)); diff --git a/library/foundation/js/foundation/foundation.slider.js b/library/foundation/js/foundation/foundation.slider.js new file mode 100644 index 000000000..5c8a40f9d --- /dev/null +++ b/library/foundation/js/foundation/foundation.slider.js @@ -0,0 +1,281 @@ +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.slider = { + name : 'slider', + + version : '5.5.2', + + settings : { + start : 0, + end : 100, + step : 1, + precision : null, + initial : null, + display_selector : '', + vertical : false, + trigger_input_change : false, + on_change : function () {} + }, + + cache : {}, + + init : function (scope, method, options) { + Foundation.inherit(this, 'throttle'); + this.bindings(method, options); + this.reflow(); + }, + + events : function () { + var self = this; + + $(this.scope) + .off('.slider') + .on('mousedown.fndtn.slider touchstart.fndtn.slider pointerdown.fndtn.slider', + '[' + self.attr_name() + ']:not(.disabled, [disabled]) .range-slider-handle', function (e) { + if (!self.cache.active) { + e.preventDefault(); + self.set_active_slider($(e.target)); + } + }) + .on('mousemove.fndtn.slider touchmove.fndtn.slider pointermove.fndtn.slider', function (e) { + if (!!self.cache.active) { + e.preventDefault(); + if ($.data(self.cache.active[0], 'settings').vertical) { + var scroll_offset = 0; + if (!e.pageY) { + scroll_offset = window.scrollY; + } + self.calculate_position(self.cache.active, self.get_cursor_position(e, 'y') + scroll_offset); + } else { + self.calculate_position(self.cache.active, self.get_cursor_position(e, 'x')); + } + } + }) + .on('mouseup.fndtn.slider touchend.fndtn.slider pointerup.fndtn.slider', function (e) { + self.remove_active_slider(); + }) + .on('change.fndtn.slider', function (e) { + self.settings.on_change(); + }); + + self.S(window) + .on('resize.fndtn.slider', self.throttle(function (e) { + self.reflow(); + }, 300)); + + // update slider value as users change input value + this.S('[' + this.attr_name() + ']').each(function () { + var slider = $(this), + handle = slider.children('.range-slider-handle')[0], + settings = self.initialize_settings(handle); + + if (settings.display_selector != '') { + $(settings.display_selector).each(function(){ + if (this.hasOwnProperty('value')) { + $(this).change(function(){ + // is there a better way to do this? + slider.foundation("slider", "set_value", $(this).val()); + }); + } + }); + } + }); + }, + + get_cursor_position : function (e, xy) { + var pageXY = 'page' + xy.toUpperCase(), + clientXY = 'client' + xy.toUpperCase(), + position; + + if (typeof e[pageXY] !== 'undefined') { + position = e[pageXY]; + } else if (typeof e.originalEvent[clientXY] !== 'undefined') { + position = e.originalEvent[clientXY]; + } else if (e.originalEvent.touches && e.originalEvent.touches[0] && typeof e.originalEvent.touches[0][clientXY] !== 'undefined') { + position = e.originalEvent.touches[0][clientXY]; + } else if (e.currentPoint && typeof e.currentPoint[xy] !== 'undefined') { + position = e.currentPoint[xy]; + } + + return position; + }, + + set_active_slider : function ($handle) { + this.cache.active = $handle; + }, + + remove_active_slider : function () { + this.cache.active = null; + }, + + calculate_position : function ($handle, cursor_x) { + var self = this, + settings = $.data($handle[0], 'settings'), + handle_l = $.data($handle[0], 'handle_l'), + handle_o = $.data($handle[0], 'handle_o'), + bar_l = $.data($handle[0], 'bar_l'), + bar_o = $.data($handle[0], 'bar_o'); + + requestAnimationFrame(function () { + var pct; + + if (Foundation.rtl && !settings.vertical) { + pct = self.limit_to(((bar_o + bar_l - cursor_x) / bar_l), 0, 1); + } else { + pct = self.limit_to(((cursor_x - bar_o) / bar_l), 0, 1); + } + + pct = settings.vertical ? 1 - pct : pct; + + var norm = self.normalized_value(pct, settings.start, settings.end, settings.step, settings.precision); + + self.set_ui($handle, norm); + }); + }, + + set_ui : function ($handle, value) { + var settings = $.data($handle[0], 'settings'), + handle_l = $.data($handle[0], 'handle_l'), + bar_l = $.data($handle[0], 'bar_l'), + norm_pct = this.normalized_percentage(value, settings.start, settings.end), + handle_offset = norm_pct * (bar_l - handle_l) - 1, + progress_bar_length = norm_pct * 100, + $handle_parent = $handle.parent(), + $hidden_inputs = $handle.parent().children('input[type=hidden]'); + + if (Foundation.rtl && !settings.vertical) { + handle_offset = -handle_offset; + } + + handle_offset = settings.vertical ? -handle_offset + bar_l - handle_l + 1 : handle_offset; + this.set_translate($handle, handle_offset, settings.vertical); + + if (settings.vertical) { + $handle.siblings('.range-slider-active-segment').css('height', progress_bar_length + '%'); + } else { + $handle.siblings('.range-slider-active-segment').css('width', progress_bar_length + '%'); + } + + $handle_parent.attr(this.attr_name(), value).trigger('change.fndtn.slider'); + + $hidden_inputs.val(value); + if (settings.trigger_input_change) { + $hidden_inputs.trigger('change.fndtn.slider'); + } + + if (!$handle[0].hasAttribute('aria-valuemin')) { + $handle.attr({ + 'aria-valuemin' : settings.start, + 'aria-valuemax' : settings.end + }); + } + $handle.attr('aria-valuenow', value); + + if (settings.display_selector != '') { + $(settings.display_selector).each(function () { + if (this.hasAttribute('value')) { + $(this).val(value); + } else { + $(this).text(value); + } + }); + } + + }, + + normalized_percentage : function (val, start, end) { + return Math.min(1, (val - start) / (end - start)); + }, + + normalized_value : function (val, start, end, step, precision) { + var range = end - start, + point = val * range, + mod = (point - (point % step)) / step, + rem = point % step, + round = ( rem >= step * 0.5 ? step : 0); + return ((mod * step + round) + start).toFixed(precision); + }, + + set_translate : function (ele, offset, vertical) { + if (vertical) { + $(ele) + .css('-webkit-transform', 'translateY(' + offset + 'px)') + .css('-moz-transform', 'translateY(' + offset + 'px)') + .css('-ms-transform', 'translateY(' + offset + 'px)') + .css('-o-transform', 'translateY(' + offset + 'px)') + .css('transform', 'translateY(' + offset + 'px)'); + } else { + $(ele) + .css('-webkit-transform', 'translateX(' + offset + 'px)') + .css('-moz-transform', 'translateX(' + offset + 'px)') + .css('-ms-transform', 'translateX(' + offset + 'px)') + .css('-o-transform', 'translateX(' + offset + 'px)') + .css('transform', 'translateX(' + offset + 'px)'); + } + }, + + limit_to : function (val, min, max) { + return Math.min(Math.max(val, min), max); + }, + + initialize_settings : function (handle) { + var settings = $.extend({}, this.settings, this.data_options($(handle).parent())), + decimal_places_match_result; + + if (settings.precision === null) { + decimal_places_match_result = ('' + settings.step).match(/\.([\d]*)/); + settings.precision = decimal_places_match_result && decimal_places_match_result[1] ? decimal_places_match_result[1].length : 0; + } + + if (settings.vertical) { + $.data(handle, 'bar_o', $(handle).parent().offset().top); + $.data(handle, 'bar_l', $(handle).parent().outerHeight()); + $.data(handle, 'handle_o', $(handle).offset().top); + $.data(handle, 'handle_l', $(handle).outerHeight()); + } else { + $.data(handle, 'bar_o', $(handle).parent().offset().left); + $.data(handle, 'bar_l', $(handle).parent().outerWidth()); + $.data(handle, 'handle_o', $(handle).offset().left); + $.data(handle, 'handle_l', $(handle).outerWidth()); + } + + $.data(handle, 'bar', $(handle).parent()); + return $.data(handle, 'settings', settings); + }, + + set_initial_position : function ($ele) { + var settings = $.data($ele.children('.range-slider-handle')[0], 'settings'), + initial = ((typeof settings.initial == 'number' && !isNaN(settings.initial)) ? settings.initial : Math.floor((settings.end - settings.start) * 0.5 / settings.step) * settings.step + settings.start), + $handle = $ele.children('.range-slider-handle'); + this.set_ui($handle, initial); + }, + + set_value : function (value) { + var self = this; + $('[' + self.attr_name() + ']', this.scope).each(function () { + $(this).attr(self.attr_name(), value); + }); + if (!!$(this.scope).attr(self.attr_name())) { + $(this.scope).attr(self.attr_name(), value); + } + self.reflow(); + }, + + reflow : function () { + var self = this; + self.S('[' + this.attr_name() + ']').each(function () { + var handle = $(this).children('.range-slider-handle')[0], + val = $(this).attr(self.attr_name()); + self.initialize_settings(handle); + + if (val) { + self.set_ui($(handle), parseFloat(val)); + } else { + self.set_initial_position($(this)); + } + }); + } + }; + +}(jQuery, window, window.document)); diff --git a/library/foundation/js/foundation/foundation.tab.js b/library/foundation/js/foundation/foundation.tab.js new file mode 100644 index 000000000..7875dbe9f --- /dev/null +++ b/library/foundation/js/foundation/foundation.tab.js @@ -0,0 +1,249 @@ +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.tab = { + name : 'tab', + + version : '5.5.2', + + settings : { + active_class : 'active', + callback : function () {}, + deep_linking : false, + scroll_to_content : true, + is_hover : false + }, + + default_tab_hashes : [], + + init : function (scope, method, options) { + var self = this, + S = this.S; + + // Store the default active tabs which will be referenced when the + // location hash is absent, as in the case of navigating the tabs and + // returning to the first viewing via the browser Back button. + S('[' + this.attr_name() + '] > .active > a', this.scope).each(function () { + self.default_tab_hashes.push(this.hash); + }); + + // store the initial href, which is used to allow correct behaviour of the + // browser back button when deep linking is turned on. + self.entry_location = window.location.href; + + this.bindings(method, options); + this.handle_location_hash_change(); + }, + + events : function () { + var self = this, + S = this.S; + + var usual_tab_behavior = function (e, target) { + var settings = S(target).closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init'); + if (!settings.is_hover || Modernizr.touch) { + e.preventDefault(); + e.stopPropagation(); + self.toggle_active_tab(S(target).parent()); + } + }; + + S(this.scope) + .off('.tab') + // Key event: focus/tab key + .on('keydown.fndtn.tab', '[' + this.attr_name() + '] > * > a', function(e) { + var el = this; + var keyCode = e.keyCode || e.which; + // if user pressed tab key + if (keyCode == 9) { + e.preventDefault(); + // TODO: Change usual_tab_behavior into accessibility function? + usual_tab_behavior(e, el); + } + }) + // Click event: tab title + .on('click.fndtn.tab', '[' + this.attr_name() + '] > * > a', function(e) { + var el = this; + usual_tab_behavior(e, el); + }) + // Hover event: tab title + .on('mouseenter.fndtn.tab', '[' + this.attr_name() + '] > * > a', function (e) { + var settings = S(this).closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init'); + if (settings.is_hover) { + self.toggle_active_tab(S(this).parent()); + } + }); + + // Location hash change event + S(window).on('hashchange.fndtn.tab', function (e) { + e.preventDefault(); + self.handle_location_hash_change(); + }); + }, + + handle_location_hash_change : function () { + + var self = this, + S = this.S; + + S('[' + this.attr_name() + ']', this.scope).each(function () { + var settings = S(this).data(self.attr_name(true) + '-init'); + if (settings.deep_linking) { + // Match the location hash to a label + var hash; + if (settings.scroll_to_content) { + hash = self.scope.location.hash; + } else { + // prefix the hash to prevent anchor scrolling + hash = self.scope.location.hash.replace('fndtn-', ''); + } + if (hash != '') { + // Check whether the location hash references a tab content div or + // another element on the page (inside or outside the tab content div) + var hash_element = S(hash); + if (hash_element.hasClass('content') && hash_element.parent().hasClass('tabs-content')) { + // Tab content div + self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=' + hash + ']').parent()); + } else { + // Not the tab content div. If inside the tab content, find the + // containing tab and toggle it as active. + var hash_tab_container_id = hash_element.closest('.content').attr('id'); + if (hash_tab_container_id != undefined) { + self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=#' + hash_tab_container_id + ']').parent(), hash); + } + } + } else { + // Reference the default tab hashes which were initialized in the init function + for (var ind = 0; ind < self.default_tab_hashes.length; ind++) { + self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=' + self.default_tab_hashes[ind] + ']').parent()); + } + } + } + }); + }, + + toggle_active_tab : function (tab, location_hash) { + var self = this, + S = self.S, + tabs = tab.closest('[' + this.attr_name() + ']'), + tab_link = tab.find('a'), + anchor = tab.children('a').first(), + target_hash = '#' + anchor.attr('href').split('#')[1], + target = S(target_hash), + siblings = tab.siblings(), + settings = tabs.data(this.attr_name(true) + '-init'), + interpret_keyup_action = function (e) { + // Light modification of Heydon Pickering's Practical ARIA Examples: http://heydonworks.com/practical_aria_examples/js/a11y.js + + // define current, previous and next (possible) tabs + + var $original = $(this); + var $prev = $(this).parents('li').prev().children('[role="tab"]'); + var $next = $(this).parents('li').next().children('[role="tab"]'); + var $target; + + // find the direction (prev or next) + + switch (e.keyCode) { + case 37: + $target = $prev; + break; + case 39: + $target = $next; + break; + default: + $target = false + break; + } + + if ($target.length) { + $original.attr({ + 'tabindex' : '-1', + 'aria-selected' : null + }); + $target.attr({ + 'tabindex' : '0', + 'aria-selected' : true + }).focus(); + } + + // Hide panels + + $('[role="tabpanel"]') + .attr('aria-hidden', 'true'); + + // Show panel which corresponds to target + + $('#' + $(document.activeElement).attr('href').substring(1)) + .attr('aria-hidden', null); + + }, + go_to_hash = function(hash) { + // This function allows correct behaviour of the browser's back button when deep linking is enabled. Without it + // the user would get continually redirected to the default hash. + var is_entry_location = window.location.href === self.entry_location, + default_hash = settings.scroll_to_content ? self.default_tab_hashes[0] : is_entry_location ? window.location.hash :'fndtn-' + self.default_tab_hashes[0].replace('#', '') + + if (!(is_entry_location && hash === default_hash)) { + window.location.hash = hash; + } + }; + + // allow usage of data-tab-content attribute instead of href + if (anchor.data('tab-content')) { + target_hash = '#' + anchor.data('tab-content').split('#')[1]; + target = S(target_hash); + } + + if (settings.deep_linking) { + + if (settings.scroll_to_content) { + + // retain current hash to scroll to content + go_to_hash(location_hash || target_hash); + + if (location_hash == undefined || location_hash == target_hash) { + tab.parent()[0].scrollIntoView(); + } else { + S(target_hash)[0].scrollIntoView(); + } + } else { + // prefix the hashes so that the browser doesn't scroll down + if (location_hash != undefined) { + go_to_hash('fndtn-' + location_hash.replace('#', '')); + } else { + go_to_hash('fndtn-' + target_hash.replace('#', '')); + } + } + } + + // WARNING: The activation and deactivation of the tab content must + // occur after the deep linking in order to properly refresh the browser + // window (notably in Chrome). + // Clean up multiple attr instances to done once + tab.addClass(settings.active_class).triggerHandler('opened'); + tab_link.attr({'aria-selected' : 'true', tabindex : 0}); + siblings.removeClass(settings.active_class) + siblings.find('a').attr({'aria-selected' : 'false', tabindex : -1}); + target.siblings().removeClass(settings.active_class).attr({'aria-hidden' : 'true', tabindex : -1}); + target.addClass(settings.active_class).attr('aria-hidden', 'false').removeAttr('tabindex'); + settings.callback(tab); + target.triggerHandler('toggled', [target]); + tabs.triggerHandler('toggled', [tab]); + + tab_link.off('keydown').on('keydown', interpret_keyup_action ); + }, + + data_attr : function (str) { + if (this.namespace.length > 0) { + return this.namespace + '-' + str; + } + + return str; + }, + + off : function () {}, + + reflow : function () {} + }; +}(jQuery, window, window.document)); diff --git a/library/foundation/js/foundation/foundation.tooltip.js b/library/foundation/js/foundation/foundation.tooltip.js new file mode 100644 index 000000000..c69f26c66 --- /dev/null +++ b/library/foundation/js/foundation/foundation.tooltip.js @@ -0,0 +1,339 @@ +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.tooltip = { + name : 'tooltip', + + version : '5.5.2', + + settings : { + additional_inheritable_classes : [], + tooltip_class : '.tooltip', + append_to : 'body', + touch_close_text : 'Tap To Close', + disable_for_touch : false, + hover_delay : 200, + show_on : 'all', + tip_template : function (selector, content) { + return '<span data-selector="' + selector + '" id="' + selector + '" class="' + + Foundation.libs.tooltip.settings.tooltip_class.substring(1) + + '" role="tooltip">' + content + '<span class="nub"></span></span>'; + } + }, + + cache : {}, + + init : function (scope, method, options) { + Foundation.inherit(this, 'random_str'); + this.bindings(method, options); + }, + + should_show : function (target, tip) { + var settings = $.extend({}, this.settings, this.data_options(target)); + + if (settings.show_on === 'all') { + return true; + } else if (this.small() && settings.show_on === 'small') { + return true; + } else if (this.medium() && settings.show_on === 'medium') { + return true; + } else if (this.large() && settings.show_on === 'large') { + return true; + } + return false; + }, + + medium : function () { + return matchMedia(Foundation.media_queries['medium']).matches; + }, + + large : function () { + return matchMedia(Foundation.media_queries['large']).matches; + }, + + events : function (instance) { + var self = this, + S = self.S; + + self.create(this.S(instance)); + + function _startShow(elt, $this, immediate) { + if (elt.timer) { + return; + } + + if (immediate) { + elt.timer = null; + self.showTip($this); + } else { + elt.timer = setTimeout(function () { + elt.timer = null; + self.showTip($this); + }.bind(elt), self.settings.hover_delay); + } + } + + function _startHide(elt, $this) { + if (elt.timer) { + clearTimeout(elt.timer); + elt.timer = null; + } + + self.hide($this); + } + + $(this.scope) + .off('.tooltip') + .on('mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', + '[' + this.attr_name() + ']', function (e) { + var $this = S(this), + settings = $.extend({}, self.settings, self.data_options($this)), + is_touch = false; + + if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type) && S(e.target).is('a')) { + return false; + } + + if (/mouse/i.test(e.type) && self.ie_touch(e)) { + return false; + } + + if ($this.hasClass('open')) { + if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) { + e.preventDefault(); + } + self.hide($this); + } else { + if (settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) { + return; + } else if (!settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) { + e.preventDefault(); + S(settings.tooltip_class + '.open').hide(); + is_touch = true; + // close other open tooltips on touch + if ($('.open[' + self.attr_name() + ']').length > 0) { + var prevOpen = S($('.open[' + self.attr_name() + ']')[0]); + self.hide(prevOpen); + } + } + + if (/enter|over/i.test(e.type)) { + _startShow(this, $this); + + } else if (e.type === 'mouseout' || e.type === 'mouseleave') { + _startHide(this, $this); + } else { + _startShow(this, $this, true); + } + } + }) + .on('mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', '[' + this.attr_name() + '].open', function (e) { + if (/mouse/i.test(e.type) && self.ie_touch(e)) { + return false; + } + + if ($(this).data('tooltip-open-event-type') == 'touch' && e.type == 'mouseleave') { + return; + } else if ($(this).data('tooltip-open-event-type') == 'mouse' && /MSPointerDown|touchstart/i.test(e.type)) { + self.convert_to_touch($(this)); + } else { + _startHide(this, $(this)); + } + }) + .on('DOMNodeRemoved DOMAttrModified', '[' + this.attr_name() + ']:not(a)', function (e) { + _startHide(this, S(this)); + }); + }, + + ie_touch : function (e) { + // How do I distinguish between IE11 and Windows Phone 8????? + return false; + }, + + showTip : function ($target) { + var $tip = this.getTip($target); + if (this.should_show($target, $tip)) { + return this.show($target); + } + return; + }, + + getTip : function ($target) { + var selector = this.selector($target), + settings = $.extend({}, this.settings, this.data_options($target)), + tip = null; + + if (selector) { + tip = this.S('span[data-selector="' + selector + '"]' + settings.tooltip_class); + } + + return (typeof tip === 'object') ? tip : false; + }, + + selector : function ($target) { + var dataSelector = $target.attr(this.attr_name()) || $target.attr('data-selector'); + + if (typeof dataSelector != 'string') { + dataSelector = this.random_str(6); + $target + .attr('data-selector', dataSelector) + .attr('aria-describedby', dataSelector); + } + + return dataSelector; + }, + + create : function ($target) { + var self = this, + settings = $.extend({}, this.settings, this.data_options($target)), + tip_template = this.settings.tip_template; + + if (typeof settings.tip_template === 'string' && window.hasOwnProperty(settings.tip_template)) { + tip_template = window[settings.tip_template]; + } + + var $tip = $(tip_template(this.selector($target), $('<div></div>').html($target.attr('title')).html())), + classes = this.inheritable_classes($target); + + $tip.addClass(classes).appendTo(settings.append_to); + + if (Modernizr.touch) { + $tip.append('<span class="tap-to-close">' + settings.touch_close_text + '</span>'); + $tip.on('touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', function (e) { + self.hide($target); + }); + } + + $target.removeAttr('title').attr('title', ''); + }, + + reposition : function (target, tip, classes) { + var width, nub, nubHeight, nubWidth, column, objPos; + + tip.css('visibility', 'hidden').show(); + + width = target.data('width'); + nub = tip.children('.nub'); + nubHeight = nub.outerHeight(); + nubWidth = nub.outerHeight(); + + if (this.small()) { + tip.css({'width' : '100%'}); + } else { + tip.css({'width' : (width) ? width : 'auto'}); + } + + objPos = function (obj, top, right, bottom, left, width) { + return obj.css({ + 'top' : (top) ? top : 'auto', + 'bottom' : (bottom) ? bottom : 'auto', + 'left' : (left) ? left : 'auto', + 'right' : (right) ? right : 'auto' + }).end(); + }; + + objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', target.offset().left); + + if (this.small()) { + objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', 12.5, $(this.scope).width()); + tip.addClass('tip-override'); + objPos(nub, -nubHeight, 'auto', 'auto', target.offset().left); + } else { + var left = target.offset().left; + if (Foundation.rtl) { + nub.addClass('rtl'); + left = target.offset().left + target.outerWidth() - tip.outerWidth(); + } + + objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', left); + // reset nub from small styles, if they've been applied + if (nub.attr('style')) { + nub.removeAttr('style'); + } + + tip.removeClass('tip-override'); + if (classes && classes.indexOf('tip-top') > -1) { + if (Foundation.rtl) { + nub.addClass('rtl'); + } + objPos(tip, (target.offset().top - tip.outerHeight()), 'auto', 'auto', left) + .removeClass('tip-override'); + } else if (classes && classes.indexOf('tip-left') > -1) { + objPos(tip, (target.offset().top + (target.outerHeight() / 2) - (tip.outerHeight() / 2)), 'auto', 'auto', (target.offset().left - tip.outerWidth() - nubHeight)) + .removeClass('tip-override'); + nub.removeClass('rtl'); + } else if (classes && classes.indexOf('tip-right') > -1) { + objPos(tip, (target.offset().top + (target.outerHeight() / 2) - (tip.outerHeight() / 2)), 'auto', 'auto', (target.offset().left + target.outerWidth() + nubHeight)) + .removeClass('tip-override'); + nub.removeClass('rtl'); + } + } + + tip.css('visibility', 'visible').hide(); + }, + + small : function () { + return matchMedia(Foundation.media_queries.small).matches && + !matchMedia(Foundation.media_queries.medium).matches; + }, + + inheritable_classes : function ($target) { + var settings = $.extend({}, this.settings, this.data_options($target)), + inheritables = ['tip-top', 'tip-left', 'tip-bottom', 'tip-right', 'radius', 'round'].concat(settings.additional_inheritable_classes), + classes = $target.attr('class'), + filtered = classes ? $.map(classes.split(' '), function (el, i) { + if ($.inArray(el, inheritables) !== -1) { + return el; + } + }).join(' ') : ''; + + return $.trim(filtered); + }, + + convert_to_touch : function ($target) { + var self = this, + $tip = self.getTip($target), + settings = $.extend({}, self.settings, self.data_options($target)); + + if ($tip.find('.tap-to-close').length === 0) { + $tip.append('<span class="tap-to-close">' + settings.touch_close_text + '</span>'); + $tip.on('click.fndtn.tooltip.tapclose touchstart.fndtn.tooltip.tapclose MSPointerDown.fndtn.tooltip.tapclose', function (e) { + self.hide($target); + }); + } + + $target.data('tooltip-open-event-type', 'touch'); + }, + + show : function ($target) { + var $tip = this.getTip($target); + + if ($target.data('tooltip-open-event-type') == 'touch') { + this.convert_to_touch($target); + } + + this.reposition($target, $tip, $target.attr('class')); + $target.addClass('open'); + $tip.fadeIn(150); + }, + + hide : function ($target) { + var $tip = this.getTip($target); + $tip.fadeOut(150, function () { + $tip.find('.tap-to-close').remove(); + $tip.off('click.fndtn.tooltip.tapclose MSPointerDown.fndtn.tapclose'); + $target.removeClass('open'); + }); + }, + + off : function () { + var self = this; + this.S(this.scope).off('.fndtn.tooltip'); + this.S(this.settings.tooltip_class).each(function (i) { + $('[' + self.attr_name() + ']').eq(i).attr('title', $(this).text()); + }).remove(); + }, + + reflow : function () {} + }; +}(jQuery, window, window.document)); diff --git a/library/foundation/js/foundation/foundation.topbar.js b/library/foundation/js/foundation/foundation.topbar.js new file mode 100644 index 000000000..c3b0ed6c7 --- /dev/null +++ b/library/foundation/js/foundation/foundation.topbar.js @@ -0,0 +1,458 @@ +;(function ($, window, document, undefined) { + 'use strict'; + + Foundation.libs.topbar = { + name : 'topbar', + + version : '5.5.2', + + settings : { + index : 0, + start_offset : 0, + sticky_class : 'sticky', + custom_back_text : true, + back_text : 'Back', + mobile_show_parent_link : true, + is_hover : true, + scrolltop : true, // jump to top when sticky nav menu toggle is clicked + sticky_on : 'all', + dropdown_autoclose: true + }, + + init : function (section, method, options) { + Foundation.inherit(this, 'add_custom_rule register_media throttle'); + var self = this; + + self.register_media('topbar', 'foundation-mq-topbar'); + + this.bindings(method, options); + + self.S('[' + this.attr_name() + ']', this.scope).each(function () { + var topbar = $(this), + settings = topbar.data(self.attr_name(true) + '-init'), + section = self.S('section, .top-bar-section', this); + topbar.data('index', 0); + var topbarContainer = topbar.parent(); + if (topbarContainer.hasClass('fixed') || self.is_sticky(topbar, topbarContainer, settings) ) { + self.settings.sticky_class = settings.sticky_class; + self.settings.sticky_topbar = topbar; + topbar.data('height', topbarContainer.outerHeight()); + topbar.data('stickyoffset', topbarContainer.offset().top); + } else { + topbar.data('height', topbar.outerHeight()); + } + + if (!settings.assembled) { + self.assemble(topbar); + } + + if (settings.is_hover) { + self.S('.has-dropdown', topbar).addClass('not-click'); + } else { + self.S('.has-dropdown', topbar).removeClass('not-click'); + } + + // Pad body when sticky (scrolled) or fixed. + self.add_custom_rule('.f-topbar-fixed { padding-top: ' + topbar.data('height') + 'px }'); + + if (topbarContainer.hasClass('fixed')) { + self.S('body').addClass('f-topbar-fixed'); + } + }); + + }, + + is_sticky : function (topbar, topbarContainer, settings) { + var sticky = topbarContainer.hasClass(settings.sticky_class); + var smallMatch = matchMedia(Foundation.media_queries.small).matches; + var medMatch = matchMedia(Foundation.media_queries.medium).matches; + var lrgMatch = matchMedia(Foundation.media_queries.large).matches; + + if (sticky && settings.sticky_on === 'all') { + return true; + } + if (sticky && this.small() && settings.sticky_on.indexOf('small') !== -1) { + if (smallMatch && !medMatch && !lrgMatch) { return true; } + } + if (sticky && this.medium() && settings.sticky_on.indexOf('medium') !== -1) { + if (smallMatch && medMatch && !lrgMatch) { return true; } + } + if (sticky && this.large() && settings.sticky_on.indexOf('large') !== -1) { + if (smallMatch && medMatch && lrgMatch) { return true; } + } + + return false; + }, + + toggle : function (toggleEl) { + var self = this, + topbar; + + if (toggleEl) { + topbar = self.S(toggleEl).closest('[' + this.attr_name() + ']'); + } else { + topbar = self.S('[' + this.attr_name() + ']'); + } + + var settings = topbar.data(this.attr_name(true) + '-init'); + + var section = self.S('section, .top-bar-section', topbar); + + if (self.breakpoint()) { + if (!self.rtl) { + section.css({left : '0%'}); + $('>.name', section).css({left : '100%'}); + } else { + section.css({right : '0%'}); + $('>.name', section).css({right : '100%'}); + } + + self.S('li.moved', section).removeClass('moved'); + topbar.data('index', 0); + + topbar + .toggleClass('expanded') + .css('height', ''); + } + + if (settings.scrolltop) { + if (!topbar.hasClass('expanded')) { + if (topbar.hasClass('fixed')) { + topbar.parent().addClass('fixed'); + topbar.removeClass('fixed'); + self.S('body').addClass('f-topbar-fixed'); + } + } else if (topbar.parent().hasClass('fixed')) { + if (settings.scrolltop) { + topbar.parent().removeClass('fixed'); + topbar.addClass('fixed'); + self.S('body').removeClass('f-topbar-fixed'); + + window.scrollTo(0, 0); + } else { + topbar.parent().removeClass('expanded'); + } + } + } else { + if (self.is_sticky(topbar, topbar.parent(), settings)) { + topbar.parent().addClass('fixed'); + } + + if (topbar.parent().hasClass('fixed')) { + if (!topbar.hasClass('expanded')) { + topbar.removeClass('fixed'); + topbar.parent().removeClass('expanded'); + self.update_sticky_positioning(); + } else { + topbar.addClass('fixed'); + topbar.parent().addClass('expanded'); + self.S('body').addClass('f-topbar-fixed'); + } + } + } + }, + + timer : null, + + events : function (bar) { + var self = this, + S = this.S; + + S(this.scope) + .off('.topbar') + .on('click.fndtn.topbar', '[' + this.attr_name() + '] .toggle-topbar', function (e) { + e.preventDefault(); + self.toggle(this); + }) + .on('click.fndtn.topbar contextmenu.fndtn.topbar', '.top-bar .top-bar-section li a[href^="#"],[' + this.attr_name() + '] .top-bar-section li a[href^="#"]', function (e) { + var li = $(this).closest('li'), + topbar = li.closest('[' + self.attr_name() + ']'), + settings = topbar.data(self.attr_name(true) + '-init'); + + if (settings.dropdown_autoclose && settings.is_hover) { + var hoverLi = $(this).closest('.hover'); + hoverLi.removeClass('hover'); + } + if (self.breakpoint() && !li.hasClass('back') && !li.hasClass('has-dropdown')) { + self.toggle(); + } + + }) + .on('click.fndtn.topbar', '[' + this.attr_name() + '] li.has-dropdown', function (e) { + var li = S(this), + target = S(e.target), + topbar = li.closest('[' + self.attr_name() + ']'), + settings = topbar.data(self.attr_name(true) + '-init'); + + if (target.data('revealId')) { + self.toggle(); + return; + } + + if (self.breakpoint()) { + return; + } + + if (settings.is_hover && !Modernizr.touch) { + return; + } + + e.stopImmediatePropagation(); + + if (li.hasClass('hover')) { + li + .removeClass('hover') + .find('li') + .removeClass('hover'); + + li.parents('li.hover') + .removeClass('hover'); + } else { + li.addClass('hover'); + + $(li).siblings().removeClass('hover'); + + if (target[0].nodeName === 'A' && target.parent().hasClass('has-dropdown')) { + e.preventDefault(); + } + } + }) + .on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown>a', function (e) { + if (self.breakpoint()) { + + e.preventDefault(); + + var $this = S(this), + topbar = $this.closest('[' + self.attr_name() + ']'), + section = topbar.find('section, .top-bar-section'), + dropdownHeight = $this.next('.dropdown').outerHeight(), + $selectedLi = $this.closest('li'); + + topbar.data('index', topbar.data('index') + 1); + $selectedLi.addClass('moved'); + + if (!self.rtl) { + section.css({left : -(100 * topbar.data('index')) + '%'}); + section.find('>.name').css({left : 100 * topbar.data('index') + '%'}); + } else { + section.css({right : -(100 * topbar.data('index')) + '%'}); + section.find('>.name').css({right : 100 * topbar.data('index') + '%'}); + } + + topbar.css('height', $this.siblings('ul').outerHeight(true) + topbar.data('height')); + } + }); + + S(window).off('.topbar').on('resize.fndtn.topbar', self.throttle(function () { + self.resize.call(self); + }, 50)).trigger('resize.fndtn.topbar').load(function () { + // Ensure that the offset is calculated after all of the pages resources have loaded + S(this).trigger('resize.fndtn.topbar'); + }); + + S('body').off('.topbar').on('click.fndtn.topbar', function (e) { + var parent = S(e.target).closest('li').closest('li.hover'); + + if (parent.length > 0) { + return; + } + + S('[' + self.attr_name() + '] li.hover').removeClass('hover'); + }); + + // Go up a level on Click + S(this.scope).on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown .back', function (e) { + e.preventDefault(); + + var $this = S(this), + topbar = $this.closest('[' + self.attr_name() + ']'), + section = topbar.find('section, .top-bar-section'), + settings = topbar.data(self.attr_name(true) + '-init'), + $movedLi = $this.closest('li.moved'), + $previousLevelUl = $movedLi.parent(); + + topbar.data('index', topbar.data('index') - 1); + + if (!self.rtl) { + section.css({left : -(100 * topbar.data('index')) + '%'}); + section.find('>.name').css({left : 100 * topbar.data('index') + '%'}); + } else { + section.css({right : -(100 * topbar.data('index')) + '%'}); + section.find('>.name').css({right : 100 * topbar.data('index') + '%'}); + } + + if (topbar.data('index') === 0) { + topbar.css('height', ''); + } else { + topbar.css('height', $previousLevelUl.outerHeight(true) + topbar.data('height')); + } + + setTimeout(function () { + $movedLi.removeClass('moved'); + }, 300); + }); + + // Show dropdown menus when their items are focused + S(this.scope).find('.dropdown a') + .focus(function () { + $(this).parents('.has-dropdown').addClass('hover'); + }) + .blur(function () { + $(this).parents('.has-dropdown').removeClass('hover'); + }); + }, + + resize : function () { + var self = this; + self.S('[' + this.attr_name() + ']').each(function () { + var topbar = self.S(this), + settings = topbar.data(self.attr_name(true) + '-init'); + + var stickyContainer = topbar.parent('.' + self.settings.sticky_class); + var stickyOffset; + + if (!self.breakpoint()) { + var doToggle = topbar.hasClass('expanded'); + topbar + .css('height', '') + .removeClass('expanded') + .find('li') + .removeClass('hover'); + + if (doToggle) { + self.toggle(topbar); + } + } + + if (self.is_sticky(topbar, stickyContainer, settings)) { + if (stickyContainer.hasClass('fixed')) { + // Remove the fixed to allow for correct calculation of the offset. + stickyContainer.removeClass('fixed'); + + stickyOffset = stickyContainer.offset().top; + if (self.S(document.body).hasClass('f-topbar-fixed')) { + stickyOffset -= topbar.data('height'); + } + + topbar.data('stickyoffset', stickyOffset); + stickyContainer.addClass('fixed'); + } else { + stickyOffset = stickyContainer.offset().top; + topbar.data('stickyoffset', stickyOffset); + } + } + + }); + }, + + breakpoint : function () { + return !matchMedia(Foundation.media_queries['topbar']).matches; + }, + + small : function () { + return matchMedia(Foundation.media_queries['small']).matches; + }, + + medium : function () { + return matchMedia(Foundation.media_queries['medium']).matches; + }, + + large : function () { + return matchMedia(Foundation.media_queries['large']).matches; + }, + + assemble : function (topbar) { + var self = this, + settings = topbar.data(this.attr_name(true) + '-init'), + section = self.S('section, .top-bar-section', topbar); + + // Pull element out of the DOM for manipulation + section.detach(); + + self.S('.has-dropdown>a', section).each(function () { + var $link = self.S(this), + $dropdown = $link.siblings('.dropdown'), + url = $link.attr('href'), + $titleLi; + + if (!$dropdown.find('.title.back').length) { + + if (settings.mobile_show_parent_link == true && url) { + $titleLi = $('<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5></li><li class="parent-link hide-for-medium-up"><a class="parent-link js-generated" href="' + url + '">' + $link.html() +'</a></li>'); + } else { + $titleLi = $('<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5>'); + } + + // Copy link to subnav + if (settings.custom_back_text == true) { + $('h5>a', $titleLi).html(settings.back_text); + } else { + $('h5>a', $titleLi).html('« ' + $link.html()); + } + $dropdown.prepend($titleLi); + } + }); + + // Put element back in the DOM + section.appendTo(topbar); + + // check for sticky + this.sticky(); + + this.assembled(topbar); + }, + + assembled : function (topbar) { + topbar.data(this.attr_name(true), $.extend({}, topbar.data(this.attr_name(true)), {assembled : true})); + }, + + height : function (ul) { + var total = 0, + self = this; + + $('> li', ul).each(function () { + total += self.S(this).outerHeight(true); + }); + + return total; + }, + + sticky : function () { + var self = this; + + this.S(window).on('scroll', function () { + self.update_sticky_positioning(); + }); + }, + + update_sticky_positioning : function () { + var klass = '.' + this.settings.sticky_class, + $window = this.S(window), + self = this; + + if (self.settings.sticky_topbar && self.is_sticky(this.settings.sticky_topbar,this.settings.sticky_topbar.parent(), this.settings)) { + var distance = this.settings.sticky_topbar.data('stickyoffset') + this.settings.start_offset; + if (!self.S(klass).hasClass('expanded')) { + if ($window.scrollTop() > (distance)) { + if (!self.S(klass).hasClass('fixed')) { + self.S(klass).addClass('fixed'); + self.S('body').addClass('f-topbar-fixed'); + } + } else if ($window.scrollTop() <= distance) { + if (self.S(klass).hasClass('fixed')) { + self.S(klass).removeClass('fixed'); + self.S('body').removeClass('f-topbar-fixed'); + } + } + } + } + }, + + off : function () { + this.S(this.scope).off('.fndtn.topbar'); + this.S(window).off('.fndtn.topbar'); + }, + + reflow : function () {} + }; +}(jQuery, window, window.document)); diff --git a/mod/connedit.php b/mod/connedit.php index 250da672a..91fa2f324 100644 --- a/mod/connedit.php +++ b/mod/connedit.php @@ -347,12 +347,12 @@ function connedit_content(&$a) { $o .= "<script>function connectDefaultShare() { \$('.abook-edit-me').each(function() { if(! $(this).is(':disabled')) - $(this).removeAttr('checked'); + $(this).prop('checked', false); });\n\n"; $perms = get_perms(); foreach($perms as $p => $v) { if($my_perms & $v[1]) { - $o .= "\$('#me_id_perms_" . $p . "').attr('checked','checked'); \n"; + $o .= "\$('#me_id_perms_" . $p . "').prop('checked', true); \n"; } } $o .= " }\n</script>\n"; diff --git a/mod/setup.php b/mod/setup.php index 0dc032674..d88cf73f1 100755 --- a/mod/setup.php +++ b/mod/setup.php @@ -1,40 +1,53 @@ <?php +/** + * @file mod/setup.php + * + * Controller for the initial setup/installation. + * + * @todo This setup module could need some love and improvements. + */ -$install_wizard_pass=1; - +$install_wizard_pass = 1; +/** + * @brief Initialisation for the setup module. + * + * @param[in,out] App &$a + */ function setup_init(&$a){ - // Ensure that if somebody hasn't read the install documentation and doesn't have all - // the required modules or has a totally borked shared hosting provider and they can't + // Ensure that if somebody hasn't read the install documentation and doesn't have all + // the required modules or has a totally borked shared hosting provider and they can't // figure out what the hell is going on - that we at least spit out an error message which // we can inquire about when they write to tell us that our software doesn't work. - // The worst thing we can do at this point is throw a white screen of death and rely on - // them knowing about servers and php modules and logfiles enough so that we can guess + // The worst thing we can do at this point is throw a white screen of death and rely on + // them knowing about servers and php modules and logfiles enough so that we can guess // at the source of the problem. As ugly as it may be, we need to throw a technically worded - // PHP error message in their face. Once installation is complete application errors will - // throw a white screen because these error messages divulge information which can - // potentially be useful to hackers. - - - error_reporting(E_ERROR | E_WARNING | E_PARSE ); - ini_set('log_errors','0'); - ini_set('display_errors', '1'); + // PHP error message in their face. Once installation is complete application errors will + // throw a white screen because these error messages divulge information which can + // potentially be useful to hackers. + error_reporting(E_ERROR | E_WARNING | E_PARSE ); + ini_set('log_errors', '0'); + ini_set('display_errors', '1'); // $baseurl/setup/testrwrite to test if rewite in .htaccess is working - if (argc() ==2 && argv(1)=="testrewrite") { - echo "ok"; + if (argc() == 2 && argv(1) == "testrewrite") { + echo 'ok'; killme(); } + global $install_wizard_pass; - if (x($_POST,'pass')) + if (x($_POST, 'pass')) $install_wizard_pass = intval($_POST['pass']); - - } +/** + * @brief Handle the actions of the different setup steps. + * + * @param[in,out] App &$a + */ function setup_post(&$a) { global $install_wizard_pass, $db; @@ -58,8 +71,9 @@ function setup_post(&$a) { require_once('include/dba/dba_driver.php'); unset($db); $db = dba_factory($dbhost, $dbport, $dbuser, $dbpass, $dbdata, $dbtype, true); + if(! $db->connected) { - echo "Database Connect failed: " . $db->error; + echo 'Database Connect failed: ' . $db->error; killme(); $a->data['db_conn_failed']=true; } @@ -83,10 +97,10 @@ function setup_post(&$a) { } }*/ //if(get_db_errno()) { - + //} - return; + return; break; case 4: $urlpath = $a->get_path(); @@ -100,10 +114,9 @@ function setup_post(&$a) { $timezone = notags(trim($_POST['timezone'])); $adminmail = notags(trim($_POST['adminmail'])); $siteurl = notags(trim($_POST['siteurl'])); - if($siteurl != z_root()) { - $test = z_fetch_url($siteurl."/setup/testrewrite"); + $test = z_fetch_url($siteurl."/setup/testrewrite"); if((! $test['success']) || ($test['body'] != 'ok')) { $a->data['url_fail'] = true; $a->data['url_error'] = $test['error']; @@ -147,7 +160,7 @@ function setup_post(&$a) { $a->data['db_installed'] = true; return; - break; + break; } } @@ -156,45 +169,50 @@ function get_db_errno() { return mysqli_connect_errno(); else return mysql_errno(); -} +} +/** + * @brief Get output for the setup page. + * + * Depending on the state we are currently in it returns different content. + * + * @param App &$a + * @return string parsed HTML output + */ function setup_content(&$a) { - global $install_wizard_pass, $db; + $o = ''; - $wizard_status = ""; + $wizard_status = ''; $install_title = t('$Projectname Server - Setup'); - - if(x($a->data,'db_conn_failed')) { + + if(x($a->data, 'db_conn_failed')) { $install_wizard_pass = 2; $wizard_status = t('Could not connect to database.'); } - if(x($a->data,'url_fail')) { + if(x($a->data, 'url_fail')) { $install_wizard_pass = 3; $wizard_status = t('Could not connect to specified site URL. Possible SSL certificate or DNS issue.'); if($a->data['url_error']) $wizard_status .= ' ' . $a->data['url_error']; } - if(x($a->data,'db_create_failed')) { + if(x($a->data, 'db_create_failed')) { $install_wizard_pass = 2; $wizard_status = t('Could not create table.'); } - - $db_return_text=""; - if(x($a->data,'db_installed')) { + $db_return_text = ''; + if(x($a->data, 'db_installed')) { $txt = '<p style="font-size: 130%;">'; $txt .= t('Your site database has been installed.') . EOL; $db_return_text .= $txt; } - - if(x($a->data,'db_failed')) { + if(x($a->data, 'db_failed')) { $txt = t('You may need to import the file "install/schema_xxx.sql" manually using a database client.') . EOL; $txt .= t('Please see the file "install/INSTALL.txt".') . EOL ."<hr>" ; $txt .= "<pre>".$a->data['db_failed'] . "</pre>". EOL ; $db_return_text .= $txt; } - if($db && $db->connected) { $r = q("SELECT COUNT(*) as `total` FROM `account`"); if($r && count($r) && $r[0]['total']) { @@ -208,23 +226,22 @@ function setup_content(&$a) { } } - if(x($a->data,'txt') && strlen($a->data['txt'])) { + if(x($a->data, 'txt') && strlen($a->data['txt'])) { $db_return_text .= manual_config($a); } - - if ($db_return_text!="") { + + if ($db_return_text != "") { $tpl = get_markup_template('install.tpl'); return replace_macros($tpl, array( '$title' => $install_title, - '$pass' => "", + '$pass' => '', '$text' => $db_return_text . what_next(), )); } - + switch ($install_wizard_pass){ case 1: { // System check - $checks = array(); check_funcs($checks); @@ -236,22 +253,23 @@ function setup_content(&$a) { check_smarty3($checks); check_keys($checks); - - if(x($_POST,'phpath')) + + if (x($_POST, 'phpath')) $phpath = notags(trim($_POST['phpath'])); check_php($phpath, $checks); - check_htaccess($checks); - - function check_passed($v, $c){ + check_phpconfig($checks); + + check_htaccess($checks); + + function check_passed($v, $c) { if ($c['required']) $v = $v && $c['status']; + return $v; } $checkspassed = array_reduce($checks, "check_passed", true); - - $tpl = get_markup_template('install_checks.tpl'); $o .= replace_macros($tpl, array( @@ -267,7 +285,7 @@ function setup_content(&$a) { )); return $o; }; break; - + case 2: { // Database config $dbhost = ((x($_POST,'dbhost')) ? notags(trim($_POST['dbhost'])) : 'localhost'); @@ -279,7 +297,6 @@ function setup_content(&$a) { $phpath = notags(trim($_POST['phpath'])); $adminmail = notags(trim($_POST['adminmail'])); $siteurl = notags(trim($_POST['siteurl'])); - $tpl = get_markup_template('install_db.tpl'); $o .= replace_macros($tpl, array( @@ -290,7 +307,7 @@ function setup_content(&$a) { '$info_03' => t('The database you specify below should already exist. If it does not, please create it before continuing.'), '$status' => $wizard_status, - + '$dbhost' => array('dbhost', t('Database Server Name'), $dbhost, t('Default is localhost')), '$dbport' => array('dbport', t('Database Port'), $dbport, t('Communication port number - use 0 for default')), '$dbuser' => array('dbuser', t('Database Login Name'), $dbuser, ''), @@ -300,16 +317,14 @@ function setup_content(&$a) { '$adminmail' => array('adminmail', t('Site administrator email address'), $adminmail, t('Your account email address must match this in order to use the web admin panel.')), '$siteurl' => array('siteurl', t('Website URL'), z_root(), t('Please use SSL (https) URL if available.')), - '$lbl_10' => t('Please select a default timezone for your website'), - + '$baseurl' => $a->get_baseurl(), - + '$phpath' => $phpath, - + '$submit' => t('Submit'), - )); return $o; }; break; @@ -322,241 +337,296 @@ function setup_content(&$a) { $dbdata = notags(trim($_POST['dbdata'])); $dbtype = intval(notags(trim($_POST['dbtype']))); $phpath = notags(trim($_POST['phpath'])); - + $adminmail = notags(trim($_POST['adminmail'])); $siteurl = notags(trim($_POST['siteurl'])); $timezone = ((x($_POST,'timezone')) ? ($_POST['timezone']) : 'America/Los_Angeles'); - + $tpl = get_markup_template('install_settings.tpl'); $o .= replace_macros($tpl, array( '$title' => $install_title, '$pass' => t('Site settings'), - '$status' => $wizard_status, - - '$dbhost' => $dbhost, - '$dbport' => $dbport, + + '$dbhost' => $dbhost, + '$dbport' => $dbport, '$dbuser' => $dbuser, '$dbpass' => $dbpass, '$dbdata' => $dbdata, '$phpath' => $phpath, '$dbtype' => $dbtype, - + '$adminmail' => array('adminmail', t('Site administrator email address'), $adminmail, t('Your account email address must match this in order to use the web admin panel.')), '$siteurl' => array('siteurl', t('Website URL'), z_root(), t('Please use SSL (https) URL if available.')), - '$timezone' => array('timezone', t('Please select a default timezone for your website'), $timezone, '', get_timezones()), - + '$baseurl' => $a->get_baseurl(), - - - + '$submit' => t('Submit'), - )); return $o; }; break; - } } /** - * checks : array passed to template - * title : string - * status : boolean - * required : boolean - * help : string optional + * @brief Add a check result to the array for output. + * + * @param[in,out] array &$checks array passed to template + * @param string $title a title for the check + * @param boolean $status + * @param boolean $required + * @param[optional] string $help optional help string */ -function check_add(&$checks, $title, $status, $required, $help){ +function check_add(&$checks, $title, $status, $required, $help = '') { $checks[] = array( - 'title' => $title, - 'status' => $status, + 'title' => $title, + 'status' => $status, 'required' => $required, - 'help' => $help, + 'help' => $help ); } +/** + * @brief Checks the PHP environment. + * + * @param[in,out] string &$phpath + * @param[out] array &$checks + */ function check_php(&$phpath, &$checks) { - if (strlen($phpath)){ + $help = ''; + + if (strlen($phpath)) { $passed = file_exists($phpath); } else { if(is_windows()) $phpath = trim(shell_exec('where php')); else $phpath = trim(shell_exec('which php')); + $passed = strlen($phpath); } - $help = ""; + if(!$passed) { $help .= t('Could not find a command line version of PHP in the web server PATH.'). EOL; - $help .= t("If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron.") . EOL; + $help .= t('If you don\'t have a command line version of PHP installed on server, you will not be able to run background polling via cron.') . EOL; $help .= EOL . EOL ; $tpl = get_markup_template('field_input.tpl'); $help .= replace_macros($tpl, array( '$field' => array('phpath', t('PHP executable path'), $phpath, t('Enter full path to php executable. You can leave this blank to continue the installation.')), )); - $phpath=""; + $phpath = ''; } - + check_add($checks, t('Command line PHP').($passed?" (<tt>$phpath</tt>)":""), $passed, false, $help); - + if($passed) { $str = autoname(8); $cmd = "$phpath install/testargs.php $str"; $result = trim(shell_exec($cmd)); $passed2 = $result == $str; - $help = ""; + $help = ''; if(!$passed2) { $help .= t('The command line version of PHP on your system does not have "register_argc_argv" enabled.'). EOL; $help .= t('This is required for message delivery to work.'); } + check_add($checks, t('PHP register_argc_argv'), $passed, true, $help); } - - } -function check_keys(&$checks) { +/** + * @brief Some PHP configuration checks. + * + * @todo Change how we display such informational text. Add more description + * how to change them. + * + * @param[out] array &$checks + */ +function check_phpconfig(&$checks) { + require_once 'include/environment.php'; $help = ''; + $result = getPhpiniUploadLimits(); + $help = sprintf(t('Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once.'), + userReadableSize($result['post_max_size']), + userReadableSize($result['max_upload_filesize']), + $result['max_file_uploads'] + ); + $help .= '<br>' . t('You can adjust these settings in the servers php.ini.'); + + check_add($checks, t('PHP upload limits'), true, false, $help); +} + +/** + * @brief Check if the openssl implementation can generate keys. + * + * @param[out] array $checks + */ +function check_keys(&$checks) { + $help = ''; $res = false; - if(function_exists('openssl_pkey_new')) - $res=openssl_pkey_new(array( - 'digest_alg' => 'sha1', - 'private_key_bits' => 4096, - 'encrypt_key' => false )); + if (function_exists('openssl_pkey_new')) { + $res = openssl_pkey_new(array( + 'digest_alg' => 'sha1', + 'private_key_bits' => 4096, + 'encrypt_key' => false) + ); + } // Get private key - if(! $res) { + if (! $res) { $help .= t('Error: the "openssl_pkey_new" function on this system is not able to generate encryption keys'). EOL; $help .= t('If running under Windows, please see "http://www.php.net/manual/en/openssl.installation.php".'); } - check_add($checks, t('Generate encryption keys'), $res, true, $help); + check_add($checks, t('Generate encryption keys'), $res, true, $help); } - +/** + * @brief Check for some PHP functions and modules. + * + * @param[in,out] array &$checks + */ function check_funcs(&$checks) { $ck_funcs = array(); - check_add($ck_funcs, t('libCurl PHP module'), true, true, ""); - check_add($ck_funcs, t('GD graphics PHP module'), true, true, ""); - check_add($ck_funcs, t('OpenSSL PHP module'), true, true, ""); - check_add($ck_funcs, t('mysqli or postgres PHP module'), true, true, ""); - check_add($ck_funcs, t('mb_string PHP module'), true, true, ""); - check_add($ck_funcs, t('mcrypt PHP module'), true, true, ""); - - + + // add check metadata, the real check is done bit later and return values set + check_add($ck_funcs, t('libCurl PHP module'), true, true); + check_add($ck_funcs, t('GD graphics PHP module'), true, true); + check_add($ck_funcs, t('OpenSSL PHP module'), true, true); + check_add($ck_funcs, t('mysqli or postgres PHP module'), true, true); + check_add($ck_funcs, t('mb_string PHP module'), true, true); + check_add($ck_funcs, t('mcrypt PHP module'), true, true); + check_add($ck_funcs, t('xml PHP module'), true, true); + if(function_exists('apache_get_modules')){ - if (! in_array('mod_rewrite',apache_get_modules())) { + if (! in_array('mod_rewrite', apache_get_modules())) { check_add($ck_funcs, t('Apache mod_rewrite module'), false, true, t('Error: Apache webserver mod-rewrite module is required but not installed.')); } else { - check_add($ck_funcs, t('Apache mod_rewrite module'), true, true, ""); + check_add($ck_funcs, t('Apache mod_rewrite module'), true, true); } } if((! function_exists('proc_open')) || strstr(ini_get('disable_functions'),'proc_open')) { check_add($ck_funcs, t('proc_open'), false, true, t('Error: proc_open is required but is either not installed or has been disabled in php.ini')); } else { - check_add($ck_funcs, t('proc_open'), true, true, ""); + check_add($ck_funcs, t('proc_open'), true, true); } - if(! function_exists('curl_init')){ - $ck_funcs[0]['status']= false; - $ck_funcs[0]['help']= t('Error: libCURL PHP module required but not installed.'); + if(! function_exists('curl_init')) { + $ck_funcs[0]['status'] = false; + $ck_funcs[0]['help'] = t('Error: libCURL PHP module required but not installed.'); } - if(! function_exists('imagecreatefromjpeg')){ - $ck_funcs[1]['status']= false; - $ck_funcs[1]['help']= t('Error: GD graphics PHP module with JPEG support required but not installed.'); + if(! function_exists('imagecreatefromjpeg')) { + $ck_funcs[1]['status'] = false; + $ck_funcs[1]['help'] = t('Error: GD graphics PHP module with JPEG support required but not installed.'); } if(! function_exists('openssl_public_encrypt')) { - $ck_funcs[2]['status']= false; - $ck_funcs[2]['help']= t('Error: openssl PHP module required but not installed.'); + $ck_funcs[2]['status'] = false; + $ck_funcs[2]['help'] = t('Error: openssl PHP module required but not installed.'); } - if(! function_exists('mysqli_connect') && !function_exists('pg_connect')){ - $ck_funcs[3]['status']= false; - $ck_funcs[3]['help']= t('Error: mysqli or postgres PHP module required but neither are installed.'); + if(! function_exists('mysqli_connect') && !function_exists('pg_connect')) { + $ck_funcs[3]['status'] = false; + $ck_funcs[3]['help'] = t('Error: mysqli or postgres PHP module required but neither are installed.'); } - if(! function_exists('mb_strlen')){ - $ck_funcs[4]['status']= false; - $ck_funcs[4]['help']= t('Error: mb_string PHP module required but not installed.'); + if(! function_exists('mb_strlen')) { + $ck_funcs[4]['status'] = false; + $ck_funcs[4]['help'] = t('Error: mb_string PHP module required but not installed.'); } - if(! function_exists('mcrypt_encrypt')){ - $ck_funcs[5]['status']= false; - $ck_funcs[5]['help']= t('Error: mcrypt PHP module required but not installed.'); + if(! function_exists('mcrypt_encrypt')) { + $ck_funcs[5]['status'] = false; + $ck_funcs[5]['help'] = t('Error: mcrypt PHP module required but not installed.'); + } + if(! extension_loaded('xml')) { + $ck_funcs[6]['status'] = false; + $ck_funcs[6]['help'] = t('Error: xml PHP module required for DAV but not installed.'); } - - $checks = array_merge($checks, $ck_funcs); - + $checks = array_merge($checks, $ck_funcs); } - +/** + * @brief Check for .htconfig requirements. + * + * @param[out] array &$checks + */ function check_htconfig(&$checks) { $status = true; - $help = ""; - if( (file_exists('.htconfig.php') && !is_writable('.htconfig.php')) || + $help = ''; + + if( (file_exists('.htconfig.php') && !is_writable('.htconfig.php')) || (!file_exists('.htconfig.php') && !is_writable('.')) ) { - - $status=false; - $help = t('The web installer needs to be able to create a file called ".htconfig.php" in the top folder of your web server and it is unable to do so.') .EOL; - $help .= t('This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can.').EOL; - $help .= t('At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder.').EOL; - $help .= t('You can alternatively skip this procedure and perform a manual installation. Please see the file "install/INSTALL.txt" for instructions.').EOL; - } - - check_add($checks, t('.htconfig.php is writable'), $status, false, $help); + $status = false; + $help = t('The web installer needs to be able to create a file called ".htconfig.php" in the top folder of your web server and it is unable to do so.') .EOL; + $help .= t('This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can.').EOL; + $help .= t('At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder.').EOL; + $help .= t('You can alternatively skip this procedure and perform a manual installation. Please see the file "install/INSTALL.txt" for instructions.').EOL; + } + check_add($checks, t('.htconfig.php is writable'), $status, false, $help); } +/** + * @brief Checks for our templating engine Smarty3 requirements. + * + * @param[out] array &$checks + */ function check_smarty3(&$checks) { $status = true; - $help = ""; - if( !is_writable(TEMPLATE_BUILD_PATH) ) { - - $status=false; + $help = ''; + + if(! is_writable(TEMPLATE_BUILD_PATH) ) { + $status = false; $help = t('Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering.') .EOL; $help .= sprintf( t('In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder.'), TEMPLATE_BUILD_PATH) . EOL; $help .= t('Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder.').EOL; - $help .= sprintf( t('Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains.'), TEMPLATE_BUILD_PATH) . EOL; + $help .= sprintf( t('Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains.'), TEMPLATE_BUILD_PATH) . EOL; } - - check_add($checks, sprintf( t('%s is writable'), TEMPLATE_BUILD_PATH), $status, true, $help); + check_add($checks, sprintf( t('%s is writable'), TEMPLATE_BUILD_PATH), $status, true, $help); } +/** + * @brief Check for store directory. + * + * @param[out] array &$checks + */ function check_store(&$checks) { $status = true; - $help = ""; + $help = ''; - @os_mkdir(TEMPLATE_BUILD_PATH,STORAGE_DEFAULT_PERMISSIONS,true); + @os_mkdir(TEMPLATE_BUILD_PATH, STORAGE_DEFAULT_PERMISSIONS, true); - if( !is_writable('store') ) { - - $status=false; + if(! is_writable('store')) { + $status = false; $help = t('Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder') . EOL; $help .= t('Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder.').EOL; } - - check_add($checks, t('store is writable'), $status, true, $help); + check_add($checks, t('store is writable'), $status, true, $help); } - +/** + * @brief Check URL rewrite und SSL certificate. + * + * @param[out] array &$checks + */ function check_htaccess(&$checks) { $a = get_app(); $status = true; - $help = ""; + $help = ''; $ssl_error = false; $url = $a->get_baseurl() . '/setup/testrewrite'; if (function_exists('curl_init')){ - $test = z_fetch_url($url); + $test = z_fetch_url($url); if(! $test['success']) { if(strstr($url,'https://')) { $test = z_fetch_url($url,false,0,array('novalidate' => true)); @@ -579,26 +649,27 @@ function check_htaccess(&$checks) { $help .= t('This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement.') .EOL; $help .= t('Providers are available that issue free certificates which are browser-valid.'). EOL; - check_add($checks, t('SSL certificate validation'),false,true, $help); + check_add($checks, t('SSL certificate validation'), false, true, $help); } - } - - if ((! $test['success']) || ($test['body'] != "ok")) { - $status = false; - $help = t('Url rewrite in .htaccess is not working. Check your server configuration.'.'Test: '.var_export($test,true)); - } - check_add($checks, t('Url rewrite is working'), $status, true, $help); - } else { - // cannot check modrewrite if libcurl is not installed - } - + } + + if ((! $test['success']) || ($test['body'] != "ok")) { + $status = false; + $help = t('Url rewrite in .htaccess is not working. Check your server configuration.'.'Test: '.var_export($test,true)); + } + + check_add($checks, t('Url rewrite is working'), $status, true, $help); + } else { + // cannot check modrewrite if libcurl is not installed + } } - + function manual_config(&$a) { - $data = htmlspecialchars($a->data['txt'],ENT_COMPAT,'UTF-8'); + $data = htmlspecialchars($a->data['txt'], ENT_COMPAT, 'UTF-8'); $o = t('The database configuration file ".htconfig.php" could not be written. Please use the enclosed text to create a configuration file in your web server root.'); $o .= "<textarea rows=\"24\" cols=\"80\" >$data</textarea>"; + return $o; } @@ -617,50 +688,47 @@ function load_database($db) { $arr = explode(';',$str); $errors = false; foreach($arr as $a) { - if(strlen(trim($a))) { + if(strlen(trim($a))) { $r = @$db->q(trim($a)); if(! $r) { $errors .= t('Errors encountered creating database tables.') . $a . EOL; } } } + return $errors; } function what_next() { $a = get_app(); // install the standard theme - set_config('system','allowed_themes','redbasic'); + set_config('system', 'allowed_themes', 'redbasic'); // Set a lenient list of ciphers if using openssl. Other ssl engines - // (e.g. NSS used in RedHat) require different syntax, so hopefully - // the default curl cipher list will work for most sites. If not, + // (e.g. NSS used in RedHat) require different syntax, so hopefully + // the default curl cipher list will work for most sites. If not, // this can set via config. Many distros are now disabling RC4, // but many Red sites still use it and are unable to change it. // We do not use SSL for encryption, only to protect session cookies. - // z_fetch_url() is also used to import shared links and other content + // z_fetch_url() is also used to import shared links and other content // so in theory most any cipher could show up and we should do our best - // to make the content available rather than tell folks that there's a - // weird SSL error which they can't do anything about. + // to make the content available rather than tell folks that there's a + // weird SSL error which they can't do anything about. $x = curl_version(); if(stristr($x['ssl_version'],'openssl')) set_config('system','curl_ssl_ciphers','ALL:!eNULL'); - // Create a system channel require_once ('include/identity.php'); - create_sys_channel(); - + create_sys_channel(); $baseurl = $a->get_baseurl(); - return + return t('<h1>What next</h1>') ."<p>".t('IMPORTANT: You will need to [manually] setup a scheduled task for the poller.') - .t('Please see the file "install/INSTALL.txt".') + .t('Please see the file "install/INSTALL.txt".') ."</p><p>" .t("Go to your new Red node <a href='$baseurl/register'>registration page</a> and register as new user. Remember to use the same email you have entered as administrator email. This will allow you to enter the site admin panel.") ."</p>"; } - - diff --git a/util/messages.po b/util/messages.po index 80775104b..2aea612b2 100644 --- a/util/messages.po +++ b/util/messages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 2015-05-17.1035\n" +"Project-Id-Version: 2015-05-22.1040\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-17 16:33-0700\n" +"POT-Creation-Date: 2015-05-22 00:03-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -28,10 +28,417 @@ msgstr "" msgid "Profile Photos" msgstr "" -#: ../../include/security.php:349 -msgid "" -"The form security token was not correct. This probably happened because the " -"form has been opened for too long (>3 hours) before submitting it." +#: ../../include/text.php:329 +msgid "prev" +msgstr "" + +#: ../../include/text.php:331 +msgid "first" +msgstr "" + +#: ../../include/text.php:360 +msgid "last" +msgstr "" + +#: ../../include/text.php:363 +msgid "next" +msgstr "" + +#: ../../include/text.php:373 +msgid "older" +msgstr "" + +#: ../../include/text.php:375 +msgid "newer" +msgstr "" + +#: ../../include/text.php:768 +msgid "No connections" +msgstr "" + +#: ../../include/text.php:782 +#, php-format +msgid "%d Connection" +msgid_plural "%d Connections" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/text.php:795 ../../mod/viewconnections.php:104 +msgid "View Connections" +msgstr "" + +#: ../../include/text.php:852 ../../include/text.php:864 +#: ../../include/nav.php:165 ../../include/apps.php:147 +#: ../../mod/search.php:38 +msgid "Search" +msgstr "" + +#: ../../include/text.php:853 ../../include/text.php:865 +#: ../../include/widgets.php:192 ../../mod/rbmark.php:28 +#: ../../mod/rbmark.php:98 ../../mod/filer.php:50 ../../mod/admin.php:1416 +#: ../../mod/admin.php:1436 +msgid "Save" +msgstr "" + +#: ../../include/text.php:928 +msgid "poke" +msgstr "" + +#: ../../include/text.php:928 ../../include/conversation.php:243 +msgid "poked" +msgstr "" + +#: ../../include/text.php:929 +msgid "ping" +msgstr "" + +#: ../../include/text.php:929 +msgid "pinged" +msgstr "" + +#: ../../include/text.php:930 +msgid "prod" +msgstr "" + +#: ../../include/text.php:930 +msgid "prodded" +msgstr "" + +#: ../../include/text.php:931 +msgid "slap" +msgstr "" + +#: ../../include/text.php:931 +msgid "slapped" +msgstr "" + +#: ../../include/text.php:932 +msgid "finger" +msgstr "" + +#: ../../include/text.php:932 +msgid "fingered" +msgstr "" + +#: ../../include/text.php:933 +msgid "rebuff" +msgstr "" + +#: ../../include/text.php:933 +msgid "rebuffed" +msgstr "" + +#: ../../include/text.php:943 +msgid "happy" +msgstr "" + +#: ../../include/text.php:944 +msgid "sad" +msgstr "" + +#: ../../include/text.php:945 +msgid "mellow" +msgstr "" + +#: ../../include/text.php:946 +msgid "tired" +msgstr "" + +#: ../../include/text.php:947 +msgid "perky" +msgstr "" + +#: ../../include/text.php:948 +msgid "angry" +msgstr "" + +#: ../../include/text.php:949 +msgid "stupified" +msgstr "" + +#: ../../include/text.php:950 +msgid "puzzled" +msgstr "" + +#: ../../include/text.php:951 +msgid "interested" +msgstr "" + +#: ../../include/text.php:952 +msgid "bitter" +msgstr "" + +#: ../../include/text.php:953 +msgid "cheerful" +msgstr "" + +#: ../../include/text.php:954 +msgid "alive" +msgstr "" + +#: ../../include/text.php:955 +msgid "annoyed" +msgstr "" + +#: ../../include/text.php:956 +msgid "anxious" +msgstr "" + +#: ../../include/text.php:957 +msgid "cranky" +msgstr "" + +#: ../../include/text.php:958 +msgid "disturbed" +msgstr "" + +#: ../../include/text.php:959 +msgid "frustrated" +msgstr "" + +#: ../../include/text.php:960 +msgid "depressed" +msgstr "" + +#: ../../include/text.php:961 +msgid "motivated" +msgstr "" + +#: ../../include/text.php:962 +msgid "relaxed" +msgstr "" + +#: ../../include/text.php:963 +msgid "surprised" +msgstr "" + +#: ../../include/text.php:1135 +msgid "Monday" +msgstr "" + +#: ../../include/text.php:1135 +msgid "Tuesday" +msgstr "" + +#: ../../include/text.php:1135 +msgid "Wednesday" +msgstr "" + +#: ../../include/text.php:1135 +msgid "Thursday" +msgstr "" + +#: ../../include/text.php:1135 +msgid "Friday" +msgstr "" + +#: ../../include/text.php:1135 +msgid "Saturday" +msgstr "" + +#: ../../include/text.php:1135 +msgid "Sunday" +msgstr "" + +#: ../../include/text.php:1139 +msgid "January" +msgstr "" + +#: ../../include/text.php:1139 +msgid "February" +msgstr "" + +#: ../../include/text.php:1139 +msgid "March" +msgstr "" + +#: ../../include/text.php:1139 +msgid "April" +msgstr "" + +#: ../../include/text.php:1139 +msgid "May" +msgstr "" + +#: ../../include/text.php:1139 +msgid "June" +msgstr "" + +#: ../../include/text.php:1139 +msgid "July" +msgstr "" + +#: ../../include/text.php:1139 +msgid "August" +msgstr "" + +#: ../../include/text.php:1139 +msgid "September" +msgstr "" + +#: ../../include/text.php:1139 +msgid "October" +msgstr "" + +#: ../../include/text.php:1139 +msgid "November" +msgstr "" + +#: ../../include/text.php:1139 +msgid "December" +msgstr "" + +#: ../../include/text.php:1244 +msgid "unknown.???" +msgstr "" + +#: ../../include/text.php:1245 +msgid "bytes" +msgstr "" + +#: ../../include/text.php:1281 +msgid "remove category" +msgstr "" + +#: ../../include/text.php:1356 +msgid "remove from file" +msgstr "" + +#: ../../include/text.php:1432 ../../include/text.php:1443 +#: ../../mod/connedit.php:661 +msgid "Click to open/close" +msgstr "" + +#: ../../include/text.php:1599 ../../mod/events.php:444 +msgid "Link to Source" +msgstr "" + +#: ../../include/text.php:1620 ../../include/text.php:1691 +msgid "default" +msgstr "" + +#: ../../include/text.php:1628 +msgid "Page layout" +msgstr "" + +#: ../../include/text.php:1628 +msgid "You can create your own with the layouts tool" +msgstr "" + +#: ../../include/text.php:1669 +msgid "Page content type" +msgstr "" + +#: ../../include/text.php:1703 +msgid "Select an alternate language" +msgstr "" + +#: ../../include/text.php:1822 ../../include/conversation.php:120 +#: ../../include/diaspora.php:2081 ../../mod/like.php:346 +#: ../../mod/subthread.php:72 ../../mod/subthread.php:174 +#: ../../mod/tagger.php:43 +msgid "photo" +msgstr "" + +#: ../../include/text.php:1825 ../../include/conversation.php:123 +#: ../../mod/like.php:348 ../../mod/tagger.php:47 +msgid "event" +msgstr "" + +#: ../../include/text.php:1828 ../../include/conversation.php:148 +#: ../../include/diaspora.php:2081 ../../mod/like.php:346 +#: ../../mod/subthread.php:72 ../../mod/subthread.php:174 +#: ../../mod/tagger.php:51 +msgid "status" +msgstr "" + +#: ../../include/text.php:1830 ../../include/conversation.php:150 +#: ../../mod/tagger.php:53 +msgid "comment" +msgstr "" + +#: ../../include/text.php:1835 +msgid "activity" +msgstr "" + +#: ../../include/text.php:2130 +msgid "Design Tools" +msgstr "" + +#: ../../include/text.php:2133 ../../mod/blocks.php:147 +msgid "Blocks" +msgstr "" + +#: ../../include/text.php:2134 ../../mod/menu.php:95 +msgid "Menus" +msgstr "" + +#: ../../include/text.php:2135 ../../mod/layouts.php:174 +msgid "Layouts" +msgstr "" + +#: ../../include/text.php:2136 +msgid "Pages" +msgstr "" + +#: ../../include/text.php:2487 ../../include/RedDAV/RedBrowser.php:131 +msgid "Collection" +msgstr "" + +#: ../../include/bbcode.php:122 ../../include/bbcode.php:761 +#: ../../include/bbcode.php:764 ../../include/bbcode.php:769 +#: ../../include/bbcode.php:772 ../../include/bbcode.php:775 +#: ../../include/bbcode.php:778 ../../include/bbcode.php:783 +#: ../../include/bbcode.php:786 ../../include/bbcode.php:791 +#: ../../include/bbcode.php:794 ../../include/bbcode.php:797 +#: ../../include/bbcode.php:800 +msgid "Image/photo" +msgstr "" + +#: ../../include/bbcode.php:161 ../../include/bbcode.php:811 +msgid "Encrypted content" +msgstr "" + +#: ../../include/bbcode.php:178 +#, php-format +msgid "Install %s element: " +msgstr "" + +#: ../../include/bbcode.php:188 ../../mod/impel.php:33 +msgid "webpage" +msgstr "" + +#: ../../include/bbcode.php:191 ../../mod/impel.php:43 +msgid "layout" +msgstr "" + +#: ../../include/bbcode.php:194 ../../mod/impel.php:38 +msgid "block" +msgstr "" + +#: ../../include/bbcode.php:208 +msgid "QR code" +msgstr "" + +#: ../../include/bbcode.php:259 +#, php-format +msgid "%1$s wrote the following %2$s %3$s" +msgstr "" + +#: ../../include/bbcode.php:261 +msgid "post" +msgstr "" + +#: ../../include/bbcode.php:511 +msgid "Different viewers will see this text differently" +msgstr "" + +#: ../../include/bbcode.php:722 +msgid "$1 spoiler" +msgstr "" + +#: ../../include/bbcode.php:749 +msgid "$1 wrote:" msgstr "" #: ../../include/notify.php:23 @@ -172,7 +579,7 @@ msgstr "" msgid "Required" msgstr "" -#: ../../include/datetime.php:262 ../../boot.php:2342 +#: ../../include/datetime.php:262 ../../boot.php:2354 msgid "never" msgstr "" @@ -262,22 +669,22 @@ msgstr "" #: ../../mod/settings.php:649 ../../mod/webpages.php:180 #: ../../mod/thing.php:227 ../../mod/connections.php:382 #: ../../mod/connections.php:395 ../../mod/connections.php:414 -#: ../../mod/blocks.php:152 ../../mod/editlayout.php:139 +#: ../../mod/blocks.php:153 ../../mod/editlayout.php:139 #: ../../mod/editwebpage.php:178 ../../mod/editpost.php:113 #: ../../mod/menu.php:100 ../../mod/editblock.php:140 -#: ../../mod/layouts.php:182 +#: ../../mod/layouts.php:183 msgid "Edit" msgstr "" #: ../../include/page_widgets.php:39 ../../mod/webpages.php:186 -#: ../../mod/blocks.php:158 ../../mod/layouts.php:187 +#: ../../mod/blocks.php:159 ../../mod/layouts.php:188 msgid "View" msgstr "" #: ../../include/page_widgets.php:40 ../../include/ItemObject.php:677 #: ../../include/conversation.php:1155 ../../mod/webpages.php:187 #: ../../mod/events.php:653 ../../mod/photos.php:970 -#: ../../mod/editwebpage.php:214 ../../mod/editpost.php:149 +#: ../../mod/editwebpage.php:214 ../../mod/editpost.php:150 #: ../../mod/editblock.php:176 msgid "Preview" msgstr "" @@ -295,16 +702,16 @@ msgid "Title" msgstr "" #: ../../include/page_widgets.php:44 ../../mod/webpages.php:191 -#: ../../mod/blocks.php:149 ../../mod/layouts.php:180 +#: ../../mod/blocks.php:150 ../../mod/layouts.php:181 msgid "Created" msgstr "" #: ../../include/page_widgets.php:45 ../../mod/webpages.php:192 -#: ../../mod/blocks.php:150 ../../mod/layouts.php:181 +#: ../../mod/blocks.php:151 ../../mod/layouts.php:182 msgid "Edited" msgstr "" -#: ../../include/api.php:1158 +#: ../../include/api.php:1161 msgid "Public Timeline" msgstr "" @@ -549,10 +956,6 @@ msgstr "" msgid "parent" msgstr "" -#: ../../include/RedDAV/RedBrowser.php:131 ../../include/text.php:2497 -msgid "Collection" -msgstr "" - #: ../../include/RedDAV/RedBrowser.php:134 msgid "Principal" msgstr "" @@ -605,7 +1008,7 @@ msgstr "" #: ../../include/RedDAV/RedBrowser.php:256 #: ../../include/RedDAV/RedBrowser.php:306 ../../mod/webpages.php:179 -#: ../../mod/blocks.php:151 ../../mod/menu.php:104 ../../mod/layouts.php:174 +#: ../../mod/blocks.php:152 ../../mod/menu.php:104 ../../mod/layouts.php:175 #: ../../mod/new_channel.php:121 msgid "Create" msgstr "" @@ -637,7 +1040,7 @@ msgstr "" #: ../../include/RedDAV/RedBrowser.php:270 ../../include/ItemObject.php:120 #: ../../include/conversation.php:660 ../../include/apps.php:255 #: ../../mod/settings.php:650 ../../mod/webpages.php:182 -#: ../../mod/thing.php:228 ../../mod/group.php:176 ../../mod/blocks.php:154 +#: ../../mod/thing.php:228 ../../mod/group.php:176 ../../mod/blocks.php:155 #: ../../mod/photos.php:1050 ../../mod/editlayout.php:107 #: ../../mod/editwebpage.php:225 ../../mod/admin.php:817 #: ../../mod/admin.php:948 ../../mod/editblock.php:113 @@ -975,12 +1378,6 @@ msgstr "" msgid "Notes" msgstr "" -#: ../../include/widgets.php:192 ../../include/text.php:853 -#: ../../include/text.php:865 ../../mod/rbmark.php:28 ../../mod/rbmark.php:98 -#: ../../mod/filer.php:50 ../../mod/admin.php:1416 ../../mod/admin.php:1436 -msgid "Save" -msgstr "" - #: ../../include/widgets.php:266 msgid "Remove term" msgstr "" @@ -1112,7 +1509,7 @@ msgid "$Projectname Notification" msgstr "" #: ../../include/enotify.php:59 ../../include/diaspora.php:2461 -#: ../../mod/p.php:46 +#: ../../include/diaspora.php:2472 ../../mod/p.php:46 msgid "$projectname" msgstr "" @@ -1341,7 +1738,7 @@ msgstr "" #: ../../include/contact_selectors.php:79 ../../mod/admin.php:813 #: ../../mod/admin.php:822 ../../mod/id.php:15 ../../mod/id.php:16 -#: ../../boot.php:1542 +#: ../../boot.php:1552 msgid "Email" msgstr "" @@ -1654,7 +2051,7 @@ msgid "Video" msgstr "" #: ../../include/ItemObject.php:680 ../../include/conversation.php:1236 -#: ../../mod/editpost.php:157 ../../mod/mail.php:247 ../../mod/mail.php:361 +#: ../../mod/editpost.php:158 ../../mod/mail.php:247 ../../mod/mail.php:361 msgid "Encrypt text" msgstr "" @@ -1679,353 +2076,7 @@ msgstr "" msgid "$Projectname event notification:" msgstr "" -#: ../../include/text.php:329 -msgid "prev" -msgstr "" - -#: ../../include/text.php:331 -msgid "first" -msgstr "" - -#: ../../include/text.php:360 -msgid "last" -msgstr "" - -#: ../../include/text.php:363 -msgid "next" -msgstr "" - -#: ../../include/text.php:373 -msgid "older" -msgstr "" - -#: ../../include/text.php:375 -msgid "newer" -msgstr "" - -#: ../../include/text.php:768 -msgid "No connections" -msgstr "" - -#: ../../include/text.php:782 -#, php-format -msgid "%d Connection" -msgid_plural "%d Connections" -msgstr[0] "" -msgstr[1] "" - -#: ../../include/text.php:795 ../../mod/viewconnections.php:104 -msgid "View Connections" -msgstr "" - -#: ../../include/text.php:852 ../../include/text.php:864 -#: ../../include/nav.php:165 ../../include/apps.php:147 -#: ../../mod/search.php:38 -msgid "Search" -msgstr "" - -#: ../../include/text.php:928 -msgid "poke" -msgstr "" - -#: ../../include/text.php:928 ../../include/conversation.php:243 -msgid "poked" -msgstr "" - -#: ../../include/text.php:929 -msgid "ping" -msgstr "" - -#: ../../include/text.php:929 -msgid "pinged" -msgstr "" - -#: ../../include/text.php:930 -msgid "prod" -msgstr "" - -#: ../../include/text.php:930 -msgid "prodded" -msgstr "" - -#: ../../include/text.php:931 -msgid "slap" -msgstr "" - -#: ../../include/text.php:931 -msgid "slapped" -msgstr "" - -#: ../../include/text.php:932 -msgid "finger" -msgstr "" - -#: ../../include/text.php:932 -msgid "fingered" -msgstr "" - -#: ../../include/text.php:933 -msgid "rebuff" -msgstr "" - -#: ../../include/text.php:933 -msgid "rebuffed" -msgstr "" - -#: ../../include/text.php:943 -msgid "happy" -msgstr "" - -#: ../../include/text.php:944 -msgid "sad" -msgstr "" - -#: ../../include/text.php:945 -msgid "mellow" -msgstr "" - -#: ../../include/text.php:946 -msgid "tired" -msgstr "" - -#: ../../include/text.php:947 -msgid "perky" -msgstr "" - -#: ../../include/text.php:948 -msgid "angry" -msgstr "" - -#: ../../include/text.php:949 -msgid "stupified" -msgstr "" - -#: ../../include/text.php:950 -msgid "puzzled" -msgstr "" - -#: ../../include/text.php:951 -msgid "interested" -msgstr "" - -#: ../../include/text.php:952 -msgid "bitter" -msgstr "" - -#: ../../include/text.php:953 -msgid "cheerful" -msgstr "" - -#: ../../include/text.php:954 -msgid "alive" -msgstr "" - -#: ../../include/text.php:955 -msgid "annoyed" -msgstr "" - -#: ../../include/text.php:956 -msgid "anxious" -msgstr "" - -#: ../../include/text.php:957 -msgid "cranky" -msgstr "" - -#: ../../include/text.php:958 -msgid "disturbed" -msgstr "" - -#: ../../include/text.php:959 -msgid "frustrated" -msgstr "" - -#: ../../include/text.php:960 -msgid "depressed" -msgstr "" - -#: ../../include/text.php:961 -msgid "motivated" -msgstr "" - -#: ../../include/text.php:962 -msgid "relaxed" -msgstr "" - -#: ../../include/text.php:963 -msgid "surprised" -msgstr "" - -#: ../../include/text.php:1135 -msgid "Monday" -msgstr "" - -#: ../../include/text.php:1135 -msgid "Tuesday" -msgstr "" - -#: ../../include/text.php:1135 -msgid "Wednesday" -msgstr "" - -#: ../../include/text.php:1135 -msgid "Thursday" -msgstr "" - -#: ../../include/text.php:1135 -msgid "Friday" -msgstr "" - -#: ../../include/text.php:1135 -msgid "Saturday" -msgstr "" - -#: ../../include/text.php:1135 -msgid "Sunday" -msgstr "" - -#: ../../include/text.php:1139 -msgid "January" -msgstr "" - -#: ../../include/text.php:1139 -msgid "February" -msgstr "" - -#: ../../include/text.php:1139 -msgid "March" -msgstr "" - -#: ../../include/text.php:1139 -msgid "April" -msgstr "" - -#: ../../include/text.php:1139 -msgid "May" -msgstr "" - -#: ../../include/text.php:1139 -msgid "June" -msgstr "" - -#: ../../include/text.php:1139 -msgid "July" -msgstr "" - -#: ../../include/text.php:1139 -msgid "August" -msgstr "" - -#: ../../include/text.php:1139 -msgid "September" -msgstr "" - -#: ../../include/text.php:1139 -msgid "October" -msgstr "" - -#: ../../include/text.php:1139 -msgid "November" -msgstr "" - -#: ../../include/text.php:1139 -msgid "December" -msgstr "" - -#: ../../include/text.php:1244 -msgid "unknown.???" -msgstr "" - -#: ../../include/text.php:1245 -msgid "bytes" -msgstr "" - -#: ../../include/text.php:1281 -msgid "remove category" -msgstr "" - -#: ../../include/text.php:1356 -msgid "remove from file" -msgstr "" - -#: ../../include/text.php:1436 ../../include/text.php:1447 -#: ../../mod/connedit.php:661 -msgid "Click to open/close" -msgstr "" - -#: ../../include/text.php:1609 ../../mod/events.php:444 -msgid "Link to Source" -msgstr "" - -#: ../../include/text.php:1630 ../../include/text.php:1701 -msgid "default" -msgstr "" - -#: ../../include/text.php:1638 -msgid "Page layout" -msgstr "" - -#: ../../include/text.php:1638 -msgid "You can create your own with the layouts tool" -msgstr "" - -#: ../../include/text.php:1679 -msgid "Page content type" -msgstr "" - -#: ../../include/text.php:1713 -msgid "Select an alternate language" -msgstr "" - -#: ../../include/text.php:1832 ../../include/conversation.php:120 -#: ../../include/diaspora.php:2081 ../../mod/like.php:346 -#: ../../mod/subthread.php:72 ../../mod/subthread.php:174 -#: ../../mod/tagger.php:43 -msgid "photo" -msgstr "" - -#: ../../include/text.php:1835 ../../include/conversation.php:123 -#: ../../mod/like.php:348 ../../mod/tagger.php:47 -msgid "event" -msgstr "" - -#: ../../include/text.php:1838 ../../include/conversation.php:148 -#: ../../include/diaspora.php:2081 ../../mod/like.php:346 -#: ../../mod/subthread.php:72 ../../mod/subthread.php:174 -#: ../../mod/tagger.php:51 -msgid "status" -msgstr "" - -#: ../../include/text.php:1840 ../../include/conversation.php:150 -#: ../../mod/tagger.php:53 -msgid "comment" -msgstr "" - -#: ../../include/text.php:1845 -msgid "activity" -msgstr "" - -#: ../../include/text.php:2140 -msgid "Design Tools" -msgstr "" - -#: ../../include/text.php:2143 ../../mod/blocks.php:146 -msgid "Blocks" -msgstr "" - -#: ../../include/text.php:2144 ../../mod/menu.php:95 -msgid "Menus" -msgstr "" - -#: ../../include/text.php:2145 ../../mod/layouts.php:173 -msgid "Layouts" -msgstr "" - -#: ../../include/text.php:2146 -msgid "Pages" -msgstr "" - -#: ../../include/nav.php:87 ../../include/nav.php:120 ../../boot.php:1539 +#: ../../include/nav.php:87 ../../include/nav.php:120 ../../boot.php:1549 msgid "Logout" msgstr "" @@ -2105,7 +2156,7 @@ msgstr "" msgid "Your webpages" msgstr "" -#: ../../include/nav.php:117 ../../include/apps.php:131 ../../boot.php:1540 +#: ../../include/nav.php:117 ../../include/apps.php:131 ../../boot.php:1550 msgid "Login" msgstr "" @@ -2130,7 +2181,7 @@ msgstr "" msgid "Home Page" msgstr "" -#: ../../include/nav.php:155 ../../mod/register.php:224 ../../boot.php:1516 +#: ../../include/nav.php:155 ../../mod/register.php:224 ../../boot.php:1526 msgid "Register" msgstr "" @@ -2139,7 +2190,7 @@ msgid "Create an account" msgstr "" #: ../../include/nav.php:160 ../../include/apps.php:142 ../../mod/help.php:67 -#: ../../mod/help.php:72 ../../mod/layouts.php:175 +#: ../../mod/help.php:72 ../../mod/layouts.php:176 msgid "Help" msgstr "" @@ -2343,56 +2394,56 @@ msgstr "" msgid "Permission denied" msgstr "" -#: ../../include/items.php:1012 ../../include/items.php:1058 +#: ../../include/items.php:1020 ../../include/items.php:1066 msgid "(Unknown)" msgstr "" -#: ../../include/items.php:1226 +#: ../../include/items.php:1234 msgid "Visible to anybody on the internet." msgstr "" -#: ../../include/items.php:1228 +#: ../../include/items.php:1236 msgid "Visible to you only." msgstr "" -#: ../../include/items.php:1230 +#: ../../include/items.php:1238 msgid "Visible to anybody in this network." msgstr "" -#: ../../include/items.php:1232 +#: ../../include/items.php:1240 msgid "Visible to anybody authenticated." msgstr "" -#: ../../include/items.php:1234 +#: ../../include/items.php:1242 #, php-format msgid "Visible to anybody on %s." msgstr "" -#: ../../include/items.php:1236 +#: ../../include/items.php:1244 msgid "Visible to all connections." msgstr "" -#: ../../include/items.php:1238 +#: ../../include/items.php:1246 msgid "Visible to approved connections." msgstr "" -#: ../../include/items.php:1240 +#: ../../include/items.php:1248 msgid "Visible to specific connections." msgstr "" -#: ../../include/items.php:4051 ../../mod/thing.php:74 +#: ../../include/items.php:4060 ../../mod/thing.php:74 #: ../../mod/display.php:36 ../../mod/filestorage.php:27 #: ../../mod/viewsrc.php:20 ../../mod/admin.php:167 ../../mod/admin.php:984 #: ../../mod/admin.php:1184 msgid "Item not found." msgstr "" -#: ../../include/items.php:4124 ../../include/photos.php:26 -#: ../../include/attach.php:136 ../../include/attach.php:183 -#: ../../include/attach.php:246 ../../include/attach.php:260 -#: ../../include/attach.php:304 ../../include/attach.php:318 -#: ../../include/attach.php:343 ../../include/attach.php:539 -#: ../../include/attach.php:611 ../../include/chat.php:131 +#: ../../include/items.php:4133 ../../include/photos.php:26 +#: ../../include/attach.php:137 ../../include/attach.php:184 +#: ../../include/attach.php:247 ../../include/attach.php:261 +#: ../../include/attach.php:305 ../../include/attach.php:319 +#: ../../include/attach.php:350 ../../include/attach.php:546 +#: ../../include/attach.php:618 ../../include/chat.php:131 #: ../../mod/profile.php:64 ../../mod/profile.php:72 #: ../../mod/achievements.php:30 ../../mod/manage.php:6 #: ../../mod/settings.php:569 ../../mod/api.php:26 ../../mod/api.php:31 @@ -2416,7 +2467,7 @@ msgstr "" #: ../../mod/profiles.php:576 ../../mod/viewsrc.php:14 #: ../../mod/viewconnections.php:22 ../../mod/viewconnections.php:27 #: ../../mod/editblock.php:65 ../../mod/register.php:72 ../../mod/item.php:206 -#: ../../mod/item.php:214 ../../mod/item.php:962 ../../mod/layouts.php:69 +#: ../../mod/item.php:214 ../../mod/item.php:974 ../../mod/layouts.php:69 #: ../../mod/layouts.php:76 ../../mod/layouts.php:87 ../../mod/id.php:71 #: ../../mod/message.php:16 ../../mod/mitem.php:115 ../../mod/mood.php:111 #: ../../mod/connedit.php:331 ../../mod/mail.php:114 @@ -2430,29 +2481,35 @@ msgstr "" msgid "Permission denied." msgstr "" -#: ../../include/items.php:4524 ../../mod/group.php:38 ../../mod/group.php:140 +#: ../../include/items.php:4537 ../../mod/group.php:38 ../../mod/group.php:140 #: ../../mod/bulksetclose.php:51 msgid "Collection not found." msgstr "" -#: ../../include/items.php:4540 +#: ../../include/items.php:4553 msgid "Collection is empty." msgstr "" -#: ../../include/items.php:4547 +#: ../../include/items.php:4560 #, php-format msgid "Collection: %s" msgstr "" -#: ../../include/items.php:4557 +#: ../../include/items.php:4570 #, php-format msgid "Connection: %s" msgstr "" -#: ../../include/items.php:4559 +#: ../../include/items.php:4572 msgid "Connection not found." msgstr "" +#: ../../include/security.php:349 +msgid "" +"The form security token was not correct. This probably happened because the " +"form has been opened for too long (>3 hours) before submitting it." +msgstr "" + #: ../../include/permissions.php:26 msgid "Can view my normal stream and posts" msgstr "" @@ -2541,52 +2598,52 @@ msgstr "" msgid "Extremely advanced. Leave this alone unless you know what you are doing" msgstr "" -#: ../../include/permissions.php:809 +#: ../../include/permissions.php:893 msgid "Social Networking" msgstr "" -#: ../../include/permissions.php:809 ../../include/permissions.php:810 -#: ../../include/permissions.php:811 +#: ../../include/permissions.php:893 ../../include/permissions.php:894 +#: ../../include/permissions.php:895 msgid "Mostly Public" msgstr "" -#: ../../include/permissions.php:809 ../../include/permissions.php:810 -#: ../../include/permissions.php:811 +#: ../../include/permissions.php:893 ../../include/permissions.php:894 +#: ../../include/permissions.php:895 msgid "Restricted" msgstr "" -#: ../../include/permissions.php:809 ../../include/permissions.php:810 +#: ../../include/permissions.php:893 ../../include/permissions.php:894 msgid "Private" msgstr "" -#: ../../include/permissions.php:810 +#: ../../include/permissions.php:894 msgid "Community Forum" msgstr "" -#: ../../include/permissions.php:811 +#: ../../include/permissions.php:895 msgid "Feed Republish" msgstr "" -#: ../../include/permissions.php:812 +#: ../../include/permissions.php:896 msgid "Special Purpose" msgstr "" -#: ../../include/permissions.php:812 +#: ../../include/permissions.php:896 msgid "Celebrity/Soapbox" msgstr "" -#: ../../include/permissions.php:812 +#: ../../include/permissions.php:896 msgid "Group Repository" msgstr "" -#: ../../include/permissions.php:813 ../../include/profile_selectors.php:6 +#: ../../include/permissions.php:897 ../../include/profile_selectors.php:6 #: ../../include/profile_selectors.php:23 #: ../../include/profile_selectors.php:61 #: ../../include/profile_selectors.php:97 msgid "Other" msgstr "" -#: ../../include/permissions.php:813 +#: ../../include/permissions.php:897 msgid "Custom/Expert Mode" msgstr "" @@ -2798,7 +2855,7 @@ msgid "Expires YYYY-MM-DD HH:MM" msgstr "" #: ../../include/conversation.php:1174 ../../mod/webpages.php:181 -#: ../../mod/blocks.php:153 ../../mod/photos.php:949 ../../mod/layouts.php:183 +#: ../../mod/blocks.php:154 ../../mod/photos.php:949 ../../mod/layouts.php:184 msgid "Share" msgstr "" @@ -2881,12 +2938,12 @@ msgid "clear location" msgstr "" #: ../../include/conversation.php:1204 ../../mod/editwebpage.php:207 -#: ../../mod/editpost.php:141 ../../mod/editblock.php:167 +#: ../../mod/editpost.php:142 ../../mod/editblock.php:167 msgid "Title (optional)" msgstr "" #: ../../include/conversation.php:1208 ../../mod/editlayout.php:168 -#: ../../mod/editwebpage.php:209 ../../mod/editpost.php:143 +#: ../../mod/editwebpage.php:209 ../../mod/editpost.php:144 #: ../../mod/editblock.php:170 msgid "Categories (optional, comma-separated list)" msgstr "" @@ -2902,32 +2959,32 @@ msgid "permissions" msgstr "" #: ../../include/conversation.php:1219 ../../mod/editlayout.php:161 -#: ../../mod/editwebpage.php:202 ../../mod/editpost.php:138 +#: ../../mod/editwebpage.php:202 ../../mod/editpost.php:139 #: ../../mod/editblock.php:164 msgid "Public post" msgstr "" #: ../../include/conversation.php:1221 ../../mod/editlayout.php:169 -#: ../../mod/editwebpage.php:210 ../../mod/editpost.php:144 +#: ../../mod/editwebpage.php:210 ../../mod/editpost.php:145 #: ../../mod/editblock.php:171 msgid "Example: bob@example.com, mary@example.com" msgstr "" #: ../../include/conversation.php:1234 ../../mod/editlayout.php:178 -#: ../../mod/editwebpage.php:219 ../../mod/editpost.php:155 +#: ../../mod/editwebpage.php:219 ../../mod/editpost.php:156 #: ../../mod/editblock.php:181 ../../mod/mail.php:245 ../../mod/mail.php:359 msgid "Set expiration date" msgstr "" #: ../../include/conversation.php:1238 ../../mod/events.php:637 -#: ../../mod/editpost.php:159 +#: ../../mod/editpost.php:160 msgid "OK" msgstr "" #: ../../include/conversation.php:1239 ../../mod/settings.php:588 #: ../../mod/settings.php:614 ../../mod/tagrm.php:11 ../../mod/tagrm.php:134 #: ../../mod/events.php:636 ../../mod/fbrowser.php:82 -#: ../../mod/fbrowser.php:117 ../../mod/editpost.php:160 +#: ../../mod/fbrowser.php:117 ../../mod/editpost.php:161 msgid "Cancel" msgstr "" @@ -3062,49 +3119,6 @@ msgid_plural "Abstains" msgstr[0] "" msgstr[1] "" -#: ../../include/bbcode.php:122 ../../include/bbcode.php:743 -#: ../../include/bbcode.php:746 ../../include/bbcode.php:751 -#: ../../include/bbcode.php:754 ../../include/bbcode.php:757 -#: ../../include/bbcode.php:760 ../../include/bbcode.php:765 -#: ../../include/bbcode.php:768 ../../include/bbcode.php:773 -#: ../../include/bbcode.php:776 ../../include/bbcode.php:779 -#: ../../include/bbcode.php:782 -msgid "Image/photo" -msgstr "" - -#: ../../include/bbcode.php:161 ../../include/bbcode.php:793 -msgid "Encrypted content" -msgstr "" - -#: ../../include/bbcode.php:177 -msgid "Install design element: " -msgstr "" - -#: ../../include/bbcode.php:190 -msgid "QR code" -msgstr "" - -#: ../../include/bbcode.php:241 -#, php-format -msgid "%1$s wrote the following %2$s %3$s" -msgstr "" - -#: ../../include/bbcode.php:243 -msgid "post" -msgstr "" - -#: ../../include/bbcode.php:493 -msgid "Different viewers will see this text differently" -msgstr "" - -#: ../../include/bbcode.php:704 -msgid "$1 spoiler" -msgstr "" - -#: ../../include/bbcode.php:731 -msgid "$1 wrote:" -msgstr "" - #: ../../include/photos.php:94 #, php-format msgid "Image exceeds website size limit of %lu bytes" @@ -3237,61 +3251,61 @@ msgstr "" msgid "Permissions" msgstr "" -#: ../../include/attach.php:241 ../../include/attach.php:299 +#: ../../include/attach.php:242 ../../include/attach.php:300 msgid "Item was not found." msgstr "" -#: ../../include/attach.php:356 +#: ../../include/attach.php:363 msgid "No source file." msgstr "" -#: ../../include/attach.php:374 +#: ../../include/attach.php:381 msgid "Cannot locate file to replace" msgstr "" -#: ../../include/attach.php:392 +#: ../../include/attach.php:399 msgid "Cannot locate file to revise/update" msgstr "" -#: ../../include/attach.php:403 +#: ../../include/attach.php:410 #, php-format msgid "File exceeds size limit of %d" msgstr "" -#: ../../include/attach.php:415 +#: ../../include/attach.php:422 #, php-format msgid "You have reached your limit of %1$.0f Mbytes attachment storage." msgstr "" -#: ../../include/attach.php:498 +#: ../../include/attach.php:505 msgid "File upload failed. Possible system limit or action terminated." msgstr "" -#: ../../include/attach.php:510 +#: ../../include/attach.php:517 msgid "Stored file could not be verified. Upload failed." msgstr "" -#: ../../include/attach.php:554 ../../include/attach.php:571 +#: ../../include/attach.php:561 ../../include/attach.php:578 msgid "Path not available." msgstr "" -#: ../../include/attach.php:616 +#: ../../include/attach.php:623 msgid "Empty pathname" msgstr "" -#: ../../include/attach.php:632 +#: ../../include/attach.php:639 msgid "duplicate filename or path" msgstr "" -#: ../../include/attach.php:656 +#: ../../include/attach.php:663 msgid "Path not found." msgstr "" -#: ../../include/attach.php:707 +#: ../../include/attach.php:714 msgid "mkdir failed." msgstr "" -#: ../../include/attach.php:711 +#: ../../include/attach.php:718 msgid "database storage failed." msgstr "" @@ -3864,10 +3878,6 @@ msgstr "" msgid "Abstain" msgstr "" -#: ../../include/diaspora.php:2472 -msgid "projectname" -msgstr "" - #: ../../mod/achievements.php:34 msgid "Some blurb about what to do when you're new here" msgstr "" @@ -3959,7 +3969,7 @@ msgstr "" #: ../../mod/menu.php:88 ../../mod/filestorage.php:151 #: ../../mod/filestorage.php:159 ../../mod/admin.php:424 #: ../../mod/removeme.php:60 ../../view/theme/redbasic/php/config.php:102 -#: ../../view/theme/redbasic/php/config.php:127 ../../boot.php:1544 +#: ../../view/theme/redbasic/php/config.php:127 ../../boot.php:1554 msgid "No" msgstr "" @@ -3967,7 +3977,7 @@ msgstr "" #: ../../mod/menu.php:88 ../../mod/filestorage.php:151 #: ../../mod/filestorage.php:159 ../../mod/admin.php:426 #: ../../mod/removeme.php:60 ../../view/theme/redbasic/php/config.php:102 -#: ../../view/theme/redbasic/php/config.php:127 ../../boot.php:1544 +#: ../../view/theme/redbasic/php/config.php:127 ../../boot.php:1554 msgid "Yes" msgstr "" @@ -5583,11 +5593,11 @@ msgstr "" msgid "Finding: " msgstr "" -#: ../../mod/blocks.php:95 ../../mod/blocks.php:147 +#: ../../mod/blocks.php:95 ../../mod/blocks.php:148 msgid "Block Name" msgstr "" -#: ../../mod/blocks.php:148 +#: ../../mod/blocks.php:149 msgid "Block Title" msgstr "" @@ -5953,7 +5963,7 @@ msgid "Layout Description (Optional)" msgstr "" #: ../../mod/editlayout.php:166 ../../mod/layouts.php:121 -#: ../../mod/layouts.php:178 +#: ../../mod/layouts.php:179 msgid "Layout Name" msgstr "" @@ -6038,7 +6048,7 @@ msgid "" "Password reset failed." msgstr "" -#: ../../mod/lostpass.php:85 ../../boot.php:1548 +#: ../../mod/lostpass.php:85 ../../boot.php:1558 msgid "Password Reset" msgstr "" @@ -6469,21 +6479,14 @@ msgstr "" msgid "Visible To" msgstr "" -#: ../../mod/impel.php:33 -msgid "webpage" -msgstr "" - -#: ../../mod/impel.php:38 -msgid "block" -msgstr "" - -#: ../../mod/impel.php:43 -msgid "layout" +#: ../../mod/impel.php:121 +#, php-format +msgid "%s element installed" msgstr "" -#: ../../mod/impel.php:117 +#: ../../mod/impel.php:124 #, php-format -msgid "%s element installed" +msgid "%s element installation failed" msgstr "" #: ../../mod/profiles.php:18 ../../mod/profiles.php:174 @@ -7740,28 +7743,28 @@ msgstr "" msgid "Unable to locate original post." msgstr "" -#: ../../mod/item.php:437 +#: ../../mod/item.php:440 msgid "Empty post discarded." msgstr "" -#: ../../mod/item.php:479 +#: ../../mod/item.php:480 msgid "Executable content type not permitted to this channel." msgstr "" -#: ../../mod/item.php:885 +#: ../../mod/item.php:897 msgid "System error. Post not saved." msgstr "" -#: ../../mod/item.php:1103 +#: ../../mod/item.php:1115 msgid "Unable to obtain post information from database." msgstr "" -#: ../../mod/item.php:1110 +#: ../../mod/item.php:1122 #, php-format msgid "You have reached your limit of %1$.0f top level posts." msgstr "" -#: ../../mod/item.php:1117 +#: ../../mod/item.php:1129 #, php-format msgid "You have reached your limit of %1$.0f webpages." msgstr "" @@ -7780,15 +7783,15 @@ msgstr "" msgid "Visible to:" msgstr "" -#: ../../mod/layouts.php:175 +#: ../../mod/layouts.php:176 msgid "Comanche page description language help" msgstr "" -#: ../../mod/layouts.php:179 +#: ../../mod/layouts.php:180 msgid "Layout Description" msgstr "" -#: ../../mod/layouts.php:184 +#: ../../mod/layouts.php:185 msgid "Download PDL file" msgstr "" @@ -8902,51 +8905,51 @@ msgstr "" msgid "Set size of followup author photos" msgstr "" -#: ../../boot.php:1345 +#: ../../boot.php:1355 #, php-format msgid "Update %s failed. See error logs." msgstr "" -#: ../../boot.php:1348 +#: ../../boot.php:1358 #, php-format msgid "Update Error at %s" msgstr "" -#: ../../boot.php:1515 +#: ../../boot.php:1525 msgid "" "Create an account to access services and applications within the Hubzilla" msgstr "" -#: ../../boot.php:1543 +#: ../../boot.php:1553 msgid "Password" msgstr "" -#: ../../boot.php:1544 +#: ../../boot.php:1554 msgid "Remember me" msgstr "" -#: ../../boot.php:1547 +#: ../../boot.php:1557 msgid "Forgot your password?" msgstr "" -#: ../../boot.php:2166 +#: ../../boot.php:2178 msgid "toggle mobile" msgstr "" -#: ../../boot.php:2301 +#: ../../boot.php:2313 msgid "Website SSL certificate is not valid. Please correct." msgstr "" -#: ../../boot.php:2304 +#: ../../boot.php:2316 #, php-format msgid "[red] Website SSL error for %s" msgstr "" -#: ../../boot.php:2341 +#: ../../boot.php:2353 msgid "Cron/Scheduled tasks not running." msgstr "" -#: ../../boot.php:2345 +#: ../../boot.php:2357 #, php-format msgid "[red] Cron tasks not running on %s" msgstr "" diff --git a/version.inc b/version.inc index cae357807..889588612 100644 --- a/version.inc +++ b/version.inc @@ -1 +1 @@ -2015-05-21.1039 +2015-05-23.1041 |