├── contributors.txt ├── .DS_Store ├── cursor.png ├── screenshot.png ├── font ├── Climacons.ttf ├── climacons-webfont.eot ├── climacons-webfont.ttf └── climacons-webfont.woff ├── lib ├── the-clock.zip ├── the-tweets.zip ├── the-weather.zip ├── post-details.zip └── tgm │ └── composer.json ├── login_page_logo.png ├── javascripts ├── vendor │ ├── app-ck.js │ ├── app.js │ └── custom.modernizr.js └── foundation │ ├── foundation.alerts.js │ ├── foundation.cookie.js │ ├── foundation.dropdown.js │ ├── foundation.magellan.js │ ├── foundation.placeholder.js │ ├── foundation.orbit-ck.js │ ├── foundation.tooltips.js │ ├── foundation.topbar.js │ ├── foundation.reveal.js │ ├── foundation.js │ ├── foundation.section.js │ ├── foundation.orbit.js │ └── foundation.clearing.js ├── robots.txt ├── humans.txt ├── style.css ├── templates ├── full-page.php └── sidebar-left.php ├── README.md ├── .gitignore ├── page.php ├── sidebar.php ├── sass ├── _path.scss ├── _mixins.scss ├── font-awesome.scss ├── _bootstrap.scss ├── _extras.scss ├── _core.scss ├── _fonts.scss ├── app.scss ├── _variables.scss └── _icons.scss ├── config.rb ├── header.php ├── footer.php ├── index.php ├── inc └── shortcodes.php └── stylesheets └── normalize.css /contributors.txt: -------------------------------------------------------------------------------- 1 | Nate Jones 2 | -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/natejones/wpds/HEAD/.DS_Store -------------------------------------------------------------------------------- /cursor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/natejones/wpds/HEAD/cursor.png -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/natejones/wpds/HEAD/screenshot.png -------------------------------------------------------------------------------- /font/Climacons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/natejones/wpds/HEAD/font/Climacons.ttf -------------------------------------------------------------------------------- /lib/the-clock.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/natejones/wpds/HEAD/lib/the-clock.zip -------------------------------------------------------------------------------- /lib/the-tweets.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/natejones/wpds/HEAD/lib/the-tweets.zip -------------------------------------------------------------------------------- /lib/the-weather.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/natejones/wpds/HEAD/lib/the-weather.zip -------------------------------------------------------------------------------- /login_page_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/natejones/wpds/HEAD/login_page_logo.png -------------------------------------------------------------------------------- /lib/post-details.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/natejones/wpds/HEAD/lib/post-details.zip -------------------------------------------------------------------------------- /font/climacons-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/natejones/wpds/HEAD/font/climacons-webfont.eot -------------------------------------------------------------------------------- /font/climacons-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/natejones/wpds/HEAD/font/climacons-webfont.ttf -------------------------------------------------------------------------------- /font/climacons-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/natejones/wpds/HEAD/font/climacons-webfont.woff -------------------------------------------------------------------------------- /javascripts/vendor/app-ck.js: -------------------------------------------------------------------------------- 1 | jQuery(document).ready(function(e){window.setTimeout("location.reload(true)",3e5)}); -------------------------------------------------------------------------------- /robots.txt: -------------------------------------------------------------------------------- 1 | # www.robotstxt.org/ 2 | # www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449 3 | 4 | User-agent: * -------------------------------------------------------------------------------- /javascripts/vendor/app.js: -------------------------------------------------------------------------------- 1 | jQuery(document).ready(function ($) { 2 | 3 | /* REFRESH PAGE EVERY FIVE MINUTES ----*/ 4 | window.setTimeout('location.reload(true)', 300000); 5 | /* /REFRESH PAGE EVERY FIVE MINUTES ---- */ 6 | 7 | }); 8 | -------------------------------------------------------------------------------- /humans.txt: -------------------------------------------------------------------------------- 1 | /* Foundation was made by ZURB, an interaction design and design strategy firm in Campbell, CA */ 2 | /* zurb.com */ 3 | /* humanstxt.org */ 4 | 5 | /* SITE */ 6 | Standards: HTML5, CSS3 7 | Components: jQuery, Orbit, Reveal 8 | Software: Coda, Textmate, Git -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | /*! 2 | Theme Name: Digital Signage 3 | Theme URI: http://pixelydo.com/flatscreens 4 | Author: Nate Jones 5 | Author URI: http://pixelydo.com 6 | Version: 3.0 7 | License: GNU General Public License v2 or later 8 | License URI: http://www.gnu.org/licenses/gpl-3.0.txt 9 | Tags: signage, digital signage, kiosk, carousel, slider, foundation, responsive 10 | 11 | */ 12 | 13 | @import url('stylesheets/app.css'); -------------------------------------------------------------------------------- /templates/full-page.php: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | -------------------------------------------------------------------------------- /templates/sidebar-left.php: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ##Digital Signage Wordpress Theme using Zurb's Foundation 4. 2 | 3 | This work is licensed under a [GNU General Public License v3.0](http://www.gnu.org/licenses/gpl-3.0.txt). 4 | 5 | I really want to see a picture of this being used. Seriously. Please take a quick picture with your phone and tweet it to me [@natejones](https://twitter.com/natejones), or email [nate@pixelydo.com](mailto:nate@pixelydo.com). 6 | 7 | 8 | ##Widgets 9 | You will be prompted to install the plugins for the information dock widgets. After installation, drag the widgets to into the sidebar in whatever order you would like them to appear. -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled source # 2 | ################### 3 | *.com 4 | *.class 5 | *.dll 6 | *.exe 7 | *.o 8 | *.so 9 | 10 | # Packages # 11 | ############ 12 | # it's better to unpack these files and commit the raw source 13 | # git has its own built in compression methods 14 | *.7z 15 | *.dmg 16 | *.gz 17 | *.iso 18 | *.jar 19 | *.rar 20 | *.tar 21 | 22 | # Logs and databases # 23 | ###################### 24 | *.log 25 | *.sql 26 | *.sqlite 27 | 28 | # OS generated files # 29 | ###################### 30 | .DS_Store 31 | .DS_Store? 32 | ._* 33 | .Spotlight-V100 34 | .Trashes 35 | Icon? 36 | ehthumbs.db 37 | Thumbs.db 38 | 39 | .sass-cache 40 | -------------------------------------------------------------------------------- /page.php: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /sidebar.php: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | 24 | -------------------------------------------------------------------------------- /sass/_path.scss: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('#{$FontAwesomePath}/fontawesome-webfont.eot?v=#{$FontAwesomeVersion}'); 7 | src: url('#{$FontAwesomePath}/fontawesome-webfont.eot?#iefix&v=#{$FontAwesomeVersion}') format('embedded-opentype'), 8 | url('#{$FontAwesomePath}/fontawesome-webfont.woff?v=#{$FontAwesomeVersion}') format('woff'), 9 | url('#{$FontAwesomePath}/fontawesome-webfont.ttf?v=#{$FontAwesomeVersion}') format('truetype'), 10 | url('#{$FontAwesomePath}/fontawesome-webfont.svg#fontawesomeregular?v=#{$FontAwesomeVersion}') format('svg'); 11 | // src: url('#{$FontAwesomePath}/FontAwesome.otf') format('opentype'); // used when developing fonts 12 | font-weight: normal; 13 | font-style: normal; 14 | } 15 | -------------------------------------------------------------------------------- /config.rb: -------------------------------------------------------------------------------- 1 | require 'zurb-foundation' 2 | # Require any additional compass plugins here. 3 | 4 | 5 | # Set this to the root of your project when deployed: 6 | http_path = "/" 7 | css_dir = "stylesheets" 8 | sass_dir = "sass" 9 | images_dir = "images" 10 | javascripts_dir = "javascripts" 11 | 12 | 13 | # You can select your preferred output style here (can be overridden via the command line): 14 | # output_style = :expanded or :nested or :compact or :compressed 15 | 16 | # To enable relative paths to assets via compass helper functions. Uncomment: 17 | # relative_assets = true 18 | 19 | # To disable debugging comments that display the original location of your selectors. Uncomment: 20 | # line_comments = false 21 | 22 | 23 | # If you prefer the indented syntax, you might want to regenerate this 24 | # project again passing --syntax sass, or you can uncomment this: 25 | # preferred_syntax = :sass 26 | # and then run: 27 | # sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass 28 | -------------------------------------------------------------------------------- /lib/tgm/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tgm/plugin-activation", 3 | "description": "TGM Plugin Activation is a PHP library that allows you to easily require or recommend plugins for your WordPress themes (and plugins).", 4 | "homepage": "http://tgmpluginactivation.com", 5 | "keywords": ["wordpress","plugins", "theme", "library", "activation"], 6 | "license": "GPL-2.0+", 7 | "authors": [ 8 | { 9 | "name": "Thomas Griffin", 10 | "homepage": "http://thomasgriffinmedia.com", 11 | "role": "Developer" 12 | }, 13 | { 14 | "name": "Gary Jones", 15 | "homepage": "https://github.com/GaryJones", 16 | "role": "Developer" 17 | } 18 | ], 19 | "support": { 20 | "issues": "https://github.com/thomasgriffin/TGM-Plugin-Activation/issues", 21 | "source": "https://github.com/thomasgriffin/TGM-Plugin-Activation" 22 | }, 23 | "require": { 24 | "php": ">=5.2" 25 | }, 26 | "autoload": { 27 | "files": ["class-tgm-plugin-activation.php"] 28 | } 29 | } -------------------------------------------------------------------------------- /header.php: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | <?php bloginfo('name'); ?> 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | <?php wp_title(); ?> 31 | 32 | 33 | 34 | 35 | 36 | > 37 |
12 |
13 |
14 | 15 | 16 |
17 | 18 | 19 |
20 | 21 | 22 | 23 | 28 | 29 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /javascripts/foundation/foundation.cookie.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery Cookie Plugin v1.3 3 | * https://github.com/carhartl/jquery-cookie 4 | * 5 | * Copyright 2011, Klaus Hartl 6 | * Dual licensed under the MIT or GPL Version 2 licenses. 7 | * http://www.opensource.org/licenses/mit-license.php 8 | * http://www.opensource.org/licenses/GPL-2.0 9 | * 10 | * Modified to work with Zepto.js by ZURB 11 | */ 12 | (function ($, document, undefined) { 13 | 14 | var pluses = /\+/g; 15 | 16 | function raw(s) { 17 | return s; 18 | } 19 | 20 | function decoded(s) { 21 | return decodeURIComponent(s.replace(pluses, ' ')); 22 | } 23 | 24 | var config = $.cookie = function (key, value, options) { 25 | 26 | // write 27 | if (value !== undefined) { 28 | options = $.extend({}, config.defaults, options); 29 | 30 | if (value === null) { 31 | options.expires = -1; 32 | } 33 | 34 | if (typeof options.expires === 'number') { 35 | var days = options.expires, t = options.expires = new Date(); 36 | t.setDate(t.getDate() + days); 37 | } 38 | 39 | value = config.json ? JSON.stringify(value) : String(value); 40 | 41 | return (document.cookie = [ 42 | encodeURIComponent(key), '=', config.raw ? value : encodeURIComponent(value), 43 | options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE 44 | options.path ? '; path=' + options.path : '', 45 | options.domain ? '; domain=' + options.domain : '', 46 | options.secure ? '; secure' : '' 47 | ].join('')); 48 | } 49 | 50 | // read 51 | var decode = config.raw ? raw : decoded; 52 | var cookies = document.cookie.split('; '); 53 | for (var i = 0, l = cookies.length; i < l; i++) { 54 | var parts = cookies[i].split('='); 55 | if (decode(parts.shift()) === key) { 56 | var cookie = decode(parts.join('=')); 57 | return config.json ? JSON.parse(cookie) : cookie; 58 | } 59 | } 60 | 61 | return null; 62 | }; 63 | 64 | config.defaults = {}; 65 | 66 | $.removeCookie = function (key, options) { 67 | if ($.cookie(key) !== null) { 68 | $.cookie(key, null, options); 69 | return true; 70 | } 71 | return false; 72 | }; 73 | 74 | })(Foundation.zj, document); -------------------------------------------------------------------------------- /sass/_bootstrap.scss: -------------------------------------------------------------------------------- 1 | /* BOOTSTRAP SPECIFIC CLASSES 2 | * -------------------------- */ 3 | 4 | /* Bootstrap 2.0 sprites.less reset */ 5 | [class^="icon-"], 6 | [class*=" icon-"] { 7 | display: inline; 8 | width: auto; 9 | height: auto; 10 | line-height: normal; 11 | vertical-align: baseline; 12 | background-image: none; 13 | background-position: 0% 0%; 14 | background-repeat: repeat; 15 | margin-top: 0; 16 | } 17 | 18 | /* more sprites.less reset */ 19 | .icon-white, 20 | .nav-pills > .active > a > [class^="icon-"], 21 | .nav-pills > .active > a > [class*=" icon-"], 22 | .nav-list > .active > a > [class^="icon-"], 23 | .nav-list > .active > a > [class*=" icon-"], 24 | .navbar-inverse .nav > .active > a > [class^="icon-"], 25 | .navbar-inverse .nav > .active > a > [class*=" icon-"], 26 | .dropdown-menu > li > a:hover > [class^="icon-"], 27 | .dropdown-menu > li > a:hover > [class*=" icon-"], 28 | .dropdown-menu > .active > a > [class^="icon-"], 29 | .dropdown-menu > .active > a > [class*=" icon-"], 30 | .dropdown-submenu:hover > a > [class^="icon-"], 31 | .dropdown-submenu:hover > a > [class*=" icon-"] { 32 | background-image: none; 33 | } 34 | 35 | 36 | /* keeps Bootstrap styles with and without icons the same */ 37 | .btn, .nav { 38 | [class^="icon-"], 39 | [class*=" icon-"] { 40 | // display: inline; 41 | &.icon-large { line-height: .9em; } 42 | &.icon-spin { display: inline-block; } 43 | } 44 | } 45 | .nav-tabs, .nav-pills { 46 | [class^="icon-"], 47 | [class*=" icon-"] { 48 | &, &.icon-large { line-height: .9em; } 49 | } 50 | } 51 | .btn { 52 | [class^="icon-"], 53 | [class*=" icon-"] { 54 | &.pull-left, &.pull-right { 55 | &.icon-2x { margin-top: .18em; } 56 | } 57 | &.icon-spin.icon-large { line-height: .8em; } 58 | } 59 | } 60 | .btn.btn-small { 61 | [class^="icon-"], 62 | [class*=" icon-"] { 63 | &.pull-left, &.pull-right { 64 | &.icon-2x { margin-top: .25em; } 65 | } 66 | } 67 | } 68 | .btn.btn-large { 69 | [class^="icon-"], 70 | [class*=" icon-"] { 71 | margin-top: 0; // overrides bootstrap default 72 | &.pull-left, &.pull-right { 73 | &.icon-2x { margin-top: .05em; } 74 | } 75 | &.pull-left.icon-2x { margin-right: .2em; } 76 | &.pull-right.icon-2x { margin-left: .2em; } 77 | } 78 | } 79 | 80 | /* Fixes alignment in nav lists */ 81 | .nav-list [class^="icon-"], 82 | .nav-list [class*=" icon-"] { 83 | line-height: inherit; 84 | } 85 | -------------------------------------------------------------------------------- /sass/_extras.scss: -------------------------------------------------------------------------------- 1 | /* EXTRAS 2 | * -------------------------- */ 3 | 4 | /* Stacked and layered icon */ 5 | @include icon-stack(); 6 | 7 | /* Animated rotating icon */ 8 | .icon-spin { 9 | display: inline-block; 10 | -moz-animation: spin 2s infinite linear; 11 | -o-animation: spin 2s infinite linear; 12 | -webkit-animation: spin 2s infinite linear; 13 | animation: spin 2s infinite linear; 14 | } 15 | 16 | /* Prevent stack and spinners from being taken inline when inside a link */ 17 | a .icon-stack, 18 | a .icon-spin { 19 | display: inline-block; 20 | text-decoration: none; 21 | } 22 | 23 | @-moz-keyframes spin { 24 | 0% { -moz-transform: rotate(0deg); } 25 | 100% { -moz-transform: rotate(359deg); } 26 | } 27 | @-webkit-keyframes spin { 28 | 0% { -webkit-transform: rotate(0deg); } 29 | 100% { -webkit-transform: rotate(359deg); } 30 | } 31 | @-o-keyframes spin { 32 | 0% { -o-transform: rotate(0deg); } 33 | 100% { -o-transform: rotate(359deg); } 34 | } 35 | @-ms-keyframes spin { 36 | 0% { -ms-transform: rotate(0deg); } 37 | 100% { -ms-transform: rotate(359deg); } 38 | } 39 | @keyframes spin { 40 | 0% { transform: rotate(0deg); } 41 | 100% { transform: rotate(359deg); } 42 | } 43 | 44 | /* Icon rotations and mirroring */ 45 | .icon-rotate-90:before { 46 | -webkit-transform: rotate(90deg); 47 | -moz-transform: rotate(90deg); 48 | -ms-transform: rotate(90deg); 49 | -o-transform: rotate(90deg); 50 | transform: rotate(90deg); 51 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); 52 | } 53 | 54 | .icon-rotate-180:before { 55 | -webkit-transform: rotate(180deg); 56 | -moz-transform: rotate(180deg); 57 | -ms-transform: rotate(180deg); 58 | -o-transform: rotate(180deg); 59 | transform: rotate(180deg); 60 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); 61 | } 62 | 63 | .icon-rotate-270:before { 64 | -webkit-transform: rotate(270deg); 65 | -moz-transform: rotate(270deg); 66 | -ms-transform: rotate(270deg); 67 | -o-transform: rotate(270deg); 68 | transform: rotate(270deg); 69 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); 70 | } 71 | 72 | .icon-flip-horizontal:before { 73 | -webkit-transform: scale(-1, 1); 74 | -moz-transform: scale(-1, 1); 75 | -ms-transform: scale(-1, 1); 76 | -o-transform: scale(-1, 1); 77 | transform: scale(-1, 1); 78 | } 79 | 80 | .icon-flip-vertical:before { 81 | -webkit-transform: scale(1, -1); 82 | -moz-transform: scale(1, -1); 83 | -ms-transform: scale(1, -1); 84 | -o-transform: scale(1, -1); 85 | transform: scale(1, -1); 86 | } 87 | 88 | /* ensure rotation occurs inside anchor tags */ 89 | a { 90 | .icon-rotate-90, .icon-rotate-180, .icon-rotate-270, .icon-flip-horizontal, .icon-flip-vertical { 91 | &:before { display: inline-block; } 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /sass/_core.scss: -------------------------------------------------------------------------------- 1 | /* FONT AWESOME CORE 2 | * -------------------------- */ 3 | 4 | [class^="icon-"], 5 | [class*=" icon-"] { 6 | @include icon-FontAwesome(); 7 | } 8 | 9 | [class^="icon-"]:before, 10 | [class*=" icon-"]:before { 11 | text-decoration: inherit; 12 | display: inline-block; 13 | speak: none; 14 | } 15 | 16 | /* makes the font 33% larger relative to the icon container */ 17 | .icon-large:before { 18 | vertical-align: -10%; 19 | font-size: (4em/3); 20 | } 21 | 22 | /* makes sure icons active on rollover in links */ 23 | a { 24 | [class^="icon-"], 25 | [class*=" icon-"] { 26 | display: inline; 27 | } 28 | } 29 | 30 | /* increased font size for icon-large */ 31 | [class^="icon-"], 32 | [class*=" icon-"] { 33 | &.icon-fixed-width { 34 | display: inline-block; 35 | width: (16em/14); 36 | text-align: right; 37 | padding-right: (4em/14); 38 | &.icon-large { 39 | width: (20em/14); 40 | } 41 | } 42 | } 43 | 44 | .icons-ul { 45 | margin-left: $icons-li-width; 46 | list-style-type: none; 47 | 48 | > li { position: relative; } 49 | 50 | .icon-li { 51 | position: absolute; 52 | left: -$icons-li-width; 53 | width: $icons-li-width; 54 | text-align: center; 55 | line-height: inherit; 56 | } 57 | } 58 | 59 | // allows usage of the hide class directly on font awesome icons 60 | [class^="icon-"], 61 | [class*=" icon-"] { 62 | &.hide { 63 | display: none; 64 | } 65 | } 66 | 67 | .icon-muted { color: $iconMuted; } 68 | .icon-light { color: $iconLight; } 69 | .icon-dark { color: $iconDark; } 70 | 71 | // Icon Borders 72 | // ------------------------- 73 | 74 | .icon-border { 75 | border: solid 1px $borderColor; 76 | padding: .2em .25em .15em; 77 | @include border-radius(3px); 78 | } 79 | 80 | // Icon Sizes 81 | // ------------------------- 82 | 83 | .icon-2x { 84 | font-size: 2em; 85 | &.icon-border { 86 | border-width: 2px; 87 | @include border-radius(4px); 88 | } 89 | } 90 | .icon-3x { 91 | font-size: 3em; 92 | &.icon-border { 93 | border-width: 3px; 94 | @include border-radius(5px); 95 | } 96 | } 97 | .icon-4x { 98 | font-size: 4em; 99 | &.icon-border { 100 | border-width: 4px; 101 | @include border-radius(6px); 102 | } 103 | } 104 | 105 | .icon-5x { 106 | font-size: 5em; 107 | &.icon-border { 108 | border-width: 5px; 109 | @include border-radius(7px); 110 | } 111 | } 112 | 113 | 114 | // Floats & Margins 115 | // ------------------------- 116 | 117 | // Quick floats 118 | .pull-right { float: right; } 119 | .pull-left { float: left; } 120 | 121 | [class^="icon-"], 122 | [class*=" icon-"] { 123 | &.pull-left { 124 | margin-right: .3em; 125 | } 126 | &.pull-right { 127 | margin-left: .3em; 128 | } 129 | } 130 | -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | 13 |
14 | 15 |
16 | 53 |
54 |
55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /javascripts/foundation/foundation.dropdown.js: -------------------------------------------------------------------------------- 1 | /*jslint unparam: true, browser: true, indent: 2 */ 2 | 3 | ;(function ($, window, document, undefined) { 4 | 'use strict'; 5 | 6 | Foundation.libs.dropdown = { 7 | name : 'dropdown', 8 | 9 | version : '4.1.3', 10 | 11 | settings : { 12 | activeClass: 'open', 13 | opened: function(){}, 14 | closed: function(){} 15 | }, 16 | 17 | init : function (scope, method, options) { 18 | this.scope = scope || this.scope; 19 | Foundation.inherit(this, 'throttle scrollLeft'); 20 | 21 | if (typeof method === 'object') { 22 | $.extend(true, this.settings, method); 23 | } 24 | 25 | if (typeof method != 'string') { 26 | 27 | if (!this.settings.init) { 28 | this.events(); 29 | } 30 | 31 | return this.settings.init; 32 | } else { 33 | return this[method].call(this, options); 34 | } 35 | }, 36 | 37 | events : function () { 38 | var self = this; 39 | 40 | $(this.scope) 41 | .on('click.fndtn.dropdown', '[data-dropdown]', function (e) { 42 | e.preventDefault(); 43 | self.toggle($(this)); 44 | }) 45 | .on('opened.fndtn.dropdown', '[data-dropdown-content]', this.settings.opened) 46 | .on('closed.fndtn.dropdown', '[data-dropdown-content]', this.settings.closed); 47 | 48 | $('body').on('click.fndtn.dropdown', function (e) { 49 | var parent = $(e.target).closest('[data-dropdown-content]'); 50 | 51 | if ($(e.target).data('dropdown')) { 52 | return; 53 | } 54 | if (parent.length > 0 && ($(e.target).is('[data-dropdown-content]') || $.contains(parent.first()[0], e.target))) { 55 | e.stopPropagation(); 56 | return; 57 | } 58 | 59 | self.close.call(self, $('[data-dropdown-content]')); 60 | }); 61 | 62 | $(window).on('resize.fndtn.dropdown', self.throttle(function () { 63 | self.resize.call(self); 64 | }, 50)).trigger('resize'); 65 | 66 | this.settings.init = true; 67 | }, 68 | 69 | close: function (dropdown) { 70 | var self = this; 71 | dropdown.each(function () { 72 | if ($(this).hasClass(self.settings.activeClass)) { 73 | $(this) 74 | .css(Foundation.rtl ? 'right':'left', '-99999px') 75 | .removeClass(self.settings.activeClass); 76 | $(this).trigger('closed'); 77 | } 78 | }); 79 | }, 80 | 81 | open: function (dropdown, target) { 82 | this 83 | .css(dropdown 84 | .addClass(this.settings.activeClass), target); 85 | dropdown.trigger('opened'); 86 | }, 87 | 88 | toggle : function (target) { 89 | var dropdown = $('#' + target.data('dropdown')); 90 | 91 | this.close.call(this, $('[data-dropdown-content]').not(dropdown)); 92 | 93 | if (dropdown.hasClass(this.settings.activeClass)) { 94 | this.close.call(this, dropdown); 95 | } else { 96 | this.open.call(this, dropdown, target); 97 | } 98 | }, 99 | 100 | resize : function () { 101 | var dropdown = $('[data-dropdown-content].open'), 102 | target = $("[data-dropdown='" + dropdown.attr('id') + "']"); 103 | 104 | if (dropdown.length && target.length) { 105 | this.css(dropdown, target); 106 | } 107 | }, 108 | 109 | css : function (dropdown, target) { 110 | // temporary workaround until 4.2 111 | if (/body/i.test(dropdown.offsetParent()[0].nodeName)) { 112 | var position = target.offset(); 113 | position.top -= dropdown.offsetParent().offset().top; 114 | position.left -= dropdown.offsetParent().offset().left; 115 | } else { 116 | var position = target.position(); 117 | } 118 | 119 | if (this.small()) { 120 | dropdown.css({ 121 | position : 'absolute', 122 | width: '95%', 123 | left: '2.5%', 124 | 'max-width': 'none', 125 | top: position.top + this.outerHeight(target) 126 | }); 127 | } else { 128 | if (!Foundation.rtl && $(window).width() > this.outerWidth(dropdown) + target.offset().left) { 129 | var left = position.left; 130 | } else { 131 | if (!dropdown.hasClass('right')) { 132 | dropdown.addClass('right'); 133 | } 134 | var left = position.left - (this.outerWidth(dropdown) - this.outerWidth(target)); 135 | } 136 | 137 | dropdown.attr('style', '').css({ 138 | position : 'absolute', 139 | top: position.top + this.outerHeight(target), 140 | left: left 141 | }); 142 | } 143 | 144 | return dropdown; 145 | }, 146 | 147 | small : function () { 148 | return $(window).width() < 768 || $('html').hasClass('lt-ie9'); 149 | }, 150 | 151 | off: function () { 152 | $(this.scope).off('.fndtn.dropdown'); 153 | $('html, body').off('.fndtn.dropdown'); 154 | $(window).off('.fndtn.dropdown'); 155 | $('[data-dropdown-content]').off('.fndtn.dropdown'); 156 | this.settings.init = false; 157 | } 158 | }; 159 | }(Foundation.zj, this, this.document)); 160 | -------------------------------------------------------------------------------- /javascripts/foundation/foundation.magellan.js: -------------------------------------------------------------------------------- 1 | /*jslint unparam: true, browser: true, indent: 2 */ 2 | 3 | ;(function ($, window, document, undefined) { 4 | 'use strict'; 5 | 6 | Foundation.libs.magellan = { 7 | name : 'magellan', 8 | 9 | version : '4.0.0', 10 | 11 | settings : { 12 | activeClass: 'active' 13 | }, 14 | 15 | init : function (scope, method, options) { 16 | this.scope = scope || this.scope; 17 | Foundation.inherit(this, 'data_options'); 18 | 19 | if (typeof method === 'object') { 20 | $.extend(true, this.settings, method); 21 | } 22 | 23 | if (typeof method != 'string') { 24 | if (!this.settings.init) { 25 | this.fixed_magellan = $("[data-magellan-expedition]"); 26 | this.set_threshold(); 27 | this.last_destination = $('[data-magellan-destination]').last(); 28 | this.events(); 29 | } 30 | 31 | return this.settings.init; 32 | } else { 33 | return this[method].call(this, options); 34 | } 35 | }, 36 | 37 | events : function () { 38 | var self = this; 39 | $(this.scope).on('arrival.fndtn.magellan', '[data-magellan-arrival]', function (e) { 40 | var $destination = $(this), 41 | $expedition = $destination.closest('[data-magellan-expedition]'), 42 | activeClass = $expedition.attr('data-magellan-active-class') 43 | || self.settings.activeClass; 44 | 45 | $destination 46 | .closest('[data-magellan-expedition]') 47 | .find('[data-magellan-arrival]') 48 | .not($destination) 49 | .removeClass(activeClass); 50 | $destination.addClass(activeClass); 51 | }); 52 | 53 | this.fixed_magellan 54 | .on('update-position.fndtn.magellan', function(){ 55 | var $el = $(this); 56 | // $el.data("magellan-fixed-position",""); 57 | //$el.data("magellan-top-offset", ""); 58 | }) 59 | .trigger('update-position'); 60 | 61 | $(window) 62 | .on('resize.fndtn.magellan', function() { 63 | this.fixed_magellan.trigger('update-position'); 64 | }.bind(this)) 65 | 66 | .on('scroll.fndtn.magellan', function() { 67 | var windowScrollTop = $(window).scrollTop(); 68 | self.fixed_magellan.each(function() { 69 | var $expedition = $(this); 70 | if (typeof $expedition.data('magellan-top-offset') === 'undefined') { 71 | $expedition.data('magellan-top-offset', $expedition.offset().top); 72 | } 73 | if (typeof $expedition.data('magellan-fixed-position') === 'undefined') { 74 | $expedition.data('magellan-fixed-position', false) 75 | } 76 | var fixed_position = (windowScrollTop + self.settings.threshold) > $expedition.data("magellan-top-offset"); 77 | var attr = $expedition.attr('data-magellan-top-offset'); 78 | 79 | if ($expedition.data("magellan-fixed-position") != fixed_position) { 80 | $expedition.data("magellan-fixed-position", fixed_position); 81 | if (fixed_position) { 82 | $expedition.css({position:"fixed", top:0}); 83 | } else { 84 | $expedition.css({position:"", top:""}); 85 | } 86 | if (fixed_position && typeof attr != 'undefined' && attr != false) { 87 | $expedition.css({position:"fixed", top:attr + "px"}); 88 | } 89 | } 90 | }); 91 | }); 92 | 93 | 94 | if (this.last_destination.length > 0) { 95 | $(window).on('scroll.fndtn.magellan', function (e) { 96 | var windowScrollTop = $(window).scrollTop(), 97 | scrolltopPlusHeight = windowScrollTop + $(window).height(), 98 | lastDestinationTop = Math.ceil(self.last_destination.offset().top); 99 | 100 | $('[data-magellan-destination]').each(function () { 101 | var $destination = $(this), 102 | destination_name = $destination.attr('data-magellan-destination'), 103 | topOffset = $destination.offset().top - windowScrollTop; 104 | 105 | if (topOffset <= self.settings.threshold) { 106 | $("[data-magellan-arrival='" + destination_name + "']").trigger('arrival'); 107 | } 108 | // In large screens we may hit the bottom of the page and dont reach the top of the last magellan-destination, so lets force it 109 | if (scrolltopPlusHeight >= $(self.scope).height() && lastDestinationTop > windowScrollTop && lastDestinationTop < scrolltopPlusHeight) { 110 | $('[data-magellan-arrival]').last().trigger('arrival'); 111 | } 112 | }); 113 | }); 114 | } 115 | 116 | this.settings.init = true; 117 | }, 118 | 119 | set_threshold : function () { 120 | if (!this.settings.threshold) { 121 | this.settings.threshold = (this.fixed_magellan.length > 0) ? 122 | this.outerHeight(this.fixed_magellan, true) : 0; 123 | } 124 | }, 125 | 126 | off : function () { 127 | $(this.scope).off('.fndtn.magellan'); 128 | } 129 | }; 130 | }(Foundation.zj, this, this.document)); -------------------------------------------------------------------------------- /javascripts/foundation/foundation.placeholder.js: -------------------------------------------------------------------------------- 1 | /*! http://mths.be/placeholder v2.0.7 by @mathias 2 | Modified to work with Zepto.js by ZURB 3 | */ 4 | ;(function(window, document, $) { 5 | 6 | var isInputSupported = 'placeholder' in document.createElement('input'), 7 | isTextareaSupported = 'placeholder' in document.createElement('textarea'), 8 | prototype = $.fn, 9 | valHooks = $.valHooks, 10 | hooks, 11 | placeholder; 12 | 13 | if (isInputSupported && isTextareaSupported) { 14 | 15 | placeholder = prototype.placeholder = function() { 16 | return this; 17 | }; 18 | 19 | placeholder.input = placeholder.textarea = true; 20 | 21 | } else { 22 | 23 | placeholder = prototype.placeholder = function() { 24 | var $this = this; 25 | $this 26 | .filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]') 27 | .not('.placeholder') 28 | .bind({ 29 | 'focus.placeholder': clearPlaceholder, 30 | 'blur.placeholder': setPlaceholder 31 | }) 32 | .data('placeholder-enabled', true) 33 | .trigger('blur.placeholder'); 34 | return $this; 35 | }; 36 | 37 | placeholder.input = isInputSupported; 38 | placeholder.textarea = isTextareaSupported; 39 | 40 | hooks = { 41 | 'get': function(element) { 42 | var $element = $(element); 43 | return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value; 44 | }, 45 | 'set': function(element, value) { 46 | var $element = $(element); 47 | if (!$element.data('placeholder-enabled')) { 48 | return element.value = value; 49 | } 50 | if (value == '') { 51 | element.value = value; 52 | // Issue #56: Setting the placeholder causes problems if the element continues to have focus. 53 | if (element != document.activeElement) { 54 | // We can't use `triggerHandler` here because of dummy text/password inputs :( 55 | setPlaceholder.call(element); 56 | } 57 | } else if ($element.hasClass('placeholder')) { 58 | clearPlaceholder.call(element, true, value) || (element.value = value); 59 | } else { 60 | element.value = value; 61 | } 62 | // `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363 63 | return $element; 64 | } 65 | }; 66 | 67 | isInputSupported || (valHooks.input = hooks); 68 | isTextareaSupported || (valHooks.textarea = hooks); 69 | 70 | $(function() { 71 | // Look for forms 72 | $(document).delegate('form', 'submit.placeholder', function() { 73 | // Clear the placeholder values so they don't get submitted 74 | var $inputs = $('.placeholder', this).each(clearPlaceholder); 75 | setTimeout(function() { 76 | $inputs.each(setPlaceholder); 77 | }, 10); 78 | }); 79 | }); 80 | 81 | // Clear placeholder values upon page reload 82 | $(window).bind('beforeunload.placeholder', function() { 83 | $('.placeholder').each(function() { 84 | this.value = ''; 85 | }); 86 | }); 87 | 88 | } 89 | 90 | function args(elem) { 91 | // Return an object of element attributes 92 | var newAttrs = {}, 93 | rinlinejQuery = /^jQuery\d+$/; 94 | $.each(elem.attributes, function(i, attr) { 95 | if (attr.specified && !rinlinejQuery.test(attr.name)) { 96 | newAttrs[attr.name] = attr.value; 97 | } 98 | }); 99 | return newAttrs; 100 | } 101 | 102 | function clearPlaceholder(event, value) { 103 | var input = this, 104 | $input = $(input); 105 | if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) { 106 | if ($input.data('placeholder-password')) { 107 | $input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id')); 108 | // If `clearPlaceholder` was called from `$.valHooks.input.set` 109 | if (event === true) { 110 | return $input[0].value = value; 111 | } 112 | $input.focus(); 113 | } else { 114 | input.value = ''; 115 | $input.removeClass('placeholder'); 116 | input == document.activeElement && input.select(); 117 | } 118 | } 119 | } 120 | 121 | function setPlaceholder() { 122 | var $replacement, 123 | input = this, 124 | $input = $(input), 125 | $origInput = $input, 126 | id = this.id; 127 | if (input.value == '') { 128 | if (input.type == 'password') { 129 | if (!$input.data('placeholder-textinput')) { 130 | try { 131 | $replacement = $input.clone().attr({ 'type': 'text' }); 132 | } catch(e) { 133 | $replacement = $('').attr($.extend(args(this), { 'type': 'text' })); 134 | } 135 | $replacement 136 | .removeAttr('name') 137 | .data({ 138 | 'placeholder-password': true, 139 | 'placeholder-id': id 140 | }) 141 | .bind('focus.placeholder', clearPlaceholder); 142 | $input 143 | .data({ 144 | 'placeholder-textinput': $replacement, 145 | 'placeholder-id': id 146 | }) 147 | .before($replacement); 148 | } 149 | $input = $input.removeAttr('id').hide().prev().attr('id', id).show(); 150 | // Note: `$input[0] != input` now! 151 | } 152 | $input.addClass('placeholder'); 153 | $input[0].value = $input.attr('placeholder'); 154 | } else { 155 | $input.removeClass('placeholder'); 156 | } 157 | } 158 | 159 | }(this, document, Foundation.zj)); -------------------------------------------------------------------------------- /inc/shortcodes.php: -------------------------------------------------------------------------------- 1 | ' . do_shortcode($content) . ''; 29 | } 30 | 31 | add_shortcode( 'row', 'foundation_shortcode_row' ); 32 | 33 | // Columns [column][/column] 34 | 35 | function foundation_shortcode_column( $atts, $content = null ) { 36 | 37 | extract( shortcode_atts( array( 38 | 'center' => '', 39 | 'span' => '', 40 | ), $atts ) ); 41 | 42 | // Set the 'center' variable 43 | if ($center == 'true') { 44 | $center = 'centered'; 45 | } 46 | 47 | return '
' . do_shortcode($content) . '
'; 48 | } 49 | 50 | add_shortcode( 'column', 'foundation_shortcode_column' ); 51 | 52 | /** 53 | * UI 54 | */ 55 | 56 | // Buttons [button][/button] 57 | 58 | function foundation_shortcode_button( $atts, $content = null ) { 59 | 60 | extract( shortcode_atts( array( 61 | 'link' => '#', 62 | 'size' => 'medium', 63 | 'type' => '', 64 | 'style' => '', 65 | 'reveal' => '' 66 | ), $atts ) ); 67 | 68 | if (!$reveal == null) { 69 | $reveal_data = 'data-reveal-id=' . $reveal . ' '; 70 | } 71 | 72 | return '' . $content . ''; 73 | } 74 | 75 | add_shortcode( 'button', 'foundation_shortcode_button' ); 76 | 77 | // Alerts [alert][/alert] 78 | 79 | function foundation_shortcode_alert( $atts, $content = null ) { 80 | 81 | extract( shortcode_atts( array( 82 | 'type' => '' 83 | ), $atts ) ); 84 | 85 | return '
' . do_shortcode($content) . ' ×
'; 86 | } 87 | 88 | add_shortcode( 'alert', 'foundation_shortcode_alert' ); 89 | 90 | // Panels [panel][/panel] 91 | 92 | function foundation_shortcode_panel( $atts, $content = null ) { 93 | 94 | extract( shortcode_atts( array( 95 | 'type' => '', 96 | 'style' => '' 97 | ), $atts ) ); 98 | 99 | return '
' . do_shortcode($content) . '
'; 100 | } 101 | 102 | add_shortcode( 'panel', 'foundation_shortcode_panel' ); 103 | 104 | // Tabs [tabs] [tab][/tab] [/tabs] 105 | 106 | function foundation_shortcode_tabs( $atts, $content ){ 107 | extract(shortcode_atts(array( 108 | 'type' => '' 109 | ), $atts)); 110 | 111 | $GLOBALS['tab_count'] = 0; 112 | 113 | do_shortcode( $content ); 114 | 115 | $i = 0; 116 | 117 | if( is_array( $GLOBALS['tabs'] ) ){ 118 | foreach( $GLOBALS['tabs'] as $tab ){ 119 | 120 | $i++; 121 | 122 | // Remove whitespace for #id 123 | $title = $tab[title]; 124 | $title = str_replace(' ', '', $title); 125 | 126 | // Set the active tab 127 | if ($i == 1) { 128 | 129 | $tabs[] = '
'.$tab['title'].'
'; 130 | $panes[] = '
  • '.$tab['title'].'

    '.$tab['content'].'
  • '; 131 | } 132 | else { 133 | 134 | $tabs[] = '
    '.$tab['title'].'
    '; 135 | $panes[] = '
  • '.$tab['title'].'

    '.$tab['content'].'
  • '; 136 | 137 | } 138 | } 139 | 140 | $return = "\n".'
    '.implode( "\n", $tabs ).'
    '."\n".''."\n"; 141 | 142 | } 143 | return $return; 144 | } 145 | add_shortcode( 'tabs', 'foundation_shortcode_tabs' ); 146 | 147 | function foundation_shortcode_tab( $atts, $content ){ 148 | extract(shortcode_atts(array( 149 | 'title' => 'Tab %d' 150 | ), $atts)); 151 | 152 | $x = $GLOBALS['tab_count']; 153 | $GLOBALS['tabs'][$x] = array( 'title' => sprintf( $title, $GLOBALS['tab_count'] ), 'content' => $content ); 154 | 155 | $GLOBALS['tab_count']++; 156 | 157 | } 158 | 159 | add_shortcode( 'tab', 'foundation_shortcode_tab' ); 160 | 161 | /** 162 | * Elements 163 | */ 164 | 165 | // Detection (Show) [show][/show] 166 | 167 | function foundation_shortcode_show( $atts, $content = null ) { 168 | 169 | extract( shortcode_atts( array( 170 | 'for' => '' 171 | ), $atts ) ); 172 | 173 | return '
    ' . do_shortcode($content) . '
    '; 174 | } 175 | 176 | add_shortcode( 'show', 'foundation_shortcode_show' ); 177 | 178 | // Detection (Hide) [hide][/hide] 179 | 180 | function foundation_shortcode_hide( $atts, $content = null ) { 181 | 182 | extract( shortcode_atts( array( 183 | 'for' => '' 184 | ), $atts ) ); 185 | 186 | return '
    ' . do_shortcode($content) . '
    '; 187 | } 188 | 189 | add_shortcode( 'hide', 'foundation_shortcode_hide' ); 190 | 191 | /** 192 | * Extras 193 | */ 194 | 195 | // Reveal [reveal][/reveal] 196 | 197 | function foundation_shortcode_reveal( $atts, $content = null ) { 198 | 199 | extract( shortcode_atts( array( 200 | 'name' => '', 201 | 'style' => '' 202 | ), $atts ) ); 203 | 204 | return '
    ' . do_shortcode($content) . '
    '; 205 | 206 | } 207 | 208 | add_shortcode( 'reveal', 'foundation_shortcode_reveal' ); 209 | 210 | ?> -------------------------------------------------------------------------------- /sass/_fonts.scss: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family:'ClimaconsRegular'; 3 | src: url('../font/climacons-webfont.eot'); 4 | src: url('../font/climacons-webfont.eot?#iefix') format('embedded-opentype'), 5 | url('../font/climacons-webfont.woff') format('woff'), 6 | url('../font/climacons-webfont.ttf') format('truetype'); 7 | font-weight: normal; 8 | font-style: normal; 9 | } 10 | 11 | 12 | 13 | @font-face { 14 | font-family: 'ortodoxasemibold_italic'; 15 | src: url('../font/monograma_-_ortodoxa-semibolditalic-webfont.eot'); 16 | src: url('../font/monograma_-_ortodoxa-semibolditalic-webfont.eot?#iefix') format('embedded-opentype'), 17 | url('../font/monograma_-_ortodoxa-semibolditalic-webfont.woff2') format('woff2'), 18 | url('../font/monograma_-_ortodoxa-semibolditalic-webfont.woff') format('woff'), 19 | url('../font/monograma_-_ortodoxa-semibolditalic-webfont.ttf') format('truetype'), 20 | url('../font/monograma_-_ortodoxa-semibolditalic-webfont.svg#ortodoxasemibold_italic') format('svg'); 21 | font-weight: normal; 22 | font-style: normal; 23 | 24 | } 25 | 26 | 27 | 28 | 29 | @font-face { 30 | font-family: 'ortodoxabold_italic'; 31 | src: url('../font/monograma_-_ortodoxa-mediumitalic-webfont.eot'); 32 | src: url('../font/monograma_-_ortodoxa-mediumitalic-webfont.eot?#iefix') format('embedded-opentype'), 33 | url('../font/monograma_-_ortodoxa-mediumitalic-webfont.woff2') format('woff2'), 34 | url('../font/monograma_-_ortodoxa-mediumitalic-webfont.woff') format('woff'), 35 | url('../font/monograma_-_ortodoxa-mediumitalic-webfont.ttf') format('truetype'), 36 | url('../font/monograma_-_ortodoxa-mediumitalic-webfont.svg#ortodoxabold_italic') format('svg'); 37 | font-weight: normal; 38 | font-style: normal; 39 | 40 | } 41 | 42 | 43 | 44 | 45 | @font-face { 46 | font-family: 'ortodoxaregular'; 47 | src: url('../font/monograma_-_ortodoxa-regular-webfont.eot'); 48 | src: url('../font/monograma_-_ortodoxa-regular-webfont.eot?#iefix') format('embedded-opentype'), 49 | url('../font/monograma_-_ortodoxa-regular-webfont.woff2') format('woff2'), 50 | url('../font/monograma_-_ortodoxa-regular-webfont.woff') format('woff'), 51 | url('../font/monograma_-_ortodoxa-regular-webfont.ttf') format('truetype'), 52 | url('../font/monograma_-_ortodoxa-regular-webfont.svg#ortodoxaregular') format('svg'); 53 | font-weight: normal; 54 | font-style: normal; 55 | 56 | } 57 | 58 | 59 | 60 | 61 | @font-face { 62 | font-family: 'ortodoxasemibold'; 63 | src: url('../font/monograma_-_ortodoxa-semibold-webfont.eot'); 64 | src: url('../font/monograma_-_ortodoxa-semibold-webfont.eot?#iefix') format('embedded-opentype'), 65 | url('../font/monograma_-_ortodoxa-semibold-webfont.woff2') format('woff2'), 66 | url('../font/monograma_-_ortodoxa-semibold-webfont.woff') format('woff'), 67 | url('../font/monograma_-_ortodoxa-semibold-webfont.ttf') format('truetype'), 68 | url('../font/monograma_-_ortodoxa-semibold-webfont.svg#ortodoxasemibold') format('svg'); 69 | font-weight: normal; 70 | font-style: normal; 71 | 72 | } 73 | 74 | 75 | 76 | 77 | @font-face { 78 | font-family: 'ortodoxabold'; 79 | src: url('../font/monograma_-_ortodoxa-medium-webfont.eot'); 80 | src: url('../font/monograma_-_ortodoxa-medium-webfont.eot?#iefix') format('embedded-opentype'), 81 | url('../font/monograma_-_ortodoxa-medium-webfont.woff2') format('woff2'), 82 | url('../font/monograma_-_ortodoxa-medium-webfont.woff') format('woff'), 83 | url('../font/monograma_-_ortodoxa-medium-webfont.ttf') format('truetype'), 84 | url('../font/monograma_-_ortodoxa-medium-webfont.svg#ortodoxabold') format('svg'); 85 | font-weight: normal; 86 | font-style: normal; 87 | 88 | } 89 | 90 | 91 | 92 | 93 | @font-face { 94 | font-family: 'ortodoxalight_italic'; 95 | src: url('../font/monograma_-_ortodoxa-lightitalic-webfont.eot'); 96 | src: url('../font/monograma_-_ortodoxa-lightitalic-webfont.eot?#iefix') format('embedded-opentype'), 97 | url('../font/monograma_-_ortodoxa-lightitalic-webfont.woff2') format('woff2'), 98 | url('../font/monograma_-_ortodoxa-lightitalic-webfont.woff') format('woff'), 99 | url('../font/monograma_-_ortodoxa-lightitalic-webfont.ttf') format('truetype'), 100 | url('../font/monograma_-_ortodoxa-lightitalic-webfont.svg#ortodoxalight_italic') format('svg'); 101 | font-weight: normal; 102 | font-style: normal; 103 | 104 | } 105 | 106 | 107 | 108 | 109 | @font-face { 110 | font-family: 'ortodoxaitalic'; 111 | src: url('../font/monograma_-_ortodoxa-italic-webfont.eot'); 112 | src: url('../font/monograma_-_ortodoxa-italic-webfont.eot?#iefix') format('embedded-opentype'), 113 | url('../font/monograma_-_ortodoxa-italic-webfont.woff2') format('woff2'), 114 | url('../font/monograma_-_ortodoxa-italic-webfont.woff') format('woff'), 115 | url('../font/monograma_-_ortodoxa-italic-webfont.ttf') format('truetype'), 116 | url('../font/monograma_-_ortodoxa-italic-webfont.svg#ortodoxaitalic') format('svg'); 117 | font-weight: normal; 118 | font-style: normal; 119 | 120 | } 121 | 122 | 123 | 124 | 125 | @font-face { 126 | font-family: 'ortodoxalight'; 127 | src: url('../font/monograma_-_ortodoxa-light-webfont.eot'); 128 | src: url('../font/monograma_-_ortodoxa-light-webfont.eot?#iefix') format('embedded-opentype'), 129 | url('../font/monograma_-_ortodoxa-light-webfont.woff2') format('woff2'), 130 | url('../font/monograma_-_ortodoxa-light-webfont.woff') format('woff'), 131 | url('../font/monograma_-_ortodoxa-light-webfont.ttf') format('truetype'), 132 | url('../font/monograma_-_ortodoxa-light-webfont.svg#ortodoxalight') format('svg'); 133 | font-weight: normal; 134 | font-style: normal; 135 | 136 | } 137 | 138 | 139 | 140 | 141 | @font-face { 142 | font-family: 'ortodoxa_semiboldbold_italic'; 143 | src: url('../font/monograma_-_ortodoxa-bolditalic-webfont.eot'); 144 | src: url('../font/monograma_-_ortodoxa-bolditalic-webfont.eot?#iefix') format('embedded-opentype'), 145 | url('../font/monograma_-_ortodoxa-bolditalic-webfont.woff2') format('woff2'), 146 | url('../font/monograma_-_ortodoxa-bolditalic-webfont.woff') format('woff'), 147 | url('../font/monograma_-_ortodoxa-bolditalic-webfont.ttf') format('truetype'), 148 | url('../font/monograma_-_ortodoxa-bolditalic-webfont.svg#ortodoxa_semiboldbold_italic') format('svg'); 149 | font-weight: normal; 150 | font-style: normal; 151 | 152 | } 153 | 154 | 155 | 156 | 157 | @font-face { 158 | font-family: 'ortodoxa_semiboldbold'; 159 | src: url('../font/monograma_-_ortodoxa-bold-webfont.eot'); 160 | src: url('../font/monograma_-_ortodoxa-bold-webfont.eot?#iefix') format('embedded-opentype'), 161 | url('../font/monograma_-_ortodoxa-bold-webfont.woff2') format('woff2'), 162 | url('../font/monograma_-_ortodoxa-bold-webfont.woff') format('woff'), 163 | url('../font/monograma_-_ortodoxa-bold-webfont.ttf') format('truetype'), 164 | url('../font/monograma_-_ortodoxa-bold-webfont.svg#ortodoxa_semiboldbold') format('svg'); 165 | font-weight: normal; 166 | font-style: normal; 167 | 168 | } -------------------------------------------------------------------------------- /javascripts/foundation/foundation.orbit-ck.js: -------------------------------------------------------------------------------- 1 | (function(e,t,n,r){"use strict";Foundation.libs=Foundation.libs||{};Foundation.libs.orbit={name:"orbit",version:"4.1.0",settings:{timer_speed:8e3,animation_speed:500,bullets:!1,stack_on_small:!0,navigation_arrows:!1,slide_number:!1,container_class:"orbit-container",stack_on_small_class:"orbit-stack-on-small",next_class:"orbit-next",prev_class:"orbit-prev",timer_container_class:"orbit-timer",timer_paused_class:"paused",timer_progress_class:"orbit-progress",slides_container_class:"orbit-slides-container",bullets_container_class:"orbit-bullets",bullets_active_class:"active",slide_number_class:"orbit-slide-number",caption_class:"orbit-caption",active_slide_class:"active",orbit_transition_class:"orbit-transitioning"},init:function(t,n,r){var i=this;Foundation.inherit(i,"data_options");typeof n=="object"&&e.extend(!0,i.settings,n);e("[data-orbit]",t).each(function(t,n){var r=e.extend(!0,{},i);r._init(t,n)})},_container_html:function(){var e=this;return'
    '},_bullets_container_html:function(t){var n=this,r=e('
      ');t.each(function(t,i){var s=e('
    1. ');t===0&&s.addClass(n.settings.bullets_active_class);r.append(s)});return r},_slide_number_html:function(t,n){var r=this,i=e('
      ');i.append(""+t+" of "+n+"");return i},_timer_html:function(){var e=this;return typeof e.settings.timer_speed=="number"&&e.settings.timer_speed>0?'
      ':""},_next_html:function(){var e=this;return'Next '},_prev_html:function(){var e=this;return'Prev '},_init:function(t,n){var r=this,i=e(n),s=i.wrap(r._container_html()).parent(),o=i.children();e.extend(!0,r.settings,r.data_options(i));if(r.settings.navigation_arrows){s.append(r._prev_html());s.append(r._next_html())}i.addClass(r.settings.slides_container_class);r.settings.stack_on_small&&s.addClass(r.settings.stack_on_small_class);r.settings.slide_number&&s.append(r._slide_number_html(1,o.length));s.append(r._timer_html());r.settings.bullets&&s.after(r._bullets_container_html(o));i.append(o.first().clone().attr("data-orbit-slide",""));i.prepend(o.last().clone().attr("data-orbit-slide",""));i.css("marginLeft","-100%");o.first().addClass(r.settings.active_slide_class);r._init_events(i);r._init_dimensions(i);r._start_timer(i)},_init_events:function(i){var s=this,o=i.parent();e(t).on("load.fndtn.orbit",function(){i.height("");i.height(i.height(o.height()));i.trigger("orbit:ready")}).on("resize.fndtn.orbit",function(){i.height("");i.height(i.height(o.height()))});e(n).on("click.fndtn.orbit","[data-orbit-link]",function(t){t.preventDefault();var n=e(t.currentTarget).attr("data-orbit-link"),r=i.find("[data-orbit-slide="+n+"]").first();if(r.length===1){s._reset_timer(i,!0);s._goto(i,r.index(),function(){})}});o.siblings("."+s.settings.bullets_container_class).on("click.fndtn.orbit","[data-orbit-slide-number]",function(t){t.preventDefault();s._reset_timer(i,!0);s._goto(i,e(t.currentTarget).data("orbit-slide-number"),function(){})});o.on("orbit:after-slide-change.fndtn.orbit",function(e,t){var n=o.find("."+s.settings.slide_number_class);n.length===1&&n.replaceWith(s._slide_number_html(t.slide_number,t.total_slides))}).on("orbit:next-slide.fndtn.orbit click.fndtn.orbit","."+s.settings.next_class,function(e){e.preventDefault();s._reset_timer(i,!0);s._goto(i,"next",function(){})}).on("orbit:prev-slide.fndtn.orbit click.fndtn.orbit","."+s.settings.prev_class,function(e){e.preventDefault();s._reset_timer(i,!0);s._goto(i,"prev",function(){})}).on("orbit:toggle-play-pause.fndtn.orbit click.fndtn.orbit touchstart.fndtn.orbit","."+s.settings.timer_container_class,function(t){t.preventDefault();var n=e(t.currentTarget).toggleClass(s.settings.timer_paused_class),r=n.closest("."+s.settings.container_class).find("."+s.settings.slides_container_class);n.hasClass(s.settings.timer_paused_class)?s._stop_timer(r):s._start_timer(r)}).on("touchstart.fndtn.orbit",function(e){e.touches||(e=e.originalEvent);var t={start_page_x:e.touches[0].pageX,start_page_y:e.touches[0].pageY,start_time:(new Date).getTime(),delta_x:0,is_scrolling:r};o.data("swipe-transition",t);e.stopPropagation()}).on("touchmove.fndtn.orbit",function(e){e.touches||(e=e.originalEvent);if(e.touches.length>1||e.scale&&e.scale!==1)return;var t=o.data("swipe-transition");typeof t=="undefined"&&(t={});t.delta_x=e.touches[0].pageX-t.start_page_x;typeof t.is_scrolling=="undefined"&&(t.is_scrolling=!!(t.is_scrolling||Math.abs(t.delta_x)' + content + ''; 20 | } 21 | }, 22 | 23 | cache : {}, 24 | 25 | init : function (scope, method, options) { 26 | var self = this; 27 | this.scope = scope || this.scope; 28 | 29 | if (typeof method === 'object') { 30 | $.extend(true, this.settings, method); 31 | } 32 | 33 | if (typeof method != 'string') { 34 | if (Modernizr.touch) { 35 | $(this.scope) 36 | .on('click.fndtn.tooltip touchstart.fndtn.tooltip touchend.fndtn.tooltip', 37 | '[data-tooltip]', function (e) { 38 | e.preventDefault(); 39 | $(self.settings.tooltipClass).hide(); 40 | self.showOrCreateTip($(this)); 41 | }) 42 | .on('click.fndtn.tooltip touchstart.fndtn.tooltip touchend.fndtn.tooltip', 43 | this.settings.tooltipClass, function (e) { 44 | e.preventDefault(); 45 | $(this).fadeOut(150); 46 | }); 47 | } else { 48 | $(this.scope) 49 | .on('mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip', 50 | '[data-tooltip]', function (e) { 51 | var $this = $(this); 52 | 53 | if (e.type === 'mouseover' || e.type === 'mouseenter') { 54 | self.showOrCreateTip($this); 55 | } else if (e.type === 'mouseout' || e.type === 'mouseleave') { 56 | self.hide($this); 57 | } 58 | }); 59 | } 60 | 61 | // $(this.scope).data('fndtn-tooltips', true); 62 | } else { 63 | return this[method].call(this, options); 64 | } 65 | 66 | }, 67 | 68 | showOrCreateTip : function ($target) { 69 | var $tip = this.getTip($target); 70 | 71 | if ($tip && $tip.length > 0) { 72 | return this.show($target); 73 | } 74 | 75 | return this.create($target); 76 | }, 77 | 78 | getTip : function ($target) { 79 | var selector = this.selector($target), 80 | tip = null; 81 | 82 | if (selector) { 83 | tip = $('span[data-selector=' + selector + ']' + this.settings.tooltipClass); 84 | } 85 | 86 | return (typeof tip === 'object') ? tip : false; 87 | }, 88 | 89 | selector : function ($target) { 90 | var id = $target.attr('id'), 91 | dataSelector = $target.attr('data-tooltip') || $target.attr('data-selector'); 92 | 93 | if ((id && id.length < 1 || !id) && typeof dataSelector != 'string') { 94 | dataSelector = 'tooltip' + Math.random().toString(36).substring(7); 95 | $target.attr('data-selector', dataSelector); 96 | } 97 | 98 | return (id && id.length > 0) ? id : dataSelector; 99 | }, 100 | 101 | create : function ($target) { 102 | var $tip = $(this.settings.tipTemplate(this.selector($target), $('
      ').html($target.attr('title')).html())), 103 | classes = this.inheritable_classes($target); 104 | 105 | $tip.addClass(classes).appendTo(this.settings.appendTo); 106 | if (Modernizr.touch) { 107 | $tip.append('tap to close '); 108 | } 109 | $target.removeAttr('title').attr('title',''); 110 | this.show($target); 111 | }, 112 | 113 | reposition : function (target, tip, classes) { 114 | var width, nub, nubHeight, nubWidth, column, objPos; 115 | 116 | tip.css('visibility', 'hidden').show(); 117 | 118 | width = target.data('width'); 119 | nub = tip.children('.nub'); 120 | nubHeight = this.outerHeight(nub); 121 | nubWidth = this.outerHeight(nub); 122 | 123 | objPos = function (obj, top, right, bottom, left, width) { 124 | return obj.css({ 125 | 'top' : (top) ? top : 'auto', 126 | 'bottom' : (bottom) ? bottom : 'auto', 127 | 'left' : (left) ? left : 'auto', 128 | 'right' : (right) ? right : 'auto', 129 | 'width' : (width) ? width : 'auto' 130 | }).end(); 131 | }; 132 | 133 | objPos(tip, (target.offset().top + this.outerHeight(target) + 10), 'auto', 'auto', target.offset().left, width); 134 | 135 | if ($(window).width() < 767) { 136 | objPos(tip, (target.offset().top + this.outerHeight(target) + 10), 'auto', 'auto', 12.5, $(this.scope).width()); 137 | tip.addClass('tip-override'); 138 | objPos(nub, -nubHeight, 'auto', 'auto', target.offset().left); 139 | } else { 140 | var left = target.offset().left; 141 | if (Foundation.rtl) { 142 | left = target.offset().left + target.offset().width - this.outerWidth(tip); 143 | } 144 | objPos(tip, (target.offset().top + this.outerHeight(target) + 10), 'auto', 'auto', left, width); 145 | tip.removeClass('tip-override'); 146 | if (classes && classes.indexOf('tip-top') > -1) { 147 | objPos(tip, (target.offset().top - this.outerHeight(tip)), 'auto', 'auto', left, width) 148 | .removeClass('tip-override'); 149 | } else if (classes && classes.indexOf('tip-left') > -1) { 150 | objPos(tip, (target.offset().top + (this.outerHeight(target) / 2) - nubHeight*2.5), 'auto', 'auto', (target.offset().left - this.outerWidth(tip) - nubHeight), width) 151 | .removeClass('tip-override'); 152 | } else if (classes && classes.indexOf('tip-right') > -1) { 153 | objPos(tip, (target.offset().top + (this.outerHeight(target) / 2) - nubHeight*2.5), 'auto', 'auto', (target.offset().left + this.outerWidth(target) + nubHeight), width) 154 | .removeClass('tip-override'); 155 | } 156 | } 157 | 158 | tip.css('visibility', 'visible').hide(); 159 | }, 160 | 161 | inheritable_classes : function (target) { 162 | var inheritables = ['tip-top', 'tip-left', 'tip-bottom', 'tip-right', 'noradius'].concat(this.settings.additionalInheritableClasses), 163 | classes = target.attr('class'), 164 | filtered = classes ? $.map(classes.split(' '), function (el, i) { 165 | if ($.inArray(el, inheritables) !== -1) { 166 | return el; 167 | } 168 | }).join(' ') : ''; 169 | 170 | return $.trim(filtered); 171 | }, 172 | 173 | show : function ($target) { 174 | var $tip = this.getTip($target); 175 | 176 | this.reposition($target, $tip, $target.attr('class')); 177 | $tip.fadeIn(150); 178 | }, 179 | 180 | hide : function ($target) { 181 | var $tip = this.getTip($target); 182 | 183 | $tip.fadeOut(150); 184 | }, 185 | 186 | // deprecate reload 187 | reload : function () { 188 | var $self = $(this); 189 | 190 | return ($self.data('fndtn-tooltips')) ? $self.foundationTooltips('destroy').foundationTooltips('init') : $self.foundationTooltips('init'); 191 | }, 192 | 193 | off : function () { 194 | $(this.scope).off('.fndtn.tooltip'); 195 | $(this.settings.tooltipClass).each(function (i) { 196 | $('[data-tooltip]').get(i).attr('title', $(this).text()); 197 | }).remove(); 198 | } 199 | }; 200 | }(Foundation.zj, this, this.document)); 201 | -------------------------------------------------------------------------------- /javascripts/foundation/foundation.topbar.js: -------------------------------------------------------------------------------- 1 | /*jslint unparam: true, browser: true, indent: 2 */ 2 | 3 | ;(function ($, window, document, undefined) { 4 | 'use strict'; 5 | 6 | Foundation.libs.topbar = { 7 | name : 'topbar', 8 | 9 | version : '4.1.2', 10 | 11 | settings : { 12 | index : 0, 13 | stickyClass : 'sticky', 14 | custom_back_text: true, 15 | back_text: 'Back', 16 | init : false 17 | }, 18 | 19 | init : function (section, method, options) { 20 | var self = this; 21 | 22 | if (typeof method === 'object') { 23 | $.extend(true, this.settings, method); 24 | } 25 | 26 | if (typeof method != 'string') { 27 | 28 | $('.top-bar').each(function () { 29 | self.settings.$w = $(window); 30 | self.settings.$topbar = $(this); 31 | self.settings.$section = self.settings.$topbar.find('section'); 32 | self.settings.$titlebar = self.settings.$topbar.children('ul').first(); 33 | 34 | 35 | self.settings.$topbar.data('index', 0); 36 | 37 | var breakpoint = $("
      ").insertAfter(self.settings.$topbar); 38 | self.settings.breakPoint = breakpoint.width(); 39 | breakpoint.remove(); 40 | 41 | self.assemble(); 42 | 43 | if (self.settings.$topbar.parent().hasClass('fixed')) { 44 | $('body').css('padding-top', self.outerHeight(self.settings.$topbar)); 45 | } 46 | }); 47 | 48 | if (!self.settings.init) { 49 | this.events(); 50 | } 51 | 52 | return this.settings.init; 53 | } else { 54 | // fire method 55 | return this[method].call(this, options); 56 | } 57 | }, 58 | 59 | events : function () { 60 | var self = this; 61 | var offst = this.outerHeight($('.top-bar')); 62 | $(this.scope) 63 | .on('click.fndtn.topbar', '.top-bar .toggle-topbar', function (e) { 64 | var topbar = $(this).closest('.top-bar'), 65 | section = topbar.find('section, .section'), 66 | titlebar = topbar.children('ul').first(); 67 | 68 | if (!topbar.data('height')) self.largestUL(); 69 | 70 | e.preventDefault(); 71 | 72 | if (self.breakpoint()) { 73 | topbar 74 | .toggleClass('expanded') 75 | .css('min-height', ''); 76 | } 77 | 78 | if (!topbar.hasClass('expanded')) { 79 | if (!self.rtl) { 80 | section.css({left: '0%'}); 81 | section.find('>.name').css({left: '100%'}); 82 | } else { 83 | section.css({right: '0%'}); 84 | section.find('>.name').css({right: '100%'}); 85 | } 86 | section.find('li.moved').removeClass('moved'); 87 | topbar.data('index', 0); 88 | 89 | if (topbar.hasClass('fixed')) { 90 | topbar.parent().addClass('fixed'); 91 | topbar.removeClass('fixed'); 92 | $('body').css('padding-top',offst); 93 | } 94 | } else if (topbar.parent().hasClass('fixed')) { 95 | topbar.parent().removeClass('fixed'); 96 | topbar.addClass('fixed'); 97 | $('body').css('padding-top','0'); 98 | window.scrollTo(0,0); 99 | } 100 | }) 101 | 102 | .on('click.fndtn.topbar', '.top-bar .has-dropdown>a', function (e) { 103 | var topbar = $(this).closest('.top-bar'), 104 | section = topbar.find('section, .section'), 105 | titlebar = topbar.children('ul').first(), 106 | dropdownHeight = $(this).next('.dropdown').outerHeight(); 107 | 108 | if (Modernizr.touch || self.breakpoint()) { 109 | e.preventDefault(); 110 | } 111 | 112 | if (self.breakpoint()) { 113 | var $this = $(this), 114 | $selectedLi = $this.closest('li'); 115 | 116 | topbar.data('index', topbar.data('index') + 1); 117 | $selectedLi.addClass('moved'); 118 | if (!self.rtl) { 119 | section.css({left: -(100 * topbar.data('index')) + '%'}); 120 | section.find('>.name').css({left: 100 * topbar.data('index') + '%'}); 121 | } else { 122 | section.css({right: -(100 * topbar.data('index')) + '%'}); 123 | section.find('>.name').css({right: 100 * topbar.data('index') + '%'}); 124 | } 125 | 126 | $('.top-bar').css('min-height', dropdownHeight); 127 | 128 | $this.siblings('ul') 129 | .height(topbar.data('height') + self.outerHeight(titlebar, true)); 130 | topbar 131 | .css('min-height', topbar.data('height') + self.outerHeight(titlebar, true) * 2) 132 | } 133 | }); 134 | 135 | $(window).on('resize.fndtn.topbar', function () { 136 | if (!self.breakpoint()) { 137 | $('.top-bar') 138 | .css('min-height', '') 139 | .removeClass('expanded'); 140 | } 141 | }.bind(this)); 142 | 143 | // Go up a level on Click 144 | $(this.scope).on('click.fndtn', '.top-bar .has-dropdown .back', function (e) { 145 | e.preventDefault(); 146 | 147 | var $this = $(this), 148 | topbar = $this.closest('.top-bar'), 149 | section = topbar.find('section, .section'), 150 | $movedLi = $this.closest('li.moved'), 151 | $previousLevelUl = $movedLi.parent(); 152 | 153 | topbar.data('index', topbar.data('index') - 1); 154 | if (!self.rtl) { 155 | section.css({left: -(100 * topbar.data('index')) + '%'}); 156 | section.find('>.name').css({left: 100 * topbar.data('index') + '%'}); 157 | } else { 158 | section.css({right: -(100 * topbar.data('index')) + '%'}); 159 | section.find('>.name').css({right: 100 * topbar.data('index') + '%'}); 160 | } 161 | 162 | if (topbar.data('index') === 0) { 163 | topbar.css('min-height', 0); 164 | } 165 | 166 | setTimeout(function () { 167 | $movedLi.removeClass('moved'); 168 | }, 300); 169 | }); 170 | }, 171 | 172 | breakpoint : function () { 173 | return $(window).width() <= this.settings.breakPoint || $('html').hasClass('lt-ie9'); 174 | }, 175 | 176 | assemble : function () { 177 | var self = this; 178 | // Pull element out of the DOM for manipulation 179 | this.settings.$section.detach(); 180 | 181 | this.settings.$section.find('.has-dropdown>a').each(function () { 182 | var $link = $(this), 183 | $dropdown = $link.siblings('.dropdown'), 184 | $titleLi = $('
    2. '); 185 | 186 | // Copy link to subnav 187 | if (self.settings.custom_back_text == true) { 188 | $titleLi.find('h5>a').html('« ' + self.settings.back_text); 189 | } else { 190 | $titleLi.find('h5>a').html('« ' + $link.html()); 191 | } 192 | $dropdown.prepend($titleLi); 193 | }); 194 | 195 | // Put element back in the DOM 196 | this.settings.$section.appendTo(this.settings.$topbar); 197 | 198 | // check for sticky 199 | this.sticky(); 200 | }, 201 | 202 | largestUL : function () { 203 | var uls = this.settings.$topbar.find('section ul ul'), 204 | largest = uls.first(), 205 | total = 0, 206 | self = this; 207 | 208 | uls.each(function () { 209 | if ($(this).children('li').length > largest.children('li').length) { 210 | largest = $(this); 211 | } 212 | }); 213 | 214 | largest.children('li').each(function () { total += self.outerHeight($(this), true); }); 215 | 216 | this.settings.$topbar.data('height', total); 217 | }, 218 | 219 | sticky : function () { 220 | var klass = '.' + this.settings.stickyClass; 221 | if ($(klass).length > 0) { 222 | var distance = $(klass).length ? $(klass).offset().top: 0, 223 | $window = $(window); 224 | var offst = this.outerHeight($('.top-bar')); 225 | 226 | $window.scroll(function() { 227 | if ($window.scrollTop() >= (distance)) { 228 | $(klass).addClass("fixed"); 229 | $('body').css('padding-top',offst); 230 | } 231 | 232 | else if ($window.scrollTop() < distance) { 233 | $(klass).removeClass("fixed"); 234 | $('body').css('padding-top','0'); 235 | } 236 | }); 237 | } 238 | }, 239 | 240 | off : function () { 241 | $(this.scope).off('.fndtn.topbar'); 242 | $(window).off('.fndtn.topbar'); 243 | } 244 | }; 245 | }(Foundation.zj, this, this.document)); 246 | -------------------------------------------------------------------------------- /javascripts/vendor/custom.modernizr.js: -------------------------------------------------------------------------------- 1 | /* Modernizr 2.6.2 (Custom Build) | MIT & BSD 2 | * Build: http://modernizr.com/download/#-inlinesvg-svg-svgclippaths-touch-shiv-mq-cssclasses-teststyles-prefixes-ie8compat-load 3 | */ 4 | ;window.Modernizr=function(a,b,c){function y(a){j.cssText=a}function z(a,b){return y(m.join(a+";")+(b||""))}function A(a,b){return typeof a===b}function B(a,b){return!!~(""+a).indexOf(b)}function C(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:A(f,"function")?f.bind(d||b):f}return!1}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n={svg:"http://www.w3.org/2000/svg"},o={},p={},q={},r=[],s=r.slice,t,u=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["­",'"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},v=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return u("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},w={}.hasOwnProperty,x;!A(w,"undefined")&&!A(w.call,"undefined")?x=function(a,b){return w.call(a,b)}:x=function(a,b){return b in a&&A(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=s.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(s.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(s.call(arguments)))};return e}),o.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:u(["@media (",m.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},o.svg=function(){return!!b.createElementNS&&!!b.createElementNS(n.svg,"svg").createSVGRect},o.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="",(a.firstChild&&a.firstChild.namespaceURI)==n.svg},o.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(l.call(b.createElementNS(n.svg,"clipPath")))};for(var D in o)x(o,D)&&(t=D.toLowerCase(),e[t]=o[D](),r.push((e[t]?"":"no-")+t));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)x(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},y(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=m,e.mq=v,e.testStyles=u,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+r.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f 0) { 122 | this.locked = true; 123 | modal.trigger('close'); 124 | this.toggle_bg(modal); 125 | this.hide(open_modals, this.settings.css.close); 126 | } 127 | }, 128 | 129 | close_targets : function () { 130 | var base = '.' + this.settings.dismissModalClass; 131 | 132 | if (this.settings.closeOnBackgroundClick) { 133 | return base + ', .' + this.settings.bgClass; 134 | } 135 | 136 | return base; 137 | }, 138 | 139 | toggle_bg : function (modal) { 140 | if ($('.reveal-modal-bg').length === 0) { 141 | this.settings.bg = $('
      ', {'class': this.settings.bgClass}) 142 | .appendTo('body'); 143 | } 144 | 145 | if (this.settings.bg.filter(':visible').length > 0) { 146 | this.hide(this.settings.bg); 147 | } else { 148 | this.show(this.settings.bg); 149 | } 150 | }, 151 | 152 | show : function (el, css) { 153 | // is modal 154 | if (css) { 155 | if (/pop/i.test(this.settings.animation)) { 156 | css.top = $(window).scrollTop() - el.data('offset') + 'px'; 157 | var end_css = { 158 | top: $(window).scrollTop() + el.data('css-top') + 'px', 159 | opacity: 1 160 | }; 161 | 162 | return this.delay(function () { 163 | return el 164 | .css(css) 165 | .animate(end_css, this.settings.animationSpeed, 'linear', function () { 166 | this.locked = false; 167 | el.trigger('opened'); 168 | }.bind(this)) 169 | .addClass('open'); 170 | }.bind(this), this.settings.animationSpeed / 2); 171 | } 172 | 173 | if (/fade/i.test(this.settings.animation)) { 174 | var end_css = {opacity: 1}; 175 | 176 | return this.delay(function () { 177 | return el 178 | .css(css) 179 | .animate(end_css, this.settings.animationSpeed, 'linear', function () { 180 | this.locked = false; 181 | el.trigger('opened'); 182 | }.bind(this)) 183 | .addClass('open'); 184 | }.bind(this), this.settings.animationSpeed / 2); 185 | } 186 | 187 | return el.css(css).show().css({opacity: 1}).addClass('open').trigger('opened'); 188 | } 189 | 190 | // should we animate the background? 191 | if (/fade/i.test(this.settings.animation)) { 192 | return el.fadeIn(this.settings.animationSpeed / 2); 193 | } 194 | 195 | return el.show(); 196 | }, 197 | 198 | hide : function (el, css) { 199 | // is modal 200 | if (css) { 201 | if (/pop/i.test(this.settings.animation)) { 202 | var end_css = { 203 | top: - $(window).scrollTop() - el.data('offset') + 'px', 204 | opacity: 0 205 | }; 206 | 207 | return this.delay(function () { 208 | return el 209 | .animate(end_css, this.settings.animationSpeed, 'linear', function () { 210 | this.locked = false; 211 | el.css(css).trigger('closed'); 212 | }.bind(this)) 213 | .removeClass('open'); 214 | }.bind(this), this.settings.animationSpeed / 2); 215 | } 216 | 217 | if (/fade/i.test(this.settings.animation)) { 218 | var end_css = {opacity: 0}; 219 | 220 | return this.delay(function () { 221 | return el 222 | .animate(end_css, this.settings.animationSpeed, 'linear', function () { 223 | this.locked = false; 224 | el.css(css).trigger('closed'); 225 | }.bind(this)) 226 | .removeClass('open'); 227 | }.bind(this), this.settings.animationSpeed / 2); 228 | } 229 | 230 | return el.hide().css(css).removeClass('open').trigger('closed'); 231 | } 232 | 233 | // should we animate the background? 234 | if (/fade/i.test(this.settings.animation)) { 235 | return el.fadeOut(this.settings.animationSpeed / 2); 236 | } 237 | 238 | return el.hide(); 239 | }, 240 | 241 | close_video : function (e) { 242 | var video = $(this).find('.flex-video'), 243 | iframe = video.find('iframe'); 244 | 245 | if (iframe.length > 0) { 246 | iframe.attr('data-src', iframe[0].src); 247 | iframe.attr('src', 'about:blank'); 248 | video.fadeOut(100).hide(); 249 | } 250 | }, 251 | 252 | open_video : function (e) { 253 | var video = $(this).find('.flex-video'), 254 | iframe = video.find('iframe'); 255 | 256 | if (iframe.length > 0) { 257 | var data_src = iframe.attr('data-src'); 258 | if (typeof data_src === 'string') { 259 | iframe[0].src = iframe.attr('data-src'); 260 | } 261 | video.show().fadeIn(100); 262 | } 263 | }, 264 | 265 | cache_offset : function (modal) { 266 | var offset = modal.show().height() + parseInt(modal.css('top'), 10); 267 | 268 | modal.hide(); 269 | 270 | return offset; 271 | }, 272 | 273 | off : function () { 274 | $(this.scope).off('.fndtn.reveal'); 275 | } 276 | }; 277 | }(Foundation.zj, this, this.document)); -------------------------------------------------------------------------------- /sass/app.scss: -------------------------------------------------------------------------------- 1 | // Global Foundation Settings 2 | @import "settings"; 3 | 4 | // Comment out this import if you don't want to use normalize 5 | @import "normalize"; 6 | 7 | @import "font-awesome"; 8 | @import "fonts"; 9 | 10 | // Comment out this import if you are customizing you imports below 11 | //@import "foundation"; 12 | 13 | // Compass' CSS3 mixins 14 | @import "compass/css3"; 15 | @import "compass/layout/sticky-footer"; 16 | // Import specific parts of Foundation by commenting the import "foundation" 17 | // and uncommenting what you want below. You must uncomment the following if customizing 18 | 19 | @import "foundation/components/global"; // *always required 20 | @import "foundation/components/grid"; 21 | // @import "foundation/components/visibility"; 22 | // @import "foundation/components/block-grid"; 23 | @import "foundation/components/type"; 24 | @import "foundation/components/buttons"; 25 | @import "foundation/components/forms"; // *requires components/buttons 26 | // @import "foundation/components/custom-forms"; // *requires components/buttons, components/forms 27 | // @import "foundation/components/button-groups"; // *requires components/buttons 28 | @import "foundation/components/dropdown-buttons"; // *requires components/buttons 29 | // @import "foundation/components/split-buttons"; // *requires components/buttons 30 | // @import "foundation/components/flex-video"; 31 | // @import "foundation/components/section"; 32 | // @import "foundation/components/top-bar"; // *requires components/grid 33 | // @import "foundation/components/orbit"; 34 | // @import "foundation/components/reveal"; 35 | // @import "foundation/components/joyride"; 36 | // @import "foundation/components/clearing"; 37 | // @import "foundation/components/alert-boxes"; 38 | // @import "foundation/components/breadcrumbs"; 39 | // @import "foundation/components/keystrokes"; 40 | // @import "foundation/components/labels"; 41 | @import "foundation/components/inline-lists"; 42 | // @import "foundation/components/pagination"; 43 | // @import "foundation/components/panels"; 44 | // @import "foundation/components/pricing-tables"; 45 | // @import "foundation/components/progress-bars"; 46 | // @import "foundation/components/side-nav"; 47 | // @import "foundation/components/sub-nav"; 48 | // @import "foundation/components/switch"; 49 | // @import "foundation/components/magellan"; 50 | // @import "foundation/components/tables"; 51 | @import "foundation/components/thumbs"; 52 | // @import "foundation/components/tooltips"; 53 | // @import "foundation/components/dropdown"; 54 | 55 | @include sticky-footer(200px, ".content", ".content-dock", ".dock"); 56 | 57 | 58 | 59 | body, .columns, .column { padding: 0; } 60 | 61 | 62 | //# /$$$$$$$$ /$$ 63 | //# |__ $$__/ | $$ 64 | //# | $$ /$$ /$$ /$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$ | $$$$$$$ /$$ /$$ 65 | //# | $$ | $$ | $$ /$$__ $$ /$$__ $$ /$$__ $$ /$$__ $$ |____ $$ /$$__ $$| $$__ $$| $$ | $$ 66 | //# | $$ | $$ | $$| $$ \ $$| $$ \ $$| $$ \ $$| $$ \__/ /$$$$$$$| $$ \ $$| $$ \ $$| $$ | $$ 67 | //# | $$ | $$ | $$| $$ | $$| $$ | $$| $$ | $$| $$ /$$__ $$| $$ | $$| $$ | $$| $$ | $$ 68 | //# | $$ | $$$$$$$| $$$$$$$/| $$$$$$/| $$$$$$$| $$ | $$$$$$$| $$$$$$$/| $$ | $$| $$$$$$$ 69 | //# |__/ \____ $$| $$____/ \______/ \____ $$|__/ \_______/| $$____/ |__/ |__/ \____ $$ 70 | //# /$$ | $$| $$ /$$ \ $$ | $$ /$$ | $$ 71 | //# | $$$$$$/| $$ | $$$$$$/ | $$ | $$$$$$/ 72 | //# \______/ |__/ \______/ |__/ \______/ 73 | 74 | 75 | 76 | 77 | h1, h2, h3, h4, h5, h6, p, li, a { 78 | @include transition-property(all); 79 | @include transition-duration(0.3s); 80 | @include transition-timing-function(ease-in); 81 | 82 | } 83 | 84 | h1 { 85 | text-align: left; 86 | // font-size: emCalc(24px); 87 | line-height: 1.2; 88 | } 89 | 90 | h2 { 91 | // font-size: emCalc(16px); 92 | margin-bottom: .8em; 93 | text-transform: uppercase; 94 | margin-top: .8em; 95 | font-weight: 400; 96 | } 97 | p { 98 | padding-top: 0; 99 | margin-top: 0; 100 | line-height: 1.4; 101 | // font-size: emCalc(14px); 102 | font-weight: 100; 103 | } 104 | p.link { 105 | margin-top: 1em; 106 | @include grid-column(12); 107 | } 108 | @media #{$small} { 109 | h1 { font-size: emCalc(80px); } 110 | h2 { font-size: emCalc(34px); margin-top: 0; } 111 | p { font-size: emCalc(24px); } 112 | .copy { margin-left: 1em; } 113 | p.link { 114 | display: none; 115 | } 116 | } 117 | @media #{$medium} { 118 | h2 { 119 | 120 | } 121 | } 122 | 123 | 124 | 125 | 126 | //# /$$$$$$ /$$ /$$ 127 | //# /$$__ $$ | $$ | $$ 128 | //# | $$ \__/ /$$$$$$ /$$$$$$ /$$ /$$ /$$$$$$$ /$$$$$$ /$$ /$$ /$$$$$$ /$$$$$$ 129 | //# | $$$$$$ |_ $$_/ /$$__ $$| $$ | $$ /$$_____/|_ $$_/ | $$ | $$ /$$__ $$ /$$__ $$ 130 | //# \____ $$ | $$ | $$ \__/| $$ | $$| $$ | $$ | $$ | $$| $$ \__/| $$$$$$$$ 131 | //# /$$ \ $$ | $$ /$$| $$ | $$ | $$| $$ | $$ /$$| $$ | $$| $$ | $$_____/ 132 | //# | $$$$$$/ | $$$$/| $$ | $$$$$$/| $$$$$$$ | $$$$/| $$$$$$/| $$ | $$$$$$$ 133 | //# \______/ \___/ |__/ \______/ \_______/ \___/ \______/ |__/ \_______/ 134 | 135 | 136 | 137 | 138 | 139 | li.post-box { 140 | padding: 20px; 141 | display: inline-block; 142 | height: 100%; 143 | min-height: 100%; 144 | } 145 | /*.orbit-prev, .orbit-next, .orbit-slide-number { 146 | display: none; 147 | height: 0; 148 | width: 0; 149 | }*/ 150 | .dock { display: none; } 151 | @media #{$medium} { 152 | 153 | } 154 | @media #{$large} { 155 | 156 | } 157 | 158 | 159 | 160 | @media #{$small} { 161 | 162 | *, html, body { 163 | max-height: 100%; 164 | overflow: hidden; 165 | } 166 | .orbit-slides-container { 167 | height: 100%; 168 | min-height: 100%; 169 | } 170 | li.post-box { 171 | height: 100%; 172 | min-height: 100vh; 173 | width: 100vw; 174 | min-width: 100vw; 175 | overflow: hidden; 176 | } 177 | img.feature { 178 | margin-left: 1em 179 | } 180 | 181 | 182 | .page-wrap { 183 | min-height: 100%; 184 | /* equal to footer height */ 185 | margin: 0 0 -215px 0; 186 | padding-bottom: 0; 187 | } 188 | .page-wrap:after { 189 | content: ""; 190 | display: block; 191 | padding-bottom: 0; 192 | } 193 | .footer, .page-wrap:after { 194 | /* .push must be the same height as footer */ 195 | height: 215px; 196 | padding-bottom: 0; 197 | margin: 0; 198 | } 199 | .dock { 200 | background: rgba(79,75,75,0.43); 201 | position: relative; 202 | display: block; 203 | // height: 215px; 204 | height: 50%; 205 | width: 100%; 206 | } 207 | .dock .columns { 208 | border-right: 1px solid rgba(255,255,255,0.4); 209 | display: inline-block; 210 | height: 100%; 211 | padding: .3em 1em; 212 | color: #fff; 213 | } 214 | .dock .row { 215 | height: 100%; 216 | } 217 | .dock .columns:last-child { 218 | border-right: none; 219 | } 220 | .dock h6 { color: #ffffff; } 221 | } 222 | 223 | 224 | iframe { 225 | border:none; 226 | margin:0; 227 | padding:0; 228 | height: 200px; 229 | width: 100%; 230 | position: relative; 231 | } 232 | 233 | 234 | * { cursor: url('../cursor.png'), none; } 235 | 236 | 237 | //# /$$ /$$ /$$ /$$ 238 | //# | $$ /$ | $$ | $$ | $$ 239 | //# | $$ /$$$| $$ /$$$$$$ /$$$$$$ /$$$$$$ | $$$$$$$ /$$$$$$ /$$$$$$ 240 | //# | $$/$$ $$ $$ /$$__ $$ |____ $$|_ $$_/ | $$__ $$ /$$__ $$ /$$__ $$ 241 | //# | $$$$_ $$$$| $$$$$$$$ /$$$$$$$ | $$ | $$ \ $$| $$$$$$$$| $$ \__/ 242 | //# | $$$/ \ $$$| $$_____/ /$$__ $$ | $$ /$$| $$ | $$| $$_____/| $$ 243 | //# | $$/ \ $$| $$$$$$$| $$$$$$$ | $$$$/| $$ | $$| $$$$$$$| $$ 244 | //# |__/ \__/ \_______/ \_______/ \___/ |__/ |__/ \_______/|__/ 245 | 246 | 247 | .icon { 248 | overflow: hidden; 249 | //font-size: emCalc(200px); 250 | font-size: 12rem; 251 | text-align: left; 252 | padding: 0 0 0 1rem !important; 253 | margin-top: -3%; 254 | @include grid-column(6); 255 | } 256 | .conditions { 257 | //margin: 16px 46px 0 0; 258 | text-align: left; 259 | @include grid-column(6); 260 | padding-top: 0; 261 | } 262 | .temperature { 263 | font-size: 5.3rem; 264 | display: block; 265 | line-height: 1.1; 266 | padding-top: .8rem; 267 | } 268 | .condition { 269 | font-size: 2rem; 270 | display: block; 271 | line-height: 1.3; 272 | } 273 | 274 | 275 | /* Climacons styles 276 | ------------------------------------------------------- */ 277 | 278 | 279 | //# /$$$$$$ /$$ /$$ 280 | //# /$$__ $$| $$ | $$ 281 | //# | $$ \__/| $$ /$$$$$$ /$$$$$$$| $$ /$$ 282 | //# | $$ | $$ /$$__ $$ /$$_____/| $$ /$$/ 283 | //# | $$ | $$| $$ \ $$| $$ | $$$$$$/ 284 | //# | $$ $$| $$| $$ | $$| $$ | $$_ $$ 285 | //# | $$$$$$/| $$| $$$$$$/| $$$$$$$| $$ \ $$ 286 | //# \______/ |__/ \______/ \_______/|__/ \__/ 287 | 288 | 289 | /* -------------------------- 290 | Thanks, @Bluxart :: http://www.alessioatzeni.com/blog/css3-digital-clock-with-jquery/ 291 | ----------------------- */ 292 | .clock { 293 | width:98%; 294 | margin:0 auto 0 auto; 295 | padding: 0; 296 | color:#fff; 297 | } 298 | 299 | #Date { 300 | font-size: emCalc(30px); 301 | text-align:center; 302 | margin-top:10px; 303 | display:block; 304 | float:none; 305 | position:relative; 306 | } 307 | 308 | .clock ul { 309 | width:100%; 310 | margin:0 auto !important; 311 | padding:0 !important; 312 | list-style:none; 313 | text-align:center; 314 | display:block; 315 | line-height: 1.1; 316 | } 317 | .clock ul li { 318 | display:inline; 319 | text-align:center; 320 | // font-size: emCalc(60px); 321 | font-size: 6rem; 322 | font-weight: normal; 323 | margin:0; 324 | padding: 0; 325 | color:#fff; 326 | } 327 | 328 | #point { 329 | padding:0; 330 | font-size: 7rem; 331 | position:relative; 332 | display: inline; 333 | -moz-animation:mymove 1s ease infinite; 334 | -webkit-animation:mymove 1s ease infinite; 335 | } 336 | /* Simple Animation */ 337 | @-webkit-keyframes mymove 338 | { 339 | 0% {opacity:.8; } 340 | 50% {opacity:.1; } 341 | 100% {opacity:.8; } 342 | } 343 | 344 | @-moz-keyframes mymove 345 | { 346 | 0% {opacity:.8; } 347 | 50% {opacity:.1; } 348 | 100% {opacity:.8; } 349 | } 350 | 351 | -------------------------------------------------------------------------------- /stylesheets/normalize.css: -------------------------------------------------------------------------------- 1 | /* normalize.css v2.1.1 | MIT License | git.io/normalize */ 2 | /* ========================================================================== 3 | HTML5 display definitions 4 | ========================================================================== */ 5 | /** 6 | * Correct `block` display not defined in IE 8/9. 7 | */ 8 | /* line 22, ../sass/normalize.scss */ 9 | article, 10 | aside, 11 | details, 12 | figcaption, 13 | figure, 14 | footer, 15 | header, 16 | hgroup, 17 | main, 18 | nav, 19 | section, 20 | summary { 21 | display: block; 22 | } 23 | 24 | /** 25 | * Correct `inline-block` display not defined in IE 8/9. 26 | */ 27 | /* line 32, ../sass/normalize.scss */ 28 | audio, 29 | canvas, 30 | video { 31 | display: inline-block; 32 | } 33 | 34 | /** 35 | * Prevent modern browsers from displaying `audio` without controls. 36 | * Remove excess height in iOS 5 devices. 37 | */ 38 | /* line 41, ../sass/normalize.scss */ 39 | audio:not([controls]) { 40 | display: none; 41 | height: 0; 42 | } 43 | 44 | /** 45 | * Address styling not present in IE 8/9. 46 | */ 47 | /* line 50, ../sass/normalize.scss */ 48 | [hidden] { 49 | display: none; 50 | } 51 | 52 | /* ========================================================================== 53 | Base 54 | ========================================================================== */ 55 | /** 56 | * 1. Prevent system color scheme's background color being used in Firefox, IE, 57 | * and Opera. 58 | * 2. Prevent system color scheme's text color being used in Firefox, IE, and 59 | * Opera. 60 | * 3. Set default font family to sans-serif. 61 | * 4. Prevent iOS text size adjust after orientation change, without disabling 62 | * user zoom. 63 | */ 64 | /* line 68, ../sass/normalize.scss */ 65 | html { 66 | background: #fff; 67 | /* 1 */ 68 | color: #000; 69 | /* 2 */ 70 | font-family: sans-serif; 71 | /* 3 */ 72 | -ms-text-size-adjust: 100%; 73 | /* 4 */ 74 | -webkit-text-size-adjust: 100%; 75 | /* 4 */ 76 | } 77 | 78 | /** 79 | * Remove default margin. 80 | */ 81 | /* line 80, ../sass/normalize.scss */ 82 | body { 83 | margin: 0; 84 | } 85 | 86 | /* ========================================================================== 87 | Links 88 | ========================================================================== */ 89 | /** 90 | * Address `outline` inconsistency between Chrome and other browsers. 91 | */ 92 | /* line 92, ../sass/normalize.scss */ 93 | a:focus { 94 | outline: thin dotted; 95 | } 96 | 97 | /** 98 | * Improve readability when focused and also mouse hovered in all browsers. 99 | */ 100 | /* line 101, ../sass/normalize.scss */ 101 | a:active, 102 | a:hover { 103 | outline: 0; 104 | } 105 | 106 | /* ========================================================================== 107 | Typography 108 | ========================================================================== */ 109 | /** 110 | * Address variable `h1` font-size and margin within `section` and `article` 111 | * contexts in Firefox 4+, Safari 5, and Chrome. 112 | */ 113 | /* line 114, ../sass/normalize.scss */ 114 | h1 { 115 | font-size: 2em; 116 | margin: 0.67em 0; 117 | } 118 | 119 | /** 120 | * Address styling not present in IE 8/9, Safari 5, and Chrome. 121 | */ 122 | /* line 123, ../sass/normalize.scss */ 123 | abbr[title] { 124 | border-bottom: 1px dotted; 125 | } 126 | 127 | /** 128 | * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. 129 | */ 130 | /* line 132, ../sass/normalize.scss */ 131 | b, 132 | strong { 133 | font-weight: bold; 134 | } 135 | 136 | /** 137 | * Address styling not present in Safari 5 and Chrome. 138 | */ 139 | /* line 140, ../sass/normalize.scss */ 140 | dfn { 141 | font-style: italic; 142 | } 143 | 144 | /** 145 | * Address differences between Firefox and other browsers. 146 | */ 147 | /* line 148, ../sass/normalize.scss */ 148 | hr { 149 | -moz-box-sizing: content-box; 150 | box-sizing: content-box; 151 | height: 0; 152 | } 153 | 154 | /** 155 | * Address styling not present in IE 8/9. 156 | */ 157 | /* line 158, ../sass/normalize.scss */ 158 | mark { 159 | background: #ff0; 160 | color: #000; 161 | } 162 | 163 | /** 164 | * Correct font family set oddly in Safari 5 and Chrome. 165 | */ 166 | /* line 170, ../sass/normalize.scss */ 167 | code, 168 | kbd, 169 | pre, 170 | samp { 171 | font-family: monospace, serif; 172 | font-size: 1em; 173 | } 174 | 175 | /** 176 | * Improve readability of pre-formatted text in all browsers. 177 | */ 178 | /* line 179, ../sass/normalize.scss */ 179 | pre { 180 | white-space: pre-wrap; 181 | } 182 | 183 | /** 184 | * Set consistent quote types. 185 | */ 186 | /* line 187, ../sass/normalize.scss */ 187 | q { 188 | quotes: "\201C" "\201D" "\2018" "\2019"; 189 | } 190 | 191 | /** 192 | * Address inconsistent and variable font size in all browsers. 193 | */ 194 | /* line 195, ../sass/normalize.scss */ 195 | small { 196 | font-size: 80%; 197 | } 198 | 199 | /** 200 | * Prevent `sub` and `sup` affecting `line-height` in all browsers. 201 | */ 202 | /* line 204, ../sass/normalize.scss */ 203 | sub, 204 | sup { 205 | font-size: 75%; 206 | line-height: 0; 207 | position: relative; 208 | vertical-align: baseline; 209 | } 210 | 211 | /* line 211, ../sass/normalize.scss */ 212 | sup { 213 | top: -0.5em; 214 | } 215 | 216 | /* line 215, ../sass/normalize.scss */ 217 | sub { 218 | bottom: -0.25em; 219 | } 220 | 221 | /* ========================================================================== 222 | Embedded content 223 | ========================================================================== */ 224 | /** 225 | * Remove border when inside `a` element in IE 8/9. 226 | */ 227 | /* line 227, ../sass/normalize.scss */ 228 | img { 229 | border: 0; 230 | } 231 | 232 | /** 233 | * Correct overflow displayed oddly in IE 9. 234 | */ 235 | /* line 235, ../sass/normalize.scss */ 236 | svg:not(:root) { 237 | overflow: hidden; 238 | } 239 | 240 | /* ========================================================================== 241 | Figures 242 | ========================================================================== */ 243 | /** 244 | * Address margin not present in IE 8/9 and Safari 5. 245 | */ 246 | /* line 247, ../sass/normalize.scss */ 247 | figure { 248 | margin: 0; 249 | } 250 | 251 | /* ========================================================================== 252 | Forms 253 | ========================================================================== */ 254 | /** 255 | * Define consistent border, margin, and padding. 256 | */ 257 | /* line 259, ../sass/normalize.scss */ 258 | fieldset { 259 | border: 1px solid #c0c0c0; 260 | margin: 0 2px; 261 | padding: 0.35em 0.625em 0.75em; 262 | } 263 | 264 | /** 265 | * 1. Correct `color` not being inherited in IE 8/9. 266 | * 2. Remove padding so people aren't caught out if they zero out fieldsets. 267 | */ 268 | /* line 270, ../sass/normalize.scss */ 269 | legend { 270 | border: 0; 271 | /* 1 */ 272 | padding: 0; 273 | /* 2 */ 274 | } 275 | 276 | /** 277 | * 1. Correct font family not being inherited in all browsers. 278 | * 2. Correct font size not being inherited in all browsers. 279 | * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. 280 | */ 281 | /* line 284, ../sass/normalize.scss */ 282 | button, 283 | input, 284 | select, 285 | textarea { 286 | font-family: inherit; 287 | /* 1 */ 288 | font-size: 100%; 289 | /* 2 */ 290 | margin: 0; 291 | /* 3 */ 292 | } 293 | 294 | /** 295 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in 296 | * the UA stylesheet. 297 | */ 298 | /* line 296, ../sass/normalize.scss */ 299 | button, 300 | input { 301 | line-height: normal; 302 | } 303 | 304 | /** 305 | * Address inconsistent `text-transform` inheritance for `button` and `select`. 306 | * All other form control elements do not inherit `text-transform` values. 307 | * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+. 308 | * Correct `select` style inheritance in Firefox 4+ and Opera. 309 | */ 310 | /* line 308, ../sass/normalize.scss */ 311 | button, 312 | select { 313 | text-transform: none; 314 | } 315 | 316 | /** 317 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` 318 | * and `video` controls. 319 | * 2. Correct inability to style clickable `input` types in iOS. 320 | * 3. Improve usability and consistency of cursor style between image-type 321 | * `input` and others. 322 | */ 323 | /* line 323, ../sass/normalize.scss */ 324 | button, 325 | html input[type="button"], 326 | input[type="reset"], 327 | input[type="submit"] { 328 | -webkit-appearance: button; 329 | /* 2 */ 330 | cursor: pointer; 331 | /* 3 */ 332 | } 333 | 334 | /** 335 | * Re-set default cursor for disabled elements. 336 | */ 337 | /* line 333, ../sass/normalize.scss */ 338 | button[disabled], 339 | html input[disabled] { 340 | cursor: default; 341 | } 342 | 343 | /** 344 | * 1. Address box sizing set to `content-box` in IE 8/9. 345 | * 2. Remove excess padding in IE 8/9. 346 | */ 347 | /* line 343, ../sass/normalize.scss */ 348 | input[type="checkbox"], 349 | input[type="radio"] { 350 | box-sizing: border-box; 351 | /* 1 */ 352 | padding: 0; 353 | /* 2 */ 354 | } 355 | 356 | /** 357 | * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. 358 | * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome 359 | * (include `-moz` to future-proof). 360 | */ 361 | /* line 354, ../sass/normalize.scss */ 362 | input[type="search"] { 363 | -webkit-appearance: textfield; 364 | /* 1 */ 365 | -moz-box-sizing: content-box; 366 | -webkit-box-sizing: content-box; 367 | /* 2 */ 368 | box-sizing: content-box; 369 | } 370 | 371 | /** 372 | * Remove inner padding and search cancel button in Safari 5 and Chrome 373 | * on OS X. 374 | */ 375 | /* line 367, ../sass/normalize.scss */ 376 | input[type="search"]::-webkit-search-cancel-button, 377 | input[type="search"]::-webkit-search-decoration { 378 | -webkit-appearance: none; 379 | } 380 | 381 | /** 382 | * Remove inner padding and border in Firefox 4+. 383 | */ 384 | /* line 376, ../sass/normalize.scss */ 385 | button::-moz-focus-inner, 386 | input::-moz-focus-inner { 387 | border: 0; 388 | padding: 0; 389 | } 390 | 391 | /** 392 | * 1. Remove default vertical scrollbar in IE 8/9. 393 | * 2. Improve readability and alignment in all browsers. 394 | */ 395 | /* line 386, ../sass/normalize.scss */ 396 | textarea { 397 | overflow: auto; 398 | /* 1 */ 399 | vertical-align: top; 400 | /* 2 */ 401 | } 402 | 403 | /* ========================================================================== 404 | Tables 405 | ========================================================================== */ 406 | /** 407 | * Remove most spacing between table cells. 408 | */ 409 | /* line 399, ../sass/normalize.scss */ 410 | table { 411 | border-collapse: collapse; 412 | border-spacing: 0; 413 | } 414 | -------------------------------------------------------------------------------- /sass/_variables.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | // -------------------------- 3 | 4 | $FontAwesomePath: "../font" !default; 5 | $FontAwesomeVersion: "3.2.1" !default; 6 | $borderColor: #eeeeee !default; 7 | $iconMuted: #eeeeee !default; 8 | $iconLight: white !default; 9 | $iconDark: #333333 !default; 10 | $icons-li-width: (30em/14); 11 | 12 | 13 | $glass: "\f000"; 14 | 15 | $music: "\f001"; 16 | 17 | $search: "\f002"; 18 | 19 | $envelope-alt: "\f003"; 20 | 21 | $heart: "\f004"; 22 | 23 | $star: "\f005"; 24 | 25 | $star-empty: "\f006"; 26 | 27 | $user: "\f007"; 28 | 29 | $film: "\f008"; 30 | 31 | $th-large: "\f009"; 32 | 33 | $th: "\f00a"; 34 | 35 | $th-list: "\f00b"; 36 | 37 | $ok: "\f00c"; 38 | 39 | $remove: "\f00d"; 40 | 41 | $zoom-in: "\f00e"; 42 | 43 | $zoom-out: "\f010"; 44 | 45 | $off: "\f011"; 46 | 47 | $signal: "\f012"; 48 | 49 | $cog: "\f013"; 50 | 51 | $trash: "\f014"; 52 | 53 | $home: "\f015"; 54 | 55 | $file-alt: "\f016"; 56 | 57 | $time: "\f017"; 58 | 59 | $road: "\f018"; 60 | 61 | $download-alt: "\f019"; 62 | 63 | $download: "\f01a"; 64 | 65 | $upload: "\f01b"; 66 | 67 | $inbox: "\f01c"; 68 | 69 | $play-circle: "\f01d"; 70 | 71 | $repeat: "\f01e"; 72 | 73 | $refresh: "\f021"; 74 | 75 | $list-alt: "\f022"; 76 | 77 | $lock: "\f023"; 78 | 79 | $flag: "\f024"; 80 | 81 | $headphones: "\f025"; 82 | 83 | $volume-off: "\f026"; 84 | 85 | $volume-down: "\f027"; 86 | 87 | $volume-up: "\f028"; 88 | 89 | $qrcode: "\f029"; 90 | 91 | $barcode: "\f02a"; 92 | 93 | $tag: "\f02b"; 94 | 95 | $tags: "\f02c"; 96 | 97 | $book: "\f02d"; 98 | 99 | $bookmark: "\f02e"; 100 | 101 | $print: "\f02f"; 102 | 103 | $camera: "\f030"; 104 | 105 | $font: "\f031"; 106 | 107 | $bold: "\f032"; 108 | 109 | $italic: "\f033"; 110 | 111 | $text-height: "\f034"; 112 | 113 | $text-width: "\f035"; 114 | 115 | $align-left: "\f036"; 116 | 117 | $align-center: "\f037"; 118 | 119 | $align-right: "\f038"; 120 | 121 | $align-justify: "\f039"; 122 | 123 | $list: "\f03a"; 124 | 125 | $indent-left: "\f03b"; 126 | 127 | $indent-right: "\f03c"; 128 | 129 | $facetime-video: "\f03d"; 130 | 131 | $picture: "\f03e"; 132 | 133 | $pencil: "\f040"; 134 | 135 | $map-marker: "\f041"; 136 | 137 | $adjust: "\f042"; 138 | 139 | $tint: "\f043"; 140 | 141 | $edit: "\f044"; 142 | 143 | $share: "\f045"; 144 | 145 | $check: "\f046"; 146 | 147 | $move: "\f047"; 148 | 149 | $step-backward: "\f048"; 150 | 151 | $fast-backward: "\f049"; 152 | 153 | $backward: "\f04a"; 154 | 155 | $play: "\f04b"; 156 | 157 | $pause: "\f04c"; 158 | 159 | $stop: "\f04d"; 160 | 161 | $forward: "\f04e"; 162 | 163 | $fast-forward: "\f050"; 164 | 165 | $step-forward: "\f051"; 166 | 167 | $eject: "\f052"; 168 | 169 | $chevron-left: "\f053"; 170 | 171 | $chevron-right: "\f054"; 172 | 173 | $plus-sign: "\f055"; 174 | 175 | $minus-sign: "\f056"; 176 | 177 | $remove-sign: "\f057"; 178 | 179 | $ok-sign: "\f058"; 180 | 181 | $question-sign: "\f059"; 182 | 183 | $info-sign: "\f05a"; 184 | 185 | $screenshot: "\f05b"; 186 | 187 | $remove-circle: "\f05c"; 188 | 189 | $ok-circle: "\f05d"; 190 | 191 | $ban-circle: "\f05e"; 192 | 193 | $arrow-left: "\f060"; 194 | 195 | $arrow-right: "\f061"; 196 | 197 | $arrow-up: "\f062"; 198 | 199 | $arrow-down: "\f063"; 200 | 201 | $share-alt: "\f064"; 202 | 203 | $resize-full: "\f065"; 204 | 205 | $resize-small: "\f066"; 206 | 207 | $plus: "\f067"; 208 | 209 | $minus: "\f068"; 210 | 211 | $asterisk: "\f069"; 212 | 213 | $exclamation-sign: "\f06a"; 214 | 215 | $gift: "\f06b"; 216 | 217 | $leaf: "\f06c"; 218 | 219 | $fire: "\f06d"; 220 | 221 | $eye-open: "\f06e"; 222 | 223 | $eye-close: "\f070"; 224 | 225 | $warning-sign: "\f071"; 226 | 227 | $plane: "\f072"; 228 | 229 | $calendar: "\f073"; 230 | 231 | $random: "\f074"; 232 | 233 | $comment: "\f075"; 234 | 235 | $magnet: "\f076"; 236 | 237 | $chevron-up: "\f077"; 238 | 239 | $chevron-down: "\f078"; 240 | 241 | $retweet: "\f079"; 242 | 243 | $shopping-cart: "\f07a"; 244 | 245 | $folder-close: "\f07b"; 246 | 247 | $folder-open: "\f07c"; 248 | 249 | $resize-vertical: "\f07d"; 250 | 251 | $resize-horizontal: "\f07e"; 252 | 253 | $bar-chart: "\f080"; 254 | 255 | $twitter-sign: "\f081"; 256 | 257 | $facebook-sign: "\f082"; 258 | 259 | $camera-retro: "\f083"; 260 | 261 | $key: "\f084"; 262 | 263 | $cogs: "\f085"; 264 | 265 | $comments: "\f086"; 266 | 267 | $thumbs-up-alt: "\f087"; 268 | 269 | $thumbs-down-alt: "\f088"; 270 | 271 | $star-half: "\f089"; 272 | 273 | $heart-empty: "\f08a"; 274 | 275 | $signout: "\f08b"; 276 | 277 | $linkedin-sign: "\f08c"; 278 | 279 | $pushpin: "\f08d"; 280 | 281 | $external-link: "\f08e"; 282 | 283 | $signin: "\f090"; 284 | 285 | $trophy: "\f091"; 286 | 287 | $github-sign: "\f092"; 288 | 289 | $upload-alt: "\f093"; 290 | 291 | $lemon: "\f094"; 292 | 293 | $phone: "\f095"; 294 | 295 | $check-empty: "\f096"; 296 | 297 | $bookmark-empty: "\f097"; 298 | 299 | $phone-sign: "\f098"; 300 | 301 | $twitter: "\f099"; 302 | 303 | $facebook: "\f09a"; 304 | 305 | $github: "\f09b"; 306 | 307 | $unlock: "\f09c"; 308 | 309 | $credit-card: "\f09d"; 310 | 311 | $rss: "\f09e"; 312 | 313 | $hdd: "\f0a0"; 314 | 315 | $bullhorn: "\f0a1"; 316 | 317 | $bell: "\f0a2"; 318 | 319 | $certificate: "\f0a3"; 320 | 321 | $hand-right: "\f0a4"; 322 | 323 | $hand-left: "\f0a5"; 324 | 325 | $hand-up: "\f0a6"; 326 | 327 | $hand-down: "\f0a7"; 328 | 329 | $circle-arrow-left: "\f0a8"; 330 | 331 | $circle-arrow-right: "\f0a9"; 332 | 333 | $circle-arrow-up: "\f0aa"; 334 | 335 | $circle-arrow-down: "\f0ab"; 336 | 337 | $globe: "\f0ac"; 338 | 339 | $wrench: "\f0ad"; 340 | 341 | $tasks: "\f0ae"; 342 | 343 | $filter: "\f0b0"; 344 | 345 | $briefcase: "\f0b1"; 346 | 347 | $fullscreen: "\f0b2"; 348 | 349 | $group: "\f0c0"; 350 | 351 | $link: "\f0c1"; 352 | 353 | $cloud: "\f0c2"; 354 | 355 | $beaker: "\f0c3"; 356 | 357 | $cut: "\f0c4"; 358 | 359 | $copy: "\f0c5"; 360 | 361 | $paper-clip: "\f0c6"; 362 | 363 | $save: "\f0c7"; 364 | 365 | $sign-blank: "\f0c8"; 366 | 367 | $reorder: "\f0c9"; 368 | 369 | $list-ul: "\f0ca"; 370 | 371 | $list-ol: "\f0cb"; 372 | 373 | $strikethrough: "\f0cc"; 374 | 375 | $underline: "\f0cd"; 376 | 377 | $table: "\f0ce"; 378 | 379 | $magic: "\f0d0"; 380 | 381 | $truck: "\f0d1"; 382 | 383 | $pinterest: "\f0d2"; 384 | 385 | $pinterest-sign: "\f0d3"; 386 | 387 | $google-plus-sign: "\f0d4"; 388 | 389 | $google-plus: "\f0d5"; 390 | 391 | $money: "\f0d6"; 392 | 393 | $caret-down: "\f0d7"; 394 | 395 | $caret-up: "\f0d8"; 396 | 397 | $caret-left: "\f0d9"; 398 | 399 | $caret-right: "\f0da"; 400 | 401 | $columns: "\f0db"; 402 | 403 | $sort: "\f0dc"; 404 | 405 | $sort-down: "\f0dd"; 406 | 407 | $sort-up: "\f0de"; 408 | 409 | $envelope: "\f0e0"; 410 | 411 | $linkedin: "\f0e1"; 412 | 413 | $undo: "\f0e2"; 414 | 415 | $legal: "\f0e3"; 416 | 417 | $dashboard: "\f0e4"; 418 | 419 | $comment-alt: "\f0e5"; 420 | 421 | $comments-alt: "\f0e6"; 422 | 423 | $bolt: "\f0e7"; 424 | 425 | $sitemap: "\f0e8"; 426 | 427 | $umbrella: "\f0e9"; 428 | 429 | $paste: "\f0ea"; 430 | 431 | $lightbulb: "\f0eb"; 432 | 433 | $exchange: "\f0ec"; 434 | 435 | $cloud-download: "\f0ed"; 436 | 437 | $cloud-upload: "\f0ee"; 438 | 439 | $user-md: "\f0f0"; 440 | 441 | $stethoscope: "\f0f1"; 442 | 443 | $suitcase: "\f0f2"; 444 | 445 | $bell-alt: "\f0f3"; 446 | 447 | $coffee: "\f0f4"; 448 | 449 | $food: "\f0f5"; 450 | 451 | $file-text-alt: "\f0f6"; 452 | 453 | $building: "\f0f7"; 454 | 455 | $hospital: "\f0f8"; 456 | 457 | $ambulance: "\f0f9"; 458 | 459 | $medkit: "\f0fa"; 460 | 461 | $fighter-jet: "\f0fb"; 462 | 463 | $beer: "\f0fc"; 464 | 465 | $h-sign: "\f0fd"; 466 | 467 | $plus-sign-alt: "\f0fe"; 468 | 469 | $double-angle-left: "\f100"; 470 | 471 | $double-angle-right: "\f101"; 472 | 473 | $double-angle-up: "\f102"; 474 | 475 | $double-angle-down: "\f103"; 476 | 477 | $angle-left: "\f104"; 478 | 479 | $angle-right: "\f105"; 480 | 481 | $angle-up: "\f106"; 482 | 483 | $angle-down: "\f107"; 484 | 485 | $desktop: "\f108"; 486 | 487 | $laptop: "\f109"; 488 | 489 | $tablet: "\f10a"; 490 | 491 | $mobile-phone: "\f10b"; 492 | 493 | $circle-blank: "\f10c"; 494 | 495 | $quote-left: "\f10d"; 496 | 497 | $quote-right: "\f10e"; 498 | 499 | $spinner: "\f110"; 500 | 501 | $circle: "\f111"; 502 | 503 | $reply: "\f112"; 504 | 505 | $github-alt: "\f113"; 506 | 507 | $folder-close-alt: "\f114"; 508 | 509 | $folder-open-alt: "\f115"; 510 | 511 | $expand-alt: "\f116"; 512 | 513 | $collapse-alt: "\f117"; 514 | 515 | $smile: "\f118"; 516 | 517 | $frown: "\f119"; 518 | 519 | $meh: "\f11a"; 520 | 521 | $gamepad: "\f11b"; 522 | 523 | $keyboard: "\f11c"; 524 | 525 | $flag-alt: "\f11d"; 526 | 527 | $flag-checkered: "\f11e"; 528 | 529 | $terminal: "\f120"; 530 | 531 | $code: "\f121"; 532 | 533 | $reply-all: "\f122"; 534 | 535 | $mail-reply-all: "\f122"; 536 | 537 | $star-half-empty: "\f123"; 538 | 539 | $location-arrow: "\f124"; 540 | 541 | $crop: "\f125"; 542 | 543 | $code-fork: "\f126"; 544 | 545 | $unlink: "\f127"; 546 | 547 | $question: "\f128"; 548 | 549 | $info: "\f129"; 550 | 551 | $exclamation: "\f12a"; 552 | 553 | $superscript: "\f12b"; 554 | 555 | $subscript: "\f12c"; 556 | 557 | $eraser: "\f12d"; 558 | 559 | $puzzle-piece: "\f12e"; 560 | 561 | $microphone: "\f130"; 562 | 563 | $microphone-off: "\f131"; 564 | 565 | $shield: "\f132"; 566 | 567 | $calendar-empty: "\f133"; 568 | 569 | $fire-extinguisher: "\f134"; 570 | 571 | $rocket: "\f135"; 572 | 573 | $maxcdn: "\f136"; 574 | 575 | $chevron-sign-left: "\f137"; 576 | 577 | $chevron-sign-right: "\f138"; 578 | 579 | $chevron-sign-up: "\f139"; 580 | 581 | $chevron-sign-down: "\f13a"; 582 | 583 | $html5: "\f13b"; 584 | 585 | $css3: "\f13c"; 586 | 587 | $anchor: "\f13d"; 588 | 589 | $unlock-alt: "\f13e"; 590 | 591 | $bullseye: "\f140"; 592 | 593 | $ellipsis-horizontal: "\f141"; 594 | 595 | $ellipsis-vertical: "\f142"; 596 | 597 | $rss-sign: "\f143"; 598 | 599 | $play-sign: "\f144"; 600 | 601 | $ticket: "\f145"; 602 | 603 | $minus-sign-alt: "\f146"; 604 | 605 | $check-minus: "\f147"; 606 | 607 | $level-up: "\f148"; 608 | 609 | $level-down: "\f149"; 610 | 611 | $check-sign: "\f14a"; 612 | 613 | $edit-sign: "\f14b"; 614 | 615 | $external-link-sign: "\f14c"; 616 | 617 | $share-sign: "\f14d"; 618 | 619 | $compass: "\f14e"; 620 | 621 | $collapse: "\f150"; 622 | 623 | $collapse-top: "\f151"; 624 | 625 | $expand: "\f152"; 626 | 627 | $eur: "\f153"; 628 | 629 | $gbp: "\f154"; 630 | 631 | $usd: "\f155"; 632 | 633 | $inr: "\f156"; 634 | 635 | $jpy: "\f157"; 636 | 637 | $cny: "\f158"; 638 | 639 | $krw: "\f159"; 640 | 641 | $btc: "\f15a"; 642 | 643 | $file: "\f15b"; 644 | 645 | $file-text: "\f15c"; 646 | 647 | $sort-by-alphabet: "\f15d"; 648 | 649 | $sort-by-alphabet-alt: "\f15e"; 650 | 651 | $sort-by-attributes: "\f160"; 652 | 653 | $sort-by-attributes-alt: "\f161"; 654 | 655 | $sort-by-order: "\f162"; 656 | 657 | $sort-by-order-alt: "\f163"; 658 | 659 | $thumbs-up: "\f164"; 660 | 661 | $thumbs-down: "\f165"; 662 | 663 | $youtube-sign: "\f166"; 664 | 665 | $youtube: "\f167"; 666 | 667 | $xing: "\f168"; 668 | 669 | $xing-sign: "\f169"; 670 | 671 | $youtube-play: "\f16a"; 672 | 673 | $dropbox: "\f16b"; 674 | 675 | $stackexchange: "\f16c"; 676 | 677 | $instagram: "\f16d"; 678 | 679 | $flickr: "\f16e"; 680 | 681 | $adn: "\f170"; 682 | 683 | $bitbucket: "\f171"; 684 | 685 | $bitbucket-sign: "\f172"; 686 | 687 | $tumblr: "\f173"; 688 | 689 | $tumblr-sign: "\f174"; 690 | 691 | $long-arrow-down: "\f175"; 692 | 693 | $long-arrow-up: "\f176"; 694 | 695 | $long-arrow-left: "\f177"; 696 | 697 | $long-arrow-right: "\f178"; 698 | 699 | $apple: "\f179"; 700 | 701 | $windows: "\f17a"; 702 | 703 | $android: "\f17b"; 704 | 705 | $linux: "\f17c"; 706 | 707 | $dribbble: "\f17d"; 708 | 709 | $skype: "\f17e"; 710 | 711 | $foursquare: "\f180"; 712 | 713 | $trello: "\f181"; 714 | 715 | $female: "\f182"; 716 | 717 | $male: "\f183"; 718 | 719 | $gittip: "\f184"; 720 | 721 | $sun: "\f185"; 722 | 723 | $moon: "\f186"; 724 | 725 | $archive: "\f187"; 726 | 727 | $bug: "\f188"; 728 | 729 | $vk: "\f189"; 730 | 731 | $weibo: "\f18a"; 732 | 733 | $renren: "\f18b"; 734 | 735 | -------------------------------------------------------------------------------- /javascripts/foundation/foundation.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Foundation Responsive Library 3 | * http://foundation.zurb.com 4 | * Copyright 2013, ZURB 5 | * Free to use under the MIT license. 6 | * http://www.opensource.org/licenses/mit-license.php 7 | */ 8 | 9 | /*jslint unparam: true, browser: true, indent: 2 */ 10 | 11 | // Accommodate running jQuery or Zepto in noConflict() mode by 12 | // using an anonymous function to redefine the $ shorthand name. 13 | // See http://docs.jquery.com/Using_jQuery_with_Other_Libraries 14 | // and http://zeptojs.com/ 15 | var libFuncName = null; 16 | 17 | if (typeof jQuery === "undefined" && 18 | typeof Zepto === "undefined" && 19 | typeof $ === "function") { 20 | libFuncName = $; 21 | } else if (typeof jQuery === "function") { 22 | libFuncName = jQuery; 23 | } else if (typeof Zepto === "function") { 24 | libFuncName = Zepto; 25 | } else { 26 | throw new TypeError(); 27 | } 28 | 29 | (function ($, window, document, undefined) { 30 | 'use strict'; 31 | 32 | // add dusty browser stuff 33 | if (!Array.prototype.filter) { 34 | Array.prototype.filter = function(fun /*, thisp */) { 35 | "use strict"; 36 | 37 | if (this == null) { 38 | throw new TypeError(); 39 | } 40 | 41 | var t = Object(this), 42 | len = t.length >>> 0; 43 | if (typeof fun != "function") { 44 | return; 45 | } 46 | 47 | var res = [], 48 | thisp = arguments[1]; 49 | for (var i = 0; i < len; i++) { 50 | if (i in t) { 51 | var val = t[i]; // in case fun mutates this 52 | if (fun && fun.call(thisp, val, i, t)) { 53 | res.push(val); 54 | } 55 | } 56 | } 57 | 58 | return res; 59 | } 60 | } 61 | 62 | if (!Function.prototype.bind) { 63 | Function.prototype.bind = function (oThis) { 64 | if (typeof this !== "function") { 65 | // closest thing possible to the ECMAScript 5 internal IsCallable function 66 | throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable"); 67 | } 68 | 69 | var aArgs = Array.prototype.slice.call(arguments, 1), 70 | fToBind = this, 71 | fNOP = function () {}, 72 | fBound = function () { 73 | return fToBind.apply(this instanceof fNOP && oThis 74 | ? this 75 | : oThis, 76 | aArgs.concat(Array.prototype.slice.call(arguments))); 77 | }; 78 | 79 | fNOP.prototype = this.prototype; 80 | fBound.prototype = new fNOP(); 81 | 82 | return fBound; 83 | }; 84 | } 85 | 86 | if (!Array.prototype.indexOf) { 87 | Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) { 88 | "use strict"; 89 | if (this == null) { 90 | throw new TypeError(); 91 | } 92 | var t = Object(this); 93 | var len = t.length >>> 0; 94 | if (len === 0) { 95 | return -1; 96 | } 97 | var n = 0; 98 | if (arguments.length > 1) { 99 | n = Number(arguments[1]); 100 | if (n != n) { // shortcut for verifying if it's NaN 101 | n = 0; 102 | } else if (n != 0 && n != Infinity && n != -Infinity) { 103 | n = (n > 0 || -1) * Math.floor(Math.abs(n)); 104 | } 105 | } 106 | if (n >= len) { 107 | return -1; 108 | } 109 | var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); 110 | for (; k < len; k++) { 111 | if (k in t && t[k] === searchElement) { 112 | return k; 113 | } 114 | } 115 | return -1; 116 | } 117 | } 118 | 119 | // fake stop() for zepto. 120 | $.fn.stop = $.fn.stop || function() { 121 | return this; 122 | }; 123 | 124 | window.Foundation = { 125 | name : 'Foundation', 126 | 127 | version : '4.1.5', 128 | 129 | // global Foundation cache object 130 | cache : {}, 131 | 132 | init : function (scope, libraries, method, options, response, /* internal */ nc) { 133 | var library_arr, 134 | args = [scope, method, options, response], 135 | responses = [], 136 | nc = nc || false; 137 | 138 | // disable library error catching, 139 | // used for development only 140 | if (nc) this.nc = nc; 141 | 142 | // check RTL 143 | this.rtl = /rtl/i.test($('html').attr('dir')); 144 | 145 | // set foundation global scope 146 | this.scope = scope || this.scope; 147 | 148 | if (libraries && typeof libraries === 'string') { 149 | if (/off/i.test(libraries)) return this.off(); 150 | 151 | library_arr = libraries.split(' '); 152 | 153 | if (library_arr.length > 0) { 154 | for (var i = library_arr.length - 1; i >= 0; i--) { 155 | responses.push(this.init_lib(library_arr[i], args)); 156 | } 157 | } 158 | } else { 159 | for (var lib in this.libs) { 160 | responses.push(this.init_lib(lib, args)); 161 | } 162 | } 163 | 164 | // if first argument is callback, add to args 165 | if (typeof libraries === 'function') { 166 | args.unshift(libraries); 167 | } 168 | 169 | return this.response_obj(responses, args); 170 | }, 171 | 172 | response_obj : function (response_arr, args) { 173 | for (var i = 0, len = args.length; i < len; i++) { 174 | if (typeof args[i] === 'function') { 175 | return args[i]({ 176 | errors: response_arr.filter(function (s) { 177 | if (typeof s === 'string') return s; 178 | }) 179 | }); 180 | } 181 | } 182 | 183 | return response_arr; 184 | }, 185 | 186 | init_lib : function (lib, args) { 187 | return this.trap(function () { 188 | if (this.libs.hasOwnProperty(lib)) { 189 | this.patch(this.libs[lib]); 190 | return this.libs[lib].init.apply(this.libs[lib], args); 191 | } 192 | }.bind(this), lib); 193 | }, 194 | 195 | trap : function (fun, lib) { 196 | if (!this.nc) { 197 | try { 198 | return fun(); 199 | } catch (e) { 200 | return this.error({name: lib, message: 'could not be initialized', more: e.name + ' ' + e.message}); 201 | } 202 | } 203 | 204 | return fun(); 205 | }, 206 | 207 | patch : function (lib) { 208 | this.fix_outer(lib); 209 | lib.scope = this.scope; 210 | lib.rtl = this.rtl; 211 | }, 212 | 213 | inherit : function (scope, methods) { 214 | var methods_arr = methods.split(' '); 215 | 216 | for (var i = methods_arr.length - 1; i >= 0; i--) { 217 | if (this.lib_methods.hasOwnProperty(methods_arr[i])) { 218 | this.libs[scope.name][methods_arr[i]] = this.lib_methods[methods_arr[i]]; 219 | } 220 | } 221 | }, 222 | 223 | random_str : function (length) { 224 | var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'.split(''); 225 | 226 | if (!length) { 227 | length = Math.floor(Math.random() * chars.length); 228 | } 229 | 230 | var str = ''; 231 | for (var i = 0; i < length; i++) { 232 | str += chars[Math.floor(Math.random() * chars.length)]; 233 | } 234 | return str; 235 | }, 236 | 237 | libs : {}, 238 | 239 | // methods that can be inherited in libraries 240 | lib_methods : { 241 | set_data : function (node, data) { 242 | // this.name references the name of the library calling this method 243 | var id = [this.name,+new Date(),Foundation.random_str(5)].join('-'); 244 | 245 | Foundation.cache[id] = data; 246 | node.attr('data-' + this.name + '-id', id); 247 | return data; 248 | }, 249 | 250 | get_data : function (node) { 251 | return Foundation.cache[node.attr('data-' + this.name + '-id')]; 252 | }, 253 | 254 | remove_data : function (node) { 255 | if (node) { 256 | delete Foundation.cache[node.attr('data-' + this.name + '-id')]; 257 | node.attr('data-' + this.name + '-id', ''); 258 | } else { 259 | $('[data-' + this.name + '-id]').each(function () { 260 | delete Foundation.cache[$(this).attr('data-' + this.name + '-id')]; 261 | $(this).attr('data-' + this.name + '-id', ''); 262 | }); 263 | } 264 | }, 265 | 266 | throttle : function(fun, delay) { 267 | var timer = null; 268 | return function () { 269 | var context = this, args = arguments; 270 | clearTimeout(timer); 271 | timer = setTimeout(function () { 272 | fun.apply(context, args); 273 | }, delay); 274 | }; 275 | }, 276 | 277 | // parses data-options attribute on nodes and turns 278 | // them into an object 279 | data_options : function (el) { 280 | var opts = {}, ii, p, 281 | opts_arr = (el.attr('data-options') || ':').split(';'), 282 | opts_len = opts_arr.length; 283 | 284 | function isNumber (o) { 285 | return ! isNaN (o-0) && o !== null && o !== "" && o !== false && o !== true; 286 | } 287 | 288 | function trim(str) { 289 | if (typeof str === 'string') return $.trim(str); 290 | return str; 291 | } 292 | 293 | // parse options 294 | for (ii = opts_len - 1; ii >= 0; ii--) { 295 | p = opts_arr[ii].split(':'); 296 | 297 | if (/true/i.test(p[1])) p[1] = true; 298 | if (/false/i.test(p[1])) p[1] = false; 299 | if (isNumber(p[1])) p[1] = parseInt(p[1], 10); 300 | 301 | if (p.length === 2 && p[0].length > 0) { 302 | opts[trim(p[0])] = trim(p[1]); 303 | } 304 | } 305 | 306 | return opts; 307 | }, 308 | 309 | delay : function (fun, delay) { 310 | return setTimeout(fun, delay); 311 | }, 312 | 313 | // animated scrolling 314 | scrollTo : function (el, to, duration) { 315 | if (duration < 0) return; 316 | var difference = to - $(window).scrollTop(); 317 | var perTick = difference / duration * 10; 318 | 319 | this.scrollToTimerCache = setTimeout(function() { 320 | if (!isNaN(parseInt(perTick, 10))) { 321 | window.scrollTo(0, $(window).scrollTop() + perTick); 322 | this.scrollTo(el, to, duration - 10); 323 | } 324 | }.bind(this), 10); 325 | }, 326 | 327 | // not supported in core Zepto 328 | scrollLeft : function (el) { 329 | if (!el.length) return; 330 | return ('scrollLeft' in el[0]) ? el[0].scrollLeft : el[0].pageXOffset; 331 | }, 332 | 333 | // test for empty object or array 334 | empty : function (obj) { 335 | if (obj.length && obj.length > 0) return false; 336 | if (obj.length && obj.length === 0) return true; 337 | 338 | for (var key in obj) { 339 | if (hasOwnProperty.call(obj, key)) return false; 340 | } 341 | 342 | return true; 343 | } 344 | }, 345 | 346 | fix_outer : function (lib) { 347 | lib.outerHeight = function (el, bool) { 348 | if (typeof Zepto === 'function') { 349 | return el.height(); 350 | } 351 | 352 | if (typeof bool !== 'undefined') { 353 | return el.outerHeight(bool); 354 | } 355 | 356 | return el.outerHeight(); 357 | }; 358 | 359 | lib.outerWidth = function (el) { 360 | if (typeof Zepto === 'function') { 361 | return el.width(); 362 | } 363 | 364 | if (typeof bool !== 'undefined') { 365 | return el.outerWidth(bool); 366 | } 367 | 368 | return el.outerWidth(); 369 | }; 370 | }, 371 | 372 | error : function (error) { 373 | return error.name + ' ' + error.message + '; ' + error.more; 374 | }, 375 | 376 | // remove all foundation events. 377 | off: function () { 378 | $(this.scope).off('.fndtn'); 379 | $(window).off('.fndtn'); 380 | return true; 381 | }, 382 | 383 | zj : function () { 384 | try { 385 | return Zepto; 386 | } catch (e) { 387 | return jQuery; 388 | } 389 | }() 390 | }; 391 | 392 | $.fn.foundation = function () { 393 | var args = Array.prototype.slice.call(arguments, 0); 394 | 395 | return this.each(function () { 396 | Foundation.init.apply(Foundation, [this].concat(args)); 397 | return this; 398 | }); 399 | }; 400 | 401 | }(libFuncName, this, this.document)); 402 | -------------------------------------------------------------------------------- /javascripts/foundation/foundation.section.js: -------------------------------------------------------------------------------- 1 | /*jslint unparam: true, browser: true, indent: 2 */ 2 | 3 | ;(function ($, window, document, undefined) { 4 | 'use strict'; 5 | 6 | Foundation.libs.section = { 7 | name: 'section', 8 | 9 | version : '4.1.3', 10 | 11 | settings : { 12 | deep_linking: false, 13 | one_up: true, 14 | section_selector : '[data-section]', 15 | region_selector : 'section, .section, [data-section-region]', 16 | title_selector : '.title, [data-section-title]', 17 | active_region_selector : 'section.active, .section.active, .active[data-section-region]', 18 | content_selector : '.content, [data-section-content]', 19 | nav_selector : '[data-section="vertical-nav"], [data-section="horizontal-nav"]', 20 | callback: function (){} 21 | }, 22 | 23 | init : function (scope, method, options) { 24 | var self = this; 25 | Foundation.inherit(this, 'throttle data_options position_right offset_right'); 26 | 27 | if (typeof method === 'object') { 28 | $.extend(true, self.settings, method); 29 | } 30 | 31 | if (typeof method != 'string') { 32 | this.set_active_from_hash(); 33 | this.events(); 34 | 35 | return true; 36 | } else { 37 | return this[method].call(this, options); 38 | } 39 | }, 40 | 41 | events : function () { 42 | var self = this; 43 | 44 | $(this.scope) 45 | .on('click.fndtn.section', '[data-section] .title, [data-section] [data-section-title]', function (e) { 46 | var $this = $(this), 47 | section = $this.closest(self.settings.section_selector); 48 | 49 | self.toggle_active.call(this, e, self); 50 | self.reflow(); 51 | }); 52 | 53 | $(window) 54 | .on('resize.fndtn.section', self.throttle(function () { 55 | self.resize.call(this); 56 | }, 30)) 57 | .on('hashchange', function () { 58 | if (!self.settings.toggled){ 59 | self.set_active_from_hash(); 60 | $(this).trigger('resize'); 61 | } 62 | }).trigger('resize'); 63 | 64 | $(document) 65 | .on('click.fndtn.section', function (e) { 66 | if ($(e.target).closest(self.settings.title_selector).length < 1) { 67 | $(self.settings.nav_selector) 68 | .children(self.settings.region_selector) 69 | .removeClass('active') 70 | .attr('style', ''); 71 | } 72 | }); 73 | 74 | }, 75 | 76 | toggle_active : function (e, self) { 77 | var $this = $(this), 78 | self = Foundation.libs.section, 79 | region = $this.closest(self.settings.region_selector), 80 | content = $this.siblings(self.settings.content_selector), 81 | parent = region.parent(), 82 | settings = $.extend({}, self.settings, self.data_options(parent)), 83 | prev_active_section = parent 84 | .children(self.settings.active_region_selector); 85 | 86 | self.settings.toggled = true; 87 | 88 | if (!settings.deep_linking && content.length > 0) { 89 | e.preventDefault(); 90 | } 91 | 92 | if (region.hasClass('active')) { 93 | // this is causing the style flash. 94 | if (self.small(parent) 95 | || self.is_vertical_nav(parent) 96 | || self.is_horizontal_nav(parent) 97 | || self.is_accordion(parent)) { 98 | if (prev_active_section[0] !== region[0] 99 | || (prev_active_section[0] === region[0] && !settings.one_up)) { 100 | region 101 | .removeClass('active') 102 | .attr('style', ''); 103 | } 104 | } 105 | } else { 106 | var prev_active_section = parent 107 | .children(self.settings.active_region_selector), 108 | title_height = self.outerHeight(region 109 | .children(self.settings.title_selector)); 110 | 111 | if (self.small(parent) || settings.one_up) { 112 | 113 | if (self.small(parent)) { 114 | prev_active_section.attr('style', ''); 115 | } else { 116 | prev_active_section.attr('style', 117 | 'visibility: hidden; padding-top: '+title_height+'px;'); 118 | } 119 | } 120 | 121 | if (self.small(parent)) { 122 | region.attr('style', ''); 123 | } else { 124 | region.css('padding-top', title_height); 125 | } 126 | 127 | region.addClass('active'); 128 | 129 | if (prev_active_section.length > 0) { 130 | prev_active_section 131 | .removeClass('active') 132 | .attr('style', ''); 133 | } 134 | 135 | // Toggle the content display attribute. This is done to 136 | // ensure accurate outerWidth measurements that account for 137 | // the scrollbar. 138 | if (self.is_vertical_tabs(parent)) { 139 | content.css('display', 'block'); 140 | 141 | if (prev_active_section !== null) { 142 | prev_active_section 143 | .children(self.settings.content_selector) 144 | .css('display', 'none'); 145 | } 146 | } 147 | } 148 | 149 | setTimeout(function () { 150 | self.settings.toggled = false; 151 | }, 300); 152 | 153 | settings.callback(); 154 | }, 155 | 156 | resize : function () { 157 | var self = Foundation.libs.section, 158 | sections = $(self.settings.section_selector); 159 | 160 | sections.each(function() { 161 | var $this = $(this), 162 | active_section = $this 163 | .children(self.settings.active_region_selector), 164 | settings = $.extend({}, self.settings, self.data_options($this)); 165 | 166 | if (active_section.length > 1) { 167 | active_section 168 | .not(':first') 169 | .removeClass('active') 170 | .attr('style', ''); 171 | } else if (active_section.length < 1 172 | && !self.is_vertical_nav($this) 173 | && !self.is_horizontal_nav($this) 174 | && !self.is_accordion($this)) { 175 | 176 | var first = $this.children(self.settings.region_selector).first(); 177 | 178 | if (settings.one_up || !self.small($this)) { 179 | first.addClass('active'); 180 | } 181 | 182 | if (self.small($this)) { 183 | first.attr('style', ''); 184 | } else { 185 | first.css('padding-top', self.outerHeight(first 186 | .children(self.settings.title_selector))); 187 | } 188 | } 189 | 190 | if (self.small($this)) { 191 | active_section.attr('style', ''); 192 | } else { 193 | active_section.css('padding-top', self.outerHeight(active_section 194 | .children(self.settings.title_selector))); 195 | } 196 | 197 | self.position_titles($this); 198 | 199 | if ( (self.is_horizontal_nav($this) && !self.small($this)) 200 | || self.is_vertical_tabs($this)) { 201 | self.position_content($this); 202 | } else { 203 | self.position_content($this, false); 204 | } 205 | }); 206 | }, 207 | 208 | is_vertical_nav : function (el) { 209 | return /vertical-nav/i.test(el.data('section')); 210 | }, 211 | 212 | is_horizontal_nav : function (el) { 213 | return /horizontal-nav/i.test(el.data('section')); 214 | }, 215 | 216 | is_accordion : function (el) { 217 | return /accordion/i.test(el.data('section')); 218 | }, 219 | 220 | is_horizontal_tabs : function (el) { 221 | return /^tabs$/i.test(el.data('section')); 222 | }, 223 | 224 | is_vertical_tabs : function (el) { 225 | return /vertical-tabs/i.test(el.data('section')); 226 | }, 227 | 228 | set_active_from_hash : function () { 229 | var hash = window.location.hash.substring(1), 230 | sections = $('[data-section]'), 231 | self = this; 232 | 233 | sections.each(function () { 234 | var section = $(this), 235 | settings = $.extend({}, self.settings, self.data_options(section)); 236 | 237 | if (hash.length > 0 && settings.deep_linking) { 238 | var regions = section 239 | .children(self.settings.region_selector) 240 | .attr('style', '') 241 | .removeClass('active'); 242 | regions 243 | .map(function () { 244 | return $(this).children('.content[data-slug="' + hash + '"], [data-section-content][data-slug="' + hash + '"]'); 245 | }) 246 | .parent() 247 | .addClass('active'); 248 | } 249 | }); 250 | }, 251 | 252 | position_titles : function (section, off) { 253 | var self = this, 254 | titles = section 255 | .children(this.settings.region_selector) 256 | .map(function () { 257 | return $(this).children(self.settings.title_selector); 258 | }), 259 | previous_width = 0, 260 | previous_height = 0, 261 | self = this; 262 | 263 | if (typeof off === 'boolean') { 264 | titles.attr('style', ''); 265 | 266 | } else { 267 | titles.each(function () { 268 | if (self.is_vertical_tabs(section)) { 269 | $(this).css('top', previous_height); 270 | previous_height += self.outerHeight($(this)); 271 | } else { 272 | if (!self.rtl) { 273 | $(this).css('left', previous_width); 274 | } else { 275 | $(this).css('right', previous_width); 276 | } 277 | previous_width += self.outerWidth($(this)); 278 | } 279 | }); 280 | } 281 | }, 282 | 283 | position_content : function (section, off) { 284 | var self = this, 285 | regions = section.children(self.settings.region_selector), 286 | titles = regions 287 | .map(function () { 288 | return $(this).children(self.settings.title_selector); 289 | }), 290 | content = regions 291 | .map(function () { 292 | return $(this).children(self.settings.content_selector); 293 | }); 294 | 295 | if (typeof off === 'boolean') { 296 | content.attr('style', ''); 297 | section.attr('style', ''); 298 | } else { 299 | if (self.is_vertical_tabs(section) 300 | && !self.small(section)) { 301 | var content_min_height = 0, 302 | content_min_width = Number.MAX_VALUE, 303 | title_width = null; 304 | 305 | regions.each(function () { 306 | var region = $(this), 307 | title = region.children(self.settings.title_selector), 308 | content = region.children(self.settings.content_selector), 309 | content_width = 0; 310 | 311 | title_width = self.outerWidth(title); 312 | content_width = self.outerWidth(section) - title_width; 313 | if (content_width < content_min_width) { 314 | content_min_width = content_width; 315 | } 316 | 317 | // Increment the minimum height of the content region 318 | // to align with the height of the titles. 319 | content_min_height += self.outerHeight(title); 320 | 321 | // Set all of the inactive tabs to 'display: none' 322 | // The CSS sets all of the tabs as 'display: block' 323 | // in order to account for scrollbars when measuring the width 324 | // of the content regions. 325 | if (!$(this).hasClass('active')) { 326 | content.css('display', 'none'); 327 | } 328 | }); 329 | 330 | regions.each(function () { 331 | var content = $(this).children(self.settings.content_selector); 332 | content.css('minHeight', content_min_height); 333 | 334 | // Remove 2 pixels to account for the right-shift in the CSS 335 | content.css('maxWidth', content_min_width - 2); 336 | }); 337 | 338 | // Adjust the outer section container width to match 339 | // the width of the title and content 340 | section.css('maxWidth', title_width + content_min_width); 341 | } else { 342 | regions.each(function () { 343 | var region = $(this), 344 | title = region.children(self.settings.title_selector), 345 | content = region.children(self.settings.content_selector); 346 | if (!self.rtl) { 347 | content 348 | .css({left: title.position().left - 1, 349 | top: self.outerHeight(title) - 2}); 350 | } else { 351 | content 352 | .css({right: self.position_right(title) + 1, 353 | top: self.outerHeight(title) - 2}); 354 | } 355 | }); 356 | 357 | // temporary work around for Zepto outerheight calculation issues. 358 | if (typeof Zepto === 'function') { 359 | section.height(this.outerHeight(titles.first())); 360 | } else { 361 | section.height(this.outerHeight(titles.first()) - 2); 362 | } 363 | } 364 | } 365 | }, 366 | 367 | position_right : function (el) { 368 | var self = this, 369 | section = el.closest(this.settings.section_selector), 370 | regions = section.children(this.settings.region_selector), 371 | section_width = el.closest(this.settings.section_selector).width(), 372 | offset = regions 373 | .map(function () { 374 | return $(this).children(self.settings.title_selector); 375 | }).length; 376 | return (section_width - el.position().left - el.width() * (el.index() + 1) - offset); 377 | }, 378 | 379 | reflow : function (scope) { 380 | var scope = scope || document; 381 | $(this.settings.section_selector, scope).trigger('resize'); 382 | }, 383 | 384 | small : function (el) { 385 | var settings = $.extend({}, this.settings, this.data_options(el)); 386 | if (this.is_horizontal_tabs(el)) { 387 | return false; 388 | } 389 | if (el && this.is_accordion(el)) { 390 | return true; 391 | } 392 | if ($('html').hasClass('lt-ie9')) { 393 | return true; 394 | } 395 | if ($('html').hasClass('ie8compat')) { 396 | return true; 397 | } 398 | return $(this.scope).width() < 768; 399 | }, 400 | 401 | off : function () { 402 | $(this.scope).off('.fndtn.section'); 403 | $(window).off('.fndtn.section'); 404 | $(document).off('.fndtn.section') 405 | } 406 | }; 407 | }(Foundation.zj, this, this.document)); 408 | -------------------------------------------------------------------------------- /javascripts/foundation/foundation.orbit.js: -------------------------------------------------------------------------------- 1 | ;(function ($, window, document, undefined) { 2 | 'use strict'; 3 | 4 | Foundation.libs = Foundation.libs || {}; 5 | 6 | Foundation.libs.orbit = { 7 | name: 'orbit', 8 | 9 | version: '4.1.0', 10 | 11 | settings: { 12 | timer_speed: 8000, 13 | animation_speed: 500, 14 | bullets: false, 15 | stack_on_small: true, 16 | navigation_arrows: false, 17 | slide_number: false, 18 | container_class: 'orbit-container', 19 | stack_on_small_class: 'orbit-stack-on-small', 20 | next_class: 'orbit-next', 21 | prev_class: 'orbit-prev', 22 | timer_container_class: 'orbit-timer', 23 | timer_paused_class: 'paused', 24 | timer_progress_class: 'orbit-progress', 25 | slides_container_class: 'orbit-slides-container', 26 | bullets_container_class: 'orbit-bullets', 27 | bullets_active_class: 'active', 28 | slide_number_class: 'orbit-slide-number', 29 | caption_class: 'orbit-caption', 30 | active_slide_class: 'active', 31 | orbit_transition_class: 'orbit-transitioning' 32 | }, 33 | 34 | init: function (scope, method, options) { 35 | var self = this; 36 | Foundation.inherit(self, 'data_options'); 37 | 38 | if (typeof method === 'object') { 39 | $.extend(true, self.settings, method); 40 | } 41 | 42 | $('[data-orbit]', scope).each(function(idx, el) { 43 | var scoped_self = $.extend(true, {}, self); 44 | scoped_self._init(idx, el); 45 | }); 46 | }, 47 | 48 | _container_html: function() { 49 | var self = this; 50 | return '
      '; 51 | }, 52 | 53 | _bullets_container_html: function($slides) { 54 | var self = this, 55 | $list = $('
        '); 56 | $slides.each(function(idx, slide) { 57 | var $item = $('
      1. '); 58 | if (idx === 0) { 59 | $item.addClass(self.settings.bullets_active_class); 60 | } 61 | $list.append($item); 62 | }); 63 | return $list; 64 | }, 65 | 66 | _slide_number_html: function(slide_number, total_slides) { 67 | var self = this, 68 | $container = $('
        '); 69 | $container.append('' + slide_number + ' of ' + total_slides + ''); 70 | return $container; 71 | }, 72 | 73 | _timer_html: function() { 74 | var self = this; 75 | if (typeof self.settings.timer_speed === 'number' && self.settings.timer_speed > 0) { 76 | return '
        '; 79 | } else { 80 | return ''; 81 | } 82 | }, 83 | 84 | _next_html: function() { 85 | var self = this; 86 | return 'Next '; 87 | }, 88 | 89 | _prev_html: function() { 90 | var self = this; 91 | return 'Prev '; 92 | }, 93 | 94 | _init: function (idx, slider) { 95 | var self = this, 96 | $slides_container = $(slider), 97 | $container = $slides_container.wrap(self._container_html()).parent(), 98 | $slides = $slides_container.children(); 99 | 100 | $.extend(true, self.settings, self.data_options($slides_container)); 101 | 102 | if (self.settings.navigation_arrows) { 103 | $container.append(self._prev_html()); 104 | $container.append(self._next_html()); 105 | } 106 | $slides_container.addClass(self.settings.slides_container_class); 107 | if (self.settings.stack_on_small) { 108 | $container.addClass(self.settings.stack_on_small_class); 109 | } 110 | if (self.settings.slide_number) { 111 | $container.append(self._slide_number_html(1, $slides.length)); 112 | } 113 | $container.append(self._timer_html()); 114 | if (self.settings.bullets) { 115 | $container.after(self._bullets_container_html($slides)); 116 | } 117 | // To better support the "sliding" effect it's easier 118 | // if we just clone the first and last slides 119 | $slides_container.append($slides.first().clone().attr('data-orbit-slide','')); 120 | $slides_container.prepend($slides.last().clone().attr('data-orbit-slide','')); 121 | // Make the first "real" slide active 122 | $slides_container.css('marginLeft', '-100%'); 123 | $slides.first().addClass(self.settings.active_slide_class); 124 | 125 | self._init_events($slides_container); 126 | self._init_dimensions($slides_container); 127 | self._start_timer($slides_container); 128 | }, 129 | 130 | _init_events: function ($slides_container) { 131 | var self = this, 132 | $container = $slides_container.parent(); 133 | 134 | $(window) 135 | .on('load.fndtn.orbit', function() { 136 | $slides_container.height(''); 137 | $slides_container.height($slides_container.height($container.height())); 138 | $slides_container.trigger('orbit:ready'); 139 | }) 140 | .on('resize.fndtn.orbit', function() { 141 | $slides_container.height(''); 142 | $slides_container.height($slides_container.height($container.height())); 143 | }); 144 | 145 | $(document).on('click.fndtn.orbit', '[data-orbit-link]', function(e) { 146 | e.preventDefault(); 147 | var id = $(e.currentTarget).attr('data-orbit-link'), 148 | $slide = $slides_container.find('[data-orbit-slide=' + id + ']').first(); 149 | 150 | if ($slide.length === 1) { 151 | self._reset_timer($slides_container, true); 152 | self._goto($slides_container, $slide.index(), function() {}); 153 | } 154 | }); 155 | 156 | $container.siblings('.' + self.settings.bullets_container_class) 157 | .on('click.fndtn.orbit', '[data-orbit-slide-number]', function(e) { 158 | e.preventDefault(); 159 | self._reset_timer($slides_container, true); 160 | self._goto($slides_container, $(e.currentTarget).data('orbit-slide-number'),function() {}); 161 | }); 162 | 163 | $container 164 | .on('orbit:after-slide-change.fndtn.orbit', function(e, orbit) { 165 | var $slide_number = $container.find('.' + self.settings.slide_number_class); 166 | 167 | if ($slide_number.length === 1) { 168 | $slide_number.replaceWith(self._slide_number_html(orbit.slide_number, orbit.total_slides)); 169 | } 170 | }) 171 | .on('orbit:next-slide.fndtn.orbit click.fndtn.orbit', '.' + self.settings.next_class, function(e) { 172 | e.preventDefault(); 173 | self._reset_timer($slides_container, true); 174 | self._goto($slides_container, 'next', function() {}); 175 | }) 176 | .on('orbit:prev-slide.fndtn.orbit click.fndtn.orbit', '.' + self.settings.prev_class, function(e) { 177 | e.preventDefault(); 178 | self._reset_timer($slides_container, true); 179 | self._goto($slides_container, 'prev', function() {}); 180 | }) 181 | .on('orbit:toggle-play-pause.fndtn.orbit click.fndtn.orbit touchstart.fndtn.orbit', '.' + self.settings.timer_container_class, function(e) { 182 | e.preventDefault(); 183 | var $timer = $(e.currentTarget).toggleClass(self.settings.timer_paused_class), 184 | $slides_container = $timer.closest('.' + self.settings.container_class) 185 | .find('.' + self.settings.slides_container_class); 186 | 187 | if ($timer.hasClass(self.settings.timer_paused_class)) { 188 | self._stop_timer($slides_container); 189 | } else { 190 | self._start_timer($slides_container); 191 | } 192 | }) 193 | .on('touchstart.fndtn.orbit', function(e) { 194 | if (!e.touches) { e = e.originalEvent; } 195 | var data = { 196 | start_page_x: e.touches[0].pageX, 197 | start_page_y: e.touches[0].pageY, 198 | start_time: (new Date()).getTime(), 199 | delta_x: 0, 200 | is_scrolling: undefined 201 | }; 202 | $container.data('swipe-transition', data); 203 | e.stopPropagation(); 204 | }) 205 | .on('touchmove.fndtn.orbit', function(e) { 206 | if (!e.touches) { e = e.originalEvent; } 207 | // Ignore pinch/zoom events 208 | if(e.touches.length > 1 || e.scale && e.scale !== 1) return; 209 | 210 | var data = $container.data('swipe-transition'); 211 | if (typeof data === 'undefined') { 212 | data = {}; 213 | } 214 | 215 | data.delta_x = e.touches[0].pageX - data.start_page_x; 216 | 217 | if ( typeof data.is_scrolling === 'undefined') { 218 | data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) ); 219 | } 220 | 221 | if (!data.is_scrolling && !data.active) { 222 | e.preventDefault(); 223 | self._stop_timer($slides_container); 224 | var direction = (data.delta_x < 0) ? 'next' : 'prev'; 225 | data.active = true; 226 | self._goto($slides_container, direction, function() {}); 227 | } 228 | }) 229 | .on('touchend.fndtn.orbit', function(e) { 230 | $container.data('swipe-transition', {}); 231 | e.stopPropagation(); 232 | }); 233 | }, 234 | 235 | _init_dimensions: function ($slides_container) { 236 | var $container = $slides_container.parent(), 237 | $slides = $slides_container.children(); 238 | 239 | $slides_container.css('width', $slides.length * 100 + '%'); 240 | $slides.css('width', 100 / $slides.length + '%'); 241 | $slides_container.height($container.height()); 242 | $slides_container.css('width', $slides.length * 100 + '%'); 243 | }, 244 | 245 | _start_timer: function ($slides_container) { 246 | var self = this, 247 | $container = $slides_container.parent(); 248 | 249 | var callback = function() { 250 | self._reset_timer($slides_container, false); 251 | self._goto($slides_container, 'next', function() { 252 | self._start_timer($slides_container); 253 | }); 254 | }; 255 | 256 | var $timer = $container.find('.' + self.settings.timer_container_class), 257 | $progress = $timer.find('.' + self.settings.timer_progress_class), 258 | progress_pct = ($progress.width() / $timer.width()), 259 | delay = self.settings.timer_speed - (progress_pct * self.settings.timer_speed); 260 | 261 | $progress.animate({'width': '100%'}, delay, 'linear', callback); 262 | $slides_container.trigger('orbit:timer-started'); 263 | }, 264 | 265 | _stop_timer: function ($slides_container) { 266 | var self = this, 267 | $container = $slides_container.parent(), 268 | $timer = $container.find('.' + self.settings.timer_container_class), 269 | $progress = $timer.find('.' + self.settings.timer_progress_class), 270 | progress_pct = $progress.width() / $timer.width(); 271 | self._rebuild_timer($container, progress_pct * 100 + '%'); 272 | // $progress.stop(); 273 | $slides_container.trigger('orbit:timer-stopped'); 274 | $timer = $container.find('.' + self.settings.timer_container_class); 275 | $timer.addClass(self.settings.timer_paused_class); 276 | }, 277 | 278 | _reset_timer: function($slides_container, is_paused) { 279 | var self = this, 280 | $container = $slides_container.parent(); 281 | self._rebuild_timer($container, '0%'); 282 | if (typeof is_paused === 'boolean' && is_paused) { 283 | var $timer = $container.find('.' + self.settings.timer_container_class); 284 | $timer.addClass(self.settings.timer_paused_class); 285 | } 286 | }, 287 | 288 | _rebuild_timer: function ($container, width_pct) { 289 | // Zepto is unable to stop animations since they 290 | // are css-based. This is a workaround for that 291 | // limitation, which rebuilds the dom element 292 | // thus stopping the animation 293 | var self = this, 294 | $timer = $container.find('.' + self.settings.timer_container_class), 295 | $new_timer = $(self._timer_html()), 296 | $new_timer_progress = $new_timer.find('.' + self.settings.timer_progress_class); 297 | 298 | if (typeof Zepto === 'function') { 299 | $timer.remove(); 300 | $container.append($new_timer); 301 | $new_timer_progress.css('width', width_pct); 302 | } else if (typeof jQuery === 'function') { 303 | var $progress = $timer.find('.' + self.settings.timer_progress_class); 304 | $progress.css('width', width_pct); 305 | $progress.stop(); 306 | } 307 | }, 308 | 309 | _goto: function($slides_container, index_or_direction, callback) { 310 | var self = this, 311 | $container = $slides_container.parent(), 312 | $slides = $slides_container.children(), 313 | $active_slide = $slides_container.find('.' + self.settings.active_slide_class), 314 | active_index = $active_slide.index(), 315 | margin_position = Foundation.rtl ? 'marginRight' : 'marginLeft'; 316 | 317 | if ($container.hasClass(self.settings.orbit_transition_class)) { 318 | return false; 319 | } 320 | 321 | if (index_or_direction === 'prev') { 322 | if (active_index === 0) { 323 | active_index = $slides.length - 1; 324 | } 325 | else { 326 | active_index--; 327 | } 328 | } 329 | else if (index_or_direction === 'next') { 330 | active_index = (active_index+1) % $slides.length; 331 | } 332 | else if (typeof index_or_direction === 'number') { 333 | active_index = (index_or_direction % $slides.length); 334 | } 335 | if (active_index === ($slides.length - 1) && index_or_direction === 'next') { 336 | $slides_container.css(margin_position, '0%'); 337 | active_index = 1; 338 | } 339 | else if (active_index === 0 && index_or_direction === 'prev') { 340 | $slides_container.css(margin_position, '-' + ($slides.length - 1) * 100 + '%'); 341 | active_index = $slides.length - 2; 342 | } 343 | // Start transition, make next slide active 344 | $container.addClass(self.settings.orbit_transition_class); 345 | $active_slide.removeClass(self.settings.active_slide_class); 346 | $($slides[active_index]).addClass(self.settings.active_slide_class); 347 | // Make next bullet active 348 | var $bullets = $container.siblings('.' + self.settings.bullets_container_class); 349 | if ($bullets.length === 1) { 350 | $bullets.children().removeClass(self.settings.bullets_active_class); 351 | $($bullets.children()[active_index-1]).addClass(self.settings.bullets_active_class); 352 | } 353 | var new_margin_left = '-' + (active_index * 100) + '%'; 354 | // Check to see if animation will occur, otherwise perform 355 | // callbacks manually 356 | $slides_container.trigger('orbit:before-slide-change'); 357 | if ($slides_container.css(margin_position) === new_margin_left) { 358 | $container.removeClass(self.settings.orbit_transition_class); 359 | $slides_container.trigger('orbit:after-slide-change', [{slide_number: active_index, total_slides: $slides_container.children().length - 2}]); 360 | callback(); 361 | } else { 362 | var properties = {}; 363 | properties[margin_position] = new_margin_left; 364 | 365 | $slides_container.animate(properties, self.settings.animation_speed, 'linear', function() { 366 | $container.removeClass(self.settings.orbit_transition_class); 367 | $slides_container.trigger('orbit:after-slide-change', [{slide_number: active_index, total_slides: $slides_container.children().length - 2}]); 368 | callback(); 369 | }); 370 | } 371 | } 372 | }; 373 | }(Foundation.zj, this, this.document)); 374 | -------------------------------------------------------------------------------- /javascripts/foundation/foundation.clearing.js: -------------------------------------------------------------------------------- 1 | /*jslint unparam: true, browser: true, indent: 2 */ 2 | 3 | ;(function ($, window, document, undefined) { 4 | 'use strict'; 5 | 6 | Foundation.libs.clearing = { 7 | name : 'clearing', 8 | 9 | version : '4.1.3', 10 | 11 | settings : { 12 | templates : { 13 | viewing : '×' + 14 | '' 17 | }, 18 | 19 | // comma delimited list of selectors that, on click, will close clearing, 20 | // add 'div.clearing-blackout, div.visible-img' to close on background click 21 | close_selectors : '.clearing-close', 22 | 23 | // event initializers and locks 24 | init : false, 25 | locked : false 26 | }, 27 | 28 | init : function (scope, method, options) { 29 | var self = this; 30 | Foundation.inherit(this, 'set_data get_data remove_data throttle data_options'); 31 | 32 | if (typeof method === 'object') { 33 | options = $.extend(true, this.settings, method); 34 | } 35 | 36 | if (typeof method != 'string') { 37 | $(this.scope).find('ul[data-clearing]').each(function () { 38 | var $el = $(this), 39 | options = options || {}, 40 | lis = $el.find('li'), 41 | settings = self.get_data($el); 42 | 43 | if (!settings && lis.length > 0) { 44 | options.$parent = $el.parent(); 45 | 46 | self.set_data($el, $.extend({}, self.settings, options, self.data_options($el))); 47 | 48 | self.assemble($el.find('li')); 49 | 50 | if (!self.settings.init) { 51 | self.events().swipe_events(); 52 | } 53 | } 54 | }); 55 | 56 | return this.settings.init; 57 | } else { 58 | // fire method 59 | return this[method].call(this, options); 60 | } 61 | }, 62 | 63 | // event binding and initial setup 64 | 65 | events : function () { 66 | var self = this; 67 | 68 | $(this.scope) 69 | .on('click.fndtn.clearing', 'ul[data-clearing] li', 70 | function (e, current, target) { 71 | var current = current || $(this), 72 | target = target || current, 73 | next = current.next('li'), 74 | settings = self.get_data(current.parent()), 75 | image = $(e.target); 76 | 77 | e.preventDefault(); 78 | if (!settings) self.init(); 79 | 80 | // if clearing is open and the current image is 81 | // clicked, go to the next image in sequence 82 | if (target.hasClass('visible') 83 | && current[0] === target[0] 84 | && next.length > 0 && self.is_open(current)) { 85 | target = next; 86 | image = target.find('img'); 87 | } 88 | 89 | // set current and target to the clicked li if not otherwise defined. 90 | self.open(image, current, target); 91 | self.update_paddles(target); 92 | }) 93 | 94 | .on('click.fndtn.clearing', '.clearing-main-next', 95 | function (e) { this.nav(e, 'next') }.bind(this)) 96 | .on('click.fndtn.clearing', '.clearing-main-prev', 97 | function (e) { this.nav(e, 'prev') }.bind(this)) 98 | .on('click.fndtn.clearing', this.settings.close_selectors, 99 | function (e) { Foundation.libs.clearing.close(e, this) }) 100 | .on('keydown.fndtn.clearing', 101 | function (e) { this.keydown(e) }.bind(this)); 102 | 103 | $(window).on('resize.fndtn.clearing', 104 | function () { this.resize() }.bind(this)); 105 | 106 | this.settings.init = true; 107 | return this; 108 | }, 109 | 110 | swipe_events : function () { 111 | var self = this; 112 | 113 | $(this.scope) 114 | .on('touchstart.fndtn.clearing', '.visible-img', function(e) { 115 | if (!e.touches) { e = e.originalEvent; } 116 | var data = { 117 | start_page_x: e.touches[0].pageX, 118 | start_page_y: e.touches[0].pageY, 119 | start_time: (new Date()).getTime(), 120 | delta_x: 0, 121 | is_scrolling: undefined 122 | }; 123 | 124 | $(this).data('swipe-transition', data); 125 | e.stopPropagation(); 126 | }) 127 | .on('touchmove.fndtn.clearing', '.visible-img', function(e) { 128 | if (!e.touches) { e = e.originalEvent; } 129 | // Ignore pinch/zoom events 130 | if(e.touches.length > 1 || e.scale && e.scale !== 1) return; 131 | 132 | var data = $(this).data('swipe-transition'); 133 | 134 | if (typeof data === 'undefined') { 135 | data = {}; 136 | } 137 | 138 | data.delta_x = e.touches[0].pageX - data.start_page_x; 139 | 140 | if ( typeof data.is_scrolling === 'undefined') { 141 | data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) ); 142 | } 143 | 144 | if (!data.is_scrolling && !data.active) { 145 | e.preventDefault(); 146 | var direction = (data.delta_x < 0) ? 'next' : 'prev'; 147 | data.active = true; 148 | self.nav(e, direction); 149 | } 150 | }) 151 | .on('touchend.fndtn.clearing', '.visible-img', function(e) { 152 | $(this).data('swipe-transition', {}); 153 | e.stopPropagation(); 154 | }); 155 | }, 156 | 157 | assemble : function ($li) { 158 | var $el = $li.parent(); 159 | $el.after('
        '); 160 | 161 | var holder = $('#foundationClearingHolder'), 162 | settings = this.get_data($el), 163 | grid = $el.detach(), 164 | data = { 165 | grid: '', 166 | viewing: settings.templates.viewing 167 | }, 168 | wrapper = '
        ' + data.viewing + 169 | data.grid + '
        '; 170 | 171 | return holder.after(wrapper).remove(); 172 | }, 173 | 174 | // event callbacks 175 | 176 | open : function ($image, current, target) { 177 | var root = target.closest('.clearing-assembled'), 178 | container = root.find('div').first(), 179 | visible_image = container.find('.visible-img'), 180 | image = visible_image.find('img').not($image); 181 | 182 | if (!this.locked()) { 183 | // set the image to the selected thumbnail 184 | image 185 | .attr('src', this.load($image)) 186 | .css('visibility', 'hidden'); 187 | 188 | this.loaded(image, function () { 189 | image.css('visibility', 'visible'); 190 | // toggle the gallery 191 | root.addClass('clearing-blackout'); 192 | container.addClass('clearing-container'); 193 | visible_image.show(); 194 | this.fix_height(target) 195 | .caption(visible_image.find('.clearing-caption'), $image) 196 | .center(image) 197 | .shift(current, target, function () { 198 | target.siblings().removeClass('visible'); 199 | target.addClass('visible'); 200 | }); 201 | }.bind(this)); 202 | } 203 | }, 204 | 205 | close : function (e, el) { 206 | e.preventDefault(); 207 | 208 | var root = (function (target) { 209 | if (/blackout/.test(target.selector)) { 210 | return target; 211 | } else { 212 | return target.closest('.clearing-blackout'); 213 | } 214 | }($(el))), container, visible_image; 215 | 216 | if (el === e.target && root) { 217 | container = root.find('div').first(); 218 | visible_image = container.find('.visible-img'); 219 | this.settings.prev_index = 0; 220 | root.find('ul[data-clearing]') 221 | .attr('style', '').closest('.clearing-blackout') 222 | .removeClass('clearing-blackout'); 223 | container.removeClass('clearing-container'); 224 | visible_image.hide(); 225 | } 226 | 227 | return false; 228 | }, 229 | 230 | is_open : function (current) { 231 | return current.parent().attr('style').length > 0; 232 | }, 233 | 234 | keydown : function (e) { 235 | var clearing = $('.clearing-blackout').find('ul[data-clearing]'); 236 | 237 | if (e.which === 39) this.go(clearing, 'next'); 238 | if (e.which === 37) this.go(clearing, 'prev'); 239 | if (e.which === 27) $('a.clearing-close').trigger('click'); 240 | }, 241 | 242 | nav : function (e, direction) { 243 | var clearing = $('.clearing-blackout').find('ul[data-clearing]'); 244 | 245 | e.preventDefault(); 246 | this.go(clearing, direction); 247 | }, 248 | 249 | resize : function () { 250 | var image = $('.clearing-blackout .visible-img').find('img'); 251 | 252 | if (image.length) { 253 | this.center(image); 254 | } 255 | }, 256 | 257 | // visual adjustments 258 | fix_height : function (target) { 259 | var lis = target.parent().children(), 260 | self = this; 261 | 262 | lis.each(function () { 263 | var li = $(this), 264 | image = li.find('img'); 265 | 266 | if (li.height() > self.outerHeight(image)) { 267 | li.addClass('fix-height'); 268 | } 269 | }) 270 | .closest('ul') 271 | .width(lis.length * 100 + '%'); 272 | 273 | return this; 274 | }, 275 | 276 | update_paddles : function (target) { 277 | var visible_image = target 278 | .closest('.carousel') 279 | .siblings('.visible-img'); 280 | 281 | if (target.next().length > 0) { 282 | visible_image 283 | .find('.clearing-main-next') 284 | .removeClass('disabled'); 285 | } else { 286 | visible_image 287 | .find('.clearing-main-next') 288 | .addClass('disabled'); 289 | } 290 | 291 | if (target.prev().length > 0) { 292 | visible_image 293 | .find('.clearing-main-prev') 294 | .removeClass('disabled'); 295 | } else { 296 | visible_image 297 | .find('.clearing-main-prev') 298 | .addClass('disabled'); 299 | } 300 | }, 301 | 302 | center : function (target) { 303 | if (!this.rtl) { 304 | target.css({ 305 | marginLeft : -(this.outerWidth(target) / 2), 306 | marginTop : -(this.outerHeight(target) / 2) 307 | }); 308 | } else { 309 | target.css({ 310 | marginRight : -(this.outerWidth(target) / 2), 311 | marginTop : -(this.outerHeight(target) / 2) 312 | }); 313 | } 314 | return this; 315 | }, 316 | 317 | // image loading and preloading 318 | 319 | load : function ($image) { 320 | if ($image[0].nodeName === "A") { 321 | var href = $image.attr('href'); 322 | } else { 323 | var href = $image.parent().attr('href'); 324 | } 325 | 326 | this.preload($image); 327 | 328 | if (href) return href; 329 | return $image.attr('src'); 330 | }, 331 | 332 | preload : function ($image) { 333 | this 334 | .img($image.closest('li').next()) 335 | .img($image.closest('li').prev()); 336 | }, 337 | 338 | loaded : function (image, callback) { 339 | // based on jquery.imageready.js 340 | // @weblinc, @jsantell, (c) 2012 341 | 342 | function loaded () { 343 | callback(); 344 | } 345 | 346 | function bindLoad () { 347 | this.one('load', loaded); 348 | 349 | if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { 350 | var src = this.attr( 'src' ), 351 | param = src.match( /\?/ ) ? '&' : '?'; 352 | 353 | param += 'random=' + (new Date()).getTime(); 354 | this.attr('src', src + param); 355 | } 356 | } 357 | 358 | if (!image.attr('src')) { 359 | loaded(); 360 | return; 361 | } 362 | 363 | if (image[0].complete || image[0].readyState === 4) { 364 | loaded(); 365 | } else { 366 | bindLoad.call(image); 367 | } 368 | }, 369 | 370 | img : function (img) { 371 | if (img.length) { 372 | var new_img = new Image(), 373 | new_a = img.find('a'); 374 | 375 | if (new_a.length) { 376 | new_img.src = new_a.attr('href'); 377 | } else { 378 | new_img.src = img.find('img').attr('src'); 379 | } 380 | } 381 | return this; 382 | }, 383 | 384 | // image caption 385 | 386 | caption : function (container, $image) { 387 | var caption = $image.data('caption'); 388 | 389 | if (caption) { 390 | container 391 | .text(caption) 392 | .show(); 393 | } else { 394 | container 395 | .text('') 396 | .hide(); 397 | } 398 | return this; 399 | }, 400 | 401 | // directional methods 402 | 403 | go : function ($ul, direction) { 404 | var current = $ul.find('.visible'), 405 | target = current[direction](); 406 | 407 | if (target.length) { 408 | target 409 | .find('img') 410 | .trigger('click', [current, target]); 411 | } 412 | }, 413 | 414 | shift : function (current, target, callback) { 415 | var clearing = target.parent(), 416 | old_index = this.settings.prev_index || target.index(), 417 | direction = this.direction(clearing, current, target), 418 | left = parseInt(clearing.css('left'), 10), 419 | width = this.outerWidth(target), 420 | skip_shift; 421 | 422 | // we use jQuery animate instead of CSS transitions because we 423 | // need a callback to unlock the next animation 424 | if (target.index() !== old_index && !/skip/.test(direction)){ 425 | if (/left/.test(direction)) { 426 | this.lock(); 427 | clearing.animate({left : left + width}, 300, this.unlock()); 428 | } else if (/right/.test(direction)) { 429 | this.lock(); 430 | clearing.animate({left : left - width}, 300, this.unlock()); 431 | } 432 | } else if (/skip/.test(direction)) { 433 | // the target image is not adjacent to the current image, so 434 | // do we scroll right or not 435 | skip_shift = target.index() - this.settings.up_count; 436 | this.lock(); 437 | 438 | if (skip_shift > 0) { 439 | clearing.animate({left : -(skip_shift * width)}, 300, this.unlock()); 440 | } else { 441 | clearing.animate({left : 0}, 300, this.unlock()); 442 | } 443 | } 444 | 445 | callback(); 446 | }, 447 | 448 | direction : function ($el, current, target) { 449 | var lis = $el.find('li'), 450 | li_width = this.outerWidth(lis) + (this.outerWidth(lis) / 4), 451 | up_count = Math.floor(this.outerWidth($('.clearing-container')) / li_width) - 1, 452 | target_index = lis.index(target), 453 | response; 454 | 455 | this.settings.up_count = up_count; 456 | 457 | if (this.adjacent(this.settings.prev_index, target_index)) { 458 | if ((target_index > up_count) 459 | && target_index > this.settings.prev_index) { 460 | response = 'right'; 461 | } else if ((target_index > up_count - 1) 462 | && target_index <= this.settings.prev_index) { 463 | response = 'left'; 464 | } else { 465 | response = false; 466 | } 467 | } else { 468 | response = 'skip'; 469 | } 470 | 471 | this.settings.prev_index = target_index; 472 | 473 | return response; 474 | }, 475 | 476 | adjacent : function (current_index, target_index) { 477 | for (var i = target_index + 1; i >= target_index - 1; i--) { 478 | if (i === current_index) return true; 479 | } 480 | return false; 481 | }, 482 | 483 | // lock management 484 | 485 | lock : function () { 486 | this.settings.locked = true; 487 | }, 488 | 489 | unlock : function () { 490 | this.settings.locked = false; 491 | }, 492 | 493 | locked : function () { 494 | return this.settings.locked; 495 | }, 496 | 497 | // plugin management/browser quirks 498 | 499 | outerHTML : function (el) { 500 | // support FireFox < 11 501 | return el.outerHTML || new XMLSerializer().serializeToString(el); 502 | }, 503 | 504 | off : function () { 505 | $(this.scope).off('.fndtn.clearing'); 506 | $(window).off('.fndtn.clearing'); 507 | this.remove_data(); // empty settings cache 508 | this.settings.init = false; 509 | }, 510 | 511 | reflow : function () { 512 | this.init(); 513 | } 514 | }; 515 | 516 | }(Foundation.zj, this, this.document)); 517 | -------------------------------------------------------------------------------- /sass/_icons.scss: -------------------------------------------------------------------------------- 1 | /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen 2 | * readers do not read off random characters that represent icons */ 3 | 4 | .icon-glass:before { content: $glass; } 5 | .icon-music:before { content: $music; } 6 | .icon-search:before { content: $search; } 7 | .icon-envelope-alt:before { content: $envelope-alt; } 8 | .icon-heart:before { content: $heart; } 9 | .icon-star:before { content: $star; } 10 | .icon-star-empty:before { content: $star-empty; } 11 | .icon-user:before { content: $user; } 12 | .icon-film:before { content: $film; } 13 | .icon-th-large:before { content: $th-large; } 14 | .icon-th:before { content: $th; } 15 | .icon-th-list:before { content: $th-list; } 16 | .icon-ok:before { content: $ok; } 17 | .icon-remove:before { content: $remove; } 18 | .icon-zoom-in:before { content: $zoom-in; } 19 | .icon-zoom-out:before { content: $zoom-out; } 20 | .icon-power-off:before, 21 | .icon-off:before { content: $off; } 22 | .icon-signal:before { content: $signal; } 23 | .icon-gear:before, 24 | .icon-cog:before { content: $cog; } 25 | .icon-trash:before { content: $trash; } 26 | .icon-home:before { content: $home; } 27 | .icon-file-alt:before { content: $file-alt; } 28 | .icon-time:before { content: $time; } 29 | .icon-road:before { content: $road; } 30 | .icon-download-alt:before { content: $download-alt; } 31 | .icon-download:before { content: $download; } 32 | .icon-upload:before { content: $upload; } 33 | .icon-inbox:before { content: $inbox; } 34 | .icon-play-circle:before { content: $play-circle; } 35 | .icon-rotate-right:before, 36 | .icon-repeat:before { content: $repeat; } 37 | .icon-refresh:before { content: $refresh; } 38 | .icon-list-alt:before { content: $list-alt; } 39 | .icon-lock:before { content: $lock; } 40 | .icon-flag:before { content: $flag; } 41 | .icon-headphones:before { content: $headphones; } 42 | .icon-volume-off:before { content: $volume-off; } 43 | .icon-volume-down:before { content: $volume-down; } 44 | .icon-volume-up:before { content: $volume-up; } 45 | .icon-qrcode:before { content: $qrcode; } 46 | .icon-barcode:before { content: $barcode; } 47 | .icon-tag:before { content: $tag; } 48 | .icon-tags:before { content: $tags; } 49 | .icon-book:before { content: $book; } 50 | .icon-bookmark:before { content: $bookmark; } 51 | .icon-print:before { content: $print; } 52 | .icon-camera:before { content: $camera; } 53 | .icon-font:before { content: $font; } 54 | .icon-bold:before { content: $bold; } 55 | .icon-italic:before { content: $italic; } 56 | .icon-text-height:before { content: $text-height; } 57 | .icon-text-width:before { content: $text-width; } 58 | .icon-align-left:before { content: $align-left; } 59 | .icon-align-center:before { content: $align-center; } 60 | .icon-align-right:before { content: $align-right; } 61 | .icon-align-justify:before { content: $align-justify; } 62 | .icon-list:before { content: $list; } 63 | .icon-indent-left:before { content: $indent-left; } 64 | .icon-indent-right:before { content: $indent-right; } 65 | .icon-facetime-video:before { content: $facetime-video; } 66 | .icon-picture:before { content: $picture; } 67 | .icon-pencil:before { content: $pencil; } 68 | .icon-map-marker:before { content: $map-marker; } 69 | .icon-adjust:before { content: $adjust; } 70 | .icon-tint:before { content: $tint; } 71 | .icon-edit:before { content: $edit; } 72 | .icon-share:before { content: $share; } 73 | .icon-check:before { content: $check; } 74 | .icon-move:before { content: $move; } 75 | .icon-step-backward:before { content: $step-backward; } 76 | .icon-fast-backward:before { content: $fast-backward; } 77 | .icon-backward:before { content: $backward; } 78 | .icon-play:before { content: $play; } 79 | .icon-pause:before { content: $pause; } 80 | .icon-stop:before { content: $stop; } 81 | .icon-forward:before { content: $forward; } 82 | .icon-fast-forward:before { content: $fast-forward; } 83 | .icon-step-forward:before { content: $step-forward; } 84 | .icon-eject:before { content: $eject; } 85 | .icon-chevron-left:before { content: $chevron-left; } 86 | .icon-chevron-right:before { content: $chevron-right; } 87 | .icon-plus-sign:before { content: $plus-sign; } 88 | .icon-minus-sign:before { content: $minus-sign; } 89 | .icon-remove-sign:before { content: $remove-sign; } 90 | .icon-ok-sign:before { content: $ok-sign; } 91 | .icon-question-sign:before { content: $question-sign; } 92 | .icon-info-sign:before { content: $info-sign; } 93 | .icon-screenshot:before { content: $screenshot; } 94 | .icon-remove-circle:before { content: $remove-circle; } 95 | .icon-ok-circle:before { content: $ok-circle; } 96 | .icon-ban-circle:before { content: $ban-circle; } 97 | .icon-arrow-left:before { content: $arrow-left; } 98 | .icon-arrow-right:before { content: $arrow-right; } 99 | .icon-arrow-up:before { content: $arrow-up; } 100 | .icon-arrow-down:before { content: $arrow-down; } 101 | .icon-mail-forward:before, 102 | .icon-share-alt:before { content: $share-alt; } 103 | .icon-resize-full:before { content: $resize-full; } 104 | .icon-resize-small:before { content: $resize-small; } 105 | .icon-plus:before { content: $plus; } 106 | .icon-minus:before { content: $minus; } 107 | .icon-asterisk:before { content: $asterisk; } 108 | .icon-exclamation-sign:before { content: $exclamation-sign; } 109 | .icon-gift:before { content: $gift; } 110 | .icon-leaf:before { content: $leaf; } 111 | .icon-fire:before { content: $fire; } 112 | .icon-eye-open:before { content: $eye-open; } 113 | .icon-eye-close:before { content: $eye-close; } 114 | .icon-warning-sign:before { content: $warning-sign; } 115 | .icon-plane:before { content: $plane; } 116 | .icon-calendar:before { content: $calendar; } 117 | .icon-random:before { content: $random; } 118 | .icon-comment:before { content: $comment; } 119 | .icon-magnet:before { content: $magnet; } 120 | .icon-chevron-up:before { content: $chevron-up; } 121 | .icon-chevron-down:before { content: $chevron-down; } 122 | .icon-retweet:before { content: $retweet; } 123 | .icon-shopping-cart:before { content: $shopping-cart; } 124 | .icon-folder-close:before { content: $folder-close; } 125 | .icon-folder-open:before { content: $folder-open; } 126 | .icon-resize-vertical:before { content: $resize-vertical; } 127 | .icon-resize-horizontal:before { content: $resize-horizontal; } 128 | .icon-bar-chart:before { content: $bar-chart; } 129 | .icon-twitter-sign:before { content: $twitter-sign; } 130 | .icon-facebook-sign:before { content: $facebook-sign; } 131 | .icon-camera-retro:before { content: $camera-retro; } 132 | .icon-key:before { content: $key; } 133 | .icon-gears:before, 134 | .icon-cogs:before { content: $cogs; } 135 | .icon-comments:before { content: $comments; } 136 | .icon-thumbs-up-alt:before { content: $thumbs-up-alt; } 137 | .icon-thumbs-down-alt:before { content: $thumbs-down-alt; } 138 | .icon-star-half:before { content: $star-half; } 139 | .icon-heart-empty:before { content: $heart-empty; } 140 | .icon-signout:before { content: $signout; } 141 | .icon-linkedin-sign:before { content: $linkedin-sign; } 142 | .icon-pushpin:before { content: $pushpin; } 143 | .icon-external-link:before { content: $external-link; } 144 | .icon-signin:before { content: $signin; } 145 | .icon-trophy:before { content: $trophy; } 146 | .icon-github-sign:before { content: $github-sign; } 147 | .icon-upload-alt:before { content: $upload-alt; } 148 | .icon-lemon:before { content: $lemon; } 149 | .icon-phone:before { content: $phone; } 150 | .icon-unchecked:before, 151 | .icon-check-empty:before { content: $check-empty; } 152 | .icon-bookmark-empty:before { content: $bookmark-empty; } 153 | .icon-phone-sign:before { content: $phone-sign; } 154 | .icon-twitter:before { content: $twitter; } 155 | .icon-facebook:before { content: $facebook; } 156 | .icon-github:before { content: $github; } 157 | .icon-unlock:before { content: $unlock; } 158 | .icon-credit-card:before { content: $credit-card; } 159 | .icon-rss:before { content: $rss; } 160 | .icon-hdd:before { content: $hdd; } 161 | .icon-bullhorn:before { content: $bullhorn; } 162 | .icon-bell:before { content: $bell; } 163 | .icon-certificate:before { content: $certificate; } 164 | .icon-hand-right:before { content: $hand-right; } 165 | .icon-hand-left:before { content: $hand-left; } 166 | .icon-hand-up:before { content: $hand-up; } 167 | .icon-hand-down:before { content: $hand-down; } 168 | .icon-circle-arrow-left:before { content: $circle-arrow-left; } 169 | .icon-circle-arrow-right:before { content: $circle-arrow-right; } 170 | .icon-circle-arrow-up:before { content: $circle-arrow-up; } 171 | .icon-circle-arrow-down:before { content: $circle-arrow-down; } 172 | .icon-globe:before { content: $globe; } 173 | .icon-wrench:before { content: $wrench; } 174 | .icon-tasks:before { content: $tasks; } 175 | .icon-filter:before { content: $filter; } 176 | .icon-briefcase:before { content: $briefcase; } 177 | .icon-fullscreen:before { content: $fullscreen; } 178 | .icon-group:before { content: $group; } 179 | .icon-link:before { content: $link; } 180 | .icon-cloud:before { content: $cloud; } 181 | .icon-beaker:before { content: $beaker; } 182 | .icon-cut:before { content: $cut; } 183 | .icon-copy:before { content: $copy; } 184 | .icon-paperclip:before, 185 | .icon-paper-clip:before { content: $paper-clip; } 186 | .icon-save:before { content: $save; } 187 | .icon-sign-blank:before { content: $sign-blank; } 188 | .icon-reorder:before { content: $reorder; } 189 | .icon-list-ul:before { content: $list-ul; } 190 | .icon-list-ol:before { content: $list-ol; } 191 | .icon-strikethrough:before { content: $strikethrough; } 192 | .icon-underline:before { content: $underline; } 193 | .icon-table:before { content: $table; } 194 | .icon-magic:before { content: $magic; } 195 | .icon-truck:before { content: $truck; } 196 | .icon-pinterest:before { content: $pinterest; } 197 | .icon-pinterest-sign:before { content: $pinterest-sign; } 198 | .icon-google-plus-sign:before { content: $google-plus-sign; } 199 | .icon-google-plus:before { content: $google-plus; } 200 | .icon-money:before { content: $money; } 201 | .icon-caret-down:before { content: $caret-down; } 202 | .icon-caret-up:before { content: $caret-up; } 203 | .icon-caret-left:before { content: $caret-left; } 204 | .icon-caret-right:before { content: $caret-right; } 205 | .icon-columns:before { content: $columns; } 206 | .icon-sort:before { content: $sort; } 207 | .icon-sort-down:before { content: $sort-down; } 208 | .icon-sort-up:before { content: $sort-up; } 209 | .icon-envelope:before { content: $envelope; } 210 | .icon-linkedin:before { content: $linkedin; } 211 | .icon-rotate-left:before, 212 | .icon-undo:before { content: $undo; } 213 | .icon-legal:before { content: $legal; } 214 | .icon-dashboard:before { content: $dashboard; } 215 | .icon-comment-alt:before { content: $comment-alt; } 216 | .icon-comments-alt:before { content: $comments-alt; } 217 | .icon-bolt:before { content: $bolt; } 218 | .icon-sitemap:before { content: $sitemap; } 219 | .icon-umbrella:before { content: $umbrella; } 220 | .icon-paste:before { content: $paste; } 221 | .icon-lightbulb:before { content: $lightbulb; } 222 | .icon-exchange:before { content: $exchange; } 223 | .icon-cloud-download:before { content: $cloud-download; } 224 | .icon-cloud-upload:before { content: $cloud-upload; } 225 | .icon-user-md:before { content: $user-md; } 226 | .icon-stethoscope:before { content: $stethoscope; } 227 | .icon-suitcase:before { content: $suitcase; } 228 | .icon-bell-alt:before { content: $bell-alt; } 229 | .icon-coffee:before { content: $coffee; } 230 | .icon-food:before { content: $food; } 231 | .icon-file-text-alt:before { content: $file-text-alt; } 232 | .icon-building:before { content: $building; } 233 | .icon-hospital:before { content: $hospital; } 234 | .icon-ambulance:before { content: $ambulance; } 235 | .icon-medkit:before { content: $medkit; } 236 | .icon-fighter-jet:before { content: $fighter-jet; } 237 | .icon-beer:before { content: $beer; } 238 | .icon-h-sign:before { content: $h-sign; } 239 | .icon-plus-sign-alt:before { content: $plus-sign-alt; } 240 | .icon-double-angle-left:before { content: $double-angle-left; } 241 | .icon-double-angle-right:before { content: $double-angle-right; } 242 | .icon-double-angle-up:before { content: $double-angle-up; } 243 | .icon-double-angle-down:before { content: $double-angle-down; } 244 | .icon-angle-left:before { content: $angle-left; } 245 | .icon-angle-right:before { content: $angle-right; } 246 | .icon-angle-up:before { content: $angle-up; } 247 | .icon-angle-down:before { content: $angle-down; } 248 | .icon-desktop:before { content: $desktop; } 249 | .icon-laptop:before { content: $laptop; } 250 | .icon-tablet:before { content: $tablet; } 251 | .icon-mobile-phone:before { content: $mobile-phone; } 252 | .icon-circle-blank:before { content: $circle-blank; } 253 | .icon-quote-left:before { content: $quote-left; } 254 | .icon-quote-right:before { content: $quote-right; } 255 | .icon-spinner:before { content: $spinner; } 256 | .icon-circle:before { content: $circle; } 257 | .icon-mail-reply:before, 258 | .icon-reply:before { content: $reply; } 259 | .icon-github-alt:before { content: $github-alt; } 260 | .icon-folder-close-alt:before { content: $folder-close-alt; } 261 | .icon-folder-open-alt:before { content: $folder-open-alt; } 262 | .icon-expand-alt:before { content: $expand-alt; } 263 | .icon-collapse-alt:before { content: $collapse-alt; } 264 | .icon-smile:before { content: $smile; } 265 | .icon-frown:before { content: $frown; } 266 | .icon-meh:before { content: $meh; } 267 | .icon-gamepad:before { content: $gamepad; } 268 | .icon-keyboard:before { content: $keyboard; } 269 | .icon-flag-alt:before { content: $flag-alt; } 270 | .icon-flag-checkered:before { content: $flag-checkered; } 271 | .icon-terminal:before { content: $terminal; } 272 | .icon-code:before { content: $code; } 273 | .icon-reply-all:before { content: $reply-all; } 274 | .icon-mail-reply-all:before { content: $mail-reply-all; } 275 | .icon-star-half-full:before, 276 | .icon-star-half-empty:before { content: $star-half-empty; } 277 | .icon-location-arrow:before { content: $location-arrow; } 278 | .icon-crop:before { content: $crop; } 279 | .icon-code-fork:before { content: $code-fork; } 280 | .icon-unlink:before { content: $unlink; } 281 | .icon-question:before { content: $question; } 282 | .icon-info:before { content: $info; } 283 | .icon-exclamation:before { content: $exclamation; } 284 | .icon-superscript:before { content: $superscript; } 285 | .icon-subscript:before { content: $subscript; } 286 | .icon-eraser:before { content: $eraser; } 287 | .icon-puzzle-piece:before { content: $puzzle-piece; } 288 | .icon-microphone:before { content: $microphone; } 289 | .icon-microphone-off:before { content: $microphone-off; } 290 | .icon-shield:before { content: $shield; } 291 | .icon-calendar-empty:before { content: $calendar-empty; } 292 | .icon-fire-extinguisher:before { content: $fire-extinguisher; } 293 | .icon-rocket:before { content: $rocket; } 294 | .icon-maxcdn:before { content: $maxcdn; } 295 | .icon-chevron-sign-left:before { content: $chevron-sign-left; } 296 | .icon-chevron-sign-right:before { content: $chevron-sign-right; } 297 | .icon-chevron-sign-up:before { content: $chevron-sign-up; } 298 | .icon-chevron-sign-down:before { content: $chevron-sign-down; } 299 | .icon-html5:before { content: $html5; } 300 | .icon-css3:before { content: $css3; } 301 | .icon-anchor:before { content: $anchor; } 302 | .icon-unlock-alt:before { content: $unlock-alt; } 303 | .icon-bullseye:before { content: $bullseye; } 304 | .icon-ellipsis-horizontal:before { content: $ellipsis-horizontal; } 305 | .icon-ellipsis-vertical:before { content: $ellipsis-vertical; } 306 | .icon-rss-sign:before { content: $rss-sign; } 307 | .icon-play-sign:before { content: $play-sign; } 308 | .icon-ticket:before { content: $ticket; } 309 | .icon-minus-sign-alt:before { content: $minus-sign-alt; } 310 | .icon-check-minus:before { content: $check-minus; } 311 | .icon-level-up:before { content: $level-up; } 312 | .icon-level-down:before { content: $level-down; } 313 | .icon-check-sign:before { content: $check-sign; } 314 | .icon-edit-sign:before { content: $edit-sign; } 315 | .icon-external-link-sign:before { content: $external-link-sign; } 316 | .icon-share-sign:before { content: $share-sign; } 317 | .icon-compass:before { content: $compass; } 318 | .icon-collapse:before { content: $collapse; } 319 | .icon-collapse-top:before { content: $collapse-top; } 320 | .icon-expand:before { content: $expand; } 321 | .icon-euro:before, 322 | .icon-eur:before { content: $eur; } 323 | .icon-gbp:before { content: $gbp; } 324 | .icon-dollar:before, 325 | .icon-usd:before { content: $usd; } 326 | .icon-rupee:before, 327 | .icon-inr:before { content: $inr; } 328 | .icon-yen:before, 329 | .icon-jpy:before { content: $jpy; } 330 | .icon-renminbi:before, 331 | .icon-cny:before { content: $cny; } 332 | .icon-won:before, 333 | .icon-krw:before { content: $krw; } 334 | .icon-bitcoin:before, 335 | .icon-btc:before { content: $btc; } 336 | .icon-file:before { content: $file; } 337 | .icon-file-text:before { content: $file-text; } 338 | .icon-sort-by-alphabet:before { content: $sort-by-alphabet; } 339 | .icon-sort-by-alphabet-alt:before { content: $sort-by-alphabet-alt; } 340 | .icon-sort-by-attributes:before { content: $sort-by-attributes; } 341 | .icon-sort-by-attributes-alt:before { content: $sort-by-attributes-alt; } 342 | .icon-sort-by-order:before { content: $sort-by-order; } 343 | .icon-sort-by-order-alt:before { content: $sort-by-order-alt; } 344 | .icon-thumbs-up:before { content: $thumbs-up; } 345 | .icon-thumbs-down:before { content: $thumbs-down; } 346 | .icon-youtube-sign:before { content: $youtube-sign; } 347 | .icon-youtube:before { content: $youtube; } 348 | .icon-xing:before { content: $xing; } 349 | .icon-xing-sign:before { content: $xing-sign; } 350 | .icon-youtube-play:before { content: $youtube-play; } 351 | .icon-dropbox:before { content: $dropbox; } 352 | .icon-stackexchange:before { content: $stackexchange; } 353 | .icon-instagram:before { content: $instagram; } 354 | .icon-flickr:before { content: $flickr; } 355 | .icon-adn:before { content: $adn; } 356 | .icon-bitbucket:before { content: $bitbucket; } 357 | .icon-bitbucket-sign:before { content: $bitbucket-sign; } 358 | .icon-tumblr:before { content: $tumblr; } 359 | .icon-tumblr-sign:before { content: $tumblr-sign; } 360 | .icon-long-arrow-down:before { content: $long-arrow-down; } 361 | .icon-long-arrow-up:before { content: $long-arrow-up; } 362 | .icon-long-arrow-left:before { content: $long-arrow-left; } 363 | .icon-long-arrow-right:before { content: $long-arrow-right; } 364 | .icon-apple:before { content: $apple; } 365 | .icon-windows:before { content: $windows; } 366 | .icon-android:before { content: $android; } 367 | .icon-linux:before { content: $linux; } 368 | .icon-dribbble:before { content: $dribbble; } 369 | .icon-skype:before { content: $skype; } 370 | .icon-foursquare:before { content: $foursquare; } 371 | .icon-trello:before { content: $trello; } 372 | .icon-female:before { content: $female; } 373 | .icon-male:before { content: $male; } 374 | .icon-gittip:before { content: $gittip; } 375 | .icon-sun:before { content: $sun; } 376 | .icon-moon:before { content: $moon; } 377 | .icon-archive:before { content: $archive; } 378 | .icon-bug:before { content: $bug; } 379 | .icon-vk:before { content: $vk; } 380 | .icon-weibo:before { content: $weibo; } 381 | .icon-renren:before { content: $renren; } 382 | --------------------------------------------------------------------------------